Skip to content

Latest commit

 

History

History
92 lines (82 loc) · 19.1 KB

File metadata and controls

92 lines (82 loc) · 19.1 KB

Project Structure

SpinyGUI is a modular Java GUI library with a browser-engine-like split between node tree, CSS parsing/style resolution, layout, event processing, and rendering backends.

Generated package documents are stored under docs/project-structure/packages/. Each package document lists direct classes first, then links to child packages so the documentation can be read from deepest packages upward.

Gradle Modules

  • core - Core DOM-like node model, CSS parser/style system, layout, events, input, fonts, animation, and platform abstraction.
  • core.backend - Renderer backend API shared by concrete rendering implementations.
  • core.backend.lwjgl.nanovg - LWJGL/NanoVG renderer implementation for drawing the core scene graph.
  • demo.simple - Small launcher-style examples for exercising the aggregate SpinyGUI module.
  • demo.complex - GLFW/LWJGL demo harness and NanoVG example runner.
  • spinygui - Aggregate module that re-exports the core and default backend modules.

Main Subsystems

  • Node tree: core node classes model frames, elements, text, attributes, parent/child links, pseudo-state, and box geometry.
  • Style and CSS: stylesheet model, selectors, property providers, ANTLR visitors, typed CSS values, and ResolvedStyle convert parsed CSS into values usable by layout/rendering.
  • Layout: layout contracts and implementations calculate box-model rectangles, text metrics, normal-flow/positioned layout trees, scroll sizes, and client sizes.
  • Events and input: system events are translated by system listeners/processors into application events and node state changes.
  • Fonts and metrics: font service/storage abstractions load platform fonts and expose text metrics for layout/rendering.
  • Rendering: backend SPI defines Renderer; the LWJGL/NanoVG backend traverses layout nodes and draws elements, borders, and text.
  • Demos: simple and complex demo modules exercise the aggregate API and NanoVG backend.

Package Index

Reading Order

For bottom-up navigation, start with the deepest packages such as style.stylesheet.selector.*, style.stylesheet.term, style.types.*, system.event.listener, layout.impl, and backend.renderer.lwjgl.nanovg.util; then move upward through their parent package documents and finish with this root overview.