Preliminary outline for the PicoGUI Book
- Motivation for PicoGUI
- Big picture - overview of PicoGUI's architecture
- Tutorial
- Using PicoGUI
- Obtaining a source distribution
- Compile-time configuration
- Themes
- Runtime configuration
- Client libraries
- Applications
- Programming for PicoGUI
- PicoGUI's widget model
- Annotated examples, at least in C and Python
- Hello World
- Widget overview
- Memory management
- Layout
- Managing events
- Widget templates
- Themes
- Bitmaps
- Fonts
- Drawing on canvases and bitmaps
- Shared memory
- Input filters
- Where to get more information
- The PicoGUI protocol
- Comparison to other systems
- The X window system
- Fresco
- Qt
- Widget layer
- Reference for all widget properties, commands, and events
- Request layer
- Reference for requests and responses (from pgui-protocol document
- Transport layer
- Current TCP/IP transport
- libpgserver transport
- Future transports:
- Enhanced TCP/IP transport with fewer round-trips
- Shared memory and semaphores
- CORBA
- Client libraries
- Theory of client library design
- C client library
- Python client library
- waba, lua, tcl, perl...
- Future client libraries:
- pgserver
- Coding conventions
- Theory of pgserver's layout and rendering
- The divtree
- gropnodes and groplists
- Abstract video interface
- The role of themes
- PicoGUI from the widget's point of view
- Source tree organization
- Widgets
- Widget object model and subclassing
- Overview of how all existing widgets are implemented
- How to write new widgets
- Video
- Intro to video drivers, video wrappers, and video base libraries
- Rotation support
- Rootless support
- Overview of existing video drivers and video base libraries
- How to write new video drivers and VBLs
- Input filters
- Writing server-side input filters and input drivers
- Client side input filters and input drivers
- Application manager
- How the app manager communicates with the application and with widgets
- Current app managers
- Ideas for future app managers
- Network layer
- Overview of data flow from an application to an internal call
- TCP/IP interface
- The server's main loop
- Memory management
- Handles
- The memory debugger
- Debugging
- Exception handling in pgserver
- Compile-time debug options
- Magic keys
- guru() and DBG()
- Benchmarking
- Text
- Fonts
- Common interface for font engines
- The built-in BDF engine
- The freetype engine
- Support for text-mode video devices
- Support for OpenGL
- pgstring
- Unicode support
- Encodings
- Format loaders
- Image formats
- Image format loader interface
- Existing image format loaders
- Text formats
- Text format loader interface
- Existing test format loaders
- Configuration management
- Compile-time configuration
- Runtime config variables
- Operating system interface
- Timers
- Networking
- Filesystem
- Shared memory
- Theme system
- Theory behind PicoGUI themes
- The theme file format
- In-memory representation of themes
- Themes from the widget's point of view
- Theme compiler
- Widget templates
- Theory behind widget templates
- Binary WT file format
- In-memory representations
- Loading WTs
- Instantiating WTs
- XML widget templates
The End