Commit Graph
109 Commits
Author SHA1 Message Date
Rubidiumandrubidium42 c59d64c132 Codechange: separate TextColour enumeration and flags 2026-05-18 08:37:42 +02:00
Jonathan G RennisonandGitHub 89174e891a Codechange: typedef for EnumClassIndexContainer with std::array (#15548) 2026-04-30 14:59:10 -04:00
Rubidiumandrubidium42 7434052eb6 Codechange: make FontSize a scoped enum 2026-04-12 18:10:34 +02:00
Rubidiumandrubidium42 39dfb7c27b Codechange: use size_t for glyph/run counts, remove unneeded glyph count instance variable 2026-02-11 21:44:35 +01:00
Rubidiumandrubidium42 c52c8e04a8 Codechange: move documentation to super class and add missing documentation 2026-02-11 20:43:31 +01:00
Peter NelsonandPeter Nelson b03347f00c Revert: "Change: Support side-by-side fallback FontCaches instead of hierarchical. (#13303)"
This reverts commit 1829f7926d.
2025-12-13 09:09:21 +00:00
Peter NelsonandPeter Nelson 973514adc3 Revert: "Add: Automatically load fonts for missing glyphs. (#14856)"
This reverts commit c1d37d8699.
2025-12-13 09:09:21 +00:00
Cyprian KlimaszewskiandGitHub 99f04f27de Doc: Update information for receiving a copy of GPL. (#14869) 2025-12-07 11:25:08 +00:00
Peter NelsonandGitHub c1d37d8699 Add: Automatically load fonts for missing glyphs. (#14856) 2025-12-06 12:22:25 +00:00
Peter NelsonandGitHub 1829f7926d Change: Support side-by-side fallback FontCaches instead of hierarchical. (#13303)
The text layouter system can now support using different fonts for different glyphs, including mixing scalable and sprite glyphs.
2025-12-06 10:47:12 +00:00
Peter NelsonandPeter Nelson c3451b5d97 Codechange: Replace color with colour. 2025-11-18 00:02:48 +00:00
Peter NelsonandPeter Nelson 9735fbbaa1 Codechange: Use LRUCache for layouted LineCache.
This avoids needing to manually manage the size of the cache.
2025-05-06 18:09:00 +01:00
Peter NelsonandGitHub 7596f98e2d Codechange: Cache layouted text for the last used width. (#14177) 2025-05-03 18:33:47 +01:00
froschandfrosch 66733e2a50 Codechange: Use std::string_view in IME input handling. 2025-04-30 19:33:56 +02:00
froschandGitHub 2a62eea005 Codefix: Comment style. (#14064) 2025-04-21 17:25:09 +02:00
froschandfrosch f06bfc0dad Codechange: Use Utf8View to const-iterate over strings, if no particular error handling is needed. 2025-04-03 18:43:41 +02:00
Rubidiumandrubidium42 754311a779 Codechange: use std::move when appropriate 2025-03-13 13:00:24 +01:00
Rubidiumandrubidium42 bb2b890c88 Codechange: manage the ParagraphLayouter's buffer with std::unique_ptr 2025-03-03 16:42:48 +01:00
Rubidiumandrubidium42 15dcf56dad Codechange: remove ZeroedMemoryAllocator 2025-02-28 20:12:44 +01:00
Peter NelsonandPeter Nelson c78e309b16 Codefix: Use snake_case instead of camelCase in layouters. 2024-12-20 19:05:08 +00:00
Rubidiumandrubidium42 d623aa0dfb Fix: no need to guard free() 2024-12-20 19:08:10 +01:00
Peter NelsonandGitHub 23e252ad40 Codechange: Replace FontMap's std::map with std::vector. (#13126) 2024-11-27 12:36:56 +00:00
Peter NelsonandPeter Nelson 5cd81a980e Codechange: Store both left and right glyph positions in a run.
This also allows the end of a run to be known without using an extra position entry.
2024-06-09 09:57:20 +01:00
Peter NelsonandPeter Nelson 80ddcb9d7d Codechange: Move GetCharPosInString/GetCharAtPosition to gfx_layout.
These functions are related more to layouting than graphics.
2024-06-09 09:57:20 +01:00
Jonathan G RennisonandGitHub af7ad964dd Codechange: Avoid unnecessary allocation of temporaries in layout line cache (#12737) 2024-06-08 21:21:02 +01:00
Peter NelsonandGitHub 3d4b98845a Codechange: Remove initial colour from layouter cache. (#12728)
Initial colour is now always TC_INVALID, which is substituted with the desired colour when drawing the layout line.

This allows strings which differ only by initial colour to use the same layout cache entry, increasing the efficacy of the cache.
2024-05-28 19:33:44 +01:00
Peter NelsonandGitHub 676d64037d Fix d6ccfdb: GetCharPosition failed for RTL text. (#12710)
Changes in d6ccfdb assumed that character indexes only incremented, which is not true for RTL text.
2024-05-24 15:33:30 +01:00
a28ab8cac2 Codechange: Replace C-style casts to size_t with static_cast. (#12455)
* Codechange: Replace C-style casts to size_t with static_cast.

This touches only simple value-type casts.

* Codechange: Replace static_cast<size_t>(-1) with SIZE_MAX

Co-authored-by: Rubidium <rubidium@openttd.org>
2024-04-19 20:34:36 +01:00
Peter NelsonandGitHub 6d276698b6 Fix: Memory leak in ICUParagraphLayout::NextLine() (#11895)
This function calls icu::BreakIterator::createLineInstance() but does not clean up after it.

Instead use a static instance that is cloned (for thread-safety) and deleted as necessary.
2024-01-27 20:13:42 +00:00
Peter NelsonandGitHub d6ccfdbbd9 Fix #11827: Make Layouter::GetCharPosition() aware of ligatures. (#11831)
When ligatures happen the precise individual character position is not known, so instead return the previous position (which is that of the ligature.)
2024-01-20 17:16:42 +00:00
Peter NelsonandPeter Nelson ae575a7a5b Codechange: Store text run positions in vector of points.
This simplifies the interlaced vector of x/y positions.
2024-01-19 00:08:31 +00:00
Peter NelsonandGitHub a6873ef7dd Codechange: Avoid repeatedly calling virtual methods in text drawing loop. (#11774) 2024-01-14 19:06:50 +00:00
Niels Martin HansenandPatric Stout 4765d0f8c2 Change: Text Layouter support querying all lines for character at pixel 2023-09-13 16:11:08 +02:00
Rubidiumandrubidium42 eaae0bb5e7 Codechange: automatic adding of _t to (u)int types, and WChar to char32_t
for i in `find src -type f|grep -v 3rdparty/fmt|grep -v 3rdparty/catch2|grep -v 3rdparty/opengl|grep -v stdafx.h`; do sed 's/uint16& /uint16 \&/g;s/int8\([ >*),;[]\)/int8_t\1/g;s/int16\([ >*),;[]\)/int16_t\1/g;s/int32\([ >*),;[]\)/int32_t\1/g;s/int64\([ >*),;[]\)/int64_t\1/g;s/ uint32(/ uint32_t(/g;s/_uint8_t/_uint8/;s/Uint8_t/Uint8/;s/ft_int64_t/ft_int64/g;s/uint64$/uint64_t/;s/WChar/char32_t/g;s/char32_t char32_t/char32_t WChar/' -i $i; done
2023-07-19 19:30:14 +02:00
Niels Martin Hansen 103d88ee33 Fix: Layouter not taking stripped formatting codes into account when mapping visual coordinates to/from original string 2023-06-26 17:31:17 +02:00
Niels Martin Hansen ed3f14686d Fix: Layouter::GetCharAtPosition counting wrong
Bug introduced in commit 60399e
2023-06-18 21:07:40 +02:00
Rubidiumandrubidium42 96fef9f643 Codechange: allocate enough memory to layout the strings 2023-06-06 18:08:11 +02:00
Rubidiumandrubidium42 3323402aaa Codechange: rename smallvec_type to container_func and use only when needed 2023-05-20 16:53:10 +02:00
Peter NelsonandPeterN bf8f24f9a8 Codechange: Use unique_ptr for text layout font mapping.
This must stay a pointer as the value passed to other structures.
2023-05-18 12:18:30 +01:00
Peter NelsonandPeterN c38df2d589 Codechange: Use std::map instead of custom SmallMap. 2023-05-18 12:18:30 +01:00
Patric StoutandPatric Stout a05ae2497f Codechange: simplify how GetCharPosition() works 2023-05-08 19:21:42 +02:00
Patric StoutandPatric Stout 60399e17bd Codechange: C++-ify the Layouter and related functions
They all now access a std::string_view, instead of a "const char *"
or std::string (in some cases).

Additionally, GetCharAtPosition and friends now return an index
instead of a "const char *", as it makes for a more clear interface.
2023-05-08 19:21:42 +02:00
Patric StoutandPatric Stout 81d4fa6999 Feature: drop ICU-lx in favour of directly interfacing with harfbuzz
This means we have RTL support again with ICU 58+. It makes use of:
- ICU for bidi-itemization
- ICU for script-itemization
- OpenTTD for style-itemization
- harfbuzz for shaping
2023-05-01 22:17:56 +02:00
Patric StoutandPatric Stout 9cb60768fe Codechange: split implementations of ParagraphLayouterFactory into their own file 2023-05-01 22:17:56 +02:00
Rubidiumandrubidium42 c578917783 Fix #10057: FallbackParagraphLayout fails to properly wrap
... during the first word after a new run has been started.
2023-01-15 11:43:22 +01:00
Peter NelsonandTyler Trahan daaa058493 Change: Vertically centre sprite font relative to TrueType font. 2022-12-18 11:46:01 -05:00
PeterNandGitHub cea62ef73d Fix #10161: Ignore ascender in FallbackLayouter for non-built-in fonts. (#10169) 2022-11-13 17:10:34 +00:00
Peter NelsonandPeterN 9666e46739 Feature: Variable GUI scale.
GUI scale is now variable from 100% to 500%, and no longer restricted to
powers-of-2.
2022-11-12 18:28:39 +00:00
Frédéric SimonisandGitHub ac4a7d02c7 Codechange: Improve LineCache queries (#9417)
Adds the support to query the linecache without copying the string.
This uses a custom transparent comparator in conjunction with
a query type using a std::string_view.
2021-08-16 11:18:47 +02:00
rubidium42andrubidium42 55a11710a6 Codechange: convert printf DEBUG statements to fmt Debug statements 2021-06-13 12:45:45 +02:00