summaryrefslogtreecommitdiffstats
path: root/apps/screen_access.c
AgeCommit message (Collapse)AuthorFilesLines
2020-10-26Whitespace cleanup on fb_viewport RewriteWilliam Wilgus1-1/+1
Change-Id: I24aac41c8abecf7b78a44d7f59e842b791be4563
2020-10-26LCD core move buf ptr and address look up function viewport structWilliam Wilgus1-2/+19
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-44/+0
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
2020-07-24[2/4] get rid of HAVE_LCD_CHARCELLSSolomon Peachy1-16/+0
HAVE_LCD_BITMAP is now redundant. lcd_bitmap is always-on in features.txt so manual and lang strings don't have to change Change-Id: I08eeb20de48099ffc2dc23782711af368c2ec794
2020-07-24[1/4] Remove SH support and all archos targetsSolomon Peachy1-15/+1
This removes all code specific to SH targets Change-Id: I7980523785d2596e65c06430f4638eec74a06061
2014-01-08Fix put_line via multiscreen API on remotes. Stupid me.Thomas Martitz1-2/+2
Change-Id: Id75dfd6ab3957dd27cb7db6f8776f754d85c19b4
2014-01-07lcd-16bit: Remove {lss,lse,lst}_pattern fields from struct viewport.Thomas Martitz1-5/+0
These where used for line styling during scrolling, which is now done in apps/, The viewport struct doesn't need to record these anymore. Change-Id: I810d9dcb2644b00a798c6e75acab69c74a78e77f
2014-01-07lcd-common/scroll_engine: Remove unused functions lcd_puts_style_xyoffset() ↵Thomas Martitz1-4/+0
and lcd_puts_scroll_style_xyoffset(). With this functions removed there is no exported function in firmware left that draws line decorations. Also no function supports specifying an y-offset anymore (was used for pixel accurate positioning of otherwise strictly line-based API calls). Both should be handled in apps/ now. Change-Id: Iba4b28ccc6e686c7db63e34b51ad4badae983fce
2014-01-07lcd-common/scroll_engine: Remove unused functions lcd_puts_scroll_style().Thomas Martitz1-2/+0
Change-Id: Ia4f943b3738ab6e66b0e3f1507c629b36d7eba94
2014-01-07lcd-common: Remove unused function lcd_puts_style_offset().Thomas Martitz1-2/+0
Change-Id: I24da23d132f933fe647416dc58e8f50879715423
2014-01-07lcd-common: Remove unused function lcd_puts_offset().Thomas Martitz1-2/+0
Change-Id: I39749bf3db915e5a8ddb6e6f25eb201ea0aaf981
2014-01-07lcd-common/scroll_engine: Remove unused functions lcd_puts_scroll_offset() ↵Thomas Martitz1-4/+0
and lcd_puts_scroll_style_offset(). Change-Id: Ia84ae88020d06a1cb634942ab5e635fd5d10ac66
2014-01-07Introduce put_line().Thomas Martitz1-0/+20
This function is a fully-fletched, high-level pixel-based line printer, that combines functionality of several firmware and list functions. It can draw spacing, icons and text in a single call, in any order and each multiple times. It can also apply line decorations at the same time. It features printf-like semantics by accepting a format string that contain format tags as well as inline text. It's accessible directly, but also through the multi-screen api for plugins. Change-Id: I70f5a77bbf4b0252521f2e47ead377b9d6d29b54
2014-01-07lcd-charcell: Add set_drawmode() wrapper to multi-screen API.Thomas Martitz1-2/+11
Change-Id: Idb6477aca8b19cb346ba2c2f5b91074e4679b0dd
2014-01-07lcd-16bit: Introduce lcd_gradient_fillrect_part().Thomas Martitz1-0/+1
It is similar to lcd_gradient_fillrect(), except that it only draws a part of the complete gradient. This can be used to draw only the bottom half of a full gradient. Change-Id: Ib47cc5237f6966e35ba07988bddbb00fd97adf96
2014-01-07lcd-common/scroll_engine: Introduce lcd_putsxy_scroll_func().Thomas Martitz1-1/+3
This function supports installing a custom scroll callback. This will be called when the scrollengine redraws the line. It allows to draw extended styles (or anything your can possible imagine) along with the text. It is also strictly pixel-based, the first pixel-based function that supports scrolling. Change-Id: I57f81ac7b3d08b877aea4cb8afa882f175ebcdfc
2013-12-14scroll_engine: Major rework to support pixel-based scrolling and scroll ↵Thomas Martitz1-2/+2
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-14scroll_engine: Rename scroll_stop* functions to be more consistent with the ↵Thomas Martitz1-4/+4
lcd api. Change-Id: I8ada10b96bfb628cca0331689e8b936ae47c7e1c
2012-12-09Add the 9 segment lcd funciton to remote lcdsJonathan Gordon1-0/+1
Change-Id: I00f9a067522624a87befcf95a811b49ad685029c
2012-12-099 segment bitmap drawing:Jonathan Gordon1-0/+1
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-03-15skin_engine: New tag to draw a rectangle (optionally with a gradient)Jonathan Gordon1-0/+3
%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-02-28lcd/skin_engine: Add the ability to draw onto the backdrop layerJonathan Gordon1-0/+6
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-01-07apps: lcd-remote.h is not needed if HAVE_REMOTE_LCD is not definedRafaël Carré1-1/+3
Fix a comment git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31608 a1c6a512-1295-4272-9138-f99709370657
2011-12-21Make more local functions static.Boris Gjenero1-2/+2
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31395 a1c6a512-1295-4272-9138-f99709370657
2011-12-20Disable unused functions for archos-player in apps/screen_access.cBertrik Sikken1-8/+2
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31385 a1c6a512-1295-4272-9138-f99709370657
2011-12-20Another round of making local functions staticBertrik Sikken1-2/+2
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31384 a1c6a512-1295-4272-9138-f99709370657
2011-11-08Add new lcd_bmp and lcd_bmp_part APIs.Thomas Martitz1-0/+4
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-08Fix compile errorJonathan Gordon1-1/+1
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30933 a1c6a512-1295-4272-9138-f99709370657
2011-11-08Redo r30826 (and hopefully not reintroduce font issues) which cleans up the ↵Jonathan Gordon1-3/+40
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-09-24last warningJonathan Gordon1-1/+1
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30591 a1c6a512-1295-4272-9138-f99709370657
2011-09-24Fix the build errorsJonathan Gordon1-0/+1
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30590 a1c6a512-1295-4272-9138-f99709370657
2011-09-24FS#12273 - use buflib for font storage. thanks to the testers :)Jonathan Gordon1-2/+18
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30589 a1c6a512-1295-4272-9138-f99709370657
2010-10-11Rename {draw,fill}_viewport once more (to draw_border_viewport and ↵Thomas Martitz1-4/+4
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-10Add _rect to {draw,fill}_viewport as suggested by Jonathan Gordon to reduce ↵Thomas Martitz1-4/+4
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-10Two new lcd/multi screen api convinience functions: draw_viewport(), ↵Thomas Martitz1-0/+4
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-06Pixel-accurate (vertical) list scrolling for touchscreen targets.Thomas Martitz1-0/+4
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-05-14Fix remaining reds/yellows.Thomas Martitz1-1/+1
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26024 a1c6a512-1295-4272-9138-f99709370657
2010-05-06Move c/h files implementing/defining standard library stuff into a new libc ↵Thomas Martitz1-2/+3
directory, also standard'ify some parts of the code base (almost entirely #include fixes). This is to a) to cleanup firmware/common and firmware/include a bit, but also b) for Rockbox as an application which should use the host system's c library and headers, separating makes it easy to exclude our files from the build. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25850 a1c6a512-1295-4272-9138-f99709370657
2010-01-29skin rework (FS#10922) notable changes:Jonathan Gordon1-4/+0
- 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-28fix redJonathan Gordon1-0/+2
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24358 a1c6a512-1295-4272-9138-f99709370657
2010-01-28Fix remote backdrop crashesJonathan Gordon1-3/+1
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24357 a1c6a512-1295-4272-9138-f99709370657
2010-01-27fix red... lets branchJonathan Gordon1-1/+2
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24341 a1c6a512-1295-4272-9138-f99709370657
2010-01-27futile attempt to keep the ondioSP rombox working. This will almost ↵Jonathan Gordon1-0/+4
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-26Accept the last patch FS#10797 with a few changes by me (fixing side effects ↵Thomas Martitz1-0/+2
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
2009-10-17Revise r23225 a bit, removing the debug_printf function and implementing ↵Nils Wallménius1-0/+2
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-09-07Fix buttonbar handling/theme changed handling in lists.Thomas Martitz1-3/+6
The lists need to copy to a local parent if a list passes NULL as parent in the init. This was before the commit of custom ui vp, but I removed it since I (wrongly) thought using the ui vp as parent would be fine. Let the viewportmanager fire a event in case when a theme-related setting changed and simply the handling in the lists code. However the buttonbar handling didn't work before anyway, since list code didn't know if the buttonbar was active (it asked a variable which was always false....). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22651 a1c6a512-1295-4272-9138-f99709370657
2009-08-06Add backdrop functions to the multiscreen api and add a enum backdrop_type ↵Thomas Martitz1-2/+9
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
2008-09-07Change screens memebers char_width, char_height and nb_lines to functions ↵Peter D'Hoye1-29/+73
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-06-28Remove a viewport ambiguity by changing the screens width/heigth members ↵Peter D'Hoye1-6/+6
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-28Updated our source code header to explicitly mention that we are GPL v2 orDaniel Stenberg1-2/+4
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