added option to turn off Text anti-aliasing in the UI

(userpref->system), with a great help from brecht (its been way too long
for me).

However as brecht pointed out that the non-AA text is slightly lareger
then AA'ed Text :S, i did not do anything about this as this commit was
just the option not the text drawing.

this commit also makes it possible to do all kinds of UI textrender options
This commit is contained in:
Michael Fox 2010-11-26 22:12:46 +00:00
parent 8f4d8ad5bc
commit d47a519cbb
11 changed files with 65 additions and 9 deletions

@ -429,6 +429,8 @@ class USERPREF_PT_system(bpy.types.Panel):
#col.prop(system, "use_antialiasing") #col.prop(system, "use_antialiasing")
col.label(text="Window Draw Method:") col.label(text="Window Draw Method:")
col.prop(system, "window_draw_method", text="") col.prop(system, "window_draw_method", text="")
col.label(text="Text Draw Options:")
col.prop(system, "use_text_antialiasing")
col.label(text="Textures:") col.label(text="Textures:")
col.prop(system, "gl_texture_limit", text="Limit Size") col.prop(system, "gl_texture_limit", text="Limit Size")
col.prop(system, "texture_time_out", text="Time Out") col.prop(system, "texture_time_out", text="Time Out")

@ -34,6 +34,8 @@ struct rctf;
int BLF_init(int points, int dpi); int BLF_init(int points, int dpi);
void BLF_exit(void); void BLF_exit(void);
void BLF_cache_clear(void);
int BLF_load(const char *name); int BLF_load(const char *name);
int BLF_load_mem(const char *name, unsigned char *mem, int mem_size); int BLF_load_mem(const char *name, unsigned char *mem, int mem_size);

@ -103,6 +103,18 @@ void BLF_exit(void)
blf_font_exit(); 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) static int blf_search(const char *name)
{ {
FontBLF *font; FontBLF *font;

@ -41,6 +41,7 @@
#include "MEM_guardedalloc.h" #include "MEM_guardedalloc.h"
#include "DNA_vec_types.h" #include "DNA_vec_types.h"
#include "DNA_userdef_types.h"
#include "BLI_blenlib.h" #include "BLI_blenlib.h"
@ -115,6 +116,23 @@ GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font)
return(gc); 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) void blf_glyph_cache_free(GlyphCacheBLF *gc)
{ {
GlyphBLF *g; GlyphBLF *g;
@ -193,12 +211,10 @@ GlyphBLF *blf_glyph_add(FontBLF *font, FT_UInt index, unsigned int c)
GlyphBLF *g; GlyphBLF *g;
FT_Error err; FT_Error err;
FT_Bitmap bitmap, tempbitmap; FT_Bitmap bitmap, tempbitmap;
int sharp; int sharp = (U.text_render & USER_TEXT_DISABLE_AA);
FT_BBox bbox; FT_BBox bbox;
unsigned int key; unsigned int key;
sharp = 0; /* TODO make the value be configurable somehow */
g= blf_glyph_search(font->glyph_cache, c); g= blf_glyph_search(font->glyph_cache, c);
if (g) if (g)
return(g); return(g);

@ -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_find(FontBLF *font, int size, int dpi);
GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font); GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font);
void blf_glyph_cache_clear(FontBLF *font);
void blf_glyph_cache_free(GlyphCacheBLF *gc); void blf_glyph_cache_free(GlyphCacheBLF *gc);
GlyphBLF *blf_glyph_search(GlyphCacheBLF *gc, unsigned int c); GlyphBLF *blf_glyph_search(GlyphCacheBLF *gc, unsigned int c);

