Difference between revisions of "GUI Themes/TODO"

From ScummVM :: Wiki
Jump to navigation Jump to search
(Update issues)
(Added note about the font renderer and BDF fonts)
Line 6: Line 6:


== To Do ==
== To Do ==
* Fonts
** The BDF fonts can have characters that are both wider and taller than expected. For instance, the letter Ã… extends one pixel above the top of the line. This can lead to glitches since we update the screen based on font height and character width, not bounding boxes. The List widget is one example of this.
* List widget
* List widget
** get mock-up from Krest
** get mock-up from Krest
Line 28: Line 30:
*** [Classic Theme] Adjust size and position of the "Edit game" dialog to Launcher
*** [Classic Theme] Adjust size and position of the "Edit game" dialog to Launcher
** The sliding action of the debug console takes a lot more CPU now than it used to. On my 450 MHz P3, I don't even see it slide in 2x mode. It seems to appear/disappear all at once.
** The sliding action of the debug console takes a lot more CPU now than it used to. On my 450 MHz P3, I don't even see it slide in 2x mode. It seems to appear/disappear all at once.
** The text "Norwegian Bokmål" isn't rendered correctly since our fonts do not have the letter "Å". See [http://sourceforge.net/tracker/index.php?func=detail&aid=1276480&group_id=37116&atid=418820 bug #1276480]
*** If we decide to use Latin-1 fonts instead, we should also update the About dialog to use accented characters where appropriate.


== Some ideas about theme caching ==
== Some ideas about theme caching ==

Revision as of 22:59, 20 June 2006

We plan to implement a new GUI look & feel in ScummVM, roughly based on the new look of our web site. Some concept drafts of the new look can be found here: http://www.thekrest.de/wip/scummvm/

You can also read the documentation on the GUI Themes.

To Do

  • Fonts
    • The BDF fonts can have characters that are both wider and taller than expected. For instance, the letter Ã… extends one pixel above the top of the line. This can lead to glitches since we update the screen based on font height and character width, not bounding boxes. The List widget is one example of this.
  • List widget
    • get mock-up from Krest
    • Glitches when entering very long strings. The cursor overlaps the scrollbar. Possibly the scroll bar width should be automatically added to the right-side paddings, but I don't have the time to experiment with it right now.
  • PopUp widget (aka drop-down list)
    • get mock-up from Krest
  • Scrollbar widget
    • The handle of the scrollbar widget leaves trails in 320xY resolution. Possibly, the shadow of the handle is drawn too wide.
  • Dialogs
    • About dialog
      • looks bad. Probably add some shadows and text padding
      • fix glitch at the top of the dialog where part of the characters get stuck (see FIXME in about.cpp)
      • [Classic theme] Text seems to be drawn over the dialog frame. At least at the top of the dialog.
      • The grey text (color 2, kStateDisabled) is hard to read in both the new and the classic theme.
    • Chooser aka Add game dialog
      • [Classic Theme] Adjust size and position of the chooser to Launcher
    • Options dialog
      • Several texts, e.g. vcMusicText, have their alignment set to kTextAlignRight, but are still drawn as left-aligned.
      • [Classic Theme] Adjust size and position of the "Options" dialog to Launcher
      • It would be nice if you could select theme from the GUI. The "Graphics" tab, perhaps?
    • Edit game dialog
      • [Classic Theme] Adjust size and position of the "Edit game" dialog to Launcher
    • The sliding action of the debug console takes a lot more CPU now than it used to. On my 450 MHz P3, I don't even see it slide in 2x mode. It seems to appear/disappear all at once.

Some ideas about theme caching

Solution will look something like this:

 ./scummvm --gui-theme=classic  --create-gui-cache 320x200

you get classic-320x200.tcc file

 ./scummvm --gui-theme=classic  --create-gui-cache 320x240

you get classic-320x240.tcc file

Then concatenate the two and probably dump it into C array. Porters should do that by themselves for all resolutions supported by their platform. I.e. we have generic XxY theme, and all specific resolutions are derived from it.

tcc (theme cache) file format

This theme cache will be plainly a dump of all evaluated variables from HashMap. They will be loaded with loadAll() method in HashMap.

 'RESL', length, "320x200", number of vars, dumped vars

dumped vars are:

 "varname", int16 value,...

This format will let easily concatenate several generated theme cache files.

Probably there will be some optimisations in loadAll() method, which will malloc one big chunk of those vars, and since we have their keys as const char *, then it can alloc one big chunk for variables name as well and then pass pointers inside of it to respective members. Of course, that will be specially flagged as it will not be possible to free() any of those chunks deliberately.