1
0
Fork 0
forked from len0rd/rockbox
Commit graph

338 commits

Author SHA1 Message Date
Solomon Peachy
8ef4f217d4 checkwps: Warn if using SYSFONT in a viewport
Change-Id: Ief69dd489d08af62ed96624dfe504ab5b9f9e6d9
2025-03-07 09:39:53 -05:00
William Wilgus
ef03dde011 skin_parser small clean up add percent_parse_param()
consolidate the logic for PERCENT tags to a single function

is_default() check is redundant in parse_albumart_load()
static bool isdefault(struct skin_tag_parameter *param)
{
    return param->type == DEFAULT;
}

Change-Id: I7391224499624db7a95a2630f96e33827d1e7542
2025-03-03 11:44:26 -05:00
William Wilgus
7100090f99 Remove NVRAM infavor of a separate cfg file
remove nvram and use the existing settings framework for it

add a crc check to the user_settings data to see if we need to save
the user setting file or if we can just save the status file (resume.cfg)

move volume to the system_status struct so we don't write the whole settings file
over volume changes

allow user to still export volume with save sound settings

allow the user to also export pitch and speed

name the file .resume.cfg

Rename all the SYSTEM_STATUS save file variables to TLAs to save space and
discourage tinkering

Cleanup DEBUG_AVAIL_SETTINGS output

when saving user_settings it calls status_save as well this cause the resume
file to be written twice. instead remove the callback for status_save
when setting_save is called

remove header text when saving .resume.cfg

convert status_save() to status_save(bool force)
add SYSTEM_STATUS_UPDATE_TICKS

for ATA device set this to 5 minutes
since we arlready wait for the disk to be up before saving
we don't want to miss our window

for all other every 15 minutes

that way if the battery is too low by the time shutdown comes around you
don't lose much progress

Change-Id: I27214ffd6e5d5494ee5ca83b14f04a41ba426ad7
2025-01-21 00:04:32 -05:00
Christian Soffke
3e57ca15a5 skin_parser: fix parse_filetext fd not closed
Change-Id: I5efb0474a349c2cdf58e8e6dfd3de6fb40444a79
2025-01-18 14:32:01 -05:00
William Wilgus
727d2ab749 wps skin_parser free up skin ram with int16_t
change ints to int16_t especially image and rect sizes

ditto font_ids

frees ~250 bytes in cabbie

Change-Id: I271be05a26e2090f6e1b11d809afd1c4bee32803
2024-12-31 01:53:20 -05:00
William Wilgus
7d1cdf3ece small cleanup skin_parser parse_album_art parse_image_load
bugfix parse_font_load() allow fonts with . in filename

Change-Id: Idcd201f624699e184e5181a46848c36b7e3fca49
2024-12-22 09:18:22 -05:00
William Wilgus
7c678f5e7a [Feature] %ft file text tags add prefix search
%ft(filename,search_text)
finds a line beginning with search_text strips search_text and returns
the remainder of the line

Change-Id: I06fe029b89aa60e4dbf34c039d180c75213519a4
2024-12-22 01:11:10 -05:00
William Wilgus
9c477e84ff [Bugix] %ft has access to the root of the drive using /
path_append treats a path starting with / as absolute
allowing escape by themes

Change-Id: I8e5fb55f01cacd5ec0fc5538d92dfcfbdceb6892
2024-12-20 22:59:03 -05:00
William Wilgus
774357e722 [Bugfix] Volume, track starting and track ending no default timeout
if no params are given these three supply a default
it wasn't being applied since it was guarded by the else{}

Change-Id: I2966fd7d8daa695d8b214461749c93b3e7883e51
2024-12-20 22:41:07 -05:00
William Wilgus
33cbefb310 skin_parser Reduce ram usage for conditionals on %ft() file text tags
the skin engine calls the tags for each conditional to check them since %ft
erases it's var if the file doesn't exist %?ft is likely only being called
to check existance of a file or line of a file

