diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index 226e507ce4b..936ff84e525 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -429,6 +429,8 @@ class USERPREF_PT_system(bpy.types.Panel): #col.prop(system, "use_antialiasing") col.label(text="Window Draw Method:") col.prop(system, "window_draw_method", text="") + col.label(text="Text Draw Options:") + col.prop(system, "use_text_antialiasing") col.label(text="Textures:") col.prop(system, "gl_texture_limit", text="Limit Size") col.prop(system, "texture_time_out", text="Time Out") diff --git a/source/blender/blenfont/BLF_api.h b/source/blender/blenfont/BLF_api.h index f5e082a5d27..d32922f2429 100644 --- a/source/blender/blenfont/BLF_api.h +++ b/source/blender/blenfont/BLF_api.h @@ -34,6 +34,8 @@ struct rctf; int BLF_init(int points, int dpi); void BLF_exit(void); +void BLF_cache_clear(void); + int BLF_load(const char *name); int BLF_load_mem(const char *name, unsigned char *mem, int mem_size); diff --git a/source/blender/blenfont/intern/blf.c b/source/blender/blenfont/intern/blf.c index eb7a89bf840..febd3d9d6f7 100644 --- a/source/blender/blenfont/intern/blf.c +++ b/source/blender/blenfont/intern/blf.c @@ -103,6 +103,18 @@ void BLF_exit(void) blf_font_exit(); } +void BLF_cache_clear(void) +{ + FontBLF *font; + int i; + + for (i= 0; i < global_font_num; i++) { + font= global_font[i]; + if (font) + blf_glyph_cache_clear(font); + } +} + static int blf_search(const char *name) { FontBLF *font; diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c index 2c0b833297e..c36496fb542 100644 --- a/source/blender/blenfont/intern/blf_glyph.c +++ b/source/blender/blenfont/intern/blf_glyph.c @@ -41,6 +41,7 @@ #include "MEM_guardedalloc.h" #include "DNA_vec_types.h" +#include "DNA_userdef_types.h" #include "BLI_blenlib.h" @@ -115,6 +116,23 @@ GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font) return(gc); } +void blf_glyph_cache_clear(FontBLF *font) +{ + GlyphCacheBLF *gc; + GlyphBLF *g; + int i; + + for(gc=font->cache.first; gc; gc=gc->next) { + for (i= 0; i < 257; i++) { + while (gc->bucket[i].first) { + g= gc->bucket[i].first; + BLI_remlink(&(gc->bucket[i]), g); + blf_glyph_free(g); + } + } + } +} + void blf_glyph_cache_free(GlyphCacheBLF *gc) { GlyphBLF *g; @@ -193,12 +211,10 @@ GlyphBLF *blf_glyph_add(FontBLF *font, FT_UInt index, unsigned int c) GlyphBLF *g; FT_Error err; FT_Bitmap bitmap, tempbitmap; - int sharp; + int sharp = (U.text_render & USER_TEXT_DISABLE_AA); FT_BBox bbox; unsigned int key; - sharp = 0; /* TODO make the value be configurable somehow */ - g= blf_glyph_search(font->glyph_cache, c); if (g) return(g); diff --git a/source/blender/blenfont/intern/blf_internal.h b/source/blender/blenfont/intern/blf_internal.h index bded1feb9bb..afe40973269 100644 --- a/source/blender/blenfont/intern/blf_internal.h +++ b/source/blender/blenfont/intern/blf_internal.h @@ -56,6 +56,7 @@ void blf_font_free(FontBLF *font); GlyphCacheBLF *blf_glyph_cache_find(FontBLF *font, int size, int dpi); GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font); +void blf_glyph_cache_clear(FontBLF *font); void blf_glyph_cache_free(GlyphCacheBLF *gc); GlyphBLF *blf_glyph_search(GlyphCacheBLF *gc, unsigned int c); diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 1609df827cb..5290a353580 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -376,6 +376,9 @@ typedef struct UserDef { short autokey_mode; /* autokeying mode */ short autokey_flag; /* flags for autokeying */ + + short text_render, pad9; /*options for text rendering*/ + float pad10; struct ColorBand coba_weight; /* from texture.h */ @@ -531,6 +534,9 @@ extern UserDef U; /* from blenkernel blender.c */ #define USER_DRAW_AUTOMATIC 3 #define USER_DRAW_OVERLAP_FLIP 4 +/* text draw options*/ +#define USER_TEXT_DISABLE_AA (1 << 0) + /* tw_flag (transform widget) */ /* gp_settings (Grease Pencil Settings) */ diff --git a/source/blender/makesrna/SConscript b/source/blender/makesrna/SConscript index d03d7c66dea..993fa6adde5 100644 --- a/source/blender/makesrna/SConscript +++ b/source/blender/makesrna/SConscript @@ -7,7 +7,7 @@ o = SConscript('intern/SConscript') objs += o incs = '#/intern/guardedalloc #/intern/memutil #/intern/audaspace/intern ../blenkernel ../blenlib ../makesdna intern .' -incs += ' ../windowmanager ../editors/include ../gpu ../imbuf ../ikplugin' +incs += ' ../windowmanager ../editors/include ../gpu ../imbuf ../ikplugin ../blenfont' incs += ' ../render/extern/include' defs = [] diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index 4880572d1e5..0a0b555a12e 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -54,6 +54,7 @@ INCLUDE_DIRECTORIES( ../../makesdna ../../blenkernel ../../blenlib + ../../blenfont ../../ikplugin ../../windowmanager ../../editors/include diff --git a/source/blender/makesrna/intern/Makefile b/source/blender/makesrna/intern/Makefile index 69d5581184d..2ff2c0d7eb3 100644 --- a/source/blender/makesrna/intern/Makefile +++ b/source/blender/makesrna/intern/Makefile @@ -52,6 +52,7 @@ CPPFLAGS += -I$(NAN_MEMUTIL)/include CPPFLAGS += -I../../../../intern/audaspace/intern CPPFLAGS += -I../../blenlib CPPFLAGS += -I../../blenkernel +CPPFLAGS += -I../../blenfont CPPFLAGS += -I../../imbuf CPPFLAGS += -I../../ikplugin CPPFLAGS += -I../../makesdna diff --git a/source/blender/makesrna/intern/SConscript b/source/blender/makesrna/intern/SConscript index ec588319eae..ac71e292552 100644 --- a/source/blender/makesrna/intern/SConscript +++ b/source/blender/makesrna/intern/SConscript @@ -31,7 +31,7 @@ defs = [] incs = '#/intern/guardedalloc ../../blenlib ../../blenkernel' incs += ' ../../imbuf ../../makesdna ../../makesrna ../../ikplugin' -incs += ' ../../windowmanager ../../editors/include' +incs += ' ../../windowmanager ../../editors/include ../../blenfont' incs += ' ../../render/extern/include' incs += ' #/intern/audaspace/intern ' diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 8d5483efcb3..116e25030d6 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -44,13 +44,17 @@ #ifdef RNA_RUNTIME -#include "BKE_main.h" -#include "BKE_DerivedMesh.h" -#include "BKE_depsgraph.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" -#include "GPU_draw.h" + +#include "BKE_DerivedMesh.h" +#include "BKE_depsgraph.h" #include "BKE_global.h" +#include "BKE_main.h" + +#include "GPU_draw.h" + +#include "BLF_api.h" #include "MEM_guardedalloc.h" #include "MEM_CacheLimiterC-Api.h" @@ -254,6 +258,12 @@ static void rna_userdef_temp_update(Main *bmain, Scene *scene, PointerRNA *ptr) BLI_where_is_temp(btempdir, 1); } +static void rna_userdef_text_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + BLF_cache_clear(); + WM_main_add_notifier(NC_WINDOW, NULL); +} + #else static void rna_def_userdef_theme_ui_font_style(BlenderRNA *brna) @@ -2575,6 +2585,11 @@ static void rna_def_userdef_system(BlenderRNA *brna) RNA_def_property_range(prop, 50, 1000); RNA_def_property_ui_text(prop, "Wait Timer (ms)", "Time in milliseconds between each frame recorded for screencast"); + prop= RNA_def_property(srna, "use_text_antialiasing", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "text_render", USER_TEXT_DISABLE_AA); + RNA_def_property_ui_text(prop, "Text Anti-aliasing", "Draw user interface text anti-aliased"); + RNA_def_property_update(prop, 0, "rna_userdef_text_update"); + #if 0 prop= RNA_def_property(srna, "verse_master", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "versemaster");