Cleanup: avoid redundant float/int conversions in BLF
Internally many offsets for BLF were integers but exposed as floats, since these are used in pixel-space, many callers were converging them back to integers. Simplify logic by using ints.
This commit is contained in:
		@@ -109,7 +109,7 @@ typedef bool (*BLF_GlyphBoundsFn)(const char *str,
 | 
				
			|||||||
                                  size_t str_step_ofs,
 | 
					                                  size_t str_step_ofs,
 | 
				
			||||||
                                  const struct rcti *glyph_step_bounds,
 | 
					                                  const struct rcti *glyph_step_bounds,
 | 
				
			||||||
                                  int glyph_advance_x,
 | 
					                                  int glyph_advance_x,
 | 
				
			||||||
                                  const struct rctf *glyph_bounds,
 | 
					                                  const struct rcti *glyph_bounds,
 | 
				
			||||||
                                  const int glyph_bearing[2],
 | 
					                                  const int glyph_bearing[2],
 | 
				
			||||||
                                  void *user_data);
 | 
					                                  void *user_data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -151,9 +151,9 @@ size_t BLF_width_to_rstrlen(
 | 
				
			|||||||
void BLF_boundbox_ex(int fontid,
 | 
					void BLF_boundbox_ex(int fontid,
 | 
				
			||||||
                     const char *str,
 | 
					                     const char *str,
 | 
				
			||||||
                     size_t str_len,
 | 
					                     size_t str_len,
 | 
				
			||||||
                     struct rctf *box,
 | 
					                     struct rcti *box,
 | 
				
			||||||
                     struct ResultBLF *r_info) ATTR_NONNULL(2);
 | 
					                     struct ResultBLF *r_info) ATTR_NONNULL(2);
 | 
				
			||||||
void BLF_boundbox(int fontid, const char *str, size_t str_len, struct rctf *box) ATTR_NONNULL();
 | 
					void BLF_boundbox(int fontid, const char *str, size_t str_len, struct rcti *box) ATTR_NONNULL();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * The next both function return the width and height
 | 
					 * The next both function return the width and height
 | 
				
			||||||
@@ -173,9 +173,9 @@ float BLF_height(int fontid, const char *str, size_t str_len) ATTR_WARN_UNUSED_R
 | 
				
			|||||||
 * Return dimensions of the font without any sample text.
 | 
					 * Return dimensions of the font without any sample text.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
int BLF_height_max(int fontid) ATTR_WARN_UNUSED_RESULT;
 | 
					int BLF_height_max(int fontid) ATTR_WARN_UNUSED_RESULT;
 | 
				
			||||||
float BLF_width_max(int fontid) ATTR_WARN_UNUSED_RESULT;
 | 
					int BLF_width_max(int fontid) ATTR_WARN_UNUSED_RESULT;
 | 
				
			||||||
float BLF_descender(int fontid) ATTR_WARN_UNUSED_RESULT;
 | 
					int BLF_descender(int fontid) ATTR_WARN_UNUSED_RESULT;
 | 
				
			||||||
float BLF_ascender(int fontid) ATTR_WARN_UNUSED_RESULT;
 | 
					int BLF_ascender(int fontid) ATTR_WARN_UNUSED_RESULT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * The following function return the width and height of the string, but
 | 
					 * The following function return the width and height of the string, but
 | 
				
			||||||
@@ -195,7 +195,7 @@ float BLF_fixed_width(int fontid) ATTR_WARN_UNUSED_RESULT;
 | 
				
			|||||||
 * have to be enable/disable using BLF_enable/disable.
 | 
					 * have to be enable/disable using BLF_enable/disable.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void BLF_rotation(int fontid, float angle);
 | 
					void BLF_rotation(int fontid, float angle);
 | 
				
			||||||
void BLF_clipping(int fontid, float xmin, float ymin, float xmax, float ymax);
 | 
					void BLF_clipping(int fontid, int xmin, int ymin, int xmax, int ymax);
 | 
				
			||||||
void BLF_wordwrap(int fontid, int wrap_width);
 | 
					void BLF_wordwrap(int fontid, int wrap_width);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if BLF_BLUR_ENABLE
 | 
					#if BLF_BLUR_ENABLE
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -342,9 +342,9 @@ void BLF_position(int fontid, float x, float y, float z)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    font->pos[0] = x;
 | 
					    font->pos[0] = round_fl_to_int(x);
 | 
				
			||||||
    font->pos[1] = y;
 | 
					    font->pos[1] = round_fl_to_int(y);
 | 
				
			||||||
    font->pos[2] = z;
 | 
					    font->pos[2] = round_fl_to_int(z);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -488,7 +488,7 @@ static void blf_draw_gl__start(FontBLF *font)
 | 
				
			|||||||
    GPU_matrix_mul(font->m);
 | 
					    GPU_matrix_mul(font->m);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GPU_matrix_translate_3fv(font->pos);
 | 
					  GPU_matrix_translate_3f(font->pos[0], font->pos[1], font->pos[2]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (font->flags & BLF_ASPECT) {
 | 
					  if (font->flags & BLF_ASPECT) {
 | 
				
			||||||
    GPU_matrix_scale_3fv(font->aspect);
 | 
					    GPU_matrix_scale_3fv(font->aspect);
 | 
				
			||||||
@@ -589,9 +589,10 @@ size_t BLF_width_to_strlen(
 | 
				
			|||||||
  if (font) {
 | 
					  if (font) {
 | 
				
			||||||
    const float xa = (font->flags & BLF_ASPECT) ? font->aspect[0] : 1.0f;
 | 
					    const float xa = (font->flags & BLF_ASPECT) ? font->aspect[0] : 1.0f;
 | 
				
			||||||
    size_t ret;
 | 
					    size_t ret;
 | 
				
			||||||
    ret = blf_font_width_to_strlen(font, str, str_len, width / xa, r_width);
 | 
					    int width_result;
 | 
				
			||||||
 | 
					    ret = blf_font_width_to_strlen(font, str, str_len, width / xa, &width_result);
 | 
				
			||||||
    if (r_width) {
 | 
					    if (r_width) {
 | 
				
			||||||
      *r_width *= xa;
 | 
					      *r_width = (float)width_result * xa;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -610,9 +611,10 @@ size_t BLF_width_to_rstrlen(
 | 
				
			|||||||
  if (font) {
 | 
					  if (font) {
 | 
				
			||||||
    const float xa = (font->flags & BLF_ASPECT) ? font->aspect[0] : 1.0f;
 | 
					    const float xa = (font->flags & BLF_ASPECT) ? font->aspect[0] : 1.0f;
 | 
				
			||||||
    size_t ret;
 | 
					    size_t ret;
 | 
				
			||||||
    ret = blf_font_width_to_rstrlen(font, str, str_len, width / xa, r_width);
 | 
					    int width_result;
 | 
				
			||||||
 | 
					    ret = blf_font_width_to_rstrlen(font, str, str_len, width / xa, &width_result);
 | 
				
			||||||
    if (r_width) {
 | 
					    if (r_width) {
 | 
				
			||||||
      *r_width *= xa;
 | 
					      *r_width = (float)width_result * xa;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -624,7 +626,7 @@ size_t BLF_width_to_rstrlen(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BLF_boundbox_ex(
 | 
					void BLF_boundbox_ex(
 | 
				
			||||||
    int fontid, const char *str, const size_t str_len, rctf *r_box, struct ResultBLF *r_info)
 | 
					    int fontid, const char *str, const size_t str_len, rcti *r_box, struct ResultBLF *r_info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  FontBLF *font = blf_get(fontid);
 | 
					  FontBLF *font = blf_get(fontid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -640,7 +642,7 @@ void BLF_boundbox_ex(
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BLF_boundbox(int fontid, const char *str, const size_t str_len, rctf *r_box)
 | 
					void BLF_boundbox(int fontid, const char *str, const size_t str_len, rcti *r_box)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  BLF_boundbox_ex(fontid, str, str_len, r_box, NULL);
 | 
					  BLF_boundbox_ex(fontid, str, str_len, r_box, NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -716,7 +718,7 @@ int BLF_height_max(int fontid)
 | 
				
			|||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float BLF_width_max(int fontid)
 | 
					int BLF_width_max(int fontid)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  FontBLF *font = blf_get(fontid);
 | 
					  FontBLF *font = blf_get(fontid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -724,10 +726,10 @@ float BLF_width_max(int fontid)
 | 
				
			|||||||
    return blf_font_width_max(font);
 | 
					    return blf_font_width_max(font);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return 0.0f;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float BLF_descender(int fontid)
 | 
					int BLF_descender(int fontid)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  FontBLF *font = blf_get(fontid);
 | 
					  FontBLF *font = blf_get(fontid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -735,10 +737,10 @@ float BLF_descender(int fontid)
 | 
				
			|||||||
    return blf_font_descender(font);
 | 
					    return blf_font_descender(font);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return 0.0f;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float BLF_ascender(int fontid)
 | 
					int BLF_ascender(int fontid)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  FontBLF *font = blf_get(fontid);
 | 
					  FontBLF *font = blf_get(fontid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -758,7 +760,7 @@ void BLF_rotation(int fontid, float angle)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BLF_clipping(int fontid, float xmin, float ymin, float xmax, float ymax)
 | 
					void BLF_clipping(int fontid, int xmin, int ymin, int xmax, int ymax)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  FontBLF *font = blf_get(fontid);
 | 
					  FontBLF *font = blf_get(fontid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -889,7 +891,7 @@ void BLF_state_print(int fontid)
 | 
				
			|||||||
    printf("  name:    '%s'\n", font->name);
 | 
					    printf("  name:    '%s'\n", font->name);
 | 
				
			||||||
    printf("  size:     %f\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:      %d %d %d\n", UNPACK3(font->pos));
 | 
				
			||||||
    printf("  aspect:   (%d) %.6f %.6f %.6f\n",
 | 
					    printf("  aspect:   (%d) %.6f %.6f %.6f\n",
 | 
				
			||||||
           (font->flags & BLF_ROTATION) != 0,
 | 
					           (font->flags & BLF_ROTATION) != 0,
 | 
				
			||||||
           UNPACK3(font->aspect));
 | 
					           UNPACK3(font->aspect));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -138,12 +138,12 @@ void blf_batch_draw_begin(FontBLF *font)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  if (simple_shader) {
 | 
					  if (simple_shader) {
 | 
				
			||||||
    /* Offset is applied to each glyph. */
 | 
					    /* Offset is applied to each glyph. */
 | 
				
			||||||
    g_batch.ofs[0] = floorf(font->pos[0]);
 | 
					    g_batch.ofs[0] = font->pos[0];
 | 
				
			||||||
    g_batch.ofs[1] = floorf(font->pos[1]);
 | 
					    g_batch.ofs[1] = font->pos[1];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else {
 | 
					  else {
 | 
				
			||||||
    /* Offset is baked in modelview mat. */
 | 
					    /* Offset is baked in modelview mat. */
 | 
				
			||||||
    zero_v2(g_batch.ofs);
 | 
					    zero_v2_int(g_batch.ofs);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (g_batch.active) {
 | 
					  if (g_batch.active) {
 | 
				
			||||||
@@ -425,8 +425,8 @@ static void blf_font_draw_buffer_ex(FontBLF *font,
 | 
				
			|||||||
                                    ft_pix pen_y)
 | 
					                                    ft_pix pen_y)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  GlyphBLF *g, *g_prev = NULL;
 | 
					  GlyphBLF *g, *g_prev = NULL;
 | 
				
			||||||
  ft_pix pen_x = ft_pix_from_float(font->pos[0]);
 | 
					  ft_pix pen_x = ft_pix_from_int(font->pos[0]);
 | 
				
			||||||
  ft_pix pen_y_basis = ft_pix_from_float(font->pos[1]) + pen_y;
 | 
					  ft_pix pen_y_basis = ft_pix_from_int(font->pos[1]) + pen_y;
 | 
				
			||||||
  size_t i = 0;
 | 
					  size_t i = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* buffer specific vars */
 | 
					  /* buffer specific vars */
 | 
				
			||||||
@@ -586,7 +586,7 @@ static bool blf_font_width_to_strlen_glyph_process(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
size_t blf_font_width_to_strlen(
 | 
					size_t blf_font_width_to_strlen(
 | 
				
			||||||
    FontBLF *font, const char *str, const size_t str_len, float width, float *r_width)
 | 
					    FontBLF *font, const char *str, const size_t str_len, int width, int *r_width)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  GlyphBLF *g, *g_prev;
 | 
					  GlyphBLF *g, *g_prev;
 | 
				
			||||||
  ft_pix pen_x;
 | 
					  ft_pix pen_x;
 | 
				
			||||||
@@ -606,7 +606,7 @@ size_t blf_font_width_to_strlen(
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (r_width) {
 | 
					  if (r_width) {
 | 
				
			||||||
    *r_width = (float)ft_pix_to_int(width_new);
 | 
					    *r_width = ft_pix_to_int(width_new);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  blf_glyph_cache_release(font);
 | 
					  blf_glyph_cache_release(font);
 | 
				
			||||||
@@ -614,7 +614,7 @@ size_t blf_font_width_to_strlen(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
size_t blf_font_width_to_rstrlen(
 | 
					size_t blf_font_width_to_rstrlen(
 | 
				
			||||||
    FontBLF *font, const char *str, const size_t str_len, float width, float *r_width)
 | 
					    FontBLF *font, const char *str, const size_t str_len, int width, int *r_width)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  GlyphBLF *g, *g_prev;
 | 
					  GlyphBLF *g, *g_prev;
 | 
				
			||||||
  ft_pix pen_x, width_new;
 | 
					  ft_pix pen_x, width_new;
 | 
				
			||||||
@@ -622,7 +622,6 @@ size_t blf_font_width_to_rstrlen(
 | 
				
			|||||||
  const char *s, *s_prev;
 | 
					  const char *s, *s_prev;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GlyphCacheBLF *gc = blf_glyph_cache_acquire(font);
 | 
					  GlyphCacheBLF *gc = blf_glyph_cache_acquire(font);
 | 
				
			||||||
  const int width_i = (int)width;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  i = BLI_strnlen(str, str_len);
 | 
					  i = BLI_strnlen(str, str_len);
 | 
				
			||||||
  s = BLI_str_find_prev_char_utf8(&str[i], str);
 | 
					  s = BLI_str_find_prev_char_utf8(&str[i], str);
 | 
				
			||||||
@@ -643,13 +642,13 @@ size_t blf_font_width_to_rstrlen(
 | 
				
			|||||||
      BLI_assert(i_tmp == i);
 | 
					      BLI_assert(i_tmp == i);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (blf_font_width_to_strlen_glyph_process(font, g_prev, g, &pen_x, width_i)) {
 | 
					    if (blf_font_width_to_strlen_glyph_process(font, g_prev, g, &pen_x, width)) {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (r_width) {
 | 
					  if (r_width) {
 | 
				
			||||||
    *r_width = (float)ft_pix_to_int(width_new);
 | 
					    *r_width = ft_pix_to_int(width_new);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  blf_glyph_cache_release(font);
 | 
					  blf_glyph_cache_release(font);
 | 
				
			||||||
@@ -666,7 +665,7 @@ static void blf_font_boundbox_ex(FontBLF *font,
 | 
				
			|||||||
                                 GlyphCacheBLF *gc,
 | 
					                                 GlyphCacheBLF *gc,
 | 
				
			||||||
                                 const char *str,
 | 
					                                 const char *str,
 | 
				
			||||||
                                 const size_t str_len,
 | 
					                                 const size_t str_len,
 | 
				
			||||||
                                 rctf *box,
 | 
					                                 rcti *box,
 | 
				
			||||||
                                 struct ResultBLF *r_info,
 | 
					                                 struct ResultBLF *r_info,
 | 
				
			||||||
                                 ft_pix pen_y)
 | 
					                                 ft_pix pen_y)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -718,10 +717,10 @@ static void blf_font_boundbox_ex(FontBLF *font,
 | 
				
			|||||||
    box_ymax = 0;
 | 
					    box_ymax = 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  box->xmin = (float)ft_pix_to_int_floor(box_xmin);
 | 
					  box->xmin = ft_pix_to_int_floor(box_xmin);
 | 
				
			||||||
  box->xmax = (float)ft_pix_to_int_ceil(box_xmax);
 | 
					  box->xmax = ft_pix_to_int_ceil(box_xmax);
 | 
				
			||||||
  box->ymin = (float)ft_pix_to_int_floor(box_ymin);
 | 
					  box->ymin = ft_pix_to_int_floor(box_ymin);
 | 
				
			||||||
  box->ymax = (float)ft_pix_to_int_ceil(box_ymax);
 | 
					  box->ymax = ft_pix_to_int_ceil(box_ymax);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (r_info) {
 | 
					  if (r_info) {
 | 
				
			||||||
    r_info->lines = 1;
 | 
					    r_info->lines = 1;
 | 
				
			||||||
@@ -729,7 +728,7 @@ static void blf_font_boundbox_ex(FontBLF *font,
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
void blf_font_boundbox(
 | 
					void blf_font_boundbox(
 | 
				
			||||||
    FontBLF *font, const char *str, const size_t str_len, rctf *r_box, struct ResultBLF *r_info)
 | 
					    FontBLF *font, const char *str, const size_t str_len, rcti *r_box, struct ResultBLF *r_info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  GlyphCacheBLF *gc = blf_glyph_cache_acquire(font);
 | 
					  GlyphCacheBLF *gc = blf_glyph_cache_acquire(font);
 | 
				
			||||||
  blf_font_boundbox_ex(font, gc, str, str_len, r_box, r_info, 0);
 | 
					  blf_font_boundbox_ex(font, gc, str, str_len, r_box, r_info, 0);
 | 
				
			||||||
@@ -744,7 +743,7 @@ void blf_font_width_and_height(FontBLF *font,
 | 
				
			|||||||
                               struct ResultBLF *r_info)
 | 
					                               struct ResultBLF *r_info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  float xa, ya;
 | 
					  float xa, ya;
 | 
				
			||||||
  rctf box;
 | 
					  rcti box;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (font->flags & BLF_ASPECT) {
 | 
					  if (font->flags & BLF_ASPECT) {
 | 
				
			||||||
    xa = font->aspect[0];
 | 
					    xa = font->aspect[0];
 | 
				
			||||||
@@ -761,8 +760,8 @@ void blf_font_width_and_height(FontBLF *font,
 | 
				
			|||||||
  else {
 | 
					  else {
 | 
				
			||||||
    blf_font_boundbox(font, str, str_len, &box, r_info);
 | 
					    blf_font_boundbox(font, str, str_len, &box, r_info);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  *r_width = (BLI_rctf_size_x(&box) * xa);
 | 
					  *r_width = ((float)BLI_rcti_size_x(&box) * xa);
 | 
				
			||||||
  *r_height = (BLI_rctf_size_y(&box) * ya);
 | 
					  *r_height = ((float)BLI_rcti_size_y(&box) * ya);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float blf_font_width(FontBLF *font,
 | 
					float blf_font_width(FontBLF *font,
 | 
				
			||||||
@@ -771,7 +770,7 @@ float blf_font_width(FontBLF *font,
 | 
				
			|||||||
                     struct ResultBLF *r_info)
 | 
					                     struct ResultBLF *r_info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  float xa;
 | 
					  float xa;
 | 
				
			||||||
  rctf box;
 | 
					  rcti box;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (font->flags & BLF_ASPECT) {
 | 
					  if (font->flags & BLF_ASPECT) {
 | 
				
			||||||
    xa = font->aspect[0];
 | 
					    xa = font->aspect[0];
 | 
				
			||||||
@@ -786,7 +785,7 @@ float blf_font_width(FontBLF *font,
 | 
				
			|||||||
  else {
 | 
					  else {
 | 
				
			||||||
    blf_font_boundbox(font, str, str_len, &box, r_info);
 | 
					    blf_font_boundbox(font, str, str_len, &box, r_info);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return BLI_rctf_size_x(&box) * xa;
 | 
					  return (float)BLI_rcti_size_x(&box) * xa;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float blf_font_height(FontBLF *font,
 | 
					float blf_font_height(FontBLF *font,
 | 
				
			||||||
@@ -795,7 +794,7 @@ float blf_font_height(FontBLF *font,
 | 
				
			|||||||
                      struct ResultBLF *r_info)
 | 
					                      struct ResultBLF *r_info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  float ya;
 | 
					  float ya;
 | 
				
			||||||
  rctf box;
 | 
					  rcti box;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (font->flags & BLF_ASPECT) {
 | 
					  if (font->flags & BLF_ASPECT) {
 | 
				
			||||||
    ya = font->aspect[1];
 | 
					    ya = font->aspect[1];
 | 
				
			||||||
@@ -810,7 +809,7 @@ float blf_font_height(FontBLF *font,
 | 
				
			|||||||
  else {
 | 
					  else {
 | 
				
			||||||
    blf_font_boundbox(font, str, str_len, &box, r_info);
 | 
					    blf_font_boundbox(font, str, str_len, &box, r_info);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return BLI_rctf_size_y(&box) * ya;
 | 
					  return (float)BLI_rcti_size_y(&box) * ya;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float blf_font_fixed_width(FontBLF *font)
 | 
					float blf_font_fixed_width(FontBLF *font)
 | 
				
			||||||
@@ -858,11 +857,11 @@ static void blf_font_boundbox_foreach_glyph_ex(FontBLF *font,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    pen_x = pen_x_next;
 | 
					    pen_x = pen_x_next;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rctf box_px;
 | 
					    rcti box_px;
 | 
				
			||||||
    box_px.xmin = (float)ft_pix_to_int_floor(g->box_xmin);
 | 
					    box_px.xmin = ft_pix_to_int_floor(g->box_xmin);
 | 
				
			||||||
    box_px.xmax = (float)ft_pix_to_int_ceil(g->box_xmax);
 | 
					    box_px.xmax = ft_pix_to_int_ceil(g->box_xmax);
 | 
				
			||||||
    box_px.ymin = (float)ft_pix_to_int_floor(g->box_ymin);
 | 
					    box_px.ymin = ft_pix_to_int_floor(g->box_ymin);
 | 
				
			||||||
    box_px.ymax = (float)ft_pix_to_int_ceil(g->box_ymax);
 | 
					    box_px.ymax = ft_pix_to_int_ceil(g->box_ymax);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (user_fn(str, i_curr, &gbox_px, advance_x_px, &box_px, g->pos, user_data) == false) {
 | 
					    if (user_fn(str, i_curr, &gbox_px, advance_x_px, &box_px, g->pos, user_data) == false) {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
@@ -1026,19 +1025,19 @@ static void blf_font_boundbox_wrap_cb(FontBLF *font,
 | 
				
			|||||||
                                      ft_pix pen_y,
 | 
					                                      ft_pix pen_y,
 | 
				
			||||||
                                      void *userdata)
 | 
					                                      void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  rctf *box = userdata;
 | 
					  rcti *box = userdata;
 | 
				
			||||||
  rctf box_single;
 | 
					  rcti box_single;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  blf_font_boundbox_ex(font, gc, str, str_len, &box_single, NULL, pen_y);
 | 
					  blf_font_boundbox_ex(font, gc, str, str_len, &box_single, NULL, pen_y);
 | 
				
			||||||
  BLI_rctf_union(box, &box_single);
 | 
					  BLI_rcti_union(box, &box_single);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
void blf_font_boundbox__wrap(
 | 
					void blf_font_boundbox__wrap(
 | 
				
			||||||
    FontBLF *font, const char *str, const size_t str_len, rctf *box, struct ResultBLF *r_info)
 | 
					    FontBLF *font, const char *str, const size_t str_len, rcti *box, struct ResultBLF *r_info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  box->xmin = 32000.0f;
 | 
					  box->xmin = 32000;
 | 
				
			||||||
  box->xmax = -32000.0f;
 | 
					  box->xmax = -32000;
 | 
				
			||||||
  box->ymin = 32000.0f;
 | 
					  box->ymin = 32000;
 | 
				
			||||||
  box->ymax = -32000.0f;
 | 
					  box->ymax = -32000;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  blf_font_wrap_apply(font, str, str_len, r_info, blf_font_boundbox_wrap_cb, box);
 | 
					  blf_font_wrap_apply(font, str, str_len, r_info, blf_font_boundbox_wrap_cb, box);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1141,14 +1140,14 @@ int blf_font_width_max(FontBLF *font)
 | 
				
			|||||||
  return ft_pix_to_int(blf_font_width_max_ft_pix(font));
 | 
					  return ft_pix_to_int(blf_font_width_max_ft_pix(font));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float blf_font_descender(FontBLF *font)
 | 
					int blf_font_descender(FontBLF *font)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return ((float)font->face->size->metrics.descender) / 64.0f;
 | 
					  return ft_pix_to_int((ft_pix)font->face->size->metrics.descender);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float blf_font_ascender(FontBLF *font)
 | 
					int blf_font_ascender(FontBLF *font)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return ((float)font->face->size->metrics.ascender) / 64.0f;
 | 
					  return ft_pix_to_int((ft_pix)font->face->size->metrics.ascender);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char *blf_display_name(FontBLF *font)
 | 
					char *blf_display_name(FontBLF *font)
 | 
				
			||||||
@@ -1197,8 +1196,8 @@ static void blf_font_fill(FontBLF *font)
 | 
				
			|||||||
  font->aspect[0] = 1.0f;
 | 
					  font->aspect[0] = 1.0f;
 | 
				
			||||||
  font->aspect[1] = 1.0f;
 | 
					  font->aspect[1] = 1.0f;
 | 
				
			||||||
  font->aspect[2] = 1.0f;
 | 
					  font->aspect[2] = 1.0f;
 | 
				
			||||||
  font->pos[0] = 0.0f;
 | 
					  font->pos[0] = 0;
 | 
				
			||||||
  font->pos[1] = 0.0f;
 | 
					  font->pos[1] = 0;
 | 
				
			||||||
  font->angle = 0.0f;
 | 
					  font->angle = 0.0f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (int i = 0; i < 16; i++) {
 | 
					  for (int i = 0; i < 16; i++) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -491,28 +491,29 @@ void blf_glyph_free(GlyphBLF *g)
 | 
				
			|||||||
/** \name Glyph Bounds Calculation
 | 
					/** \name Glyph Bounds Calculation
 | 
				
			||||||
 * \{ */
 | 
					 * \{ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void blf_glyph_calc_rect(rctf *rect, GlyphBLF *g, float x, float y)
 | 
					static void blf_glyph_calc_rect(rcti *rect, GlyphBLF *g, const int x, const int y)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  rect->xmin = floorf(x + (float)g->pos[0]);
 | 
					  rect->xmin = x + g->pos[0];
 | 
				
			||||||
  rect->xmax = rect->xmin + (float)g->dims[0];
 | 
					  rect->xmax = rect->xmin + g->dims[0];
 | 
				
			||||||
  rect->ymin = floorf(y + (float)g->pos[1]);
 | 
					  rect->ymin = y + g->pos[1];
 | 
				
			||||||
  rect->ymax = rect->ymin - (float)g->dims[1];
 | 
					  rect->ymax = rect->ymin - g->dims[1];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void blf_glyph_calc_rect_test(rctf *rect, GlyphBLF *g, float x, float y)
 | 
					static void blf_glyph_calc_rect_test(rcti *rect, GlyphBLF *g, const int x, const int y)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  /* Intentionally check with `g->advance`, because this is the
 | 
					  /* Intentionally check with `g->advance`, because this is the
 | 
				
			||||||
   * width used by BLF_width. This allows that the text slightly
 | 
					   * width used by BLF_width. This allows that the text slightly
 | 
				
			||||||
   * overlaps the clipping border to achieve better alignment. */
 | 
					   * overlaps the clipping border to achieve better alignment. */
 | 
				
			||||||
  rect->xmin = floorf(x);
 | 
					  rect->xmin = x;
 | 
				
			||||||
  rect->xmax = rect->xmin + MIN2((float)ft_pix_to_int(g->advance_x), (float)g->dims[0]);
 | 
					  rect->xmax = rect->xmin + MIN2(ft_pix_to_int(g->advance_x), g->dims[0]);
 | 
				
			||||||
  rect->ymin = floorf(y);
 | 
					  rect->ymin = y;
 | 
				
			||||||
  rect->ymax = rect->ymin - (float)g->dims[1];
 | 
					  rect->ymax = rect->ymin - g->dims[1];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void blf_glyph_calc_rect_shadow(rctf *rect, GlyphBLF *g, float x, float y, FontBLF *font)
 | 
					static void blf_glyph_calc_rect_shadow(
 | 
				
			||||||
 | 
					    rcti *rect, GlyphBLF *g, const int x, const int y, FontBLF *font)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  blf_glyph_calc_rect(rect, g, x + (float)font->shadow_x, y + (float)font->shadow_y);
 | 
					  blf_glyph_calc_rect(rect, g, x + font->shadow_x, y + font->shadow_y);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** \} */
 | 
					/** \} */
 | 
				
			||||||
@@ -524,18 +525,18 @@ static void blf_glyph_calc_rect_shadow(rctf *rect, GlyphBLF *g, float x, float y
 | 
				
			|||||||
static void blf_texture_draw(const unsigned char color[4],
 | 
					static void blf_texture_draw(const unsigned char color[4],
 | 
				
			||||||
                             const int glyph_size[2],
 | 
					                             const int glyph_size[2],
 | 
				
			||||||
                             const int offset,
 | 
					                             const int offset,
 | 
				
			||||||
                             float x1,
 | 
					                             const int x1,
 | 
				
			||||||
                             float y1,
 | 
					                             const int y1,
 | 
				
			||||||
                             float x2,
 | 
					                             const int x2,
 | 
				
			||||||
                             float y2)
 | 
					                             const int y2)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  /* Only one vertex per glyph, geometry shader expand it into a quad. */
 | 
					  /* Only one vertex per glyph, geometry shader expand it into a quad. */
 | 
				
			||||||
  /* TODO: Get rid of Geom Shader because it's not optimal AT ALL for the GPU. */
 | 
					  /* TODO: Get rid of Geom Shader because it's not optimal AT ALL for the GPU. */
 | 
				
			||||||
  copy_v4_fl4(GPU_vertbuf_raw_step(&g_batch.pos_step),
 | 
					  copy_v4_fl4(GPU_vertbuf_raw_step(&g_batch.pos_step),
 | 
				
			||||||
              x1 + g_batch.ofs[0],
 | 
					              (float)(x1 + g_batch.ofs[0]),
 | 
				
			||||||
              y1 + g_batch.ofs[1],
 | 
					              (float)(y1 + g_batch.ofs[1]),
 | 
				
			||||||
              x2 + g_batch.ofs[0],
 | 
					              (float)(x2 + g_batch.ofs[0]),
 | 
				
			||||||
              y2 + g_batch.ofs[1]);
 | 
					              (float)(y2 + g_batch.ofs[1]));
 | 
				
			||||||
  copy_v4_v4_uchar(GPU_vertbuf_raw_step(&g_batch.col_step), color);
 | 
					  copy_v4_v4_uchar(GPU_vertbuf_raw_step(&g_batch.col_step), color);
 | 
				
			||||||
  copy_v2_v2_int(GPU_vertbuf_raw_step(&g_batch.glyph_size_step), glyph_size);
 | 
					  copy_v2_v2_int(GPU_vertbuf_raw_step(&g_batch.glyph_size_step), glyph_size);
 | 
				
			||||||
  *((int *)GPU_vertbuf_raw_step(&g_batch.offset_step)) = offset;
 | 
					  *((int *)GPU_vertbuf_raw_step(&g_batch.offset_step)) = offset;
 | 
				
			||||||
@@ -550,10 +551,10 @@ static void blf_texture_draw(const unsigned char color[4],
 | 
				
			|||||||
static void blf_texture5_draw(const unsigned char color_in[4],
 | 
					static void blf_texture5_draw(const unsigned char color_in[4],
 | 
				
			||||||
                              const int glyph_size[2],
 | 
					                              const int glyph_size[2],
 | 
				
			||||||
                              const int offset,
 | 
					                              const int offset,
 | 
				
			||||||
                              float x1,
 | 
					                              const int x1,
 | 
				
			||||||
                              float y1,
 | 
					                              const int y1,
 | 
				
			||||||
                              float x2,
 | 
					                              const int x2,
 | 
				
			||||||
                              float y2)
 | 
					                              const int y2)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  int glyph_size_flag[2];
 | 
					  int glyph_size_flag[2];
 | 
				
			||||||
  /* flag the x and y component signs for 5x5 blurring */
 | 
					  /* flag the x and y component signs for 5x5 blurring */
 | 
				
			||||||
@@ -566,10 +567,10 @@ static void blf_texture5_draw(const unsigned char color_in[4],
 | 
				
			|||||||
static void blf_texture3_draw(const unsigned char color_in[4],
 | 
					static void blf_texture3_draw(const unsigned char color_in[4],
 | 
				
			||||||
                              const int glyph_size[2],
 | 
					                              const int glyph_size[2],
 | 
				
			||||||
                              const int offset,
 | 
					                              const int offset,
 | 
				
			||||||
                              float x1,
 | 
					                              const int x1,
 | 
				
			||||||
                              float y1,
 | 
					                              const int y1,
 | 
				
			||||||
                              float x2,
 | 
					                              const int x2,
 | 
				
			||||||
                              float y2)
 | 
					                              const int y2)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  int glyph_size_flag[2];
 | 
					  int glyph_size_flag[2];
 | 
				
			||||||
  /* flag the x component sign for 3x3 blurring */
 | 
					  /* flag the x component sign for 3x3 blurring */
 | 
				
			||||||
@@ -579,7 +580,7 @@ static void blf_texture3_draw(const unsigned char color_in[4],
 | 
				
			|||||||
  blf_texture_draw(color_in, glyph_size_flag, offset, x1, y1, x2, y2);
 | 
					  blf_texture_draw(color_in, glyph_size_flag, offset, x1, y1, x2, y2);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void blf_glyph_draw(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int x, int y)
 | 
					void blf_glyph_draw(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, const int x, const int y)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if ((!g->dims[0]) || (!g->dims[1])) {
 | 
					  if ((!g->dims[0]) || (!g->dims[1])) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -618,11 +619,11 @@ void blf_glyph_draw(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int x, int y)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (font->flags & BLF_CLIPPING) {
 | 
					  if (font->flags & BLF_CLIPPING) {
 | 
				
			||||||
    rctf rect_test;
 | 
					    rcti rect_test;
 | 
				
			||||||
    blf_glyph_calc_rect_test(&rect_test, g, (float)x, (float)y);
 | 
					    blf_glyph_calc_rect_test(&rect_test, g, x, y);
 | 
				
			||||||
    BLI_rctf_translate(&rect_test, font->pos[0], font->pos[1]);
 | 
					    BLI_rcti_translate(&rect_test, font->pos[0], font->pos[1]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!BLI_rctf_inside_rctf(&font->clip_rec, &rect_test)) {
 | 
					    if (!BLI_rcti_inside_rcti(&font->clip_rec, &rect_test)) {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -633,8 +634,8 @@ void blf_glyph_draw(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int x, int y)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (font->flags & BLF_SHADOW) {
 | 
					  if (font->flags & BLF_SHADOW) {
 | 
				
			||||||
    rctf rect_ofs;
 | 
					    rcti rect_ofs;
 | 
				
			||||||
    blf_glyph_calc_rect_shadow(&rect_ofs, g, (float)x, (float)y, font);
 | 
					    blf_glyph_calc_rect_shadow(&rect_ofs, g, x, y, font);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (font->shadow == 0) {
 | 
					    if (font->shadow == 0) {
 | 
				
			||||||
      blf_texture_draw(font->shadow_color,
 | 
					      blf_texture_draw(font->shadow_color,
 | 
				
			||||||
@@ -665,8 +666,8 @@ void blf_glyph_draw(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, int x, int y)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rctf rect;
 | 
					  rcti rect;
 | 
				
			||||||
  blf_glyph_calc_rect(&rect, g, (float)x, (float)y);
 | 
					  blf_glyph_calc_rect(&rect, g, x, y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if BLF_BLUR_ENABLE
 | 
					#if BLF_BLUR_ENABLE
 | 
				
			||||||
  switch (font->blur) {
 | 
					  switch (font->blur) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,18 +67,18 @@ void blf_font_draw_buffer__wrap(struct FontBLF *font,
 | 
				
			|||||||
                                size_t str_len,
 | 
					                                size_t str_len,
 | 
				
			||||||
                                struct ResultBLF *r_info);
 | 
					                                struct ResultBLF *r_info);
 | 
				
			||||||
size_t blf_font_width_to_strlen(
 | 
					size_t blf_font_width_to_strlen(
 | 
				
			||||||
    struct FontBLF *font, const char *str, size_t str_len, float width, float *r_width);
 | 
					    struct FontBLF *font, const char *str, size_t str_len, int width, int *r_width);
 | 
				
			||||||
size_t blf_font_width_to_rstrlen(
 | 
					size_t blf_font_width_to_rstrlen(
 | 
				
			||||||
    struct FontBLF *font, const char *str, size_t str_len, float width, float *r_width);
 | 
					    struct FontBLF *font, const char *str, size_t str_len, int width, int *r_width);
 | 
				
			||||||
void blf_font_boundbox(struct FontBLF *font,
 | 
					void blf_font_boundbox(struct FontBLF *font,
 | 
				
			||||||
                       const char *str,
 | 
					                       const char *str,
 | 
				
			||||||
                       size_t str_len,
 | 
					                       size_t str_len,
 | 
				
			||||||
                       struct rctf *r_box,
 | 
					                       struct rcti *r_box,
 | 
				
			||||||
                       struct ResultBLF *r_info);
 | 
					                       struct ResultBLF *r_info);
 | 
				
			||||||
void blf_font_boundbox__wrap(struct FontBLF *font,
 | 
					void blf_font_boundbox__wrap(struct FontBLF *font,
 | 
				
			||||||
                             const char *str,
 | 
					                             const char *str,
 | 
				
			||||||
                             size_t str_len,
 | 
					                             size_t str_len,
 | 
				
			||||||
                             struct rctf *r_box,
 | 
					                             struct rcti *r_box,
 | 
				
			||||||
                             struct ResultBLF *r_info);
 | 
					                             struct ResultBLF *r_info);
 | 
				
			||||||
void blf_font_width_and_height(struct FontBLF *font,
 | 
					void blf_font_width_and_height(struct FontBLF *font,
 | 
				
			||||||
                               const char *str,
 | 
					                               const char *str,
 | 
				
			||||||
@@ -97,8 +97,8 @@ float blf_font_height(struct FontBLF *font,
 | 
				
			|||||||
float blf_font_fixed_width(struct FontBLF *font);
 | 
					float blf_font_fixed_width(struct FontBLF *font);
 | 
				
			||||||
int blf_font_height_max(struct FontBLF *font);
 | 
					int blf_font_height_max(struct FontBLF *font);
 | 
				
			||||||
int blf_font_width_max(struct FontBLF *font);
 | 
					int blf_font_width_max(struct FontBLF *font);
 | 
				
			||||||
float blf_font_descender(struct FontBLF *font);
 | 
					int blf_font_descender(struct FontBLF *font);
 | 
				
			||||||
float blf_font_ascender(struct FontBLF *font);
 | 
					int blf_font_ascender(struct FontBLF *font);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char *blf_display_name(struct FontBLF *font);
 | 
					char *blf_display_name(struct FontBLF *font);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -109,7 +109,7 @@ void blf_font_boundbox_foreach_glyph(struct FontBLF *font,
 | 
				
			|||||||
                                                     size_t str_step_ofs,
 | 
					                                                     size_t str_step_ofs,
 | 
				
			||||||
                                                     const struct rcti *glyph_step_bounds,
 | 
					                                                     const struct rcti *glyph_step_bounds,
 | 
				
			||||||
                                                     int glyph_advance_x,
 | 
					                                                     int glyph_advance_x,
 | 
				
			||||||
                                                     const struct rctf *glyph_bounds,
 | 
					                                                     const struct rcti *glyph_bounds,
 | 
				
			||||||
                                                     const int glyph_bearing[2],
 | 
					                                                     const int glyph_bearing[2],
 | 
				
			||||||
                                                     void *user_data),
 | 
					                                                     void *user_data),
 | 
				
			||||||
                                     void *user_data,
 | 
					                                     void *user_data,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -101,7 +101,7 @@ typedef struct BatchBLF {
 | 
				
			|||||||
  struct GPUVertBufRaw pos_step, col_step, offset_step, glyph_size_step;
 | 
					  struct GPUVertBufRaw pos_step, col_step, offset_step, glyph_size_step;
 | 
				
			||||||
  unsigned int pos_loc, col_loc, offset_loc, glyph_size_loc;
 | 
					  unsigned int pos_loc, col_loc, offset_loc, glyph_size_loc;
 | 
				
			||||||
  unsigned int glyph_len;
 | 
					  unsigned int glyph_len;
 | 
				
			||||||
  float ofs[2];    /* copy of font->pos */
 | 
					  int ofs[2];      /* copy of font->pos */
 | 
				
			||||||
  float mat[4][4]; /* previous call modelmatrix. */
 | 
					  float mat[4][4]; /* previous call modelmatrix. */
 | 
				
			||||||
  bool enabled, active, simple_shader;
 | 
					  bool enabled, active, simple_shader;
 | 
				
			||||||
  struct GlyphCacheBLF *glyph_cache;
 | 
					  struct GlyphCacheBLF *glyph_cache;
 | 
				
			||||||
@@ -231,7 +231,7 @@ typedef struct FontBLF {
 | 
				
			|||||||
  float aspect[3];
 | 
					  float aspect[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* initial position for draw the text. */
 | 
					  /* initial position for draw the text. */
 | 
				
			||||||
  float pos[3];
 | 
					  int pos[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* angle in radians. */
 | 
					  /* angle in radians. */
 | 
				
			||||||
  float angle;
 | 
					  float angle;
 | 
				
			||||||
@@ -260,7 +260,7 @@ typedef struct FontBLF {
 | 
				
			|||||||
  float m[16];
 | 
					  float m[16];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* clipping rectangle. */
 | 
					  /* clipping rectangle. */
 | 
				
			||||||
  rctf clip_rec;
 | 
					  rcti clip_rec;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* the width to wrap the text, see BLF_WORD_WRAP */
 | 
					  /* the width to wrap the text, see BLF_WORD_WRAP */
 | 
				
			||||||
  int wrap_width;
 | 
					  int wrap_width;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,7 +64,7 @@ void BLF_thumb_preview(const char *filepath,
 | 
				
			|||||||
  /* Always create the image with a white font,
 | 
					  /* Always create the image with a white font,
 | 
				
			||||||
   * the caller can theme how it likes */
 | 
					   * the caller can theme how it likes */
 | 
				
			||||||
  memcpy(font->buf_info.col_init, font_color, sizeof(font->buf_info.col_init));
 | 
					  memcpy(font->buf_info.col_init, font_color, sizeof(font->buf_info.col_init));
 | 
				
			||||||
  font->pos[1] = (float)h;
 | 
					  font->pos[1] = h;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  font_size_curr = font_size;
 | 
					  font_size_curr = font_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -84,7 +84,7 @@ void BLF_thumb_preview(const char *filepath,
 | 
				
			|||||||
    font_size_curr -= (font_size_curr / font_shrink);
 | 
					    font_size_curr -= (font_size_curr / font_shrink);
 | 
				
			||||||
    font_shrink += 1;
 | 
					    font_shrink += 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    font->pos[1] -= blf_font_ascender(font) * 1.1f;
 | 
					    font->pos[1] -= (int)((float)blf_font_ascender(font) * 1.1f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* We fallback to default english strings in case not enough chars are available in current
 | 
					    /* We fallback to default english strings in case not enough chars are available in current
 | 
				
			||||||
     * font for given translated string (useful in non-latin i18n context, like Chinese,
 | 
					     * font for given translated string (useful in non-latin i18n context, like Chinese,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1806,9 +1806,9 @@ void BKE_image_stamp_buf(Scene *scene,
 | 
				
			|||||||
                         int channels)
 | 
					                         int channels)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  struct StampData stamp_data;
 | 
					  struct StampData stamp_data;
 | 
				
			||||||
  float w, h, pad;
 | 
					  int w, h, pad;
 | 
				
			||||||
  int x, y, y_ofs;
 | 
					  int x, y, y_ofs;
 | 
				
			||||||
  float h_fixed;
 | 
					  int h_fixed;
 | 
				
			||||||
  const int mono = blf_mono_font_render; /* XXX */
 | 
					  const int mono = blf_mono_font_render; /* XXX */
 | 
				
			||||||
  struct ColorManagedDisplay *display;
 | 
					  struct ColorManagedDisplay *display;
 | 
				
			||||||
  const char *display_device;
 | 
					  const char *display_device;
 | 
				
			||||||
@@ -1816,20 +1816,20 @@ void BKE_image_stamp_buf(Scene *scene,
 | 
				
			|||||||
  /* vars for calculating wordwrap */
 | 
					  /* vars for calculating wordwrap */
 | 
				
			||||||
  struct {
 | 
					  struct {
 | 
				
			||||||
    struct ResultBLF info;
 | 
					    struct ResultBLF info;
 | 
				
			||||||
    rctf rect;
 | 
					    rcti rect;
 | 
				
			||||||
  } wrap;
 | 
					  } wrap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* this could be an argument if we want to operate on non linear float imbuf's
 | 
					  /* this could be an argument if we want to operate on non linear float imbuf's
 | 
				
			||||||
   * for now though this is only used for renders which use scene settings */
 | 
					   * for now though this is only used for renders which use scene settings */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TEXT_SIZE_CHECK(str, w, h) \
 | 
					#define TEXT_SIZE_CHECK(str, w, h) \
 | 
				
			||||||
  ((str[0]) && ((void)(h = h_fixed), (w = BLF_width(mono, str, sizeof(str)))))
 | 
					  ((str[0]) && ((void)(h = h_fixed), (w = (int)BLF_width(mono, str, sizeof(str)))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* must enable BLF_WORD_WRAP before using */
 | 
					  /* must enable BLF_WORD_WRAP before using */
 | 
				
			||||||
#define TEXT_SIZE_CHECK_WORD_WRAP(str, w, h) \
 | 
					#define TEXT_SIZE_CHECK_WORD_WRAP(str, w, h) \
 | 
				
			||||||
  ((str[0]) && (BLF_boundbox_ex(mono, str, sizeof(str), &wrap.rect, &wrap.info), \
 | 
					  ((str[0]) && (BLF_boundbox_ex(mono, str, sizeof(str), &wrap.rect, &wrap.info), \
 | 
				
			||||||
                (void)(h = h_fixed * wrap.info.lines), \
 | 
					                (void)(h = h_fixed * wrap.info.lines), \
 | 
				
			||||||
                (w = BLI_rctf_size_x(&wrap.rect))))
 | 
					                (w = BLI_rcti_size_x(&wrap.rect))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define BUFF_MARGIN_X 2
 | 
					#define BUFF_MARGIN_X 2
 | 
				
			||||||
#define BUFF_MARGIN_Y 1
 | 
					#define BUFF_MARGIN_Y 1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3018,12 +3018,12 @@ static bool ui_textedit_set_cursor_pos_foreach_glyph(const char *UNUSED(str),
 | 
				
			|||||||
                                                     const size_t str_step_ofs,
 | 
					                                                     const size_t str_step_ofs,
 | 
				
			||||||
                                                     const rcti *glyph_step_bounds,
 | 
					                                                     const rcti *glyph_step_bounds,
 | 
				
			||||||
                                                     const int UNUSED(glyph_advance_x),
 | 
					                                                     const int UNUSED(glyph_advance_x),
 | 
				
			||||||
                                                     const rctf *glyph_bounds,
 | 
					                                                     const rcti *glyph_bounds,
 | 
				
			||||||
                                                     const int UNUSED(glyph_bearing[2]),
 | 
					                                                     const int UNUSED(glyph_bearing[2]),
 | 
				
			||||||
                                                     void *user_data)
 | 
					                                                     void *user_data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  int *cursor_data = user_data;
 | 
					  int *cursor_data = user_data;
 | 
				
			||||||
  const float center = glyph_step_bounds->xmin + (BLI_rctf_size_x(glyph_bounds) / 2.0f);
 | 
					  const int center = glyph_step_bounds->xmin + (BLI_rcti_size_x(glyph_bounds) / 2.0f);
 | 
				
			||||||
  if (cursor_data[0] < center) {
 | 
					  if (cursor_data[0] < center) {
 | 
				
			||||||
    cursor_data[1] = str_step_ofs;
 | 
					    cursor_data[1] = str_step_ofs;
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ void UI_fontstyle_draw_ex(const uiFontStyle *fs,
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  else {
 | 
					  else {
 | 
				
			||||||
    /* Draw from bound-box center. */
 | 
					    /* Draw from bound-box center. */
 | 
				
			||||||
    const float height = BLF_ascender(fs->uifont_id) + BLF_descender(fs->uifont_id);
 | 
					    const int height = BLF_ascender(fs->uifont_id) + BLF_descender(fs->uifont_id);
 | 
				
			||||||
    yofs = ceil(0.5f * (BLI_rcti_size_y(rect) - height));
 | 
					    yofs = ceil(0.5f * (BLI_rcti_size_y(rect) - height));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -279,9 +279,9 @@ void UI_fontstyle_draw_simple_backdrop(const uiFontStyle *fs,
 | 
				
			|||||||
  UI_fontstyle_set(fs);
 | 
					  UI_fontstyle_set(fs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    const float width = BLF_width(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX);
 | 
					    const int width = BLF_width(fs->uifont_id, str, BLF_DRAW_STR_DUMMY_MAX);
 | 
				
			||||||
    const float height = BLF_height_max(fs->uifont_id);
 | 
					    const int height = BLF_height_max(fs->uifont_id);
 | 
				
			||||||
    const float decent = BLF_descender(fs->uifont_id);
 | 
					    const int decent = BLF_descender(fs->uifont_id);
 | 
				
			||||||
    const float margin = height / 4.0f;
 | 
					    const float margin = height / 4.0f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rctf rect;
 | 
					    rctf rect;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1859,15 +1859,15 @@ static bool widget_draw_text_underline_calc_position(const char *UNUSED(str),
 | 
				
			|||||||
                                                     const size_t str_step_ofs,
 | 
					                                                     const size_t str_step_ofs,
 | 
				
			||||||
                                                     const rcti *glyph_step_bounds,
 | 
					                                                     const rcti *glyph_step_bounds,
 | 
				
			||||||
                                                     const int UNUSED(glyph_advance_x),
 | 
					                                                     const int UNUSED(glyph_advance_x),
 | 
				
			||||||
                                                     const rctf *glyph_bounds,
 | 
					                                                     const rcti *glyph_bounds,
 | 
				
			||||||
                                                     const int UNUSED(glyph_bearing[2]),
 | 
					                                                     const int UNUSED(glyph_bearing[2]),
 | 
				
			||||||
                                                     void *user_data)
 | 
					                                                     void *user_data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  struct UnderlineData *ul_data = user_data;
 | 
					  struct UnderlineData *ul_data = user_data;
 | 
				
			||||||
  if (ul_data->str_offset == str_step_ofs) {
 | 
					  if (ul_data->str_offset == str_step_ofs) {
 | 
				
			||||||
    /* Full width of this glyph including both bearings. */
 | 
					    /* Full width of this glyph including both bearings. */
 | 
				
			||||||
    const float width = glyph_bounds->xmin + BLI_rctf_size_x(glyph_bounds) + glyph_bounds->xmin;
 | 
					    const int width = glyph_bounds->xmin + BLI_rcti_size_x(glyph_bounds) + glyph_bounds->xmin;
 | 
				
			||||||
    ul_data->r_offset_px[0] = glyph_step_bounds->xmin + ((width - ul_data->width_px) * 0.5f);
 | 
					    ul_data->r_offset_px[0] = glyph_step_bounds->xmin + ((width - ul_data->width_px) / 2);
 | 
				
			||||||
    /* One line-width below the lower glyph bounds. */
 | 
					    /* One line-width below the lower glyph bounds. */
 | 
				
			||||||
    ul_data->r_offset_px[1] = glyph_bounds->ymin - U.pixelsize;
 | 
					    ul_data->r_offset_px[1] = glyph_bounds->ymin - U.pixelsize;
 | 
				
			||||||
    /* Early exit. */
 | 
					    /* Early exit. */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -248,7 +248,7 @@ static void file_draw_string_multiline(int sx,
 | 
				
			|||||||
  int font_id = style->widgetlabel.uifont_id;
 | 
					  int font_id = style->widgetlabel.uifont_id;
 | 
				
			||||||
  int len = strlen(string);
 | 
					  int len = strlen(string);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  rctf textbox;
 | 
					  rcti textbox;
 | 
				
			||||||
  BLF_wordwrap(font_id, wrap_width);
 | 
					  BLF_wordwrap(font_id, wrap_width);
 | 
				
			||||||
  BLF_enable(font_id, BLF_WORD_WRAP);
 | 
					  BLF_enable(font_id, BLF_WORD_WRAP);
 | 
				
			||||||
  BLF_boundbox(font_id, string, len, &textbox);
 | 
					  BLF_boundbox(font_id, string, len, &textbox);
 | 
				
			||||||
@@ -260,7 +260,7 @@ static void file_draw_string_multiline(int sx,
 | 
				
			|||||||
  rect.xmax = sx + wrap_width;
 | 
					  rect.xmax = sx + wrap_width;
 | 
				
			||||||
  /* Need to increase the clipping rect by one more line, since the #UI_fontstyle_draw_ex() will
 | 
					  /* Need to increase the clipping rect by one more line, since the #UI_fontstyle_draw_ex() will
 | 
				
			||||||
   * actually start drawing at (ymax - line-height). */
 | 
					   * actually start drawing at (ymax - line-height). */
 | 
				
			||||||
  rect.ymin = sy - round_fl_to_int(BLI_rctf_size_y(&textbox)) - line_height;
 | 
					  rect.ymin = sy - BLI_rcti_size_y(&textbox) - line_height;
 | 
				
			||||||
  rect.ymax = sy;
 | 
					  rect.ymax = sy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  struct ResultBLF result;
 | 
					  struct ResultBLF result;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -711,7 +711,7 @@ static float metadata_box_height_get(ImBuf *ibuf, int fontid, const bool is_top)
 | 
				
			|||||||
        if (i == 4) {
 | 
					        if (i == 4) {
 | 
				
			||||||
          struct {
 | 
					          struct {
 | 
				
			||||||
            struct ResultBLF info;
 | 
					            struct ResultBLF info;
 | 
				
			||||||
            rctf rect;
 | 
					            rcti rect;
 | 
				
			||||||
          } wrap;
 | 
					          } wrap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          BLF_enable(fontid, BLF_WORD_WRAP);
 | 
					          BLF_enable(fontid, BLF_WORD_WRAP);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3381,7 +3381,7 @@ static ImBuf *do_text_effect(const SeqRenderData *context,
 | 
				
			|||||||
  /* vars for calculating wordwrap and optional box */
 | 
					  /* vars for calculating wordwrap and optional box */
 | 
				
			||||||
  struct {
 | 
					  struct {
 | 
				
			||||||
    struct ResultBLF info;
 | 
					    struct ResultBLF info;
 | 
				
			||||||
    rctf rect;
 | 
					    rcti rect;
 | 
				
			||||||
  } wrap;
 | 
					  } wrap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  BLF_boundbox_ex(font, data->text, sizeof(data->text), &wrap.rect, &wrap.info);
 | 
					  BLF_boundbox_ex(font, data->text, sizeof(data->text), &wrap.rect, &wrap.info);
 | 
				
			||||||
@@ -3391,10 +3391,10 @@ static ImBuf *do_text_effect(const SeqRenderData *context,
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  else {
 | 
					  else {
 | 
				
			||||||
    if (data->align == SEQ_TEXT_ALIGN_X_RIGHT) {
 | 
					    if (data->align == SEQ_TEXT_ALIGN_X_RIGHT) {
 | 
				
			||||||
      x -= BLI_rctf_size_x(&wrap.rect);
 | 
					      x -= BLI_rcti_size_x(&wrap.rect);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else if (data->align == SEQ_TEXT_ALIGN_X_CENTER) {
 | 
					    else if (data->align == SEQ_TEXT_ALIGN_X_CENTER) {
 | 
				
			||||||
      x -= BLI_rctf_size_x(&wrap.rect) / 2;
 | 
					      x -= BLI_rcti_size_x(&wrap.rect) / 2;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (data->align_y == SEQ_TEXT_ALIGN_Y_TOP) {
 | 
					    if (data->align_y == SEQ_TEXT_ALIGN_Y_TOP) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user