this patch allocates 2 bytes to satisify the conditional if the line exists

Change-Id: Ic74bf5fec9a5d9b6724692c49a0997bfa4cff48d
2024-12-08 03:52:38 -05:00
William Wilgus
ebd1021fe4 [Bugfix] Pt doesn't return length of the next track
fix yellow in mp3_encoder

Change-Id: I1658250141d3ea00b56da0258e111ca76aa56b53
2024-12-08 00:28:16 -05:00
William Wilgus
9eb9e4ab22 [Bugfix/Red] fix red in checkwps , fix mp3_encoder plugin div by 0, warnings
checkwps doesn't have current_tick

mp3_encoder had a divide by zero if the file wasn't encoded correctly or wrong file was passed

fix gcc warning in huffman encoder

move text for small screens

Change-Id: I9d09353e184e760ae31d1a1cd434d2790eacb7ca
2024-12-07 23:56:52 -05:00
William Wilgus
44bfffd7c5 [Feature] skinengine subline timeout hide line for n seconds
builds on top of the file text patch to add hide timeouts to
subline text tags

this allows you to specify both a show time and hide time
for these elements

%t(show, hide)

also removes the 327 second limit for timeouts whne this form is used

Change-Id: If4598dcc24d0c7be4380e7595b7d91c7eba3a728
2024-12-07 23:02:22 -05:00
William Wilgus
eb3e5eb2bf [Feature] Skin engine Themes grab text from a file %ft(file, line)
allow the skin engine to read text files and return a particular line

you then can use ss on that string to allow display of strings from the file
(Playername comes to mind)

able to be used as conditional
%?ft(filename)<Found|Not Found>

if (selected) line of file is empty the tag is treated as #COMMENT

bugfix:
%t(n)%?x<text|text>
would ignore the specified timeout defaulting to 2 seconds

bugfix: cabbiev2.128x160x16.wps was missing %Sx()
for translation on 'Next Track:'

playername.txt generated at boot if it doesn't exist contents: 'Rockbox!'

Change-Id: I04ea4fd411f74c7c6e672657949aa520c2f86f95
2024-12-07 23:02:22 -05:00
Solomon Peachy
e6851a55ed Revert "[Feature] Skin engine Themes grab text from a file %ft(file, line) WIP"
This reverts commit 62b5dfd81d.

This was accidentally merged, and wasn't up-to-date anyway.

Change-Id: I4fcceb8dc4f86762701daab72498202cabd8295a
2024-12-07 13:48:05 -05:00
William Wilgus
62b5dfd81d [Feature] Skin engine Themes grab text from a file %ft(file, line) WIP
allow the skin engine to read text files and return a particular line

you then can use ss on that string to allow display of strings from the file
(Playername comes to mind)

able to be used as conditional
%?ft(filename)<Found|Not Found>

if (selected) line of file is empty the tag is treated as #COMMENT

scroll timeouts now persist thru trackchange

bugfix:
%t(n)%?x<text|text>
would ignore the specified timeout defaulting to 2 seconds

playername.txt generated at boot if it doesn't exist contents: 'RockBox!'

Change-Id: I961910e01be052ef902f77e6d92fc3e367ffe9d0
2024-12-07 13:21:21 -05:00
Solomon Peachy
93ecb97693 skin_engine: Splash an error when a font fails to load
...Otherwise we fail silently with the theme only partially applied.

Change-Id: I1010efaee965db86bb8d2859b04364f63bfbcc0f
2024-12-07 09:22:51 -05:00
William Wilgus
793c797447 [Fix Yellow] remove DEBUGF from skin_parser.c cleanup spaces
move const to the proper side

Change-Id: Ide7c1878281eaee28d06426eee43041ad61acbc4
2024-12-03 01:48:50 -05:00
William Wilgus
68d4fd0e5b skin_engine minor refactoring struct alignment No Functional Changes
Move some elements around to save 720 bytes in the skin engine with cabbie

