1
0
Fork 0
forked from len0rd/rockbox
Commit graph

69 commits

Author SHA1 Message Date
Thomas Martitz
50eb528bc1 scroll_engine: Major rework to support pixel-based scrolling and scroll callbacks.
Much of the scrolling work is moved from lcd-bitmap-common to lcd-scroll.c,
a small scroll callback routine remains. This callback can potentially be
overridden by more extensive scrollers.

The callback also gets fed with pixel-based scrolling information, which
finally removes the strict line-based nature of the scroll engine. Along with
this is the change from scroll_stop_viewport_line() to scroll_stop_viewport_rect()
which works on a pixel-based rectangle instead of lines.

The ultimate goal is to move most of the scroll work to apps, which can
much better decide which line decorations to apply etc. This work is laying
the ground work.

Change-Id: I3b2885cf7d8696ddd9253d5a9a73318d3d42831a
2013-12-14 23:11:31 +01:00
Thomas Martitz
1c5d0b41ee scroll_engine: Rename scroll_stop* functions to be more consistent with the lcd api.
Change-Id: I8ada10b96bfb628cca0331689e8b936ae47c7e1c
2013-12-14 23:11:30 +01:00
Jonathan Gordon
685cf59008 9 segment bitmap drawing:
Use %x9(id) to draw an image in the whole current viewport using the
9 segment drawer (which draws the corners as normal and *tiles*
the middle segments to the needed width/height).

Future work is to make it scale instead of tile

Change-Id: Ic3ed1cad93f96091694801eb442e0da5a2401203
2012-12-09 17:11:19 +11:00
Jonathan Gordon
014a08cabb skin_engine: New tag to draw a rectangle (optionally with a gradient)
%dr(x, y, width, height, [colour1[, colour2]]):
x,y - viewport relative pixel coordinates to start the rectangle.
width, height - obvious. can be '-' to fill the viewport
if both colours are left out the viewports foreground colour will be used
if one colour is specified it will fill the rectangle that colour.
if both colours are specified it will gradient fill the rectangle.

