Added notes.
This commit is contained in:
parent
be6c0a9439
commit
211c49d23e
1 changed files with 47 additions and 0 deletions
47
roo_e/notes.txt
Normal file
47
roo_e/notes.txt
Normal file
|
@ -0,0 +1,47 @@
|
|||
Roo/E, the Kangaroo Punch Portable GUI Toolkit
|
||||
Copyright (C) 2022-2025 Scott Duensing
|
||||
|
||||
http://kangaroopunch.com
|
||||
|
||||
|
||||
GOALS
|
||||
~~~~~
|
||||
Roo/E is designed to run on any platform that provides at least keyboard and
|
||||
mouse input with a bitmapped display. The current mimimum target is a 486
|
||||
running MS-DOS with a VESA 2.0 compliant SVGA display.
|
||||
|
||||
Unlike most low-end windowing systems, Roo/E should provide "solid" rendering
|
||||
at all times. Dragging and resizing windows should not result in wireframe
|
||||
representations of the window, nor should window operations interrupt or pause
|
||||
the content in the windows.
|
||||
|
||||
Minimized windows display a live view of the entire window contents so users
|
||||
can continue to monitor their activity.
|
||||
|
||||
Widgets and other window contents should instantly appear. No watching them
|
||||
being drawn to the display.
|
||||
|
||||
Roo/E should be thread friendly.
|
||||
|
||||
|
||||
IMPLEMENTATION
|
||||
~~~~~~~~~~~~~~
|
||||
In order to reach these goals, Roo/E trades memory for speed. Many surface
|
||||
caches are used to reduce the amount of redraw needed at any given time.
|
||||
|
||||
When new windows are defined, they specify the maximum bounds of their
|
||||
content. This means no endlessly scrolling windows as is common in word
|
||||
processors and web browsers. On creation, a new off-screen surface is
|
||||
created with these maximum bounds. This allows widgets to be drawn in the
|
||||
window without consideration for clipping. Just keep it inside the window!
|
||||
|
||||
The "window manager" handles window chrome and blitting window contents to yet
|
||||
another surface. This cached surface is updated when anything in the window is
|
||||
"damaged".
|
||||
|
||||
Finally, these chromed surfaces (or icons if minimized) are positioned and
|
||||
dirty rectangles are calculated. Dirty rectangles are then merged, if
|
||||
possible, to reduce the number of blits required to update the display. This
|
||||
rectangle list is then blitted from the apporpriate cached surfaces to the
|
||||
actual display. This results in the entire display being redrawn but with no
|
||||
overdraw.
|
Loading…
Add table
Reference in a new issue