You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Use BitField hint for the TextServer enums. Add missing parts for BitField support to the GDextension API.
This commit is contained in:
@@ -463,12 +463,12 @@ void TextServer::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(ORIENTATION_VERTICAL);
|
||||
|
||||
/* JustificationFlag */
|
||||
BIND_ENUM_CONSTANT(JUSTIFICATION_NONE);
|
||||
BIND_ENUM_CONSTANT(JUSTIFICATION_KASHIDA);
|
||||
BIND_ENUM_CONSTANT(JUSTIFICATION_WORD_BOUND);
|
||||
BIND_ENUM_CONSTANT(JUSTIFICATION_TRIM_EDGE_SPACES);
|
||||
BIND_ENUM_CONSTANT(JUSTIFICATION_AFTER_LAST_TAB);
|
||||
BIND_ENUM_CONSTANT(JUSTIFICATION_CONSTRAIN_ELLIPSIS);
|
||||
BIND_BITFIELD_FLAG(JUSTIFICATION_NONE);
|
||||
BIND_BITFIELD_FLAG(JUSTIFICATION_KASHIDA);
|
||||
BIND_BITFIELD_FLAG(JUSTIFICATION_WORD_BOUND);
|
||||
BIND_BITFIELD_FLAG(JUSTIFICATION_TRIM_EDGE_SPACES);
|
||||
BIND_BITFIELD_FLAG(JUSTIFICATION_AFTER_LAST_TAB);
|
||||
BIND_BITFIELD_FLAG(JUSTIFICATION_CONSTRAIN_ELLIPSIS);
|
||||
|
||||
/* AutowrapMode */
|
||||
BIND_ENUM_CONSTANT(AUTOWRAP_OFF);
|
||||
@@ -477,11 +477,11 @@ void TextServer::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(AUTOWRAP_WORD_SMART);
|
||||
|
||||
/* LineBreakFlag */
|
||||
BIND_ENUM_CONSTANT(BREAK_NONE);
|
||||
BIND_ENUM_CONSTANT(BREAK_MANDATORY);
|
||||
BIND_ENUM_CONSTANT(BREAK_WORD_BOUND);
|
||||
BIND_ENUM_CONSTANT(BREAK_GRAPHEME_BOUND);
|
||||
BIND_ENUM_CONSTANT(BREAK_WORD_BOUND_ADAPTIVE);
|
||||
BIND_BITFIELD_FLAG(BREAK_NONE);
|
||||
BIND_BITFIELD_FLAG(BREAK_MANDATORY);
|
||||
BIND_BITFIELD_FLAG(BREAK_WORD_BOUND);
|
||||
BIND_BITFIELD_FLAG(BREAK_GRAPHEME_BOUND);
|
||||
BIND_BITFIELD_FLAG(BREAK_ADAPTIVE);
|
||||
|
||||
/* VisibleCharactersBehavior */
|
||||
BIND_ENUM_CONSTANT(VC_CHARS_BEFORE_SHAPING);
|
||||
@@ -498,25 +498,25 @@ void TextServer::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD_ELLIPSIS);
|
||||
|
||||
/* TextOverrunFlag */
|
||||
BIND_ENUM_CONSTANT(OVERRUN_NO_TRIM);
|
||||
BIND_ENUM_CONSTANT(OVERRUN_TRIM);
|
||||
BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD_ONLY);
|
||||
BIND_ENUM_CONSTANT(OVERRUN_ADD_ELLIPSIS);
|
||||
BIND_ENUM_CONSTANT(OVERRUN_ENFORCE_ELLIPSIS);
|
||||
BIND_ENUM_CONSTANT(OVERRUN_JUSTIFICATION_AWARE);
|
||||
BIND_BITFIELD_FLAG(OVERRUN_NO_TRIM);
|
||||
BIND_BITFIELD_FLAG(OVERRUN_TRIM);
|
||||
BIND_BITFIELD_FLAG(OVERRUN_TRIM_WORD_ONLY);
|
||||
BIND_BITFIELD_FLAG(OVERRUN_ADD_ELLIPSIS);
|
||||
BIND_BITFIELD_FLAG(OVERRUN_ENFORCE_ELLIPSIS);
|
||||
BIND_BITFIELD_FLAG(OVERRUN_JUSTIFICATION_AWARE);
|
||||
|
||||
/* GraphemeFlag */
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_VALID);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_RTL);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_VIRTUAL);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_SPACE);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_BREAK_HARD);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_BREAK_SOFT);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_TAB);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_ELONGATION);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_PUNCTUATION);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_UNDERSCORE);
|
||||
BIND_ENUM_CONSTANT(GRAPHEME_IS_CONNECTED);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_VALID);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_RTL);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_VIRTUAL);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_SPACE);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_BREAK_HARD);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_BREAK_SOFT);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_TAB);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_ELONGATION);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_PUNCTUATION);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_UNDERSCORE);
|
||||
BIND_BITFIELD_FLAG(GRAPHEME_IS_CONNECTED);
|
||||
|
||||
/* Hinting */
|
||||
BIND_ENUM_CONSTANT(HINTING_NONE);
|
||||
@@ -556,11 +556,12 @@ void TextServer::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(SPACING_SPACE);
|
||||
BIND_ENUM_CONSTANT(SPACING_TOP);
|
||||
BIND_ENUM_CONSTANT(SPACING_BOTTOM);
|
||||
BIND_ENUM_CONSTANT(SPACING_MAX);
|
||||
|
||||
/* Font Style */
|
||||
BIND_ENUM_CONSTANT(FONT_BOLD);
|
||||
BIND_ENUM_CONSTANT(FONT_ITALIC);
|
||||
BIND_ENUM_CONSTANT(FONT_FIXED_WIDTH);
|
||||
BIND_BITFIELD_FLAG(FONT_BOLD);
|
||||
BIND_BITFIELD_FLAG(FONT_ITALIC);
|
||||
BIND_BITFIELD_FLAG(FONT_FIXED_WIDTH);
|
||||
|
||||
/* Structured text parser */
|
||||
BIND_ENUM_CONSTANT(STRUCTURED_TEXT_DEFAULT);
|
||||
@@ -650,7 +651,7 @@ void TextServer::draw_hex_code_box(const RID &p_canvas, int64_t p_size, const Ve
|
||||
}
|
||||
}
|
||||
|
||||
PackedInt32Array TextServer::shaped_text_get_line_breaks_adv(const RID &p_shaped, const PackedFloat32Array &p_width, int64_t p_start, bool p_once, int64_t /*TextBreakFlag*/ p_break_flags) const {
|
||||
PackedInt32Array TextServer::shaped_text_get_line_breaks_adv(const RID &p_shaped, const PackedFloat32Array &p_width, int64_t p_start, bool p_once, BitField<TextServer::LineBreakFlag> p_break_flags) const {
|
||||
PackedInt32Array lines;
|
||||
|
||||
ERR_FAIL_COND_V(p_width.is_empty(), lines);
|
||||
@@ -687,7 +688,7 @@ PackedInt32Array TextServer::shaped_text_get_line_breaks_adv(const RID &p_shaped
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if ((p_break_flags & BREAK_MANDATORY) == BREAK_MANDATORY) {
|
||||
if (p_break_flags.has_flag(BREAK_MANDATORY)) {
|
||||
if ((l_gl[i].flags & GRAPHEME_IS_BREAK_HARD) == GRAPHEME_IS_BREAK_HARD) {
|
||||
lines.push_back(line_start);
|
||||
lines.push_back(l_gl[i].end);
|
||||
@@ -701,12 +702,12 @@ PackedInt32Array TextServer::shaped_text_get_line_breaks_adv(const RID &p_shaped
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ((p_break_flags & BREAK_WORD_BOUND) == BREAK_WORD_BOUND) {
|
||||
if (p_break_flags.has_flag(BREAK_WORD_BOUND)) {
|
||||
if ((l_gl[i].flags & GRAPHEME_IS_BREAK_SOFT) == GRAPHEME_IS_BREAK_SOFT) {
|
||||
last_safe_break = i;
|
||||
}
|
||||
}
|
||||
if ((p_break_flags & BREAK_GRAPHEME_BOUND) == BREAK_GRAPHEME_BOUND) {
|
||||
if (p_break_flags.has_flag(BREAK_GRAPHEME_BOUND)) {
|
||||
last_safe_break = i;
|
||||
}
|
||||
}
|
||||
@@ -726,7 +727,7 @@ PackedInt32Array TextServer::shaped_text_get_line_breaks_adv(const RID &p_shaped
|
||||
return lines;
|
||||
}
|
||||
|
||||
PackedInt32Array TextServer::shaped_text_get_line_breaks(const RID &p_shaped, double p_width, int64_t p_start, int64_t /*TextBreakFlag*/ p_break_flags) const {
|
||||
PackedInt32Array TextServer::shaped_text_get_line_breaks(const RID &p_shaped, double p_width, int64_t p_start, BitField<TextServer::LineBreakFlag> p_break_flags) const {
|
||||
PackedInt32Array lines;
|
||||
|
||||
const_cast<TextServer *>(this)->shaped_text_update_breaks(p_shaped);
|
||||
@@ -755,7 +756,7 @@ PackedInt32Array TextServer::shaped_text_get_line_breaks(const RID &p_shaped, do
|
||||
word_count = 0;
|
||||
continue;
|
||||
}
|
||||
if ((p_break_flags & BREAK_MANDATORY) == BREAK_MANDATORY) {
|
||||
if (p_break_flags.has_flag(BREAK_MANDATORY)) {
|
||||
if ((l_gl[i].flags & GRAPHEME_IS_BREAK_HARD) == GRAPHEME_IS_BREAK_HARD) {
|
||||
lines.push_back(line_start);
|
||||
lines.push_back(l_gl[i].end);
|
||||
@@ -765,16 +766,16 @@ PackedInt32Array TextServer::shaped_text_get_line_breaks(const RID &p_shaped, do
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ((p_break_flags & BREAK_WORD_BOUND) == BREAK_WORD_BOUND) {
|
||||
if (p_break_flags.has_flag(BREAK_WORD_BOUND)) {
|
||||
if ((l_gl[i].flags & GRAPHEME_IS_BREAK_SOFT) == GRAPHEME_IS_BREAK_SOFT) {
|
||||
last_safe_break = i;
|
||||
word_count++;
|
||||
}
|
||||
if (p_break_flags.has_flag(BREAK_ADAPTIVE) && word_count == 0) {
|
||||
last_safe_break = i;
|
||||
}
|
||||
}
|
||||
if (((p_break_flags & BREAK_WORD_BOUND_ADAPTIVE) == BREAK_WORD_BOUND_ADAPTIVE) && word_count == 0) {
|
||||
last_safe_break = i;
|
||||
}
|
||||
if ((p_break_flags & BREAK_GRAPHEME_BOUND) == BREAK_GRAPHEME_BOUND) {
|
||||
if (p_break_flags.has_flag(BREAK_GRAPHEME_BOUND)) {
|
||||
last_safe_break = i;
|
||||
}
|
||||
}
|
||||
@@ -794,7 +795,7 @@ PackedInt32Array TextServer::shaped_text_get_line_breaks(const RID &p_shaped, do
|
||||
return lines;
|
||||
}
|
||||
|
||||
PackedInt32Array TextServer::shaped_text_get_word_breaks(const RID &p_shaped, int64_t p_grapheme_flags) const {
|
||||
PackedInt32Array TextServer::shaped_text_get_word_breaks(const RID &p_shaped, BitField<TextServer::GraphemeFlag> p_grapheme_flags) const {
|
||||
PackedInt32Array words;
|
||||
|
||||
const_cast<TextServer *>(this)->shaped_text_update_justification_ops(p_shaped);
|
||||
|
||||
Reference in New Issue
Block a user