BLF: Use Floats for Font Point Sizes
Allow the use of floating-point values for font point sizes, which allows greater precision and flexibility for text output. See D8960 for more information, details, and justification. Differential Revision: https://developer.blender.org/D8960 Reviewed by Campbell Barton
This commit is contained in:
@@ -65,7 +65,7 @@ void BLF_metrics_attach(int fontid, unsigned char *mem, int mem_size);
|
|||||||
|
|
||||||
void BLF_aspect(int fontid, float x, float y, float z);
|
void BLF_aspect(int fontid, float x, float y, float z);
|
||||||
void BLF_position(int fontid, float x, float y, float z);
|
void BLF_position(int fontid, float x, float y, float z);
|
||||||
void BLF_size(int fontid, int size, int dpi);
|
void BLF_size(int fontid, float size, int dpi);
|
||||||
|
|
||||||
/* goal: small but useful color API */
|
/* goal: small but useful color API */
|
||||||
void BLF_color4ubv(int fontid, const unsigned char rgba[4]);
|
void BLF_color4ubv(int fontid, const unsigned char rgba[4]);
|
||||||
|
|||||||
@@ -363,7 +363,7 @@ void BLF_position(int fontid, float x, float y, float z)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BLF_size(int fontid, int size, int dpi)
|
void BLF_size(int fontid, float size, int dpi)
|
||||||
{
|
{
|
||||||
FontBLF *font = blf_get(fontid);
|
FontBLF *font = blf_get(fontid);
|
||||||
|
|
||||||
@@ -910,7 +910,7 @@ void BLF_state_print(int fontid)
|
|||||||
if (font) {
|
if (font) {
|
||||||
printf("fontid %d %p\n", fontid, (void *)font);
|
printf("fontid %d %p\n", fontid, (void *)font);
|
||||||
printf(" name: '%s'\n", font->name);
|
printf(" name: '%s'\n", font->name);
|
||||||
printf(" size: %u\n", font->size);
|
printf(" size: %f\n", font->size);
|
||||||
printf(" dpi: %u\n", font->dpi);
|
printf(" dpi: %u\n", font->dpi);
|
||||||
printf(" pos: %.6f %.6f %.6f\n", UNPACK3(font->pos));
|
printf(" pos: %.6f %.6f %.6f\n", UNPACK3(font->pos));
|
||||||
printf(" aspect: (%d) %.6f %.6f %.6f\n",
|
printf(" aspect: (%d) %.6f %.6f %.6f\n",
|
||||||
|
|||||||
@@ -1350,19 +1350,24 @@ void blf_font_free(FontBLF *font)
|
|||||||
/** \name Font Configure
|
/** \name Font Configure
|
||||||
* \{ */
|
* \{ */
|
||||||
|
|
||||||
void blf_font_size(FontBLF *font, unsigned int size, unsigned int dpi)
|
void blf_font_size(FontBLF *font, float size, unsigned int dpi)
|
||||||
{
|
{
|
||||||
blf_glyph_cache_acquire(font);
|
blf_glyph_cache_acquire(font);
|
||||||
|
|
||||||
|
/* FreeType uses fixed-point integers in 64ths. */
|
||||||
|
FT_F26Dot6 ft_size = lroundf(size * 64.0f);
|
||||||
|
/* Adjust our size to be on even 64ths. */
|
||||||
|
size = (float)ft_size / 64.0f;
|
||||||
|
|
||||||
GlyphCacheBLF *gc = blf_glyph_cache_find(font, size, dpi);
|
GlyphCacheBLF *gc = blf_glyph_cache_find(font, size, dpi);
|
||||||
if (gc && (font->size == size && font->dpi == dpi)) {
|
if (gc && (font->size == size && font->dpi == dpi)) {
|
||||||
/* Optimization: do not call FT_Set_Char_Size if size did not change. */
|
/* Optimization: do not call FT_Set_Char_Size if size did not change. */
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const FT_Error err = FT_Set_Char_Size(font->face, 0, ((FT_F26Dot6)(size)) * 64, dpi, dpi);
|
const FT_Error err = FT_Set_Char_Size(font->face, 0, ft_size, dpi, dpi);
|
||||||
if (err) {
|
if (err) {
|
||||||
/* FIXME: here we can go through the fixed size and choice a close one */
|
/* FIXME: here we can go through the fixed size and choice a close one */
|
||||||
printf("The current font don't support the size, %u and dpi, %u\n", size, dpi);
|
printf("The current font don't support the size, %f and dpi, %u\n", size, dpi);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
font->size = size;
|
font->size = size;
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ static FT_Fixed to_16dot16(double val)
|
|||||||
/**
|
/**
|
||||||
* Find a glyph cache that matches a size, DPI & styles.
|
* Find a glyph cache that matches a size, DPI & styles.
|
||||||
*/
|
*/
|
||||||
GlyphCacheBLF *blf_glyph_cache_find(FontBLF *font, unsigned int size, unsigned int dpi)
|
GlyphCacheBLF *blf_glyph_cache_find(FontBLF *font, float size, unsigned int dpi)
|
||||||
{
|
{
|
||||||
GlyphCacheBLF *gc = (GlyphCacheBLF *)font->cache.first;
|
GlyphCacheBLF *gc = (GlyphCacheBLF *)font->cache.first;
|
||||||
while (gc) {
|
while (gc) {
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ struct FontBLF *blf_font_new(const char *name, const char *filename);
|
|||||||
struct FontBLF *blf_font_new_from_mem(const char *name, const unsigned char *mem, int mem_size);
|
struct FontBLF *blf_font_new_from_mem(const char *name, const unsigned char *mem, int mem_size);
|
||||||
void blf_font_attach_from_mem(struct FontBLF *font, const unsigned char *mem, int mem_size);
|
void blf_font_attach_from_mem(struct FontBLF *font, const unsigned char *mem, int mem_size);
|
||||||
|
|
||||||
void blf_font_size(struct FontBLF *font, unsigned int size, unsigned int dpi);
|
void blf_font_size(struct FontBLF *font, float size, unsigned int dpi);
|
||||||
void blf_font_draw(struct FontBLF *font,
|
void blf_font_draw(struct FontBLF *font,
|
||||||
const char *str,
|
const char *str,
|
||||||
size_t str_len,
|
size_t str_len,
|
||||||
@@ -130,9 +130,7 @@ int blf_font_count_missing_chars(struct FontBLF *font,
|
|||||||
|
|
||||||
void blf_font_free(struct FontBLF *font);
|
void blf_font_free(struct FontBLF *font);
|
||||||
|
|
||||||
struct GlyphCacheBLF *blf_glyph_cache_find(struct FontBLF *font,
|
struct GlyphCacheBLF *blf_glyph_cache_find(struct FontBLF *font, float size, unsigned int dpi);
|
||||||
unsigned int size,
|
|
||||||
unsigned int dpi);
|
|
||||||
struct GlyphCacheBLF *blf_glyph_cache_new(struct FontBLF *font);
|
struct GlyphCacheBLF *blf_glyph_cache_new(struct FontBLF *font);
|
||||||
struct GlyphCacheBLF *blf_glyph_cache_acquire(struct FontBLF *font);
|
struct GlyphCacheBLF *blf_glyph_cache_acquire(struct FontBLF *font);
|
||||||
void blf_glyph_cache_release(struct FontBLF *font);
|
void blf_glyph_cache_release(struct FontBLF *font);
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ typedef struct GlyphCacheBLF {
|
|||||||
struct GlyphCacheBLF *prev;
|
struct GlyphCacheBLF *prev;
|
||||||
|
|
||||||
/* font size. */
|
/* font size. */
|
||||||
unsigned int size;
|
float size;
|
||||||
|
|
||||||
/* and dpi. */
|
/* and dpi. */
|
||||||
unsigned int dpi;
|
unsigned int dpi;
|
||||||
@@ -205,7 +205,7 @@ typedef struct FontBLF {
|
|||||||
unsigned int dpi;
|
unsigned int dpi;
|
||||||
|
|
||||||
/* font size. */
|
/* font size. */
|
||||||
unsigned int size;
|
float size;
|
||||||
|
|
||||||
/* Column width when printing monospaced. */
|
/* Column width when printing monospaced. */
|
||||||
int fixed_width;
|
int fixed_width;
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ void BLF_thumb_preview(const char *filename,
|
|||||||
const size_t draw_str_i18n_len = strlen(draw_str_i18n);
|
const size_t draw_str_i18n_len = strlen(draw_str_i18n);
|
||||||
int draw_str_i18n_nbr = 0;
|
int draw_str_i18n_nbr = 0;
|
||||||
|
|
||||||
blf_font_size(font, (unsigned int)MAX2(font_size_min, font_size_curr), dpi);
|
blf_font_size(font, (float)MAX2(font_size_min, font_size_curr), dpi);
|
||||||
gc = blf_glyph_cache_find(font, font->size, font->dpi);
|
gc = blf_glyph_cache_find(font, font->size, font->dpi);
|
||||||
/* There will be no matching glyph cache if blf_font_size() failed to set font size. */
|
/* There will be no matching glyph cache if blf_font_size() failed to set font size. */
|
||||||
if (!gc) {
|
if (!gc) {
|
||||||
|
|||||||
@@ -369,7 +369,7 @@ static void checker_board_text(
|
|||||||
char text[3] = {'A', '1', '\0'};
|
char text[3] = {'A', '1', '\0'};
|
||||||
const int mono = blf_mono_font_render;
|
const int mono = blf_mono_font_render;
|
||||||
|
|
||||||
BLF_size(mono, 54, 72); /* hard coded size! */
|
BLF_size(mono, 54.0f, 72); /* hard coded size! */
|
||||||
|
|
||||||
/* OCIO_TODO: using NULL as display will assume using sRGB display
|
/* OCIO_TODO: using NULL as display will assume using sRGB display
|
||||||
* this is correct since currently generated images are assumed to be in sRGB space,
|
* this is correct since currently generated images are assumed to be in sRGB space,
|
||||||
|
|||||||
@@ -245,10 +245,10 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* Default font size for normal text. */
|
/* Default font size for normal text. */
|
||||||
#define UI_DEFAULT_TEXT_POINTS 11
|
#define UI_DEFAULT_TEXT_POINTS 11.0f
|
||||||
|
|
||||||
/* Larger size used for title text. */
|
/* Larger size used for title text. */
|
||||||
#define UI_DEFAULT_TITLE_POINTS 11
|
#define UI_DEFAULT_TITLE_POINTS 11.0f
|
||||||
|
|
||||||
#define UI_PANEL_WIDTH 340
|
#define UI_PANEL_WIDTH 340
|
||||||
#define UI_COMPACT_PANEL_WIDTH 160
|
#define UI_COMPACT_PANEL_WIDTH 160
|
||||||
|
|||||||
@@ -1993,23 +1993,9 @@ void UI_block_end(const bContext *C, uiBlock *block)
|
|||||||
|
|
||||||
/* ************** BLOCK DRAWING FUNCTION ************* */
|
/* ************** BLOCK DRAWING FUNCTION ************* */
|
||||||
|
|
||||||
void ui_fontscale(short *points, float aspect)
|
void ui_fontscale(float *points, float aspect)
|
||||||
{
|
{
|
||||||
if (aspect < 0.9f || aspect > 1.1f) {
|
*points /= aspect;
|
||||||
float pointsf = *points;
|
|
||||||
|
|
||||||
/* For some reason scaling fonts goes too fast compared to widget size. */
|
|
||||||
/* XXX(ton): not true anymore? */
|
|
||||||
// aspect = sqrt(aspect);
|
|
||||||
pointsf /= aspect;
|
|
||||||
|
|
||||||
if (aspect > 1.0f) {
|
|
||||||
*points = ceilf(pointsf);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
*points = floorf(pointsf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Project button or block (but==NULL) to pixels in region-space. */
|
/* Project button or block (but==NULL) to pixels in region-space. */
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
static void icon_draw_rect_input_text(const rctf *rect,
|
static void icon_draw_rect_input_text(const rctf *rect,
|
||||||
const float color[4],
|
const float color[4],
|
||||||
const char *str,
|
const char *str,
|
||||||
int font_size)
|
float font_size)
|
||||||
{
|
{
|
||||||
BLF_batch_draw_flush();
|
BLF_batch_draw_flush();
|
||||||
const int font_id = BLF_default();
|
const int font_id = BLF_default();
|
||||||
@@ -97,7 +97,7 @@ static void icon_draw_rect_input_symbol(const rctf *rect, const float color[4],
|
|||||||
BLF_batch_draw_flush();
|
BLF_batch_draw_flush();
|
||||||
const int font_id = blf_mono_font;
|
const int font_id = blf_mono_font;
|
||||||
BLF_color4fv(font_id, color);
|
BLF_color4fv(font_id, color);
|
||||||
BLF_size(font_id, 19 * U.pixelsize, U.dpi);
|
BLF_size(font_id, 19.0f * U.pixelsize, U.dpi);
|
||||||
const float x = rect->xmin + (2.0f * U.pixelsize);
|
const float x = rect->xmin + (2.0f * U.pixelsize);
|
||||||
const float y = rect->ymin + (1.0f * U.pixelsize);
|
const float y = rect->ymin + (1.0f * U.pixelsize);
|
||||||
BLF_position(font_id, x, y, 0.0f);
|
BLF_position(font_id, x, y, 0.0f);
|
||||||
@@ -152,12 +152,12 @@ void icon_draw_rect_input(float x,
|
|||||||
|
|
||||||
if ((event_type >= EVT_AKEY) && (event_type <= EVT_ZKEY)) {
|
if ((event_type >= EVT_AKEY) && (event_type <= EVT_ZKEY)) {
|
||||||
const char str[2] = {'A' + (event_type - EVT_AKEY), '\0'};
|
const char str[2] = {'A' + (event_type - EVT_AKEY), '\0'};
|
||||||
icon_draw_rect_input_text(&rect, color, str, 13);
|
icon_draw_rect_input_text(&rect, color, str, 13.0f);
|
||||||
}
|
}
|
||||||
else if ((event_type >= EVT_F1KEY) && (event_type <= EVT_F12KEY)) {
|
else if ((event_type >= EVT_F1KEY) && (event_type <= EVT_F12KEY)) {
|
||||||
char str[4];
|
char str[4];
|
||||||
SNPRINTF(str, "F%d", 1 + (event_type - EVT_F1KEY));
|
SNPRINTF(str, "F%d", 1 + (event_type - EVT_F1KEY));
|
||||||
icon_draw_rect_input_text(&rect, color, str, event_type > EVT_F9KEY ? 8 : 10);
|
icon_draw_rect_input_text(&rect, color, str, event_type > EVT_F9KEY ? 8.0f : 10.0f);
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_LEFTSHIFTKEY) {
|
else if (event_type == EVT_LEFTSHIFTKEY) {
|
||||||
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x87, 0xa7, 0x0});
|
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x87, 0xa7, 0x0});
|
||||||
@@ -167,7 +167,7 @@ void icon_draw_rect_input(float x,
|
|||||||
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x8c, 0x83, 0x0});
|
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x8c, 0x83, 0x0});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
icon_draw_rect_input_text(&rect, color, "Ctrl", 9);
|
icon_draw_rect_input_text(&rect, color, "Ctrl", 9.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_LEFTALTKEY) {
|
else if (event_type == EVT_LEFTALTKEY) {
|
||||||
@@ -175,7 +175,7 @@ void icon_draw_rect_input(float x,
|
|||||||
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x8c, 0xa5, 0x0});
|
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x8c, 0xa5, 0x0});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
icon_draw_rect_input_text(&rect, color, "Alt", 10);
|
icon_draw_rect_input_text(&rect, color, "Alt", 10.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_OSKEY) {
|
else if (event_type == EVT_OSKEY) {
|
||||||
@@ -186,20 +186,20 @@ void icon_draw_rect_input(float x,
|
|||||||
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x9d, 0x96, 0x0});
|
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x9d, 0x96, 0x0});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
icon_draw_rect_input_text(&rect, color, "OS", 10);
|
icon_draw_rect_input_text(&rect, color, "OS", 10.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_DELKEY) {
|
else if (event_type == EVT_DELKEY) {
|
||||||
icon_draw_rect_input_text(&rect, color, "Del", 9);
|
icon_draw_rect_input_text(&rect, color, "Del", 9.0f);
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_TABKEY) {
|
else if (event_type == EVT_TABKEY) {
|
||||||
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0xad, 0xbe, 0x0});
|
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0xad, 0xbe, 0x0});
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_HOMEKEY) {
|
else if (event_type == EVT_HOMEKEY) {
|
||||||
icon_draw_rect_input_text(&rect, color, "Home", 6);
|
icon_draw_rect_input_text(&rect, color, "Home", 6.0f);
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_ENDKEY) {
|
else if (event_type == EVT_ENDKEY) {
|
||||||
icon_draw_rect_input_text(&rect, color, "End", 8);
|
icon_draw_rect_input_text(&rect, color, "End", 8.0f);
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_RETKEY) {
|
else if (event_type == EVT_RETKEY) {
|
||||||
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x8f, 0x8e, 0x0});
|
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x8f, 0x8e, 0x0});
|
||||||
@@ -209,14 +209,14 @@ void icon_draw_rect_input(float x,
|
|||||||
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x8e, 0x8b, 0x0});
|
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x8e, 0x8b, 0x0});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
icon_draw_rect_input_text(&rect, color, "Esc", 8);
|
icon_draw_rect_input_text(&rect, color, "Esc", 8.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_PAGEUPKEY) {
|
else if (event_type == EVT_PAGEUPKEY) {
|
||||||
icon_draw_rect_input_text(&rect, color, (const char[]){'P', 0xe2, 0x86, 0x91, 0x0}, 8);
|
icon_draw_rect_input_text(&rect, color, (const char[]){'P', 0xe2, 0x86, 0x91, 0x0}, 8.0f);
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_PAGEDOWNKEY) {
|
else if (event_type == EVT_PAGEDOWNKEY) {
|
||||||
icon_draw_rect_input_text(&rect, color, (const char[]){'P', 0xe2, 0x86, 0x93, 0x0}, 8);
|
icon_draw_rect_input_text(&rect, color, (const char[]){'P', 0xe2, 0x86, 0x93, 0x0}, 8.0f);
|
||||||
}
|
}
|
||||||
else if (event_type == EVT_LEFTARROWKEY) {
|
else if (event_type == EVT_LEFTARROWKEY) {
|
||||||
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x86, 0x90, 0x0});
|
icon_draw_rect_input_symbol(&rect, color, (const char[]){0xe2, 0x86, 0x90, 0x0});
|
||||||
|
|||||||
@@ -609,7 +609,7 @@ typedef struct uiSafetyRct {
|
|||||||
|
|
||||||
/* interface.c */
|
/* interface.c */
|
||||||
|
|
||||||
void ui_fontscale(short *points, float aspect);
|
void ui_fontscale(float *points, float aspect);
|
||||||
|
|
||||||
extern void ui_block_to_region_fl(const struct ARegion *region,
|
extern void ui_block_to_region_fl(const struct ARegion *region,
|
||||||
uiBlock *block,
|
uiBlock *block,
|
||||||
|
|||||||
@@ -1348,7 +1348,7 @@ void UI_panel_category_draw_all(ARegion *region, const char *category_id_active)
|
|||||||
const uiStyle *style = UI_style_get();
|
const uiStyle *style = UI_style_get();
|
||||||
const uiFontStyle *fstyle = &style->widget;
|
const uiFontStyle *fstyle = &style->widget;
|
||||||
const int fontid = fstyle->uifont_id;
|
const int fontid = fstyle->uifont_id;
|
||||||
short fstyle_points = fstyle->points;
|
float fstyle_points = fstyle->points;
|
||||||
const float aspect = ((uiBlock *)region->uiblocks.first)->aspect;
|
const float aspect = ((uiBlock *)region->uiblocks.first)->aspect;
|
||||||
const float zoom = 1.0f / aspect;
|
const float zoom = 1.0f / aspect;
|
||||||
const int px = U.pixelsize;
|
const int px = U.pixelsize;
|
||||||
|
|||||||
@@ -483,9 +483,9 @@ void uiStyleInit(void)
|
|||||||
* Yes, this build the glyph cache and create
|
* Yes, this build the glyph cache and create
|
||||||
* the texture.
|
* the texture.
|
||||||
*/
|
*/
|
||||||
BLF_size(font->blf_id, 11 * U.pixelsize, U.dpi);
|
BLF_size(font->blf_id, 11.0f * U.pixelsize, U.dpi);
|
||||||
BLF_size(font->blf_id, 12 * U.pixelsize, U.dpi);
|
BLF_size(font->blf_id, 12.0f * U.pixelsize, U.dpi);
|
||||||
BLF_size(font->blf_id, 14 * U.pixelsize, U.dpi);
|
BLF_size(font->blf_id, 14.0f * U.pixelsize, U.dpi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -510,7 +510,7 @@ void uiStyleInit(void)
|
|||||||
blf_mono_font = BLF_load_mono_default(unique);
|
blf_mono_font = BLF_load_mono_default(unique);
|
||||||
}
|
}
|
||||||
|
|
||||||
BLF_size(blf_mono_font, 12 * U.pixelsize, 72);
|
BLF_size(blf_mono_font, 12.0f * U.pixelsize, 72);
|
||||||
|
|
||||||
/* Set default flags based on UI preferences (not render fonts) */
|
/* Set default flags based on UI preferences (not render fonts) */
|
||||||
{
|
{
|
||||||
@@ -555,7 +555,7 @@ void uiStyleInit(void)
|
|||||||
blf_mono_font_render = BLF_load_mono_default(unique);
|
blf_mono_font_render = BLF_load_mono_default(unique);
|
||||||
}
|
}
|
||||||
|
|
||||||
BLF_size(blf_mono_font_render, 12 * U.pixelsize, 72);
|
BLF_size(blf_mono_font_render, 12.0f * U.pixelsize, 72);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI_fontstyle_set(const uiFontStyle *fs)
|
void UI_fontstyle_set(const uiFontStyle *fs)
|
||||||
|
|||||||
@@ -491,7 +491,7 @@ static void knifetool_draw_visible_distances(const KnifeTool_OpData *kcd)
|
|||||||
float numstr_size[2];
|
float numstr_size[2];
|
||||||
float posit[2];
|
float posit[2];
|
||||||
const float bg_margin = 4.0f * U.dpi_fac;
|
const float bg_margin = 4.0f * U.dpi_fac;
|
||||||
const int font_size = 14.0f * U.pixelsize;
|
const float font_size = 14.0f * U.pixelsize;
|
||||||
const int distance_precision = 4;
|
const int distance_precision = 4;
|
||||||
|
|
||||||
/* Calculate distance and convert to string. */
|
/* Calculate distance and convert to string. */
|
||||||
@@ -561,7 +561,7 @@ static void knifetool_draw_angle(const KnifeTool_OpData *kcd,
|
|||||||
const float arc_size = 64.0f * U.dpi_fac;
|
const float arc_size = 64.0f * U.dpi_fac;
|
||||||
const float bg_margin = 4.0f * U.dpi_fac;
|
const float bg_margin = 4.0f * U.dpi_fac;
|
||||||
const float cap_size = 4.0f * U.dpi_fac;
|
const float cap_size = 4.0f * U.dpi_fac;
|
||||||
const int font_size = 14 * U.pixelsize;
|
const float font_size = 14.0f * U.pixelsize;
|
||||||
const int angle_precision = 3;
|
const int angle_precision = 3;
|
||||||
|
|
||||||
/* Angle arc in 3d space. */
|
/* Angle arc in 3d space. */
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ void ED_image_draw_info(Scene *scene,
|
|||||||
|
|
||||||
GPU_blend(GPU_BLEND_NONE);
|
GPU_blend(GPU_BLEND_NONE);
|
||||||
|
|
||||||
BLF_size(blf_mono_font, 11 * U.pixelsize, U.dpi);
|
BLF_size(blf_mono_font, 11.0f * U.pixelsize, U.dpi);
|
||||||
|
|
||||||
BLF_color3ub(blf_mono_font, 255, 255, 255);
|
BLF_color3ub(blf_mono_font, 255, 255, 255);
|
||||||
SNPRINTF(str, "X:%-4d Y:%-4d |", x, y);
|
SNPRINTF(str, "X:%-4d Y:%-4d |", x, y);
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ static void node_draw_frame_label(bNodeTree *ntree, bNode *node, const float asp
|
|||||||
/* XXX font id is crap design */
|
/* XXX font id is crap design */
|
||||||
const int fontid = UI_style_get()->widgetlabel.uifont_id;
|
const int fontid = UI_style_get()->widgetlabel.uifont_id;
|
||||||
NodeFrame *data = (NodeFrame *)node->storage;
|
NodeFrame *data = (NodeFrame *)node->storage;
|
||||||
const int font_size = data->label_size / aspect;
|
const float font_size = data->label_size / aspect;
|
||||||
|
|
||||||
char label[MAX_NAME];
|
char label[MAX_NAME];
|
||||||
nodeLabel(ntree, node, label, sizeof(label));
|
nodeLabel(ntree, node, label, sizeof(label));
|
||||||
@@ -350,7 +350,7 @@ static void node_draw_frame_label(bNodeTree *ntree, bNode *node, const float asp
|
|||||||
BLF_enable(fontid, BLF_ASPECT);
|
BLF_enable(fontid, BLF_ASPECT);
|
||||||
BLF_aspect(fontid, aspect, aspect, 1.0f);
|
BLF_aspect(fontid, aspect, aspect, 1.0f);
|
||||||
/* clamp otherwise it can suck up a LOT of memory */
|
/* clamp otherwise it can suck up a LOT of memory */
|
||||||
BLF_size(fontid, MIN2(24, font_size), U.dpi);
|
BLF_size(fontid, MIN2(24.0f, font_size), U.dpi);
|
||||||
|
|
||||||
/* title color */
|
/* title color */
|
||||||
int color_id = node_get_colorid(node);
|
int color_id = node_get_colorid(node);
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ static void text_draw_context_init(const SpaceText *st, TextDrawContext *tdc)
|
|||||||
|
|
||||||
static void text_font_begin(const TextDrawContext *tdc)
|
static void text_font_begin(const TextDrawContext *tdc)
|
||||||
{
|
{
|
||||||
BLF_size(tdc->font_id, tdc->lheight_px, 72);
|
BLF_size(tdc->font_id, (float)tdc->lheight_px, 72);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void text_font_end(const TextDrawContext *UNUSED(tdc))
|
static void text_font_end(const TextDrawContext *UNUSED(tdc))
|
||||||
|
|||||||
@@ -645,7 +645,7 @@ static void gizmo_ruler_draw(const bContext *C, wmGizmo *gz)
|
|||||||
GPU_line_width(1.0f);
|
GPU_line_width(1.0f);
|
||||||
|
|
||||||
BLF_enable(blf_mono_font, BLF_ROTATION);
|
BLF_enable(blf_mono_font, BLF_ROTATION);
|
||||||
BLF_size(blf_mono_font, 14 * U.pixelsize, U.dpi);
|
BLF_size(blf_mono_font, 14.0f * U.pixelsize, U.dpi);
|
||||||
BLF_rotation(blf_mono_font, 0.0f);
|
BLF_rotation(blf_mono_font, 0.0f);
|
||||||
|
|
||||||
UI_GetThemeColor3ubv(TH_TEXT, color_text);
|
UI_GetThemeColor3ubv(TH_TEXT, color_text);
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ typedef struct TextVars {
|
|||||||
char text[512];
|
char text[512];
|
||||||
struct VFont *text_font;
|
struct VFont *text_font;
|
||||||
int text_blf_id;
|
int text_blf_id;
|
||||||
int text_size;
|
float text_size;
|
||||||
float color[4], shadow_color[4], box_color[4];
|
float color[4], shadow_color[4], box_color[4];
|
||||||
float loc[2];
|
float loc[2];
|
||||||
float wrap_width;
|
float wrap_width;
|
||||||
|
|||||||
@@ -69,8 +69,9 @@ typedef struct uiFont {
|
|||||||
typedef struct uiFontStyle {
|
typedef struct uiFontStyle {
|
||||||
/** Saved in file, 0 is default. */
|
/** Saved in file, 0 is default. */
|
||||||
short uifont_id;
|
short uifont_id;
|
||||||
|
char _pad1[2];
|
||||||
/** Actual size depends on 'global' dpi. */
|
/** Actual size depends on 'global' dpi. */
|
||||||
short points;
|
float points;
|
||||||
/** Style hint. */
|
/** Style hint. */
|
||||||
short italic, bold;
|
short italic, bold;
|
||||||
/** Value is amount of pixels blur. */
|
/** Value is amount of pixels blur. */
|
||||||
@@ -82,6 +83,7 @@ typedef struct uiFontStyle {
|
|||||||
float shadowalpha;
|
float shadowalpha;
|
||||||
/** 1 value, typically white or black anyway. */
|
/** 1 value, typically white or black anyway. */
|
||||||
float shadowcolor;
|
float shadowcolor;
|
||||||
|
char _pad2[4];
|
||||||
} uiFontStyle;
|
} uiFontStyle;
|
||||||
|
|
||||||
/* this is fed to the layout engine and widget code */
|
/* this is fed to the layout engine and widget code */
|
||||||
|
|||||||
@@ -2979,11 +2979,11 @@ static void rna_def_text(StructRNA *srna)
|
|||||||
RNA_def_property_pointer_funcs(prop, NULL, "rna_Sequence_text_font_set", NULL, NULL);
|
RNA_def_property_pointer_funcs(prop, NULL, "rna_Sequence_text_font_set", NULL, NULL);
|
||||||
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_raw_update");
|
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_raw_update");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "font_size", PROP_INT, PROP_UNSIGNED);
|
prop = RNA_def_property(srna, "font_size", PROP_FLOAT, PROP_UNSIGNED);
|
||||||
RNA_def_property_int_sdna(prop, NULL, "text_size");
|
RNA_def_property_float_sdna(prop, NULL, "text_size");
|
||||||
RNA_def_property_ui_text(prop, "Size", "Size of the text");
|
RNA_def_property_ui_text(prop, "Size", "Size of the text");
|
||||||
RNA_def_property_range(prop, 0.0, 2000);
|
RNA_def_property_range(prop, 0.0, 2000);
|
||||||
RNA_def_property_ui_range(prop, 0.0f, 2000, 1, -1);
|
RNA_def_property_ui_range(prop, 0.0f, 2000, 10.f, 1);
|
||||||
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_raw_update");
|
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_raw_update");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR_GAMMA);
|
prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR_GAMMA);
|
||||||
|
|||||||
@@ -1136,10 +1136,11 @@ static void rna_def_userdef_theme_ui_font_style(BlenderRNA *brna)
|
|||||||
RNA_def_struct_clear_flag(srna, STRUCT_UNDO);
|
RNA_def_struct_clear_flag(srna, STRUCT_UNDO);
|
||||||
RNA_def_struct_ui_text(srna, "Font Style", "Theme settings for Font");
|
RNA_def_struct_ui_text(srna, "Font Style", "Theme settings for Font");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "points", PROP_INT, PROP_NONE);
|
prop = RNA_def_property(srna, "points", PROP_FLOAT, PROP_UNSIGNED);
|
||||||
RNA_def_property_range(prop, 6, 24);
|
RNA_def_property_range(prop, 6.0f, 32.0f);
|
||||||
|
RNA_def_property_ui_range(prop, 8.0f, 20.0f, 10.0f, 1);
|
||||||
RNA_def_property_ui_text(prop, "Points", "Font size in points");
|
RNA_def_property_ui_text(prop, "Points", "Font size in points");
|
||||||
RNA_def_property_update(prop, 0, "rna_userdef_theme_text_style_update");
|
RNA_def_property_update(prop, 0, "rna_userdef_dpi_update");
|
||||||
|
|
||||||
prop = RNA_def_property(srna, "shadow", PROP_INT, PROP_PIXEL);
|
prop = RNA_def_property(srna, "shadow", PROP_INT, PROP_PIXEL);
|
||||||
RNA_def_property_range(prop, 0, 5);
|
RNA_def_property_range(prop, 0, 5);
|
||||||
|
|||||||
@@ -70,14 +70,15 @@ PyDoc_STRVAR(py_blf_size_doc,
|
|||||||
"font use 0.\n"
|
"font use 0.\n"
|
||||||
" :type fontid: int\n"
|
" :type fontid: int\n"
|
||||||
" :arg size: Point size of the font.\n"
|
" :arg size: Point size of the font.\n"
|
||||||
" :type size: int\n"
|
" :type size: float\n"
|
||||||
" :arg dpi: dots per inch value to use for drawing.\n"
|
" :arg dpi: dots per inch value to use for drawing.\n"
|
||||||
" :type dpi: int\n");
|
" :type dpi: int\n");
|
||||||
static PyObject *py_blf_size(PyObject *UNUSED(self), PyObject *args)
|
static PyObject *py_blf_size(PyObject *UNUSED(self), PyObject *args)
|
||||||
{
|
{
|
||||||
int fontid, size, dpi;
|
int fontid, dpi;
|
||||||
|
float size;
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "iii:blf.size", &fontid, &size, &dpi)) {
|
if (!PyArg_ParseTuple(args, "ifi:blf.size", &fontid, &size, &dpi)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3741,7 +3741,7 @@ static void init_text_effect(Sequence *seq)
|
|||||||
data = seq->effectdata = MEM_callocN(sizeof(TextVars), "textvars");
|
data = seq->effectdata = MEM_callocN(sizeof(TextVars), "textvars");
|
||||||
data->text_font = NULL;
|
data->text_font = NULL;
|
||||||
data->text_blf_id = -1;
|
data->text_blf_id = -1;
|
||||||
data->text_size = 60;
|
data->text_size = 60.0f;
|
||||||
|
|
||||||
copy_v4_fl(data->color, 1.0f);
|
copy_v4_fl(data->color, 1.0f);
|
||||||
data->shadow_color[3] = 0.7f;
|
data->shadow_color[3] = 0.7f;
|
||||||
@@ -3842,7 +3842,7 @@ static int num_inputs_text(void)
|
|||||||
static int early_out_text(Sequence *seq, float UNUSED(facf0), float UNUSED(facf1))
|
static int early_out_text(Sequence *seq, float UNUSED(facf0), float UNUSED(facf1))
|
||||||
{
|
{
|
||||||
TextVars *data = seq->effectdata;
|
TextVars *data = seq->effectdata;
|
||||||
if (data->text[0] == 0 || data->text_size < 1 ||
|
if (data->text[0] == 0 || data->text_size < 1.0f ||
|
||||||
((data->color[3] == 0.0f) &&
|
((data->color[3] == 0.0f) &&
|
||||||
(data->shadow_color[3] == 0.0f || (data->flag & SEQ_TEXT_SHADOW) == 0))) {
|
(data->shadow_color[3] == 0.0f || (data->flag & SEQ_TEXT_SHADOW) == 0))) {
|
||||||
return EARLY_USE_INPUT_1;
|
return EARLY_USE_INPUT_1;
|
||||||
|
|||||||
@@ -1570,7 +1570,7 @@ static char *wm_main_playanim_intern(int argc, const char **argv)
|
|||||||
/* initialize the font */
|
/* initialize the font */
|
||||||
BLF_init();
|
BLF_init();
|
||||||
ps.fontid = BLF_load_mono_default(false);
|
ps.fontid = BLF_load_mono_default(false);
|
||||||
BLF_size(ps.fontid, 11, 72);
|
BLF_size(ps.fontid, 11.0f, 72);
|
||||||
|
|
||||||
ps.ibufx = ibuf->x;
|
ps.ibufx = ibuf->x;
|
||||||
ps.ibufy = ibuf->y;
|
ps.ibufy = ibuf->y;
|
||||||
|
|||||||
Reference in New Issue
Block a user