path: root/apps/gui/skin_engine/skin_engine.h
AgeCommit message (Collapse)AuthorFilesLines
2020-10-26LCD core move buf ptr and address look up function viewport structWilliam Wilgus1-1/+1
I'm currently running up against the limitations of the lcd_draw functions I want these functions to be able to be used on any size buffer not just buffers with a stride matching the underlying device [DONE] allow the framebuffer to be decoupled from the device framebuffer [DONE need examples] allow for some simple blit like transformations [DONE] remove the device framebuffer from the plugin api [DONE}ditto remote framebuffer [DONE] remove _viewport_get_framebuffer you can call struct *vp = lcd_set_viewport(NULL) and vp->buffer->fb_ptr while remote lcds may compile (and work in the sim) its not been tested on targets [FIXED] backdrops need work to be screen agnostic [FIXED] screen statusbar is not being combined into the main viewport correctly yet [FIXED] screen elements are displayed incorrectly after switch to void* [FIXED] core didn't restore proper viewport on splash etc. [NEEDS TESTING] remote lcd garbled data [FIXED] osd lib garbled screen on bmp_part [FIXED] grey_set_vp needs to return old viewport like lcd_set_viewport [FIXED] Viewport update now handles viewports with differing buffers/strides by copying to the main buffer [FIXED] splash on top of WPS leaves old framebuffer data (doesn't redraw) [UPDATE] refined this a bit more to have clear_viewport set the clean bit and have skin_render do its own screen clear scrolling viewports no longer trigger wps refresh also fixed a bug where guisyncyesno was displaying and then disappearing [ADDED!] New LCD macros that allow you to create properly size frame buffers in you desired size without wasting bytes (LCD_ and LCD_REMOTE_) LCD_STRIDE(w, h) same as STRIDE_MAIN LCD_FBSTRIDE(w, h) returns target specific stride for a buffer W x H LCD_NBELEMS(w, h) returns the number of fb_data sized elemenst needed for a buffer W x H LCD_NATIVE_STRIDE(s) conversion between rockbox native vertical and lcd native stride (2bitH) test_viewports.c has an example of usage [FIXED!!] 2bit targets don't respect non-native strides [FIXED] Few define snags Change-Id: I0d04c3834e464eca84a5a715743a297a0cefd0af
2020-07-24[4/4] Remove HAVE_LCD_BITMAP, as it's now the only choice.Solomon Peachy1-4/+1
Note: I left behind lcd_bitmap in features.txt, because removing it would require considerable work in the manual and the translations. Change-Id: Ia8ca7761f610d9332a0d22a7d189775fb15ec88a
2013-02-12skin_engine: Add a debug screen to display skin ram usageJonathan Gordon1-1/+1
Change-Id: Ida9c33211d9360ac88e30a2cf8df9f191bee8b45
2012-06-19CHARCELL doesn't have sbs support, so disable it properly.Frank Gevaerts1-0/+2
This actually fixes a nullpointer dereference. Change-Id: Ie3e153d72bcacdce46bfe5a514ff77aebdfd7225
2012-02-28lcd/skin_engine: Add the ability to draw onto the backdrop layerJonathan Gordon1-0/+2
The framebuffer the lcd driver uses can now be changed on the fly which means that regular lcd_* drawing functions can draw onto the "backdrop" buffer. The skin engine can use this to create layered effects. Add the tag %VB to a viewport to draw that viewport onto the backdrop layer. If you want to draw an image onto the backdrop framebuffer use %x(backdrop filename) instead of %X() inside a viewport with %VB. Change-Id: I741498e2af6d4f2d78932cabe8942317893e7cfc
2011-12-14FS#12378 : Remove various unused code, and comment out some unused code and ↵Boris Gjenero1-3/+0
data for reference or future use. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-11-21Fix the charcell compile error and rmeove an unused #defineJonathan Gordon1-14/+0
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-09-28fix FS#12295Jonathan Gordon1-0/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-09-24FS#12273 - use buflib for font storage. thanks to the testers :)Jonathan Gordon1-3/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-09-08Use buflib for skin images. Allows much more images to be loadedJonathan Gordon1-9/+1
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-09-08Use buflib for the skin backdrop images potentially allowing multiple images ↵Jonathan Gordon1-4/+2
per skin in the future git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-09-14Another major skin backend update/hopefully bugfix:Jonathan Gordon1-4/+20
Skins are now more self contained in the skin manager which in the future might allow on demand skin loading (i.e smaller skin buffers) Skin backdrops are also managed more intelegently (fixes a bug where you can get a crazy backdrop loaded if a .sbs fails to load) the rockbox_default rescue theme is now called rockbox_failsafe to better express what it actually is. This commit hopefully/maybe fixes the heavily reported data aborts, so please check if you are getting them git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-09-062 new touch region options... "settings_inc" and "settings_dec" which will ↵Jonathan Gordon1-1/+2
increase or decrease most of the available settings. To use it put the config name of the setting as the next param after settings_inc... i.e %T(0, 0, 32, 32, settings_inc, repeat) git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-07-29FS#11470 - new skin code, finally svn uses the new parser from the theme ↵Jonathan Gordon1-2/+31
editor. This means that a skin that passes the editor WILL pass svn and checkwps (unless the target runs out of skin buffer or something. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-06-21Touchregion support for the Base Skin and FM Skins. display obviously needs ↵Jonathan Gordon1-1/+2
to be in stylus mode for this to work. Just about all screens should be mostly useable if your sbs has the next/prev/select/cancel/menu regions defined. Plenty of room to add new action abilities if they are wanted. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-05-12FS#10853 - Skin support in the radio screen! Check CustomWPS for the new tagsJonathan Gordon1-0/+12
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-02-16* surround member only used by charcells with #ifdef HAVE_LCD_CHARCELLS in ↵Teruaki Kawashima1-8/+0
struct scrollinfo in scroll_engine.h. * remove function prototypes which are not actualy defined. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-02-16Reuse the backdrop buffers if 2 skins use the same backdrop (on the same ↵Jonathan Gordon1-0/+6
screen of course) git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-01-29skin rework (FS#10922) notable changes:Jonathan Gordon1-0/+9
- simplify the setting/skin relationship. settings are used as the fallback if it's not specified in the skin - backdrop buffers are now in the skin buffer (which has also increased slightly to accomodate 1 backdrop for each skin and 2 full colour screens for bmps (up for 1.5)) - if no %X is specified in a skin then the backdrop setting will be used. use %Xd to explicitly disable a skin from displaying a backdrop - the base skin can now specify a backdrop. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-01-03Set svn:keywords property on .c and .h files that didn't already have it. ↵Bertrik Sikken1-1/+1
Correct svn:executable property on some files. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-11-04Fix the WPS to work properly with the statusbar for the previous change.. ↵Jonathan Gordon1-3/+2
Side effect is it fixes FS#10721 where %pb didnt work git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-10-19Initial custom statusbar commit.Thomas Martitz1-2/+0
The custom statusbar can be used as a WPS for the main UI, using .(r)sbs files. It's using the skin engine and knows all tags the WPS also knows. The default folder for .sbs is the wps folder to reuse images used in the WPS. As it can be shown in the WPS also, it's useful to move shared parts to the custom statusbar in order to save skin buffer space. There are a few restrictions/TODOs: *) Peak meter doesn't redraw nicely(not frequent enough), as very frequent updates would slow the UI down as hell (some targets fight with it in the WPS already: FS#10686) *) No touchregion support as the statusbar doesn't have any action handling (it won't fail to parse though). *) Drawing stuff into the default VP is forbidden (loading images in it is not). You *need* to use viewports for the displaying stuff (parsing fails if no viewport is used). *) Themes that don't use a custom ui viewport can be fixed up using the new %Vi tag to avoid nasty redraw effectts (you must not draw into it as well, it's used to fix up the ui viewport). %Vi describes the viewport that the lists can use without getting in the way of the statusbar. Otherwise, it behaves like the classic statusbar, it can be configured in the theme settings, and can be turned off in the wps using %wd. Note to translaters: When translating LANG_STATUSBAR_CUSTOM, please consider using the same translation as for LANG_CHANNEL_CUSTOM if it's compatible. They could be combined later then. Flyspray: FS#10566 Author: myself git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-08-26Fix skin engine calling wps code to draw the statusbars (add a pointer to ↵Thomas Martitz1-0/+3
viewportmanager-suitable statusbar values, which are the same for all screens), and re-arrange statusbar related code slightly. No functional change. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-08-16more wps->skin engine work..Jonathan Gordon1-0/+2
start redoing memory management in the skins to use a single larger buffer instead of lots of arrays for things like images and progressbars. This commit removes the limit on the amount of progressbars allowed on the screen, still 1 per viewport, but unlimited otherwise(!) Also a larger buffer for remote targets, same size for non-remote targets but very easy to make it bigger (technically removed the 52(?) image limit in skins, except still limited to 1 char identifiers) Unlimited "string" tokens now (limit was 1024 which was rediculously wasteful) git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-08-03Remove the wrapper around the wrapper (wps_data_load) and handle loading ↵Thomas Martitz1-4/+4
hardcoded wps in case of a broken file directly in wps.c. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-08-03A bit mroe wps/skin engine cleanup so that the structs the wps uses can be ↵Thomas Martitz1-9/+2
static: -add wrappers wps_data_load() and wps_data_init() so that other code doesn't need the structs for that -change (and rename) gui_sync_wps_uses_albumart() to take points to be filled as parameter to get the AA size of a wps git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-08-03one more add which didnt get addedJonathan Gordon1-0/+59
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657