Commit Graph

52 Commits

Author SHA1 Message Date
Rémi Verschelde 8c48e99c17
Merge pull request #82894 from Quimisagi/label-align-values-discarded
Add compatibility rename of `(v)align` properties of `Label`
2024-01-04 16:39:04 +01:00
bruvzg e9c219cff2
[Label] Add get_character_bounds method to get bounding rectangles of the characters. 2023-12-19 13:53:21 +02:00
bruvzg 56579f397d
[Text Overrun] Add option to set custom ellipsis character, add support for system font fallback. 2023-12-04 08:21:42 +02:00
David Crespo 0be873bed2 Add compability rename of (v)align properties of Label 2023-10-31 14:39:57 -05:00
Yuri Sizov 2924bfd4d3 Register theme properties with ThemeDB 2023-09-11 13:45:23 +02:00
bruvzg b23f259e67
[Label] Add support for tab stops. 2023-06-09 12:59:37 +03:00
bruvzg 9163d8c336
Expose TextServer justification flags to Label, Label3D, TextMesh and RTL. Add flags to control last/single line justification. 2023-05-15 19:23:54 +03:00
Rémi Verschelde 76d4d09bfa
Revert Label text reshaping fix #71553 and subsequent regression fixes
Despite a lot of great work from Pedro to try to improve the Label text
reshaping logic and fix subsequent regressions, we found ourselves still
chasing more edge cases, such as #73736 (which got reverted already due
to it causing yet another regression).

In parallel, it seems like the crash scenario that #71553 was addressing
got solved differently in the master branch, so it appears like this
change is no longer necessary at all (at least not urgently), so we
decided to revert to the previous known "ok" state of Label.

- Revert #71553 "Prevent infinite cascade of re-layout after label text reshaping"
This reverts commit ed8c5cd52f.

- Revert #72387 "Enhance label sizing algorithm"
This reverts commit 5131b81a4d.

- Revert #73234 "Fix blank non-autowrapping labels"
This reverts commit 3ccabee9ae.

- Revert #73343 "Make label sizing algorithm more robust"
This reverts commit 4f7f1ef60b.

- Revert #73426 "Fix width determination of non-trimmed, non-wrapped labels"
This reverts commit 73b6c0b972.
2023-02-23 10:36:42 +01:00
Pedro J. Estébanez 4f7f1ef60b Make label sizing algorithm more robust 2023-02-15 18:00:29 +01:00
Pedro J. Estébanez 5131b81a4d Enhance label sizing algorithm 2023-02-06 14:12:29 +01:00
Pedro J. Estébanez ed8c5cd52f Prevent infinite cascade of re-layout after label text reshaping 2023-01-17 13:49:54 +01:00
Rémi Verschelde d95794ec8a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
RedMser 9579d49820 Add warning for missing characters in label font 2022-10-08 17:02:25 +02:00
Yuri Sizov 3b1aa240dc Add a lifecycle method for manual theme item caching to Control 2022-09-01 16:35:36 +03:00
Micky 64bd36ecee Rename Label & RichTextLabel.`percent_visible` to `visible_ratio`
Also updates the documentation of both `visible_characters` and `visible_ratio` to, better describe what they do and improve consistency between the two Classes.
2022-08-26 12:15:57 +02:00
Rémi Verschelde 90019676b0 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 11:17:40 +02:00
bruvzg f63d54126d
Add LabelSettings resource for quick Label theme property override. 2022-07-12 16:05:12 +03:00
bruvzg 344ba0ffaf
Refactor Font configuration and import UI, and Font resources. 2022-07-06 14:12:36 +03:00
bruvzg b5c96df277
Move duplicate AutoWrap, Overrun and VisibleChar behavior enums to the TextServer. 2022-06-16 16:49:37 +03:00
bruvzg be611c1c05
Implement Label3D node.
Add "generate_mipmap" font import option.
Add some missing features to the Sprite3D.
Move BiDi override code from Control to TextServer.
Add functions to access TextServer font cache textures.
Add MSDF related flags and shader to the standard material.
Change standard material cache to use HashMap instead of Vector.
2022-04-22 12:08:46 +03:00
bruvzg 215bede6ff
[TextServer] Add function to change font, font size, and OpenType features without invalidating line break points, justification points, or recreating shaped text buffer. 2022-02-02 11:20:44 +02:00
Rémi Verschelde fe52458154
Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
Rémi Verschelde 1906b59675
Merge pull request #55636 from bruvzg/vis_char_modes
Add different "visible characters" behavior modes.
2021-12-23 00:43:33 +01:00
Nathan Franke 41a20171eb
align to horizontal_alignment, valign to vertical_alignment, related 2021-12-09 01:38:46 -06:00
bruvzg ad4408d413
Add different "visible characters" behavior modes. 2021-12-06 12:14:49 +02:00
Hendrik Brucker 56a8d3f30c Improvements to Label's layout options
- Added options to trim the text in case it overruns
- Added more autowrap modes
- Improved line breaking, which ignores trailing spaces
2021-07-04 16:43:55 +02:00
Rafał Mikrut 7961a1dea3 Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
Rémi Verschelde b5334d14f7
Update copyright statements to 2021
Happy new year to the wonderful Godot community!