saves some code manipulating the skin_helpers arrays in skin_engine
eliminate conditionals checking for pre/post process functions
using a dummy fn(), consolidate pre/post process into a single function
adding a bool preprocess to indicate stage

Change-Id: Id2df4706b73e9025c7300be135dc02e135e587fe
2024-12-03 01:21:28 -05:00
Christian Soffke
cb7b6fd572 skin parser: Fix crash that can occur when same bmp is loaded multiple times
img may have already been loaded, in which case
bm.data will intentionally have been set to NULL
(see NOTE in load_skin_bmp)

Also see commit 01cbb79 and previous fix 35f9a5b

Change-Id: I581ed63836f30a6b669b3d1fd5886fc1b3664386
2024-11-12 13:39:19 +01:00
William Wilgus
9baadd4a95 [Fix Red] 7288d9e Move cfg_vals from settings_list, expand settings_dumper
Change-Id: Ic1dc9eb46b5eed8adc1888e8b7e58d45f4f1c57a
2024-11-10 22:30:30 -05:00
William Wilgus
7288d9e5d2 Move cfg_vals from settings_list, expand settings_dumper
cfg_vals aren't needed for most settings

F_TABLE_SETTING, F_CHOICE_SETTING, F_BOOL_SETTING

can use cfg_vals but only a few custom settings use it otherwise
for these settings we define F_HAS_CFGVALS and use the setting union instead (as these all use UNUSED)

noticed that settings_dumper missed most cfg values so didn't show text setting values

saves ~300 bytes

Change-Id: Ie504c8cfe2a6cf471117c3afe5cf9a770a7f1784
2024-11-10 21:53:22 -05:00
William Wilgus
2e60316500 [coverity] skin_parser.c load_skin_bitmaps check buffer length for bm_data
Change-Id: Ia4496916bf32de332e054b62f1708b3e2ec8e7d8
2024-06-02 11:13:03 -04:00
Solomon Peachy
8b8c0c7c2a checkwps: Validate translated strings (%Sx)
In verbose mode it will log valid the strings found, otherwise it will
only complain when we encounter a missing string.

Unfortunately a missing string is not inherently a problem, due to
conditional expressions.  So all we can do is complain in checkwps
or if wps debugging is turned on.

Meanwhile, this is the first step in actually enumerating the translated
strings used by themes.

Change-Id: Ia93b333085e825d5b085c4d372ad8e13aa3e3ba1
2024-05-24 21:37:54 -04:00
Aidan MacDonald
6cbcde13b9 skin engine: Fix bug with touch region labeling
Auto-created regions associated with a progress bar did not have
a label which could result in an out of bounds read when looking
up touch regions by label. Fix by initializing the label to NULL.

Change-Id: Ic12d697a6a5a45dad977f307471b91db9e607bd5
2024-04-21 20:38:25 -04:00
Solomon Peachy
7b1dd6b60a RFC: Extend skin engine to handle EQ settings
EQ settings are actually an array of 3 ints.  I added a skin parameter
token that allows specifying which array element to use.

So instead of this now-incorrect syntax:

   %St(0,0,-,-,image,eqbar.bmp,vertical,setting,eq band 1 gain)

You would use:

   %St(0,0,-,-,image,eqbar.bmp,vertical,soffset,2,setting,eq peak filter 1)

(the 'gain' is the third element in the eq setting array, thus soffset 2)

Change-Id: Ibda712ab87759efb45420566c967742bcefb513b
2024-04-21 18:27:11 -04:00
William Wilgus
8e9a840d1d [Fix Yellow] 1dc22c7241 use path_append for setting directories is several settings
Change-Id: I30ee97f7f47d52c178de05bcabb62b65fcd9d784
2024-04-01 08:11:05 -04:00
William Wilgus
1dc22c7241 use path_append for setting directories is several settings
sprintf, strcpy, memccpy can all just go thru path_append
with the added benefit of some path sanitizing too

