From e34672556d492fe4b80eacfea8cb1e82f16019cf Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Wed, 7 Apr 2021 22:33:58 -0700 Subject: [PATCH] Update architecture diagram content and formatting --- docs/codebase/architecture-overview.nomnoml | 66 +++++++++++---------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/docs/codebase/architecture-overview.nomnoml b/docs/codebase/architecture-overview.nomnoml index b0d8db6ac..bd7001d62 100644 --- a/docs/codebase/architecture-overview.nomnoml +++ b/docs/codebase/architecture-overview.nomnoml @@ -37,8 +37,7 @@ One of many possible frontend implementations, such as the native or web client. ] - [Frontend Implementation] Response <-> Event [Dispatcher] - [Frontend Implementation] <-- Rendered Viewport [ From: Final Render Assembler] + [Frontend Implementation] Send Rendered Viewport to Client <-- [ (Backchannel) From: Final Render Assembler] [ CLI Implementation| A possible text-based CLI program that @@ -49,7 +48,6 @@ pass a .gdd document and request a render. Caches are saved to disk. ] - [CLI Implementation] -> [Design Document Maintainer] // Editor @@ -60,32 +58,35 @@ file. Operations and document-specific Actions include the document ID in the call. ] - [Dispatcher] <-> Action [Editor State Store] - [Dispatcher] <-> Action [Open Documents State Store] - [Dispatcher] -> Update Bounds [Scheduler] - [Dispatcher] -> Operation [Design Document Maintainer] + [Dispatcher] --> Set New Bounds [ (Backchannel) To: Scheduler] + [Dispatcher] -> Operations [Design Document Maintainer] + + [CLI Implementation] -> CLI Arguments [Design Document Maintainer] - [ Open Documents State Store| - For each open document:| - [ Pan and zoom canvas bounds]| - [ Selected layers] - ] - [Tool State Machine] <- [Open Documents State Store] + [ State Stores| + [ Open Documents State Store| + For each open document:| + [ Pan and zoom canvas bounds]| + [ Selected layers] + ] - [ Editor State Store| - [ Panel Layout]| - [ Working Colors]| - [ Active Tool]| - [ Tool Options]| - [ Modifier Key Input]| - [ Currently Hovered Panel] + [ Editor State Store| + [ Panel Layout]| + [ Working Colors]| + [ Active Tool]| + [ Tool Options]| + [ Modifier Key Input]| + [ Currently Hovered Panel] + ] ] - [Editor State Store] -> [Tool State Machine] [ Tool State Machine| List the possible operations in current context ] - [Tool State Machine] -> [Dispatcher] + [Tool State Machine] <:- [State Stores] + [Tool State Machine] -> Send Responses & Operations [Dispatcher] + [Frontend Implementation] Send Responses <-> Send Events [Dispatcher] + [Dispatcher] <:-> Send Actions [State Stores] // Document @@ -95,8 +96,8 @@ the previous operation if it's the same as this one and append partial updates to operations from in-progress interactive tools. ] - [Design Document Maintainer] -> Design Document Diff [Render Graph Maintainer] - [Design Document Maintainer] <-> Design Document [Open Documents File Store] + [Design Document Maintainer] -> Send Design Document Diff [Render Graph Maintainer] + [Design Document Maintainer] <:-> Write Updated GDD [Open Documents File Store] [ Render Graph Maintainer| Bake operations into a complete graph including history references. @@ -106,8 +107,8 @@ between the live graph and each additional history reference so changed nodes in history are "ghost variants" living in the live graph. ] - [Render Graph Maintainer] -> Render Graph [Scheduler] - [Render Graph Maintainer] <-> Render Graph [Open Documents File Store] + [Render Graph Maintainer] <:-> Write Updated GRD [Open Documents File Store] + [Render Graph Maintainer] -> Send Render Graph [Scheduler] [Open Documents File Store| Kept in-memory or written to disk.| @@ -129,9 +130,10 @@ onscreen latency. Also notifies the Final Render Assembler when the cache tiles for the root document visible in bounds have finished being updated. ] - [Scheduler] -> [Node Rasterizer] - [Scheduler] <-> [Node Cache Manager] - [Scheduler] -> [Final Render Assembler] + [Scheduler] Set New Bounds <-- [ (Backchannel) From: Dispatcher] + [Scheduler] -> Rasterize Tiles [Node Rasterizer] + [Scheduler] <:-> Write Dirty Status [Node Cache Manager] + [Scheduler] -> Invoke [Final Render Assembler] [ Node Cache Manager| Purges old or less useful cached data @@ -147,14 +149,14 @@ Reuse when panning. ] ] - [Node Cache Manager] -> [Final Render Assembler] + [Node Cache Manager] -:> [Final Render Assembler] [ Node Rasterizer| Rasterize and update the cache for a specified node given a preferred bounds (but it can give a different sized output), resolution, and quality level. ] - [Node Rasterizer] <-> [Node Cache Manager] + [Node Rasterizer] <:-> Write Tiles [Node Cache Manager] [ Final Render Assembler| Look up the rasterized cached tiles from @@ -163,5 +165,5 @@ Operates when woken up by the scheduler when root tiles or render bounds are updated. ] - [Final Render Assembler] --> Rendered Viewport [ To: Frontend Implementation] + [Final Render Assembler] --> Send Rendered Viewport to Client [ (Backchannel) To: Frontend Implementation] ]