2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.

We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)

Here's to a great year 2021 for all Godot users 🎆
2021-01-01 20:19:21 +01:00
bruvzg d66eb77c9c
[Complex Text Layouts] Refactor Label and LineEdit controls. 2020-11-26 14:25:49 +02:00
Aaron Franke 02161aad5a
Remove empty lines around braces with the formatting script 2020-11-16 23:38:11 -05:00
Marcel Admiraal 26fcf2b04c Add override keywords. 2020-07-10 13:56:54 +01:00
Rémi Verschelde 0be6d925dc Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks
Which means that reduz' beloved style which we all became used to
will now be changed automatically to remove the first empty line.

This makes us lean closer to 1TBS (the one true brace style) instead
of hybridating it with some Allman-inspired spacing.

There's still the case of braces around single-statement blocks that
needs to be addressed (but clang-format can't help with that, but
clang-tidy may if we agree about it).

Part of #33027.
2020-05-14 16:54:55 +02:00
Rémi Verschelde 1f6f364a56 Port member initialization from constructor to declaration (C++11)
Using `clang-tidy`'s `modernize-use-default-member-init` check and
manual review of the changes, and some extra manual changes that
`clang-tidy` failed to do.

Also went manually through all of `core` to find occurrences that
`clang-tidy` couldn't handle, especially all initializations done
in a constructor without using initializer lists.
2020-05-14 10:01:56 +02:00
Rémi Verschelde a7f49ac9a1 Update copyright statements to 2020
Happy new year to the wonderful Godot community!

We're starting a new decade with a well-established, non-profit, free
and open source game engine, and tons of further improvements in the
pipeline from hundreds of contributors.

Godot will keep getting better, and we're looking forward to all the
games that the community will keep developing and releasing with it.
2020-01-01 11:16:22 +01:00
IAmActuallyCthulhu 82b9557803
Remove redundant author doc comments 2019-08-12 04:26:38 -05:00
Rémi Verschelde b16c309f82 Update copyright statements to 2019
Happy new year to the wonderful Godot community!
2019-01-01 12:58:10 +01:00
Rémi Verschelde e4213e66b2 Add missing copyright headers and fix formatting
Using `misc/scripts/fix_headers.py` on all Godot files.
Some missing header guards were added, and the header inclusion order
was fixed in the Bullet module.
2018-01-05 01:22:23 +01:00
Rémi Verschelde b50a9114b1 Update copyright statements to 2018
Happy new year to the wonderful Godot community!
2018-01-01 14:40:47 +01:00
Rémi Verschelde bd282ff43f Use HTTPS URL for Godot's website in the headers 2017-08-27 14:16:55 +02:00
Rémi Verschelde df61dc4b2b Add "Godot Engine contributors" copyright line 2017-04-08 00:11:42 +02:00
Rémi Verschelde 5dbf1809c6 A Whole New World (clang-format edition)
I can show you the code
Pretty, with proper whitespace
Tell me, coder, now when did
You last write readable code?

I can open your eyes
Make you see your bad indent
Force you to respect the style
The core devs agreed upon

A whole new world
A new fantastic code format
A de facto standard
With some sugar
Enforced with clang-format

A whole new world
A dazzling style we all dreamed of
And when we read it through
It's crystal clear
That now we're in a whole new world of code
2017-03-05 16:44:50 +01:00
Juan Linietsky 1f8451001d -Translation text will change automatically for in-game buttons, labels, poups when translation is changed.
-Added a NOTIFICATION_TRANSLATION_CHANGED for controls that need custom code
-Sorry, editor will not update automatically because it uses a different translatio method.
2017-01-09 16:43:44 -03:00
Juan Linietsky 118eed485e ObjectTypeDB was renamed to ClassDB. Types are meant to be more generic to Variant.
All usages of "type" to refer to classes were renamed to "class"
ClassDB has been exposed to GDScript.
OBJ_TYPE() macro is now GDCLASS()
2017-01-02 23:03:46 -03:00
Rémi Verschelde c7bc44d5ad Welcome in 2017, dear changelog reader!
That year should bring the long-awaited OpenGL ES 3.0 compatible renderer
with state-of-the-art rendering techniques tuned to work as low as middle
end handheld devices - without compromising with the possibilities given
for higher end desktop games of course. Great times ahead for the Godot
community and the gamers that will play our games!
2017-01-01 22:03:33 +01:00
Ignacio Etcheverry 78819b6b54 Label: Added `get_visible_line_count` method 2016-07-18 23:33:06 +02:00
George Marques 5be9ff7b67 Update copyright to 2016 in headers 2016-01-01 11:50:53 -02:00
Zher Huei Lee a0ba134643 added get_visible_characters() to Label 2015-09-07 22:56:16 +01:00
Zher Huei Lee 7c5cd0c296 reworked Label class
- no longer inherits Range - instead, more sensible
   function names controlling lines visible
 - more accurate vertical alignment
 - percent_visible preserved even after setting new text
2015-09-07 19:56:17 +01:00
Gen 6fa342a1b0 record the number of space before a word. 2015-04-29 16:34:56 +08:00
Gen dfc59d1e00 Update label.h 2015-04-28 23:07:41 +08:00