Open main menu

Difference between revisions of "GUI Themes/TODO"

1,701 bytes added ,  01:30, 19 November 2005
no edit summary
m
Line 21: Line 21:
* Anti-aliased fonts: Some of the concept drafts use anti-aliased fonts; while that looks nice and nifty, it also adds a lot to the complexity of text rendering. For now we'll try to work without it.
* Anti-aliased fonts: Some of the concept drafts use anti-aliased fonts; while that looks nice and nifty, it also adds a lot to the complexity of text rendering. For now we'll try to work without it.
* Image data can both be stored in external files  
* Image data can both be stored in external files  
* We should support all our primary resolutions: 320x200, 320x240, 640x400, 640x480. Ideally, we should support all resolutions (not just the ones I mentioned). Also, ideally every theme should support all, but if that is not possible, at least we should smoothly degrade to another theme (e.g. the 'classic' theme which doesn't use pixmaps to render itself), instead of e.g. crashing
* ...
* ...


Line 80: Line 81:
=== Widget ===
=== Widget ===
We need to modify all Widget subclasses to use the active Theme to draw themselves.
We need to modify all Widget subclasses to use the active Theme to draw themselves.
== How to render widgets ==
TODO: Include graphics in each subsection to demonstrate how the corresponding widget would look
=== Dialog background ===
TODO
=== Dialog tabs ===
TODO
=== Buttons ===
We should limit ourselves to buttons of a single height, that makes UI design more consistent, and rendering them simpler. To render a button using pixmaps, one needs at least three pixmaps: one of the left border, one for the right border, and one (which can be replicated and tiled) for the middle part. To draw a button, you first place the left/right borders, then tile the middle image, and finally render the label atop it.
One needs different pixmaps for the basic states a button can be in: Normal, pressed/clicked, disabled.
The slow way is to do all of this every time the button is drawn. The fast (but memory intensive) way is to cache the button in a graphic surface (all of its three states). We only generate the cached version of the button once it is used (e.g. a disabled button doesn't need to cache the normal/clicked version)
=== Checkboxes ===
TODO
=== Slider ===
TODO
=== Popup buttons ===
TODO
=== Lists ===
TODO
=== Scrollbars ===
TODO -- concept art is missing, too
=== Input fields ===
TODO
=== Radio buttons ===
TODO -- this widget actually doesn't exist currently
1,079

edits