@ -377,6 +377,9 @@ typedef struct UserDef {
short autokey_mode; /* autokeying mode */ short autokey_mode; /* autokeying mode */
short autokey_flag; /* flags for autokeying */ short autokey_flag; /* flags for autokeying */
short text_render, pad9; /*options for text rendering*/
float pad10;
struct ColorBand coba_weight; /* from texture.h */ struct ColorBand coba_weight; /* from texture.h */
float sculpt_paint_overlay_col[3]; float sculpt_paint_overlay_col[3];
@ -531,6 +534,9 @@ extern UserDef U; /* from blenkernel blender.c */
#define USER_DRAW_AUTOMATIC 3 #define USER_DRAW_AUTOMATIC 3
#define USER_DRAW_OVERLAP_FLIP 4 #define USER_DRAW_OVERLAP_FLIP 4
/* text draw options*/
#define USER_TEXT_DISABLE_AA (1 << 0)
/* tw_flag (transform widget) */ /* tw_flag (transform widget) */
/* gp_settings (Grease Pencil Settings) */ /* gp_settings (Grease Pencil Settings) */

@ -7,7 +7,7 @@ o = SConscript('intern/SConscript')
objs += o objs += o
incs = '#/intern/guardedalloc #/intern/memutil #/intern/audaspace/intern ../blenkernel ../blenlib ../makesdna intern .' 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' incs += ' ../render/extern/include'
defs = [] defs = []

@ -54,6 +54,7 @@ INCLUDE_DIRECTORIES(
../../makesdna ../../makesdna
../../blenkernel ../../blenkernel
../../blenlib ../../blenlib
../../blenfont
../../ikplugin ../../ikplugin
../../windowmanager ../../windowmanager
../../editors/include ../../editors/include

@ -52,6 +52,7 @@ CPPFLAGS += -I$(NAN_MEMUTIL)/include
CPPFLAGS += -I../../../../intern/audaspace/intern CPPFLAGS += -I../../../../intern/audaspace/intern
CPPFLAGS += -I../../blenlib CPPFLAGS += -I../../blenlib
CPPFLAGS += -I../../blenkernel CPPFLAGS += -I../../blenkernel
CPPFLAGS += -I../../blenfont
CPPFLAGS += -I../../imbuf CPPFLAGS += -I../../imbuf
CPPFLAGS += -I../../ikplugin CPPFLAGS += -I../../ikplugin
CPPFLAGS += -I../../makesdna CPPFLAGS += -I../../makesdna

@ -31,7 +31,7 @@ defs = []
incs = '#/intern/guardedalloc ../../blenlib ../../blenkernel' incs = '#/intern/guardedalloc ../../blenlib ../../blenkernel'
incs += ' ../../imbuf ../../makesdna ../../makesrna ../../ikplugin' incs += ' ../../imbuf ../../makesdna ../../makesrna ../../ikplugin'
incs += ' ../../windowmanager ../../editors/include' incs += ' ../../windowmanager ../../editors/include ../../blenfont'
incs += ' ../../render/extern/include' incs += ' ../../render/extern/include'
incs += ' #/intern/audaspace/intern ' incs += ' #/intern/audaspace/intern '

@ -44,13 +44,17 @@
#ifdef RNA_RUNTIME #ifdef RNA_RUNTIME
#include "BKE_main.h"
#include "BKE_DerivedMesh.h"
#include "BKE_depsgraph.h"
#include "DNA_object_types.h" #include "DNA_object_types.h"
#include "DNA_screen_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_global.h"
#include "BKE_main.h"
#include "GPU_draw.h"
#include "BLF_api.h"
#include "MEM_guardedalloc.h" #include "MEM_guardedalloc.h"
#include "MEM_CacheLimiterC-Api.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); 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 #else
static void rna_def_userdef_theme_ui_font_style(BlenderRNA *brna) 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_range(prop, 50, 1000);
RNA_def_property_ui_text(prop, "Wait Timer (ms)", "Time in milliseconds between each frame recorded for screencast"); 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 #if 0
prop= RNA_def_property(srna, "verse_master", PROP_STRING, PROP_NONE); prop= RNA_def_property(srna, "verse_master", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "versemaster"); RNA_def_property_string_sdna(prop, NULL, "versemaster");