diff options
Diffstat (limited to 'scene/resources/dynamic_font.h')
| -rw-r--r-- | scene/resources/dynamic_font.h | 103 |
1 files changed, 44 insertions, 59 deletions
diff --git a/scene/resources/dynamic_font.h b/scene/resources/dynamic_font.h index 321ec7e33..950294390 100644 --- a/scene/resources/dynamic_font.h +++ b/scene/resources/dynamic_font.h @@ -30,54 +30,55 @@ #define DYNAMIC_FONT_H #ifdef FREETYPE_ENABLED -#include "scene/resources/font.h" -#include "os/thread_safe.h" #include "io/resource_loader.h" +#include "os/thread_safe.h" +#include "scene/resources/font.h" #include <ft2build.h> #include FT_FREETYPE_H - class DynamicFontAtSize; class DynamicFont; class DynamicFontData : public Resource { - GDCLASS(DynamicFontData,Resource); + GDCLASS(DynamicFontData, Resource); public: - - struct CacheID{ + struct CacheID { int size; bool mipmaps; bool filter; - bool operator< (CacheID right) const; - CacheID() { size=16; mipmaps=false; filter=false; } + bool operator<(CacheID right) const; + CacheID() { + size = 16; + mipmaps = false; + filter = false; + } }; private: - const uint8_t *font_mem; int font_mem_size; bool force_autohinter; String font_path; - Map<CacheID,DynamicFontAtSize*> size_cache; + Map<CacheID, DynamicFontAtSize *> size_cache; friend class DynamicFontAtSize; -friend class DynamicFont; + friend class DynamicFont; Ref<DynamicFontAtSize> _get_dynamic_font_at_size(CacheID p_cache); -protected: +protected: static void _bind_methods(); -public: - void set_font_ptr(const uint8_t* p_font_mem,int p_font_mem_size); - void set_font_path(const String& p_path); +public: + void set_font_ptr(const uint8_t *p_font_mem, int p_font_mem_size); + void set_font_path(const String &p_path); String get_font_path() const; void set_force_autohinter(bool p_force); @@ -85,15 +86,14 @@ public: ~DynamicFontData(); }; - class DynamicFontAtSize : public Reference { - GDCLASS(DynamicFontAtSize,Reference) + GDCLASS(DynamicFontAtSize, Reference) _THREAD_SAFE_CLASS_ - FT_Library library; /* handle to library */ - FT_Face face; /* handle to face object */ + FT_Library library; /* handle to library */ + FT_Face face; /* handle to face object */ FT_StreamRec stream; int ascent; @@ -124,39 +124,35 @@ class DynamicFontAtSize : public Reference { float h_align; float advance; - Character() { texture_idx=0; v_align=0; } + Character() { + texture_idx = 0; + v_align = 0; + } }; + static unsigned long _ft_stream_io(FT_Stream stream, unsigned long offset, unsigned char *buffer, unsigned long count); + static void _ft_stream_close(FT_Stream stream); - static unsigned long _ft_stream_io(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count ); - static void _ft_stream_close(FT_Stream stream); - - HashMap< CharType, Character > char_map; + HashMap<CharType, Character> char_map; _FORCE_INLINE_ void _update_char(CharType p_char); -friend class DynamicFontData; + friend class DynamicFontData; Ref<DynamicFontData> font; DynamicFontData::CacheID id; - - Error _load(); -protected: - - +protected: public: - - float get_height() const; float get_ascent() const; float get_descent() const; - Size2 get_char_size(CharType p_char,CharType p_next,const Vector<Ref<DynamicFontAtSize> >& p_fallbacks) const; + Size2 get_char_size(CharType p_char, CharType p_next, const Vector<Ref<DynamicFontAtSize> > &p_fallbacks) const; - float draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next,const Color& p_modulate,const Vector<Ref<DynamicFontAtSize> >& p_fallbacks) const; + float draw_char(RID p_canvas_item, const Point2 &p_pos, CharType p_char, CharType p_next, const Color &p_modulate, const Vector<Ref<DynamicFontAtSize> > &p_fallbacks) const; void set_texture_flags(uint32_t p_flags); @@ -168,11 +164,10 @@ public: class DynamicFont : public Font { - GDCLASS( DynamicFont, Font ); + GDCLASS(DynamicFont, Font); public: - - enum SpacingType{ + enum SpacingType { SPACING_TOP, SPACING_BOTTOM, SPACING_CHAR, @@ -180,13 +175,11 @@ public: }; private: - Ref<DynamicFontData> data; Ref<DynamicFontAtSize> data_at_size; - Vector< Ref<DynamicFontData> > fallbacks; - Vector< Ref<DynamicFontAtSize> > fallback_data_at_size; - + Vector<Ref<DynamicFontData> > fallbacks; + Vector<Ref<DynamicFontAtSize> > fallback_data_at_size; DynamicFontData::CacheID cache_id; bool valid; @@ -196,18 +189,16 @@ private: int spacing_space; protected: - void _reload_cache(); - bool _set(const StringName& p_name, const Variant& p_value); - bool _get(const StringName& p_name,Variant &r_ret) const; - void _get_property_list( List<PropertyInfo> *p_list) const; + bool _set(const StringName &p_name, const Variant &p_value); + bool _get(const StringName &p_name, Variant &r_ret) const; + void _get_property_list(List<PropertyInfo> *p_list) const; static void _bind_methods(); public: - - void set_font_data(const Ref<DynamicFontData>& p_data); + void set_font_data(const Ref<DynamicFontData> &p_data); Ref<DynamicFontData> get_font_data() const; void set_size(int p_size); @@ -222,8 +213,8 @@ public: int get_spacing(int p_type) const; void set_spacing(int p_type, int p_value); - void add_fallback(const Ref<DynamicFontData>& p_data); - void set_fallback(int p_idx,const Ref<DynamicFontData>& p_data); + void add_fallback(const Ref<DynamicFontData> &p_data); + void set_fallback(int p_idx, const Ref<DynamicFontData> &p_data); int get_fallback_count() const; Ref<DynamicFontData> get_fallback(int p_idx) const; void remove_fallback(int p_idx); @@ -233,32 +224,26 @@ public: virtual float get_ascent() const; virtual float get_descent() const; - virtual Size2 get_char_size(CharType p_char,CharType p_next=0) const; + virtual Size2 get_char_size(CharType p_char, CharType p_next = 0) const; virtual bool is_distance_field_hint() const; - virtual float draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next=0,const Color& p_modulate=Color(1,1,1)) const; + virtual float draw_char(RID p_canvas_item, const Point2 &p_pos, CharType p_char, CharType p_next = 0, const Color &p_modulate = Color(1, 1, 1)) const; DynamicFont(); ~DynamicFont(); - }; - - ///////////// class ResourceFormatLoaderDynamicFont : public ResourceFormatLoader { public: - - virtual RES load(const String &p_path,const String& p_original_path="",Error *r_error=NULL); + virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL); virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual bool handles_type(const String& p_type) const; + virtual bool handles_type(const String &p_type) const; virtual String get_resource_type(const String &p_path) const; - }; - #endif #endif |
