Commit graph

51 commits

Author SHA1 Message Date
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
8efb8f97c4 lcd drivers: split lcd_gradient_rect so it is actually useful
lcd_gradient_rect() was only usable to draw list lines, so split
it up and make a generic gradient draw function available to apps/

Change-Id: I665911a90fef239b5e06592ea2763cbeeb74c83f
2012-03-01 00:10:17 +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
Jonathan Gordon
e9e5d6ae10 OOPS, style got lost in scrolling lines with r31247, so put it back
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31314 a1c6a512-1295-4272-9138-f99709370657
2011-12-15 23:30:17 +00:00
Jonathan Gordon
13f1b08388 Allow scrolling lines to have their content changed without restarting the scroll line. This means skin lines with dynamic tags can be updated in realtime instead of delayed
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31247 a1c6a512-1295-4272-9138-f99709370657
2011-12-14 12:53:19 +00:00
Jonathan Gordon
b3caa01062 Fix FS#12237 (caused by r30302) where centered skin text isnt eqactly centered
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31246 a1c6a512-1295-4272-9138-f99709370657
2011-12-14 09:48:52 +00:00
Thomas Martitz
1280f322ec Fix build errors and warnings in the lcd drivers.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30940 a1c6a512-1295-4272-9138-f99709370657
2011-11-08 22:04:43 +00: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
Thomas Martitz
93c6c79e8d Better fix for FS#12337. Use 0 to make the line height calculated from the font height, as before r30773.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30850 a1c6a512-1295-4272-9138-f99709370657
2011-10-29 15:16:02 +00:00
Fred Bauer
04a015dde0 Provide font_lock(). Font_get_bits() or ..width() may have to read glyph cache misses from disk so provide a means to lock the buflib memory during the wait.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30814 a1c6a512-1295-4272-9138-f99709370657
2011-10-21 18:05:52 +00:00
Thomas Martitz
3b12634e6b Commit FS#12321 - Touchscreen: List line padding, to more easily select lines
This adds line padding to lists on touchscreens,
in order to make lists reasonably useful without huge fonts.

It's configurable:
* Automatic (default, line height calculated using a lcd dpi aware function)
* Off (status quo, line height = font height)
* X pixels (from 2 to 50 in even steps)

The automatic setting should/aims to Just Work Out Of The Box on all targets

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30773 a1c6a512-1295-4272-9138-f99709370657
2011-10-17 17:38:10 +00:00
Thomas Martitz
9edd6d4ee9 Anti-Aliased Fonts support.
This enables Rockbox to render anti-aliased fonts using an alpha blending method.
The input font bitmaps are 4bit, i.e. 4x larger, but the metadata size stays the same.

A tool, convttf, for converting ttf fonts directly to the Rockbox fnt format is provided.
It has a useful help output, but the parameter that works best is -c1 or -c2 (2 for larger font sizes).

