feat: modules moved and engine moved to submodule

This commit is contained in:
Jan van der Weide 2025-04-12 18:40:44 +02:00
parent dfb5e645cd
commit c33d2130cc
5136 changed files with 225275 additions and 64485 deletions

View file

@ -28,8 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/**************************************************************************/
#ifndef TEXT_SERVER_ADV_H
#define TEXT_SERVER_ADV_H
#pragma once
/*************************************************************************/
/* ICU/HarfBuzz/Graphite backed Text Server implementation with BiDi, */
@ -95,11 +94,6 @@ using namespace godot;
// Thirdparty headers.
#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow"
#endif
#include <unicode/ubidi.h>
#include <unicode/ubrk.h>
#include <unicode/uchar.h>
@ -113,10 +107,6 @@ using namespace godot;
#include <unicode/ustring.h>
#include <unicode/utypes.h>
#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic pop
#endif
#ifdef MODULE_FREETYPE_ENABLED
#include <ft2build.h>
#include FT_FREETYPE_H
@ -177,6 +167,10 @@ class TextServerAdvanced : public TextServerExtension {
mutable USpoofChecker *sc_spoof = nullptr;
mutable USpoofChecker *sc_conf = nullptr;
mutable HashMap<String, UBreakIterator *> line_break_iterators_per_language;
UBreakIterator *_create_line_break_iterator_for_locale(const String &p_language, UErrorCode *r_err) const;
// Font cache data.
#ifdef MODULE_FREETYPE_ENABLED
@ -272,6 +266,7 @@ class TextServerAdvanced : public TextServerExtension {
Rect2 rect;
Rect2 uv_rect;
Vector2 advance;
bool from_svg = false;
};
struct FontForSizeAdvanced {
@ -326,6 +321,7 @@ class TextServerAdvanced : public TextServerExtension {
int fixed_size = 0;
bool allow_system_fallback = true;
bool force_autohinter = false;
bool modulate_color_glyphs = false;
TextServer::Hinting hinting = TextServer::HINTING_LIGHT;
TextServer::SubpixelPositioning subpixel_positioning = TextServer::SUBPIXEL_POSITIONING_AUTO;
bool keep_rounding_remainders = true;
@ -404,7 +400,7 @@ class TextServerAdvanced : public TextServerExtension {
_FORCE_INLINE_ Variant::Type _get_tag_type(int64_t p_tag) const;
_FORCE_INLINE_ bool _get_tag_hidden(int64_t p_tag) const;
_FORCE_INLINE_ int _font_get_weight_by_name(const String &p_sty_name) const {
String sty_name = p_sty_name.replace(" ", "").replace("-", "");
String sty_name = p_sty_name.remove_chars(" -");
if (sty_name.contains("thin") || sty_name.contains("hairline")) {
return 100;
} else if (sty_name.contains("extralight") || sty_name.contains("ultralight")) {
@ -431,7 +427,7 @@ class TextServerAdvanced : public TextServerExtension {
return 400;
}
_FORCE_INLINE_ int _font_get_stretch_by_name(const String &p_sty_name) const {
String sty_name = p_sty_name.replace(" ", "").replace("-", "");
String sty_name = p_sty_name.remove_chars(" -");
if (sty_name.contains("ultracondensed")) {
return 50;
} else if (sty_name.contains("extracondensed")) {
@ -462,6 +458,14 @@ class TextServerAdvanced : public TextServerExtension {
Vector<Glyph> ellipsis_glyph_buf;
};
struct TextRun {
Vector2i range;
RID font_rid;
int font_size = 0;
bool rtl = false;
int64_t span_index = -1;
};
struct ShapedTextDataAdvanced {
Mutex mutex;
@ -493,6 +497,9 @@ class TextServerAdvanced : public TextServerExtension {
int first_span = 0; // First span in the parent ShapedTextData.
int last_span = 0;
Vector<TextRun> runs;
bool runs_dirty = true;
struct EmbeddedObject {
int start = -1;
int end = -1;
@ -668,6 +675,7 @@ class TextServerAdvanced : public TextServerExtension {
mutable HashMap<String, PackedByteArray> system_font_data;
void _update_chars(ShapedTextDataAdvanced *p_sd) const;
void _generate_runs(ShapedTextDataAdvanced *p_sd) const;
void _realign(ShapedTextDataAdvanced *p_sd) const;
int64_t _convert_pos(const String &p_utf32, const Char16String &p_utf16, int64_t p_pos) const;
int64_t _convert_pos(const ShapedTextDataAdvanced *p_sd, int64_t p_pos) const;
@ -677,7 +685,7 @@ class TextServerAdvanced : public TextServerExtension {
Glyph _shape_single_glyph(ShapedTextDataAdvanced *p_sd, char32_t p_char, hb_script_t p_script, hb_direction_t p_direction, const RID &p_font, int64_t p_font_size);
_FORCE_INLINE_ RID _find_sys_font_for_text(const RID &p_fdef, const String &p_script_code, const String &p_language, const String &p_text);
_FORCE_INLINE_ void _add_featuers(const Dictionary &p_source, Vector<hb_feature_t> &r_ftrs);
_FORCE_INLINE_ void _add_features(const Dictionary &p_source, Vector<hb_feature_t> &r_ftrs);
Mutex ft_mutex;
@ -803,6 +811,9 @@ public:
MODBIND2(font_set_force_autohinter, const RID &, bool);
MODBIND1RC(bool, font_is_force_autohinter, const RID &);
MODBIND2(font_set_modulate_color_glyphs, const RID &, bool);
MODBIND1RC(bool, font_is_modulate_color_glyphs, const RID &);
MODBIND2(font_set_subpixel_positioning, const RID &, SubpixelPositioning);
MODBIND1RC(SubpixelPositioning, font_get_subpixel_positioning, const RID &);
@ -957,12 +968,24 @@ public:
MODBIND7R(bool, shaped_text_add_string, const RID &, const String &, const TypedArray<RID> &, int64_t, const Dictionary &, const String &, const Variant &);
MODBIND6R(bool, shaped_text_add_object, const RID &, const Variant &, const Size2 &, InlineAlignment, int64_t, double);
MODBIND5R(bool, shaped_text_resize_object, const RID &, const Variant &, const Size2 &, InlineAlignment, double);
MODBIND1RC(String, shaped_get_text, const RID &);
MODBIND1RC(int64_t, shaped_get_span_count, const RID &);
MODBIND2RC(Variant, shaped_get_span_meta, const RID &, int64_t);
MODBIND2RC(Variant, shaped_get_span_embedded_object, const RID &, int64_t);
MODBIND2RC(String, shaped_get_span_text, const RID &, int64_t);
MODBIND2RC(Variant, shaped_get_span_object, const RID &, int64_t);
MODBIND5(shaped_set_span_update_font, const RID &, int64_t, const TypedArray<RID> &, int64_t, const Dictionary &);
MODBIND1RC(int64_t, shaped_get_run_count, const RID &);
MODBIND2RC(String, shaped_get_run_text, const RID &, int64_t);
MODBIND2RC(Vector2i, shaped_get_run_range, const RID &, int64_t);
MODBIND2RC(RID, shaped_get_run_font_rid, const RID &, int64_t);
MODBIND2RC(int, shaped_get_run_font_size, const RID &, int64_t);
MODBIND2RC(String, shaped_get_run_language, const RID &, int64_t);
MODBIND2RC(Direction, shaped_get_run_direction, const RID &, int64_t);
MODBIND2RC(Variant, shaped_get_run_object, const RID &, int64_t);
MODBIND3RC(RID, shaped_text_substr, const RID &, int64_t, int64_t);
MODBIND1RC(RID, shaped_text_get_parent, const RID &);
@ -1025,5 +1048,3 @@ public:
TextServerAdvanced();
~TextServerAdvanced();
};
#endif // TEXT_SERVER_ADV_H