Commit Graph

94 Commits

Author SHA1 Message Date
Pedro J. Estébanez 4ddcdc031b Modernize Mutex
- Based on C++11's `mutex`
- No more need to allocate-deallocate or check for null
- No pointer anymore, just a member variable
- Platform-specific implementations no longer needed
- Simpler for `NO_THREADS`
- `BinaryMutex` added for special cases as the non-recursive version
- `MutexLock` now takes a reference. At this point the cases of null `Mutex`es are rare. If you ever need that, just don't use `MutexLock`.
- `ScopedMutexLock` is dropped and replaced by `MutexLock`, because they were pretty much the same.
2021-02-18 11:58:08 +01:00
bruvzg 56fccb1ec1
[3.2] Fix SPACING_SPACE not used for drawing characters. 2021-02-15 18:03:26 +02:00
Rafał Mikrut f92ad30dfd Fix memory leak dynamic font 2021-01-17 17:53:13 +01:00
Rémi Verschelde 49646383f1
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 🎆

(cherry picked from commit b5334d14f7)
2021-01-13 16:17:06 +01:00
bruvzg 7ed2cf79ae
[3.2] Use base character advances for outline drawing. 2020-12-25 13:27:36 +02:00
bruvzg 1b4fab3318
[3.2] Fix fallback emoji font color. 2020-12-09 11:20:55 +02:00
bruvzg 4d58321850
[3.2] Load dynamic fonts to memory on all platforms, to avoid locked files. 2020-12-07 10:24:30 +02:00
Hugo Locurcio 575dbd4bb2
Fix artifacts in DynamicFont when scaling with filtering enabled 2020-10-29 00:33:11 +01:00
Pedro J. Estébanez 06904ac215 Add DynamicFont::get_available_chars() 2020-07-20 17:45:04 +02:00
Hugo Locurcio d56b9d5ebf Disable antialiasing on the DynamicFont outline as well when requested
This partially addresses
https://github.com/godotengine/godot-proposals/issues/943.

(cherry picked from commit 2919fc7317)
2020-06-04 12:09:40 +02:00
Rémi Verschelde 0be64da008 Allow greater values for DynamicFont size property
See https://github.com/godotengine/godot/issues/22581#issuecomment-576836691.

Not using `or_greater` as there *is* a max size value that the current
implementation can accept. If using e.g. size 6000 with
FiraSans-Regular.ttf, errors are printed due to failing asserts on a
glyph size that should be within 4096x4096 px.
2020-01-21 20:59:16 +01:00
Haoyu Qiu 0eab15a5a9 Destroys FreeType library on load error 2020-01-20 11:00:51 +08:00
Rémi Verschelde 40f0649e5b Fix typos with codespell
Using codespell 1.16.0.

See ab3bccdb78 for procedure.
2020-01-15 00:49:52 +01:00
volzhs e03ac8c618 Update size and position for colored font with oversampling 2020-01-07 02:15:23 +09: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
Haoyu Qiu 5deb6497a1 Fixes crash when using DynamicFont::set_font_data 2019-12-10 21:26:42 +08:00
Rodolfo Ribeiro Gomes 20b493f790 fix dynamic font crash if no available font size 2019-09-29 12:05:11 -03:00
qarmin 17732fe698 Added some obvious errors explanations 2019-09-25 10:28:50 +02:00
Rémi Verschelde d3153c28f0 Replace last occurrences of 'ERR_EXPLAIN' with 'ERR_FAIL_*_MSG'
The last remaining ERR_EXPLAIN call is in FreeType code and makes sense as is
(conditionally defines the error message).

There are a few ERR_EXPLAINC calls for C-strings where String is not included
which can stay as is to avoid adding additional _MSGC macros just for that.

