Go to file
2024-05-31 19:31:27 -04:00
.vscode ignore settings.json 2024-05-31 11:26:09 -04:00
assets Font drawing is nice now 2024-02-13 17:16:39 -05:00
code Progress on lifting the 'grime' module to its own package 2024-05-31 19:31:27 -04:00
docs Mostly reviewing progress so far 2024-05-21 23:35:36 -04:00
examples Mostly cleanup 2024-05-13 21:53:08 -04:00
scripts Minor cleanup to current bad impl of font rendering 2024-05-31 11:25:27 -04:00
thirdparty Got text rendering to work with sokol_gfx (learngl text rendering article #1) 2024-05-30 13:06:51 -04:00
toolchain WIP: Stuff related to working on the settings menu + more 2024-05-19 01:21:51 -04:00
.ark_ignore latest (doing some ark vcs stuff) 2024-03-17 15:30:30 -04:00
.editorconfig Added a script automatically generating a virtual view using symbol links of the codebase 2024-05-12 16:02:38 -04:00
.gitignore ignore settings.json 2024-05-31 11:26:09 -04:00
Debug.rdbg Memory setup for hot-reload & save states 2024-01-22 00:22:06 -05:00
Readme.md Mostly reviewing progress so far 2024-05-21 23:35:36 -04:00

Sectr Prototype

This prototype aims to flesh out ideas I've wanted to explore futher on code editing & related tooling.

The things to explore:

  • 2D canvas for laying out code visualized in various types of ASTs
  • WYSIWYG frontend ASTs
  • Making AST editing as versatile as text editing.
  • High-performance UI framework designed & built for AST editing.
  • Generating a large amount of UI widget boxes with proper auto-layout & no perceptible rendering-lag or input lag for interactions (frametimes stable).
  • Model-View-Controller interface between code managed by a 'backend' (both in memory and filesystem) and the UX composition (which has separate filesystem composition).

The project is so far in a "codebase boostrapping" phase.

The project's is organized into 2 modules sectr_host & sectr. The host module loads the main module & its memory. Hot-reloading it's dll when it detects a change.

The dependencies are:

  • Odin Compiler (Slightly custom fork)
    • Added #region, #endregion directives support for editors
    • I added support for 'monlithic packages' or 'uniform-across-subdirectories packages'. It allows me to organize the main package with sub-directories.
  • Odin repo's base, core, and vendor(raylib) libaries
  • An ini parser
  • backtrace
  • Powershell (if you want to use my build scripts)

Major 'codebase modules':

  • Engine : Main loop, logging, client interface for host, etc
    • Has the following definitions: startup, shutdown, reload, tick, clean_frame (which host hooks up to when managing the client dll)
  • Env : Core Memory & State definition + orchestration
  • Font Provider : Manages fonts.
    • When loading fonts, the provider currently uses raylib to generate bitmap glyth sheets for a range of font sizes at once.
    • Goal is to eventually render using SDF shaders.
  • Grime : Name speaks for itself, stuff not directly related to the target features to iterate upon for the prototype.
    • Defining dependency aliases or procedure overload tables, rolling own allocator, data structures, etc.
  • Input : All human input related features
    • Base input features (polling & related) are platform abstracted from raylib
    • Input Events
  • Parser : AST generation, editing, and serialization. A 1/3 of this prototype will most likely be this alone.
  • Project : Encpasulation of user config/state separate from persistent app config/state as a 'project'
    • Manages the codebase (program model database)
    • Manages workspaces : View compositions of the codebase
  • UI : Core graphic user interface framework, AST visualzation & editing, backend visualization
    • Will most likely be the bulk of this prototype.
    • PIMGUI (Persistent Immediate Mode User Interface)
    • Auto-layout
    • Supports heavy procedural generation of box widgets

Due to the nature of the prototype there are 'sub-groups' such as the codebase being its own ordeal as well as the workspace. They'll be elaborated in their own documentation

img img img img img img