Change-Id: I33510b56a364b8b3a0b06f2ff14b76491f6e3870
2024-04-01 07:35:53 -04:00
Christian Soffke
35f9a5b415 Skin Engine: Fix loading images with same file name
Looks like this was a regression introduced in 01cbb79.
The duplicate img uses an existing buflib handle for
the data, but still didn't have access to the dimensions
from the bitmap struct.

Test case: DancePuffDuo theme for Sansa E200. Only one
dancepuff was displayed. Thank you to goatikins for
reporting the issue.

Change-Id: I32c3ebd1f00738f7db52e7a66f98c4ab3489ee4a
2023-11-18 10:29:47 -05:00
Solomon Peachy
8a22d2678a skin: Fix minor compile warning caused by printf with size_t
Change-Id: I785d1dd05ac8ef81d817cdd1f7d1867c158bfadf
2023-06-22 15:59:53 -04:00
Christian Soffke
666a836227 Skin Engine: Enable dithering for images drawn onto backdrop layer
Backdrop images loaded using %X(filename) already had
dithering enabled, but images loaded using the %x tag
in viewports annotated with %VB did not.

Change-Id: I9c6d11d8e7ab41a53eb9e453d78ae0dc58cb947b
2023-06-09 03:15:10 +02:00
Aidan MacDonald
1e9ad3ca0d Remove buflib allocation names, part two
Remove allocation names from the buflib API and fix up all callers.

Change-Id: I3df922e258d5f0d711d70e72b56b4ed634fb0f5a
2023-01-13 10:32:54 +00:00
William Wilgus
1387d6480e [Fix Red] consolidate bmp_read function between icons and skin_parser
Change-Id: I642ec2272ac94233127d8670f6adee938e53bce0
2022-12-20 19:32:32 -05:00
William Wilgus
88f6628423 consolidate bmp_read function between icons and skin_parser
uses fd now rather than opening file twice

Change-Id: If35418cbc77adacf5e96fb6aa0fc8ffef2fffcbd
2022-12-20 19:07:46 -05:00
Aidan MacDonald
701e262d3d settings: Remove setting ID return from find_setting()
Now that all users have replaced setting IDs with direct pointers,
find_setting() and friends don't need to return an ID value.

Change-Id: I8c5c31bb68d3bca5350d43538335265a55fd5517
2022-12-17 13:36:38 +00:00
Aidan MacDonald
1e6c8d2ea6 skin engine: Settings ID to pointer conversions
Convert %St tag to operate on settings pointers instead of IDs.

Change-Id: Iabf4c280be82b495a64b560b59620fb477e0c738
2022-12-04 11:19:57 -05:00
Aidan MacDonald
bbe3942039 settings: Settings ID to pointer for cfg_string_to_int()
Accept a pointer to struct settings_list instead of an index in the
settings array. Refactor the skin engine's touchregion_setup_setting()
to avoid the use of indices.

Change-Id: I784a5e49205da6874b8b419dd5413f722ad45b67
2022-12-04 05:25:50 -05:00
Aidan MacDonald
3815ef8050 skin engine: Remove albumart viewport field
The viewport field in albumart is unnecessary, but for a different
reason than eg. the progressbar was. The skin engine draws images
by going over a global list of images shared between all viewports.
Prior to drawing a viewport, every image is marked "not displayed."
When an image display tag is encountered during rendering this mark
is set to the index of the subimage to be displayed.

The albumart is handled similarily, by setting a handle to -1 and
then updating it when the %Cd tag is encountered. The albumart is
not drawn unless the handle is set to >= 0 by the %Cd tag. So we
don't need to track or check viewports at all, because only the
viewport that contains the %Cd tag will ever draw the albumart.

Change-Id: Ibc0233d168012759325d3c16dc317de9ad3dcf6c
2022-11-23 10:07:29 -05:00
Aidan MacDonald
830436a282 skin engine: Remove viewport_colour viewport field
Yet again, no need to store the viewport because we already know
it -- and this time the render code is obviously relying on that
assumption.

