Commit graph

49 commits

Author SHA1 Message Date
William Wilgus
a749a95840 font.c cleanup
find_font_index can use font_filename_matches_loaded_id()

font_path_to_glyph_path doesn't need strcat

Change-Id: I8d1d36a68abbc700078d651eed930035641b6240
2023-02-15 23:02:36 -05:00
William Wilgus
91c8633e8c [BugFix] font.c filename was movable
stupid bug on my part font_filename was pointing to a movable
alloc therefore that data could be moved out from under the returned pointer

instead pin the internal calls to core_get_data and
remove font_filename in favor of a function that checks if a
filename matches the loaded font as this was all it was used for anyway

Change-Id: Iebb47ffe3f81aa9d5e3968975f26d64283633ffc
2023-02-15 01:15:59 -05:00
William Wilgus
c756a8a89d make splash split on control characters
splits on spaces also considers \r\n\f\v\t as mandatory breaks

I'm still working on the strptokspn function
my goal is to use it directly rather than storing the matched char
and modifying the source string with \0 in order to tokenize the output
--Done

Change-Id: I7f378b5b9c4df8f10899b9a55a98950afb3931dc
2022-11-12 06:22:16 -05:00
Solomon Peachy
658026e626 [4/4] Remove HAVE_LCD_BITMAP, as it's now the only choice.
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 21:20:13 +00:00
Thomas Martitz
37be80a1a5 fonts: Fix regression(s) caused by c23ce62.
The builtin sysfont does not have an associated buflib_alloc_data
(because it's builtin right?). font_get_{width,bits} accessed a field of
it for all fonts which crashed on some systems but not on mine.
Solution: Move this field to struct font directly.

The cache size calculated was also busted.

Fixes FS#12944 and most likely FS#12938.

Change-Id: I32303c4335a12a6c421fdca34f7ece851aac12ca
2014-01-26 14:01:48 +01:00
Thomas Martitz
c23ce62829 fonts: Do not unload completely on USB.
The font engine can now perform cache lookups even if the font file is
closed, if the font was disabled with the new font_disable_all() function.
It is highly probable that the lookup succeeds but in the cache-miss case
a blank, full-width glyph will be returned.

Change-Id: I3c97e747d2a0ba30c7b495c6118c9f029d265b56
2014-01-15 23:37:39 +01:00
Frank Gevaerts
f8d36b5baa Increase MAXUSERFONTS to 12.
In the modern everything-can-be-skinned world, themes are beginning
to hit the limit of 8 fonts (which includes sysfont). Increasing this
to 12 will allow some headroom, at the cost of a bit more RAM usage
(about 20 bytes per extra possible font, so about 80 bytes total here)

Change-Id: Iddf4374b7ccf92b400614a7309bf3d2147ba98ab
2013-04-01 17:30:38 +02:00
Frank Gevaerts
e5a3c26c1d glyph_cache_save should be static
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31073 a1c6a512-1295-4272-9138-f99709370657
2011-11-27 15:24:53 +00:00
Fred Bauer
ea7a89606c FS#12293 Global default glyph setting in System > Limits > Glyphs To Cache. Defaults to 250. This saves a lot of RAM while still allowing non-English users to have adequate glyph coverage.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31031 a1c6a512-1295-4272-9138-f99709370657
2011-11-19 23:34:26 +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
Fred Bauer
e299eb3ea3 Add functions font_set_ui() and font_get_ui(). The font returned by FONT_UI used to be fixed at zero but since buflib-fonts (r30589) can be different, depending on the order of loads and unloads. Fixes broken behavoir in virtual keyboard (FS#12336), lyrics player (FS#12306), and hopefully, FS#12337
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30826 a1c6a512-1295-4272-9138-f99709370657
2011-10-22 17:13:33 +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
Fred Bauer
8c9017211e Faster cached font loading. FS#12333
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30769 a1c6a512-1295-4272-9138-f99709370657
2011-10-17 13:17:04 +00:00
Fred Bauer
899865a70b Fix Yellow: missing proto
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30761 a1c6a512-1295-4272-9138-f99709370657
2011-10-16 13:28:44 +00:00
Fred Bauer
100974162d FS:12299 Font glyph cache is no longer saved. Each font will now have its own glyph cache file with the extension '.gc' Includes a temporary fix that delays saving the file to prevent the creation of multiple gc files with same name. Mostly JD Gordon's code.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30760 a1c6a512-1295-4272-9138-f99709370657
2011-10-16 13:18:46 +00:00
Jonathan Gordon
83cfbf4e51 Allow fonts to use smaller buffers than the default size. use font_load_ex() to speficiy the buffer size. If the font is already loaded with a smaller buffer it will be reloaded to use the new size. Also fix an issue where handles would get lost if fonts fail to load in skins
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30592 a1c6a512-1295-4272-9138-f99709370657
2011-09-24 14:52:16 +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
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
Fred Bauer
cf8f526d16 change get_glyph_size() to font_glyphs_to_bufsize(). fixes a bug when font glyph buffer < font header
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27911 a1c6a512-1295-4272-9138-f99709370657
2010-08-27 18:25:23 +00:00
Jonathan Gordon
faaf431d32 Accept FS#11567 by Fred Bauer - better memory management for the skin fonts
%Fl now takes an optional 3rd param which is the number of glyphs to cache (default to 256). the smaller the number, the less ram will be used (i.e using 15 for a font which only shown numbers is a good idea)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27882 a1c6a512-1295-4272-9138-f99709370657
2010-08-25 14:11:38 +00:00
Thomas Martitz
35e8b1429a Rockbox as an application: Replace many occurences of #ifdef SIMULATOR with #if (CONFIG_PLATFORM & PLATFORM_HOSTED) (or equivalently).
The simulator defines PLATFORM_HOSTED, as RaaA will do (RaaA will not define SIMULATOR).
The new define is to (de-)select code to compile on hosted platforms generally.

Should be no functional change to targets or the simulator.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27019 a1c6a512-1295-4272-9138-f99709370657
2010-06-21 16:53:00 +00:00
Thomas Martitz
f8edc32589 FS#10756 - Free unused init code
Introduce a new .init section for initialisation code, so that it can be copied to an area which is later overwritten before calling. The stack/bss can then overwrite that code, effectively freeing the code size that the initialisation routines need. Gives a few kB ram usage back.
Only implemented for PP and as3525 so far. More targets could be added, as well as more functions.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25013 a1c6a512-1295-4272-9138-f99709370657
2010-03-03 23:20:32 +00:00
Jonathan Gordon
f37b5078f6 undo that last undo, make the font loader more forgiving to user errors
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24994 a1c6a512-1295-4272-9138-f99709370657
2010-03-03 00:53:07 +00:00
Jonathan Gordon
9e611b1b00 revert r24989 ad r24990 which are cuasing segfaults... they were working fine for me though :( (stupid font stuff is cursed!)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24993 a1c6a512-1295-4272-9138-f99709370657
2010-03-02 21:47:35 +00:00
Jonathan Gordon
34f51ccb04 * Make the user font count more sane
* font 2-9 in the skins will always be user fonts in the skins
* init the skinfonts array so it doesnt think id 'x' is used already
* make the parser work with FONT_UI untill the very end, even on remote fonts


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24989 a1c6a512-1295-4272-9138-f99709370657
2010-03-02 08:24:50 +00:00
Thomas Martitz
3b52937c8a Revert r24958. It didn't fix anything (in fact, the problem described didn't exist). Increase MAXFONTS by 1 to allow for remote screen targets to load fonts 2-9.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24983 a1c6a512-1295-4272-9138-f99709370657
2010-03-01 15:16:05 +00:00
Jonathan Gordon
8717c1eaa1 redo r24943. the font mappings are not needed once the skin is finished parsing so using the skin buffer there is a waste and overcomplicates things.
Also that commit breaks plain %pb so make sure you dont use %pb inside a viewport with a font number > 1


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24957 a1c6a512-1295-4272-9138-f99709370657
2010-02-28 08:36:13 +00:00
Jonathan Gordon
1c2aa35371 FS#10984 - multifont! 2 major additions:
1) seperate UI font for the remote and main displays
2) allow individual skins to load additional fonts for use in the skin (Uo to 7 extra in this first version) see CustomWPS for info on how to load a font in the skins.

