Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/cmake-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,8 @@ The following variables should be set before calling `dmod_add_executable` or `d
- `DMOD_COMPRESSION_METHOD` - Compression method for DMFC files (default: "fastlz")
- `DMOD_ASSETS_PATHS` - List of directories with the sources of a module's assets (views, images, fonts). When set, they are converted into `DMOD_VIEWS_DIR` (default: `<build>/views`) by the `dmod_assets` target, which the module depends on - with tools `dmf-get` downloads at configure time, only for the kinds of files found:
- `*.dmvs` views - `todmv` - `<name>.dmv`;
- images (`DMOD_IMAGE_EXTENSIONS`, default `png jpg jpeg jpe jfif bmp qoi gif tif tiff`) - `todmvi` with the `dmimg` decoder of each extension (`dmimg_png`, `dmimg_jpeg` for `.jpg`, ...; `DMOD_IMAGE_DECODERS` overrides the list) - `<name>.dmvi`, next to the views, so a view finds them by name. An optional `<image>.ini` next to an image (`logo.png.ini`) sets its conversion: `format` (`auto`, `rgb565`, `rgb565a8`, `argb8888`, `i8`, `a8`, `a4`), `size` (`WIDTHxHEIGHT`, scaled down to fit), `compression` (`fastlz`, `none`), `dither` (`on`/`off`). Keys before any section apply to every output; each `[section]` is an output `<section>.dmvi` of its own (e.g. `[logo]` and `[logo-mask]` from one image). - fonts (`DMOD_FONT_EXTENSIONS`, default `ttf otf ttc`) - `todmvf` - `.dmvf`, next to the views. A font needs its `<font>.ini` (`Roboto-Regular.ttf.ini`), as a font is made for one pixel size: each `[section]` is an output `<section>.dmvf` with its `size` (pixel size, `4` ... `127`, required) and optional `chars` (codepoint ranges, e.g. `0x20-0x7E,0x104`; default: printable ASCII, Latin-1, Latin Extended-A). A font without an `.ini` is left out with a warning.
- images (`DMOD_IMAGE_EXTENSIONS`, default `png jpg jpeg jpe jfif bmp qoi gif tif tiff`) - `todmvi` with the `dmimg` decoder of each extension (`dmimg_png`, `dmimg_jpeg` for `.jpg`, ...; `DMOD_IMAGE_DECODERS` overrides the list) - `<name>.dmvi`, next to the views, so a view finds them by name. An optional `<image>.ini` next to an image (`logo.png.ini`) sets its conversion: `format` (`auto`, `rgb565`, `rgb565a8`, `argb8888`, `i8`, `a8`, `a4`), `size` (`WIDTHxHEIGHT`, scaled down to fit), `compression` (`fastlz`, `none`), `dither` (`on`/`off`). Keys before any section apply to every output; each `[section]` is an output `<section>.dmvi` of its own (e.g. `[logo]` and `[logo-mask]` from one image).
- fonts (`DMOD_FONT_EXTENSIONS`, default `ttf otf ttc`) - `todmvf` - `.dmvf`, next to the views. A font needs its `<font>.ini` (`Roboto-Regular.ttf.ini`), as a font is made for one pixel size: each `[section]` is an output `<section>.dmvf` with its `size` (pixel size, `4` ... `127`, required) and optional `chars` (codepoint ranges, e.g. `0x20-0x7E,0x104`; default: printable ASCII, Latin-1, Latin Extended-A) and `tracking` (letter spacing added to every advance, in pixels, e.g. `-2.4`, like CSS `letter-spacing`). A font without an `.ini` is left out with a warning.

Two sources of one output name are a configuration error.

Expand Down
9 changes: 8 additions & 1 deletion scripts/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,8 @@ endfunction()
# size = pixel size (em), 4 ... 127 - required
# chars = codepoint ranges, e.g. 0x20-0x7E,0x104 (default: printable
# ASCII, Latin-1, Latin Extended-A)
# tracking = letter spacing added to every advance, pixels, e.g. -2.4
# (CSS letter-spacing; default 0)
#
# Related variables:
# DMOD_VIEWS_DIR output directory of the converted assets
Expand Down Expand Up @@ -296,8 +298,13 @@ function(_dmod_font_option iniPath key value outVar)
set(ARGS "")
if(key STREQUAL "chars")
set(ARGS -c ${value})
elseif(key STREQUAL "tracking")
if(NOT value MATCHES "^[-+]?[0-9]+(\\.[0-9]+)?$")
message(SEND_ERROR "${iniPath}: tracking must be a number of pixels, e.g. -2.4 (got '${value}')")
endif()
set(ARGS -t ${value})
else()
message(SEND_ERROR "${iniPath}: unknown key '${key}' (size, chars)")
message(SEND_ERROR "${iniPath}: unknown key '${key}' (size, chars, tracking)")
endif()
set(${outVar} "${ARGS}" PARENT_SCOPE)
endfunction()
Expand Down
Loading