Change-Id: Id5eb7cd9999fbe1efccd54bd8f0fd3c8a3011c8e
2022-11-23 10:06:16 -05:00
Aidan MacDonald
9368844ad1 skin engine: Remove progressbar viewport field
Again, we don't need to store the viewport in the progressbar
struct because it's known at render time.

Change-Id: I12514ceaace7c897194b18929364340871ef4635
2022-11-23 09:44:23 -05:00
Aidan MacDonald
38687821b2 skin engine: Remove playlistviewer viewport field
We already know the viewport at render time (I think... at least
this seems to be the case for themes I tested) so there's no need
to store a pointer to the viewport.

Change-Id: I75fa2262e96c6f735e6b5da33cd4ca9ac68cd2ee
2022-11-17 16:12:19 +00:00
Aidan MacDonald
15b36a02b1 Remove get_viewport_default_colour()
The function isn't used except for the skin engine's %Vf/%Vb tags,
so inline it there and remove the separate function.

Change-Id: Ia207321877234bc3679457c820a4292ae53f3520
2022-11-17 16:12:19 +00:00
William Wilgus
f6c719d7ec replace strlcpy with strmemccpy
replace applicable calls to strlcpy with calls to strmemccpy
which null terminates on truncation

in theory the strmemccpy calls should be slightly faster since they
don't traverse the rest of the source string on truncation
but I seriously doubt there is too much of that going on in the code base

Change-Id: Ia0251514e36a6242bbf3f03c5e0df123aba60ed2
2022-11-14 23:56:16 -05:00
Aidan MacDonald
56389b21b1 skin engine: Remove gui_img viewport field
This is set but never used.

Change-Id: Ifbeaa843ef070ea178cc270ffcade0d57a4fb45f
2022-11-10 06:37:41 -05:00
Aidan MacDonald
1718cf5f8a Convert a number of allocations to use buflib pinning
Several places in the codebase implemented an ad-hoc form of pinning;
they can be converted to use buflib pinning instead.

Change-Id: I4450be007e80f6c9cc9f56c2929fa4b9b85ebff3
2022-10-16 14:50:39 +01:00
William Wilgus
ffdc64bea2 skin_engine fix invalid buflib handle checks
buflib considers handles <= 0 as invalid
skin engine was using handles < 0

Change-Id: Ie156223a43039d48ef4846fe31e6191630fa7c04
2022-10-15 11:17:52 -04:00
William Wilgus
f3d679aefe skin_engine fix free pointer crash
skin_engine uses -1 to signify a free handle 0 causes crash

Change-Id: I1db8743c14dd244fe92973e31bac61efdd12ca7f
2022-10-15 10:56:30 -04:00
William Wilgus
12ef045fdf move buflib_free invalid handle check to the function
allow buflib_free to check for invalid or already freed handles
within the function -- remove all the invalid handle guards thru core_free

Change-Id: Ibdcbc82760fc93b674c42283fca420d94907df8e
2022-10-15 09:26:58 -04:00
Aidan MacDonald
420fb1163c skin engine: Fix bug with %Vs(color) tag
The %Vs(color) tag doesn't set the text style properly and causes
the background to not be cleared when rendering lines. For static
text this is rarely a problem, but for scrolling text it'll cause
the text to "smear" once it starts scrolling.

Fix this by setting STYLE_DEFAULT, so the background gets redrawn
when the line scrolls.

Bug report: https://forums.rockbox.org/index.php/topic,54320.0.html

Change-Id: I835c806005ea40fd6bac3692e52a9c325581a293
2022-10-01 12:58:00 +01:00
William Wilgus
79864c6ec2 add const to const * strings
I don't think this will amke any difference except maybe for hosted ports

Change-Id: I84f898aea92a6963901a6d889dd18b63f24c9a41
2022-05-03 23:00:58 -04:00