Code should always use FONT_UI+screen_number to get the correct user font


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24644 a1c6a512-1295-4272-9138-f99709370657
2010-02-14 06:26:16 +00:00
Nils Wallménius
559c56905e Font improvements: Fix bug that caused some fonts to be rendered garbled on custom builds with MAX_FONT_SIZE > 64k (closes FS#10844). Simplify version check. Use void pointer and explicit casting for the offsets to make it clearer that they may be of different sizes, add a comment too. Use uint16_t in stead of short in some places for consistency. Replace magic number with meaningful define.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23969 a1c6a512-1295-4272-9138-f99709370657
2009-12-13 11:07:40 +00:00
Thomas Martitz
c0f1c49178 Get rid of some of the code duplication from checkwps, it still duplicates a lot though.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22695 a1c6a512-1295-4272-9138-f99709370657
2009-09-13 13:40:58 +00:00
Maurus Cuelenaere
36c71a60ca Get checkwps working again
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19880 a1c6a512-1295-4272-9138-f99709370657
2009-01-29 20:49:43 +00:00
Björn Stenberg
ad8d6031c1 Added support for configurable rockbox directory. FS#9567 by Alex Bennee.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19208 a1c6a512-1295-4272-9138-f99709370657
2008-11-24 22:16:07 +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
Dave Chapman
7418c357c3 Make checkwps compile again. Still more work is needed though, as checkwps is compiled to emulate an iPod Color - this needs changing to allow the LCD (and remote LCD) dimensions/depth to be specified on the commandline - the new %V tags are validated against the LCD characteristics
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16807 a1c6a512-1295-4272-9138-f99709370657
2008-03-25 21:09:58 +00:00
Nils Wallménius
d718c27798 Tab police
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14691 a1c6a512-1295-4272-9138-f99709370657
2007-09-14 16:04:01 +00:00
Nils Wallménius
df155c8577 Change unsigned long to uint32_t and long to int32_t to fix a crash in
64 bit sims. Make a couple of private functions 'static'.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13743 a1c6a512-1295-4272-9138-f99709370657
2007-06-30 17:54:02 +00:00
Linus Nielsen Feltzing
e06faa0480 Use a larger font cache on the targets that can afford the (quite small) RAM usage
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12620 a1c6a512-1295-4272-9138-f99709370657
2007-03-05 08:32:35 +00:00
Barry Wardell
3f8d732ac9 sysfont.h is only needed by devices with bitmap displays.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12042 a1c6a512-1295-4272-9138-f99709370657
2007-01-17 12:34:56 +00:00
Barry Wardell
f4709d0c7c Make the build system create a sysfont.h which includes font information for the system font. Available #defines are: SYSFONT_NAME, SYSFONT_FACENAME, SYSFONT_WIDTH, SYSFONT_HEIGHT, SYSFONT_SIZE, SYSFONT_ASCENT, SYSFONT_DESCENT, SYSFONT_FIRST_CHAR, SYSFONT_LAST_CHAR, SYSFONT_DEFAULT_CHAR, SYSFONT_PROPORTIONAL, SYSFONT_COPYRIGHT, SYSFONT_BITS_SIZE.
Also fix a small bug in the iPod bootloader printf() code and use printf() for PortalPlayer bootloaders too.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12041 a1c6a512-1295-4272-9138-f99709370657
2007-01-17 12:20:38 +00:00
Marcoen Hirschberg
b0fee17d6e waiting is over: initial unicode commit
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8169 a1c6a512-1295-4272-9138-f99709370657
2005-12-06 13:27:15 +00:00
Daniel Stenberg
0f820d6ed7 Increased maximum file size for models with LCD height larger than 64 to
10000 bytes. Also adjusted the buildzip script to dynamically figure out the
maximum buffer size for the particular build that the zip is made for.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7280 a1c6a512-1295-4272-9138-f99709370657
2005-08-03 21:31:51 +00:00
Christian Gmeiner
c6ec0f48a5 moved lcd_getstringsize into font.c
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6321 a1c6a512-1295-4272-9138-f99709370657
2005-04-19 12:47:16 +00:00
Jörg Hohensohn
a8dbabef83 font format documentation updated, obsolete definitions removed
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5020 a1c6a512-1295-4272-9138-f99709370657
2004-08-27 20:03:02 +00:00
Daniel Stenberg
861306d330 By reducing the font buffer to 4000 bytes from 9000, we get 5000 fresh bytes
to buffer mp3 with! Only 3 out of 44 fonts that fit within 9000 are bigger
than 4000, leaving us with 41 fonts that fit.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5019 a1c6a512-1295-4272-9138-f99709370657
2004-08-27 08:16:08 +00:00
Jens Arnold
f8a5802d8e Fixed pointer types & struct font
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5016 a1c6a512-1295-4272-9138-f99709370657
2004-08-26 22:05:35 +00:00
Jörg Hohensohn
5d36aaf249 New font format (already rotated) saves code, space and time. On the downside this new format is incompatible, so get the new fonts, too.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5015 a1c6a512-1295-4272-9138-f99709370657
2004-08-26 21:15:07 +00:00
Jens Arnold
c76c568b35 Const policed pointer arguments to functions, part 1
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4995 a1c6a512-1295-4272-9138-f99709370657
2004-08-16 23:37:23 +00:00
Björn Stenberg
0dcc4a6fb9 Added multiple inclusion protection
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3767 a1c6a512-1295-4272-9138-f99709370657
2003-06-29 14:57:44 +00:00
Daniel Stenberg
f9b4490066 Include File Cleanup And Move-Around Party 2003.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3213 a1c6a512-1295-4272-9138-f99709370657
2003-02-07 09:41:57 +00:00