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:
authorTon Roosendaal <ton@blender.org>2009-06-01 21:21:03 +0400
committerTon Roosendaal <ton@blender.org>2009-06-01 21:21:03 +0400
commita117731aa23c25d699c405325c7bb7ac5680a5e7 (patch)
tree19bf09edd70e5b50b582593f5db1bcdb7e7281ec /source/blender/editors/interface/view2d.c
parentcb96aa47dbcefa8be8db63dc8fc2607b16b2d5d1 (diff)
2.5
- Fix: text draw in fonts was slightly too low; it didn't calculate offset correctly. Now it is aligned to have number characters in center. - Fix: text clip was too wide, giving errors on extreme zoom in. - Added boundbox-clipped default text drawing for view2d: void UI_view2d_text_cache_rectf(View2D *v2d, rctf *rect, char *str) (Note; also for previous commit, this cache immediately projects, so if you change view2d while drawing, text is still on correct positions)
Diffstat (limited to 'source/blender/editors/interface/view2d.c')
-rw-r--r--source/blender/editors/interface/view2d.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c
index fc1de788f5f..b363f1f6272 100644
--- a/source/blender/editors/interface/view2d.c
+++ b/source/blender/editors/interface/view2d.c
@@ -1949,6 +1949,7 @@ typedef struct View2DString {
float col[4];
char str[128];
short mval[2];
+ rcti rect;
} View2DString;
@@ -1959,6 +1960,7 @@ void UI_view2d_text_cache_add(View2D *v2d, float x, float y, char *str)
UI_view2d_view_to_region(v2d, x, y, mval, mval+1);
if(mval[0]!=V2D_IS_CLIPPED && mval[1]!=V2D_IS_CLIPPED) {
+ /* use calloc, rect has to be zeroe'd */
View2DString *v2s= MEM_callocN(sizeof(View2DString), "View2DString");
BLI_addtail(&strings, v2s);
@@ -1969,6 +1971,20 @@ void UI_view2d_text_cache_add(View2D *v2d, float x, float y, char *str)
}
}
+/* no clip (yet) */
+void UI_view2d_text_cache_rectf(View2D *v2d, rctf *rect, char *str)
+{
+ View2DString *v2s= MEM_callocN(sizeof(View2DString), "View2DString");
+
+ UI_view2d_to_region_no_clip(v2d, rect->xmin, rect->ymin, &v2s->rect.xmin, &v2s->rect.ymin);
+ UI_view2d_to_region_no_clip(v2d, rect->xmax, rect->ymax, &v2s->rect.xmax, &v2s->rect.ymax);
+
+ BLI_addtail(&strings, v2s);
+ BLI_strncpy(v2s->str, str, 128);
+ glGetFloatv(GL_CURRENT_COLOR, v2s->col);
+}
+
+
void UI_view2d_text_cache_draw(ARegion *ar)
{
View2DString *v2s;
@@ -1978,7 +1994,21 @@ void UI_view2d_text_cache_draw(ARegion *ar)
for(v2s= strings.first; v2s; v2s= v2s->next) {
glColor3fv(v2s->col);
- BLF_draw_default((float)v2s->mval[0], (float)v2s->mval[1], 0.0, v2s->str);
+ if(v2s->rect.xmin==v2s->rect.xmax)
+ BLF_draw_default((float)v2s->mval[0], (float)v2s->mval[1], 0.0, v2s->str);
+ else {
+ int xofs=0, yofs;
+
+ yofs= ceil( 0.5f*(v2s->rect.ymax - v2s->rect.ymin - BLF_height_default("28")));
+ if(yofs<1) yofs= 1;
+
+ BLF_clipping(v2s->rect.xmin-4, v2s->rect.ymin-4, v2s->rect.xmax+4, v2s->rect.ymax+4);
+ BLF_enable(BLF_CLIPPING);
+
+ BLF_draw_default(v2s->rect.xmin+xofs, v2s->rect.ymin+yofs, 0.0f, v2s->str);
+
+ BLF_disable(BLF_CLIPPING);
+ }
}
// wmPopMatrix();