Flyspray: FS#8961
Author: Initial work by Jonas Hurrelmann, further work by Fred Bauer, Andrew Mahone, Teruaki Kawashima and myself.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29523 a1c6a512-1295-4272-9138-f99709370657
2011-03-05 18:36:51 +00:00
Alexander Levin
eb9ca72388 Fix r29123: the variable should be initialized every time in the loop
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29124 a1c6a512-1295-4272-9138-f99709370657
2011-01-23 21:57:23 +00:00
Alexander Levin
fb2d6a7a3a Respect the 'scroll delay' setting more accurately between scrolling rounds
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29123 a1c6a512-1295-4272-9138-f99709370657
2011-01-23 21:49:49 +00:00
Alexander Levin
52c6789450 Add a delay between text scroll rounds when scrolling forward similarly to how it's done when scrolling bidirectionally (FS#11892)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29104 a1c6a512-1295-4272-9138-f99709370657
2011-01-21 17:16:45 +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
Rafaël Carré
0f063b7d72 Implement lcd(_remote)_putsxyf() and export to plugins
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27921 a1c6a512-1295-4272-9138-f99709370657
2010-08-28 21:46:18 +00:00
Teruaki Kawashima
0ac61bffa7 avoid overflow in puts_scroll().
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26231 a1c6a512-1295-4272-9138-f99709370657
2010-05-21 13:30:21 +00:00
Thomas Martitz
50a6ca39ad Move c/h files implementing/defining standard library stuff into a new libc 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-05-06 21:04:40 +00:00
Teruaki Kawashima
d50c78c238 * surround member only used by charcells with #ifdef HAVE_LCD_CHARCELLS in struct scrollinfo in scroll_engine.h.
* remove function prototypes which are not actualy defined.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24693 a1c6a512-1295-4272-9138-f99709370657
2010-02-16 11:59:37 +00:00
Jonathan Gordon
7e6f124d4e revert r24478 and make the backdrop behaviour the same as it used to be (so when in the wps the sbs' backdrop will be fully disabled). Also changes the API back to having to manually set the current backdrop.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24565 a1c6a512-1295-4272-9138-f99709370657
2010-02-08 09:38:03 +00:00
Jonathan Gordon
0a16a99a69 fix a bug where the backdrop from the sbs is displayed on scrolling lines in the wps when the %wd tag is not used.
I'm not crazy about this commit and maybe a better solution would be to outright disable the sbs backdrop when in any skinned screen. This then means backdrops go back to needing special handling (i.e they arnt "free")



git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24478 a1c6a512-1295-4272-9138-f99709370657
2010-02-03 07:03:48 +00:00
Teruaki Kawashima
3d53182cef draw selection bar even if str is empty string (e.g. in text_editor plugin).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24204 a1c6a512-1295-4272-9138-f99709370657
2010-01-09 14:41:00 +00:00
Teruaki Kawashima
ebce81d23f Fix FS#10893.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24203 a1c6a512-1295-4272-9138-f99709370657
2010-01-09 12:21:18 +00:00
Tomer Shalev
c2617dc4ed Diacritic display enhancements
- Use the fact that unicode code currently does not support chars above 0xffff
  (see utf8decode()), and change diacritic database's char code type to
  unsigned short from int. Also comment out database entries above unsupported
  range.

- Use const when possible.

- Iterate over buffer using the buffer's pointer, thus avoiding usage of some
  variables, and avoiding multiple access to the same array item.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23776 a1c6a512-1295-4272-9138-f99709370657
2009-11-28 17:07:57 +00:00
Tomer Shalev
39bfe3153a Fix diacritic and save some bin size
- Fix bug which cause wrong placement of characters in some specific conditions
- Fix multiple similar entries in cache
- Protect against negative x values passed to drawing function


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23765 a1c6a512-1295-4272-9138-f99709370657
2009-11-26 18:09:56 +00:00
Frank Gevaerts
75ce9606a1 Limit character width to 255 pixels
Use intermediate variable to fix yellow and red



git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23744 a1c6a512-1295-4272-9138-f99709370657
2009-11-24 21:34:24 +00:00
Frank Gevaerts
a68ad9e521 make lcd_bitmap_char more space efficient. This doesn't seem to impact text drawing performance
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23743 a1c6a512-1295-4272-9138-f99709370657
2009-11-24 21:18:26 +00:00
Tomer Shalev
7682cb5ca8 FS#10720 - Support for displaying diacritic characters
This commit corrects the display of diacritic characters, which exist in many
languages. Hopefully, it will make Rockbox much more usable for users of these
languages.

Diacritic information (which used to decide whether a given character is
diacritic or not) is taken from the Unicode Standard, Version 5.2.

This feature does not affect drawing performance much, as the diacritic
database is cached (simple MRU mechanism).

There may be room for further performance, footprint, and
code-reuse wise improvements, that could be worked on in the future.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23742 a1c6a512-1295-4272-9138-f99709370657
2009-11-24 20:41:42 +00:00
Teruaki Kawashima
1fe6f13b9c lcd-bitmap-common.c: Change calculation of the horizontal position in lcd_puts_style_offset() so that the position is independent from the string being printed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23705 a1c6a512-1295-4272-9138-f99709370657
2009-11-22 15:43:57 +00:00
Thomas Martitz
3ad3bec0ad Use strlcpy instead of a memset&strcpy combo. Guarantees \0-terminaltion and gives a 1-3% speed up.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23284 a1c6a512-1295-4272-9138-f99709370657
2009-10-20 00:09:16 +00:00
Thomas Martitz
137d27af42 Fix a scrolling bug with centered drawing and too long lines.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23282 a1c6a512-1295-4272-9138-f99709370657
2009-10-19 22:49:41 +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
Tomer Shalev
736ea79e63 Fix FS#10670 - The first letter of a scrolling line starts to appear at the end
of the line

Thanks to Teruaki Kawashima (teru) for providing this solution


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23132 a1c6a512-1295-4272-9138-f99709370657
2009-10-12 16:31:44 +00:00
Tomer Shalev
461903d80e LCD scrolling - reduce one 'if' nesting level
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23125 a1c6a512-1295-4272-9138-f99709370657
2009-10-12 04:29:47 +00:00
Tomer Shalev
aee6901953 LCD scrolling - fix a typo
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23124 a1c6a512-1295-4272-9138-f99709370657
2009-10-12 04:28:56 +00:00
Tomer Shalev
74d3671af2 Revert r23021, since it broke non-RTL scrolling. RTL scrolling still needs fixing
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23118 a1c6a512-1295-4272-9138-f99709370657
2009-10-11 20:49:27 +00:00
Tomer Shalev
d5b076b64a RTL: Cosmetic changes, no functional change - Rename constants
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23117 a1c6a512-1295-4272-9138-f99709370657
2009-10-11 20:15:22 +00:00
Thomas Martitz
a79dc87761 Add a center flag, next to the rtl flag, for viewports. That results in any text being drawn centered. It overrides the RTL flag if set.
Simplify splashes and time menu by using it.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23105 a1c6a512-1295-4272-9138-f99709370657
2009-10-11 12:21:27 +00:00
Mohamed Tarek
7220cbb890 Fix a bug in a bidirectional text scrolling; s->offset doesn't need to be set when backward scrolling starts. This fixes bidirectional scrolling in
RTL and for certain file-names in LTR.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23022 a1c6a512-1295-4272-9138-f99709370657
2009-10-09 01:05:40 +00:00
Mohamed Tarek
2282607224 Handle text scrolling in RTL.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23021 a1c6a512-1295-4272-9138-f99709370657
2009-10-09 00:56:37 +00:00
Tomer Shalev
eb4020134e Moved RTL handling in lcd driver deeper, from puts_style_offset() to putsxyofs()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22986 a1c6a512-1295-4272-9138-f99709370657
2009-10-06 16:56:13 +00:00
Tomer Shalev
a092b9ce92 Use macro to test viewport's RTL flag
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22978 a1c6a512-1295-4272-9138-f99709370657
2009-10-06 08:07:30 +00:00
Tomer Shalev
58221fc38d Implement RTL as a viewport's bit-field
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22968 a1c6a512-1295-4272-9138-f99709370657
2009-10-05 20:22:02 +00:00
Tomer Shalev
e7183f95d0 Fix red - bootloaders don't link language support
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22949 a1c6a512-1295-4272-9138-f99709370657
2009-10-05 12:19:41 +00:00
Tomer Shalev
6d80565b1b RTL support in menus
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22945 a1c6a512-1295-4272-9138-f99709370657
2009-10-05 11:43:38 +00:00