Merge pull request #61772 from bruvzg/ft_ot_collect
This commit is contained in:
@@ -54,6 +54,7 @@ _FORCE_INLINE_ void FontData::_ensure_rid(int p_cache_index) const {
|
||||
if (unlikely(!cache[p_cache_index].is_valid())) {
|
||||
cache.write[p_cache_index] = TS->create_font();
|
||||
TS->font_set_data_ptr(cache[p_cache_index], data_ptr, data_size);
|
||||
TS->font_set_face_index(cache[p_cache_index], face_index);
|
||||
TS->font_set_antialiased(cache[p_cache_index], antialiased);
|
||||
TS->font_set_generate_mipmaps(cache[p_cache_index], mipmaps);
|
||||
TS->font_set_multichannel_signed_distance_field(cache[p_cache_index], msdf);
|
||||
@@ -76,6 +77,11 @@ void FontData::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_data", "data"), &FontData::set_data);
|
||||
ClassDB::bind_method(D_METHOD("get_data"), &FontData::get_data);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_face_index", "face_index"), &FontData::set_face_index);
|
||||
ClassDB::bind_method(D_METHOD("get_face_index"), &FontData::get_face_index);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_face_count"), &FontData::get_face_count);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_antialiased", "antialiased"), &FontData::set_antialiased);
|
||||
ClassDB::bind_method(D_METHOD("is_antialiased"), &FontData::is_antialiased);
|
||||
|
||||
@@ -217,6 +223,7 @@ void FontData::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_supported_variation_list"), &FontData::get_supported_variation_list);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_data", "get_data");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "face_index", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_face_index", "get_face_index");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "generate_mipmaps", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_generate_mipmaps", "get_generate_mipmaps");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "antialiased", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_antialiased", "is_antialiased");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "font_name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_font_name", "get_font_name");
|
||||
@@ -445,6 +452,7 @@ void FontData::reset_state() {
|
||||
data.clear();
|
||||
data_ptr = nullptr;
|
||||
data_size = 0;
|
||||
face_index = 0;
|
||||
cache.clear();
|
||||
|
||||
antialiased = true;
|
||||
@@ -1244,6 +1252,31 @@ void FontData::set_data(const PackedByteArray &p_data) {
|
||||
}
|
||||
}
|
||||
|
||||
void FontData::set_face_index(int64_t p_index) {
|
||||
ERR_FAIL_COND(p_index < 0);
|
||||
ERR_FAIL_COND(p_index >= 0x7FFF);
|
||||
|
||||
if (face_index != p_index) {
|
||||
face_index = p_index;
|
||||
if (data_ptr != nullptr) {
|
||||
for (int i = 0; i < cache.size(); i++) {
|
||||
if (cache[i].is_valid()) {
|
||||
TS->font_set_face_index(cache[i], face_index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int64_t FontData::get_face_index() const {
|
||||
return face_index;
|
||||
}
|
||||
|
||||
int64_t FontData::get_face_count() const {
|
||||
_ensure_rid(0);
|
||||
return TS->font_get_face_count(cache[0]);
|
||||
}
|
||||
|
||||
PackedByteArray FontData::get_data() const {
|
||||
if (unlikely((size_t)data.size() != data_size)) {
|
||||
PackedByteArray *data_w = const_cast<PackedByteArray *>(&data);
|
||||
|
||||
@@ -46,6 +46,7 @@ class FontData : public Resource {
|
||||
// Font source data.
|
||||
const uint8_t *data_ptr = nullptr;
|
||||
size_t data_size = 0;
|
||||
int face_index = 0;
|
||||
PackedByteArray data;
|
||||
|
||||
bool antialiased = true;
|
||||
@@ -91,6 +92,11 @@ public:
|
||||
virtual void set_data(const PackedByteArray &p_data);
|
||||
virtual PackedByteArray get_data() const;
|
||||
|
||||
virtual void set_face_index(int64_t p_index);
|
||||
virtual int64_t get_face_index() const;
|
||||
|
||||
virtual int64_t get_face_count() const;
|
||||
|
||||
// Common properties.
|
||||
virtual void set_font_name(const String &p_name);
|
||||
virtual String get_font_name() const;
|
||||
|
||||
Reference in New Issue
Block a user