Skip to main content

Crate retroglyph_window

Crate retroglyph_window 

Source
Expand description

A shared layer for window-based backends (software, GL, wgpu).

§Architecture

Backend fuses input (poll_event/ push_event) and output (draw_layers/flush/…), which fits a terminal process but not a window: there, an event loop owns input and a renderer owns output. This crate splits the two apart and reassembles them into one Backend:

              ┌─────────────────────────────┐
              │     event loop (winit or     │
              │      a custom driver)        │
              └──────────────┬───────────────┘
                   translated events
                             │
                             v
┌────────────────────────────────────────────────────┐
│            WindowBackend<P: Presenter>              │
│   (implements Backend: owns the input event queue,  │
│              delegates output to P)                 │
└───────────────────────┬──────────────────────────────┘
                        │ draw / flush / resize / present
                        v
        ┌───────────────────────────────┐
        │      P: Presenter              │
        │  (retroglyph-software today;   │
        │   wgpu/GL renderers planned)   │
        └───────────────────────────────┘
  • Presenter is the output half: rasterization plus the surface lifecycle (init_surface/resize_surface/present/cell_size). Renderer crates implement only this trait.
  • WindowBackend<P: Presenter> implements Backend generically, holding the input event queue and delegating output to P.
  • The winit module (feature-gated, see below) drives the event loop that fills that queue and calls Presenter::present each frame.

§Feature flags

Presenter, WindowBackend, and WindowHandle depend only on raw-window-handle and are always available. The winit feature (default on) additionally provides the winit module: the event loop, event translation, and the run_windowed/run_app drivers. Disable it to implement or drive Presenter with a different windowing library (SDL2, tao, a custom loop) without pulling in winit.

Re-exports§

pub use backend::WindowBackend;
pub use presenter::Presenter;
pub use presenter::WindowHandle;
pub use raw_window_handle;

Modules§

backend
The generic Backend for windowed presenters. WindowBackend: the generic Backend implementation for windowed presenters.
presenter
The Presenter trait and WindowHandle. The Presenter trait: what a renderer crate implements to rasterize a grid and present it to a window surface.
winit
The winit event loop, event translation, and app drivers. Everything winit-specific in this crate: the event loop, event translation, and the windowed app drivers.