Change-Id: Iad451e99ded663bc7c5d182443659db7d909b388
2012-03-15 22:52:53 +11:00
Jonathan Gordon
2c71aa9feb lcd/skin_engine: Add the ability to draw onto the backdrop layer
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
2012-02-28 23:03:04 +11:00
Thomas Martitz
13209604c1 Add new lcd_bmp and lcd_bmp_part APIs.
This new APIs wrap around lcd_[mono|transparent]_bitmap/_part calls and
handle all kinds bitmaps. The intended use is to draw bitmaps that
come from read_bmp_fd/_file.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30936 a1c6a512-1295-4272-9138-f99709370657
2011-11-08 21:34:46 +00:00
Jonathan Gordon
f19f3efb07 Redo r30826 (and hopefully not reintroduce font issues) which cleans up the font API. FONT_UI is deprecated, use screens[screen].getuifont() instead (and .setuifont() to set it after a font has been loaded)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30932 a1c6a512-1295-4272-9138-f99709370657
2011-11-08 10:09:33 +00:00
Björn Stenberg
0942e2a0f7 Changed the FOR_NB_SCREENS macro to always be a for loop that declares its own loop variable. This removes the need to declare this variable in the outer scope.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30756 a1c6a512-1295-4272-9138-f99709370657
2011-10-15 19:35:02 +00:00
Jonathan Gordon
aa0f4a4bbe FS#12273 - use buflib for font storage. thanks to the testers :)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30589 a1c6a512-1295-4272-9138-f99709370657
2011-09-24 13:19:34 +00:00
Thomas Martitz
3022a60cc2 Rename {draw,fill}_viewport once more (to draw_border_viewport and fill_viewport) and remove the viewport parameter as suggested by Dave Chapman.
The parameter wasn't used yet and it's not clear whether it should be a absolute or relative viewport.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28242 a1c6a512-1295-4272-9138-f99709370657
2010-10-11 01:19:55 +00:00
Thomas Martitz
5462ef728f Add _rect to {draw,fill}_viewport as suggested by Jonathan Gordon to reduce the chance to confuse it with update_viewport().
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28240 a1c6a512-1295-4272-9138-f99709370657
2010-10-10 23:35:03 +00:00
Thomas Martitz
8a0152bd4a Two new lcd/multi screen api convinience functions: draw_viewport(), fill_viewport().
They work as the drawrect/fillrect pendants but work on a viewport basis; pass NULL to draw the current viewport (the one set with set_viewport()).
In conjunction with action_get_touchscreen_press_in_vp() it should be less of a pain to draw buttons and get presses on them.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28239 a1c6a512-1295-4272-9138-f99709370657
2010-10-10 23:15:05 +00:00
Thomas Martitz
d9d0b4dd20 Pixel-accurate (vertical) list scrolling for touchscreen targets.
Looks much smoother now as you don't scroll by whole lines anymore.
Add some functions lcd driver to enable the line based scrolling engine to draw the lines with a pixel-based y-offset.
This should also allow for a sensible kinetic scrolling mechanism (still a todo).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28214 a1c6a512-1295-4272-9138-f99709370657
2010-10-06 12:46:42 +00:00
Thomas Martitz
0246f0ceb4 Fix remaining reds/yellows.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26024 a1c6a512-1295-4272-9138-f99709370657
2010-05-14 13:21:40 +00:00
Jonathan Gordon
eee5423fe1 skin rework (FS#10922) notable changes:
- 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://svn.rockbox.org/rockbox/trunk@24366 a1c6a512-1295-4272-9138-f99709370657
2010-01-29 07:52:13 +00:00
Jonathan Gordon
2565389402 futile attempt to keep the ondioSP rombox working. This will almost certainly be the last release with it. (The backdrop API is chaning very soon after release so this is no big deal)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24340 a1c6a512-1295-4272-9138-f99709370657
2010-01-27 06:47:56 +00:00
Thomas Martitz
5629d551d7 Accept the last patch FS#10797 with a few changes by me (fixing side effects and adding the new backdrop_hide() to the multi screen api). It changes the hide_bars parameter to mean hide_theme.
This makes plugins show the menu backdrop in their backdrop so that they don't look like crap if you have an sbs and look more integrated. I've test about all plugins and all work fine.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24335 a1c6a512-1295-4272-9138-f99709370657
2010-01-26 20:14:42 +00:00
Nils Wallménius
f34a841b0c Revise r23225 a bit, removing the debug_printf function and implementing more generic lcd_(remote)_putsf function(s) instead and use those in more places
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23233 a1c6a512-1295-4272-9138-f99709370657
2009-10-17 18:02:48 +00:00
Nils Wallménius
0cb6803227 Const police raid\!
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22621 a1c6a512-1295-4272-9138-f99709370657
2009-09-04 16:04:02 +00:00
Karl Kurbjun
25123570c7 Fix STRIDE macro for multiscreen and add stride support for picture lib.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22615 a1c6a512-1295-4272-9138-f99709370657
2009-09-04 00:46:24 +00:00
Thomas Martitz
4764ee04c9 Add backdrop functions to the multiscreen api and add a enum backdrop_type parameter for different backdrops (main, wps), symplifying calls and removing dozens of #ifdefs (stubs added for non-backdrop displays that can't do backdrops).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22176 a1c6a512-1295-4272-9138-f99709370657
2009-08-06 00:14:40 +00:00
Peter D'Hoye
3c1e9ca558 Change screens memebers char_width, char_height and nb_lines to functions returning a calculated value. Fixes FS #9361 because the values were calculated based on sysfont, not the user selected font.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18441 a1c6a512-1295-4272-9138-f99709370657
2008-09-07 20:09:11 +00:00
Peter D'Hoye
205f3df781 Remove a viewport ambiguity by changing the screens width/heigth members into lcdwidth/lcdheight. Normal usercode should always use getwidth()/getheigth() as that returns the viewport width/height. Fixes issues that would have appeared in many places when introducing viewports with sizes != lcd sizes.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17857 a1c6a512-1295-4272-9138-f99709370657
2008-06-28 20:45:21 +00:00
Daniel Stenberg
2acc0ac542 Updated our source code header to explicitly mention that we are GPL v2 or
later. We still need to hunt down snippets used that are not. 1324 modified
files...
http://www.rockbox.org/mail/archive/rockbox-dev-archive-2008-06/0060.shtml


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17847 a1c6a512-1295-4272-9138-f99709370657
2008-06-28 18:10:04 +00:00
Jonathan Gordon
bdbdb97f19 FS#9051 - remove LCD margins... use viewports if you need them...
NOTE to WPS people....
%m has been removed, but (i think) because of the other %m tags it wont fail if you try loading a wps with %m|..|, it will just be ignored.
Also note that if the statusbar is enabled the default viewport is 8 pixels shorter than when its not, i.e (0,0) is really (0,8) if the statusbar is shown... I dont think this will be a major issue because almost no WPS show the bar and use bitmaps... text only WPS shouldnt be affected.

Please report problem screens in http://forums.rockbox.org/index.php?topic=17358.0


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17763 a1c6a512-1295-4272-9138-f99709370657
2008-06-23 13:20:35 +00:00
Peter D'Hoye
f76122f0e7 Accept FS #9052 by Alexander Levin with a fix by me. Changes HAS_BUTTONBAR into HAVE_BUTTONBAR to bring it in line with the other defines
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17655 a1c6a512-1295-4272-9138-f99709370657
2008-05-29 20:32:39 +00:00
Jens Arnold
5c87a98b97 Greyscale library: * Implement linearisation curve flipping for 1st/2nd Gen iPods (LCD is inverted when backlight is on, so the curve is also inverted). This needs a slight extension of is_backlight_on() functionality in the core. * Thorough recalibration of all reachable greyscale targets, and #ifdef cleanup. * Reduce on-target gamma a bit, because the displayable contrast range of a monochrome/greyscale isn't that high.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16936 a1c6a512-1295-4272-9138-f99709370657
2008-04-02 22:16:14 +00:00
Dave Chapman
3646c31367 Add the viewport functions to the screens API, including a new getfont() function to return the font used by the current viewport. A change to the screens API makes the plugin API incompatible, so we bump version and sort. Also commit the test_viewports plugin (not built by default). This is some more of FS#8385.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16022 a1c6a512-1295-4272-9138-f99709370657
2008-01-08 01:22:14 +00:00
Antoine Cellerier
d66b3c0f61 Remove the "invert scroll" code since it's not used anywhere anymore (and it was broken on color targets with gradients anyway). Closes FS #7875.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15125 a1c6a512-1295-4272-9138-f99709370657
2007-10-15 20:42:51 +00:00
Nicolas Pennequin
f3b015f73b FS#7808 by Tom Ross, Ken Fazzone and me, with help from Antoine Cellerier.
Add two new line selector types: solid colour and gradient. Solid colour only uses the primary colour setting.
The secondary colour setting is used for the gradient. Text colour for the selected item is also changeable.
These new settings are a bit controversial so they may be removed later.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14868 a1c6a512-1295-4272-9138-f99709370657
2007-09-27 15:42:55 +00:00
Nils Wallménius
a896f3d8b8 Simplify initing of the screens[] struct by using an initializer, also some reordering of the struct, and the required plugin api bump
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14743 a1c6a512-1295-4272-9138-f99709370657
2007-09-18 19:05:35 +00:00
Kevin Ferrare
93b2f9fd44 Rewrote the clock plugin in a cleaner and more modular way so that it can scale on remote screens. Use left-right keys to change the type of clock displayed (analogic, digital, binary) and up/downto change the look of the clock
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14174 a1c6a512-1295-4272-9138-f99709370657
2007-08-04 03:01:46 +00:00
Kevin Ferrare
ac017781e0 Ported the archos player's jackpot plugin to bitmaps LCD (still need some neat bitmaps), multi screen support for jackpot plugin and iriverify
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13978 a1c6a512-1295-4272-9138-f99709370657
2007-07-25 09:38:55 +00:00
Kevin Ferrare
f074b4635b Cleaned up the demistify plugin a litle bit, switched the key handling to the action API
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13926 a1c6a512-1295-4272-9138-f99709370657
2007-07-18 11:18:52 +00:00
Jens Arnold
539c513fe6 Temporary fix for remote bitmap functions in the multi-screen API. Fixed icon.c to use this. Also fixed crash due to missing assignment of lcd_bitmap[_part] for monochrome main LCDs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13187 a1c6a512-1295-4272-9138-f99709370657
2007-04-16 23:55:19 +00:00
Jens Arnold
c55ec18f98 Multi-screen API: * lcd_update() is now available for all LCDs. * Added missing functions for non-monochrome remote LCDs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12996 a1c6a512-1295-4272-9138-f99709370657
2007-04-02 00:26:31 +00:00
Jens Arnold
ad4e3d6657 First step of charcell LCD code rework: * Make it fully unicode aware so that adding non-ISO8859-1 scripts becomes possible (limited by the LCD capabilities of course). * Make the API more similar to the bitmap LCD code's API. * Moved hardware dependent parts to target tree. * Simplified code. * Jumpscroll temporarily non-functional.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12916 a1c6a512-1295-4272-9138-f99709370657
2007-03-26 07:52:13 +00:00
Jonathan Gordon
bd47d48c21 Do the CONFIG_LED define
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12383 a1c6a512-1295-4272-9138-f99709370657
2007-02-18 05:07:19 +00:00
Magnus Holmgren
2067fcc695 Fix most (all?) CONFIG_LED warnings.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12370 a1c6a512-1295-4272-9138-f99709370657
2007-02-17 23:22:37 +00:00
Daniel Stenberg
0c021deb05 #if => #ifdef
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12368 a1c6a512-1295-4272-9138-f99709370657
2007-02-17 23:07:39 +00:00
Daniel Stenberg
20a5926d2e build with -Wundef to make sure we have spelled the defines right in #if lines
and have the proper includes included etc


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12360 a1c6a512-1295-4272-9138-f99709370657
2007-02-17 21:54:17 +00:00
Michael Sevakis
6aa12c11f7 Added a small interface to screens to translate colors into remote gray levels on the x5. Splash screens paint properly with light gray. Should be adapted to a more general approach in the future. A few trailing whitespace trimmings got into a couple files but that is fine.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11218 a1c6a512-1295-4272-9138-f99709370657
2006-10-14 01:32:58 +00:00
Kevin Ferrare
0028b05f3e Added multi-screen API to the plugins API, made 'demystify plugin' use the remote display as well
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10167 a1c6a512-1295-4272-9138-f99709370657
2006-07-01 10:14:27 +00:00
Marcoen Hirschberg
a86919ae29 add seperate scroll options for remote. Patch by Alexander Spyridakis which fixes bug #5348. Changes CONFIG_BLOCK_VERSION so save your settings..
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9974 a1c6a512-1295-4272-9138-f99709370657
2006-05-22 16:40:41 +00:00
Dave Chapman
1c9dacd600 Apply changes to scroll_delay, scroll_speed and scroll_step settings across all screens when changing them in the settings menu. Fixes bug #5348.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9965 a1c6a512-1295-4272-9138-f99709370657
2006-05-20 11:34:35 +00:00
Ben Basha
e0622ab588 add a bitmap progress bar option + add %P|filename.bmp| tag to the WPS
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8648 a1c6a512-1295-4272-9138-f99709370657
2006-02-10 13:57:11 +00:00
Linus Nielsen Feltzing
0ecd0b0fc2 patch #1422861 by Adam Boot - Fix splash() color problems
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8541 a1c6a512-1295-4272-9138-f99709370657
2006-02-02 22:00:56 +00:00
Linus Nielsen Feltzing
281403a4d8 Work-in-progress transparent bitmaps with 255,0,255 as the transparent color, not yet working on the H100 series
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8476 a1c6a512-1295-4272-9138-f99709370657
2006-01-28 23:12:20 +00:00
Linus Nielsen Feltzing
745adad22a Color BMP support
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8472 a1c6a512-1295-4272-9138-f99709370657
2006-01-28 12:12:42 +00:00
Brandon Low
d3a03b679f Horizontal screen scrolling part 3 (by Shachar Liberman)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8414 a1c6a512-1295-4272-9138-f99709370657
2006-01-22 04:24:26 +00:00