Part of #31244.
2019-08-17 13:31:22 +02:00
Tomasz Chabora af5e0fff66 Remove ERR_EXPLAIN from scene/* code 2019-08-09 13:54:52 +02:00
qarmin e0b5b21863 Add some code changes/fixes proposed by Coverity and Clang Tidy 2019-08-07 12:54:30 +02:00
Hugo Locurcio 818f756d90
Add a property hint for DynamicFont size
This caps its size to reasonable values in the Inspector.

This closes #22581.
2019-05-02 00:46:53 +02:00
Marcin Zawiejski bbc9e91043
Fix warning when setting out of range outline_size
Fixes the warning mentioned in #25046
2019-01-23 14:44:16 +01:00
volzhs a9b7843dca Fix font kerning 2019-01-05 09:44:47 +09: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
volzhs e577093965 Fix colored font rendered in wrong size
Fix #24456

The character->rect.size is properly update at DynamicFontAtSize::_bitmap_to_character
so no need to multiply scale again.

It was changed with 5cd12f6649
2018-12-19 03:54:51 +09:00
Hugo Locurcio fd89464d45
Add a property to control DynamicFont anti-aliasing
- Editor font anti-aliasing can now be disabled in the Editor Settings.
- DynamicFonts used in projects can now have their anti-aliasing
  disabled in their DynamicFontData child. Changes will be visible
  upon reloading the scene in the editor.
2018-11-10 22:07:32 +01:00
Juan Linietsky f2e54057ae -Moved EditorDefaultValue to ClassDB, made it core
-Removed one and zero hints for properties, replaced by default value
2018-11-08 11:30:59 -03:00
Ibrahn Sahir 7d82bed4f4 Moved dynamic font list from static to lifetime controlled by main.
Means the list is destroyed before the OS object, allowing it the
opportunity to print an error if there are still dynamic font objects
hanging around.
2018-10-20 10:13:06 +01:00
Dualtagh Murray b902a2f2a7 Fixing warnings generated by MSVC
Fixes #22684.
2018-10-19 11:45:24 +02:00
Akeru 81fa121909 Fix fallback font oversampling. 2018-10-03 17:25:28 +02:00
Rémi Verschelde 277b24dfb7 Make core/ includes absolute, remove subfolders from include path
This allows more consistency in the manner we include core headers,
where previously there would be a mix of absolute, relative and
include path-dependent includes.
2018-09-12 09:52:22 +02:00
Juan Linietsky f41dddf069 missed outline size in previous commit 2018-08-24 11:22:17 -03:00
Juan Linietsky c399c41dfb Initalize font size to 16, closes #21165 2018-08-24 11:21:24 -03:00
Rémi Verschelde 52466d57e9 Make some debug prints verbose-only, remove others 2018-08-24 14:59:01 +02:00
Hein-Pieter van Braam 0e29f7974b Reduce unnecessary COW on Vector by make writing explicit
This commit makes operator[] on Vector const and adds a write proxy to it.  From
now on writes to Vectors need to happen through the .write proxy. So for
instance:

Vector<int> vec;
vec.push_back(10);
std::cout << vec[0] << std::endl;
vec.write[0] = 20;

Failing to use the .write proxy will cause a compilation error.

In addition COWable datatypes can now embed a CowData pointer to their data.
This means that String, CharString, and VMap no longer use or derive from
Vector.

_ALWAYS_INLINE_ and _FORCE_INLINE_ are now equivalent for debug and non-debug
builds. This is a lot faster for Vector in the editor and while running tests.
The reason why this difference used to exist is because force-inlined methods
used to give a bad debugging experience. After extensive testing with modern
compilers this is no longer the case.
2018-07-26 00:54:16 +02:00
Wilson E. Alvarez a22e746bc3 Removed unnecessary assignments 2018-07-24 09:51:03 +02:00
Hugo Locurcio 6deb1889d0
Fix the DynamicFont hinting setting being ineffective 2018-06-29 21:38:53 +02:00
Ruslan Mustakov d5a0b5f35b Ceil char width within Label instead of Font
Some classes use Font::get_char_size directly and not only for
autowrapping. RichTextLabel is one such example. So this commit
reverts aa8561d (PR #17504) and instead ceils character width within
Label. This makes sure Label autowraps correctly while not affecting
other Font clients.

Fixes #18835.
2018-05-14 20:32:14 +07:00
Ruslan Mustakov f34ea810fe Update oversampling of outlines after window size change
Fixes #18774.
2018-05-11 13:59:56 +07:00
Ruslan Mustakov 863dd9aa46 Always emit dynamic font change in update_oversampling
Fixes #15787.

The issue occurred when two (or more) separate DynamicFont instances
used the same DynamicFontAtSize instance due to having equal
properties. The first instance updated its data_at_size and emitted
"changed" signal, but the second did not because it considered the
data_at_size to be up to date, even though it has just been updated.
2018-05-08 19:01:15 +07:00
Ruslan Mustakov 5cd12f6649 Perfect FreeType-based outlines for DynamicFonts
- Implement outlines based on FreeType Stroker API. This allows
  artifact-free results, similar to what you will see in Web or any text
  editing tools. Outline is a part of DynamicFont rather than Label,
  because outlines have to be baked into the font's atlas. Font has a
  default outline_color and a Label can specify font_outline_modulator
  that will be multiplied with the Font's color to get the final result.

- draw_char now has to be called twice to fully render a text - first
  with p_outline == true for each character and then with
  p_outline == false for each character.

- Number of draw-calls is reduced from 5 to 2 per outlined character.

- Overall cleanup of DynamicFont code, extracted duplicated code pieces
  into separate methods.

- The change is backward-compatible - Labels still have outline
  properties that work exactly as they worked before.

Closes #16279.
2018-05-08 13:45:24 +07:00
Ruslan Mustakov aa8561ded4 Ceil dynamic font glyph size
Fixes #15459. When oversampling is enabled, glyphs may have fractional
size, but they are still rendered into integral pixels, which results in
them taking more space than was anticiped by autowrapping algorithm. The
solution here is to return ceiled width, which makes autowrapper
consider characters a bit larger than they are, but it doesn't hurt the
actual rendering and ensures there is enough space for the characters.
2018-03-14 19:53:44 +07:00
Hugo Locurcio c1544c12ef
Add an hinting mode setting to DynamicFonts
- Editor font hinting can now be tweaked in the Editor Settings.
- DynamicFonts used in projects now have tweakable hinting settings
  in their DynamicFontData child. Changes will be visible upon
  reloading the scene in the editor.
2018-02-28 00:12:26 +01:00
Rémi Verschelde 5933cf867a
Merge pull request #15780 from volzhs/emoji
Support colored font
2018-02-19 21:51:53 +01:00
Juan Linietsky 8daf5491ab I have no idea why this commit fixes #15392 2018-01-21 16:19:35 -03:00
volzhs c5e3acc29c Support colored font 2018-01-16 22:56:54 +09:00
Bernhard Liebl a64dc5af74 Two potential glitches in font oversampling 2018-01-08 18:09:41 +01:00
Bernhard Liebl 526e637a97 Fix stale dynamic font reference fetch from cache
Seems to fix issue 15392
2018-01-07 16:57:23 +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