Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-05-03 09:51:34 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-05-03 09:51:34 +0300
commit0d65520f05ec5474e62d453aa62eb06efa3981d7 (patch)
tree2436b0d13a234c474f3bd2cf55bec6014603f886 /source/blender/blenfont
parentd388c1c524948df17d6c74c3830f2803ac4933b4 (diff)
BLF: add new arguments to BLF_GlyphBoundsFn
- glyph_bounds: to get the character width. - glyph_bearing: lower left character starting point. These values are needed for more precise glyph calculations.
Diffstat (limited to 'source/blender/blenfont')
-rw-r--r--source/blender/blenfont/BLF_api.h6
-rw-r--r--source/blender/blenfont/intern/blf_font.c2
-rw-r--r--source/blender/blenfont/intern/blf_internal.h6
3 files changed, 9 insertions, 5 deletions
diff --git a/source/blender/blenfont/BLF_api.h b/source/blender/blenfont/BLF_api.h
index f6f1393bd21..2158596745a 100644
--- a/source/blender/blenfont/BLF_api.h
+++ b/source/blender/blenfont/BLF_api.h
@@ -117,9 +117,11 @@ void BLF_draw_ascii(int fontid, const char *str, size_t len) ATTR_NONNULL(2);
int BLF_draw_mono(int fontid, const char *str, size_t len, int cwidth) ATTR_NONNULL(2);
typedef bool (*BLF_GlyphBoundsFn)(const char *str,
- const size_t str_ofs,
- const struct rcti *glyph_bounds,
+ const size_t str_step_ofs,
+ const struct rcti *glyph_step_bounds,
const int glyph_advance_x,
+ const struct rctf *glyph_bounds,
+ const float glyph_bearing[2],
void *user_data);
void BLF_boundbox_foreach_glyph_ex(int fontid,
diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c
index ed92e9aaff2..0eee887efa6 100644
--- a/source/blender/blenfont/intern/blf_font.c
+++ b/source/blender/blenfont/intern/blf_font.c
@@ -1252,7 +1252,7 @@ static void blf_font_boundbox_foreach_glyph_ex(FontBLF *font,
pen_x += g->advance_i;
- if (user_fn(str, i_curr, &gbox, g->advance_i, user_data) == false) {
+ if (user_fn(str, i_curr, &gbox, g->advance_i, &g->box, &g->pos_x, user_data) == false) {
break;
}
diff --git a/source/blender/blenfont/intern/blf_internal.h b/source/blender/blenfont/intern/blf_internal.h
index 98ada87d16d..a8c874b19ec 100644
--- a/source/blender/blenfont/intern/blf_internal.h
+++ b/source/blender/blenfont/intern/blf_internal.h
@@ -103,9 +103,11 @@ void blf_font_boundbox_foreach_glyph(struct FontBLF *font,
const char *str,
size_t len,
bool (*user_fn)(const char *str,
- const size_t str_ofs,
- const struct rcti *glyph_bounds,
+ const size_t str_step_ofs,
+ const struct rcti *glyph_step_bounds,
const int glyph_advance_x,
+ const struct rctf *glyph_bounds,
+ const float glyph_bearing[2],
void *user_data),
void *user_data,
struct ResultBLF *r_info);