change monospace font to be an extern, not good final design but better then loading the same font 3 times.
need to load twice still because render may use the font in a thread.
This commit is contained in:
@@ -179,4 +179,8 @@ void BLF_dir_free(char **dirs, int count);
|
||||
#define BLF_SHADOW (1<<2)
|
||||
#define BLF_KERNING_DEFAULT (1<<3)
|
||||
|
||||
// XXX, bad design
|
||||
extern int blf_mono_font;
|
||||
extern int blf_mono_font_render; // dont mess drawing with render threads.
|
||||
|
||||
#endif /* BLF_API_H */
|
||||
|
||||
@@ -985,29 +985,13 @@ static void stampdata(Scene *scene, StampData *stamp_data, int do_prefix)
|
||||
}
|
||||
}
|
||||
|
||||
// XXX - Bad level call.
|
||||
extern int datatoc_bmonofont_ttf_size;
|
||||
extern char datatoc_bmonofont_ttf[];
|
||||
|
||||
// XXX - copied from text_font_begin ! Change all the BLF_* here
|
||||
static int mono= -1;
|
||||
|
||||
int stamp_font_begin(int size)
|
||||
{
|
||||
if (mono == -1)
|
||||
mono= BLF_load_mem_unique("monospace", (unsigned char *)datatoc_bmonofont_ttf, datatoc_bmonofont_ttf_size);
|
||||
|
||||
BLF_aspect(mono, 1.0);
|
||||
BLF_size(mono, size, 72);
|
||||
return(mono); // XXX This is for image_gen.c!!
|
||||
}
|
||||
|
||||
void BKE_stamp_buf(Scene *scene, unsigned char *rect, float *rectf, int width, int height, int channels)
|
||||
{
|
||||
struct StampData stamp_data;
|
||||
float w, h, pad;
|
||||
int x, y;
|
||||
float h_fixed;
|
||||
const int mono= blf_mono_font_render; // XXX
|
||||
|
||||
if (!rect && !rectf)
|
||||
return;
|
||||
@@ -1018,8 +1002,10 @@ void BKE_stamp_buf(Scene *scene, unsigned char *rect, float *rectf, int width, i
|
||||
if(scene->r.stamp_font_id < 8)
|
||||
scene->r.stamp_font_id= 12;
|
||||
|
||||
stamp_font_begin(scene->r.stamp_font_id);
|
||||
|
||||
/* set before return */
|
||||
BLF_aspect(mono, 1.0);
|
||||
BLF_size(mono, scene->r.stamp_font_id, 72);
|
||||
|
||||
BLF_buffer(mono, rectf, rect, width, height, channels);
|
||||
BLF_buffer_col(mono, scene->r.fg_stamp[0], scene->r.fg_stamp[1], scene->r.fg_stamp[2], 1.0);
|
||||
pad= BLF_width(mono, "--");
|
||||
|
||||
@@ -298,16 +298,17 @@ static void checker_board_grid_fill(unsigned char *rect, float *rect_float, int
|
||||
}
|
||||
|
||||
/* defined in image.c */
|
||||
extern int stamp_font_begin(int size);
|
||||
|
||||
static void checker_board_text(unsigned char *rect, float *rect_float, int width, int height, int step, int outline)
|
||||
{
|
||||
int x, y, mono;
|
||||
int x, y;
|
||||
int pen_x, pen_y;
|
||||
char text[3]= {'A', '1', '\0'};
|
||||
const int mono= blf_mono_font;
|
||||
|
||||
BLF_aspect(mono, 1.0);
|
||||
BLF_size(mono, 54, 72); /* hard coded size! */
|
||||
|
||||
/* hard coded size! */
|
||||
mono= stamp_font_begin(54);
|
||||
BLF_buffer(mono, rect_float, rect, width, height, 4);
|
||||
|
||||
for(y= 0; y < height; y+=step)
|
||||
|
||||
@@ -264,6 +264,9 @@ void UI_DrawString(float x, float y, const char *str)
|
||||
BLF_disable(style->widget.uifont_id, BLF_KERNING_DEFAULT);
|
||||
}
|
||||
|
||||
int blf_mono_font= -1;
|
||||
int blf_mono_font_render= -1;
|
||||
|
||||
/* ************** init exit ************************ */
|
||||
|
||||
/* called on each startup.blend read */
|
||||
@@ -314,6 +317,20 @@ void uiStyleInit(void)
|
||||
if(style==NULL) {
|
||||
ui_style_new(&U.uistyles, "Default Style");
|
||||
}
|
||||
|
||||
// XXX, this should be moved into a style, but for now best only load the monospaced font once.
|
||||
if (blf_mono_font == -1)
|
||||
blf_mono_font= BLF_load_mem_unique("monospace", (unsigned char *)datatoc_bmonofont_ttf, datatoc_bmonofont_ttf_size);
|
||||
|
||||
BLF_aspect(blf_mono_font, 1.0);
|
||||
BLF_size(blf_mono_font, 12, 72);
|
||||
|
||||
/* second for rendering else we get threading problems */
|
||||
if (blf_mono_font_render == -1)
|
||||
blf_mono_font_render= BLF_load_mem_unique("monospace", (unsigned char *)datatoc_bmonofont_ttf, datatoc_bmonofont_ttf_size);
|
||||
|
||||
BLF_aspect(blf_mono_font_render, 1.0);
|
||||
BLF_size(blf_mono_font_render, 12, 72);
|
||||
}
|
||||
|
||||
void uiStyleFontSet(uiFontStyle *fs)
|
||||
|
||||
@@ -39,18 +39,10 @@
|
||||
|
||||
#include "textview.h"
|
||||
|
||||
|
||||
static int mono= -1; // XXX needs proper storage and change all the BLF_* here!
|
||||
|
||||
|
||||
static void console_font_begin(TextViewContext *sc)
|
||||
{
|
||||
if(mono == -1) {
|
||||
mono= BLF_load_mem("monospace", (unsigned char*)datatoc_bmonofont_ttf, datatoc_bmonofont_ttf_size);
|
||||
}
|
||||
|
||||
BLF_aspect(mono, 1.0);
|
||||
BLF_size(mono, sc->lheight-2, 72);
|
||||
BLF_aspect(blf_mono_font, 1.0);
|
||||
BLF_size(blf_mono_font, sc->lheight-2, 72);
|
||||
}
|
||||
|
||||
typedef struct ConsoleDrawContext {
|
||||
@@ -95,6 +87,7 @@ static int console_draw_string(ConsoleDrawContext *cdc, const char *str, int str
|
||||
int rct_ofs= cdc->lheight/4;
|
||||
int tot_lines = (str_len/cdc->console_width)+1; /* total number of lines for wrapping */
|
||||
int y_next = (str_len > cdc->console_width) ? cdc->xy[1]+cdc->lheight*tot_lines : cdc->xy[1]+cdc->lheight;
|
||||
const int mono= blf_mono_font;
|
||||
|
||||
/* just advance the height */
|
||||
if(cdc->draw==0) {
|
||||
@@ -228,6 +221,7 @@ int textview_draw(TextViewContext *tvc, int draw, int mval[2], void **mouse_pick
|
||||
int xy[2], y_prev;
|
||||
int sel[2]= {-1, -1}; /* defaults disabled */
|
||||
unsigned char fg[3], bg[3];
|
||||
const int mono= blf_mono_font;
|
||||
|
||||
console_font_begin(tvc);
|
||||
|
||||
|
||||
@@ -56,13 +56,11 @@
|
||||
#include "text_intern.h"
|
||||
|
||||
/******************** text font drawing ******************/
|
||||
static int mono= -1; // XXX needs proper storage and change all the BLF_* here
|
||||
// XXX, fixme
|
||||
#define mono blf_mono_font
|
||||
|
||||
static void text_font_begin(SpaceText *st)
|
||||
{
|
||||
if(mono == -1)
|
||||
mono= BLF_load_mem("monospace", (unsigned char*)datatoc_bmonofont_ttf, datatoc_bmonofont_ttf_size);
|
||||
|
||||
BLF_aspect(mono, 1.0);
|
||||
BLF_size(mono, st->lheight, 72);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user