[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32996] trunk/blender/source/blender: BLF_draw functions take an extra length argument, so the console drawing doenst need to swap in NULL chars to draw word wrapping .

Campbell Barton ideasman42 at gmail.com
Thu Nov 11 07:36:02 CET 2010


Revision: 32996
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32996
Author:   campbellbarton
Date:     2010-11-11 07:35:45 +0100 (Thu, 11 Nov 2010)

Log Message:
-----------
BLF_draw functions take an extra length argument, so the console drawing doenst need to swap in NULL chars to draw word wrapping.

Modified Paths:
--------------
    trunk/blender/source/blender/blenfont/BLF_api.h
    trunk/blender/source/blender/blenfont/intern/blf.c
    trunk/blender/source/blender/blenfont/intern/blf_font.c
    trunk/blender/source/blender/blenfont/intern/blf_internal.h
    trunk/blender/source/blender/editors/interface/interface_draw.c
    trunk/blender/source/blender/editors/interface/interface_style.c
    trunk/blender/source/blender/editors/interface/view2d.c
    trunk/blender/source/blender/editors/screen/area.c
    trunk/blender/source/blender/editors/space_console/console_draw.c
    trunk/blender/source/blender/editors/space_info/textview.c
    trunk/blender/source/blender/editors/space_info/textview.h
    trunk/blender/source/blender/editors/space_text/text_draw.c
    trunk/blender/source/blender/editors/space_view3d/drawobject.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/python/generic/blf_api.c

Modified: trunk/blender/source/blender/blenfont/BLF_api.h
===================================================================
--- trunk/blender/source/blender/blenfont/BLF_api.h	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/blenfont/BLF_api.h	2010-11-11 06:35:45 UTC (rev 32996)
@@ -48,12 +48,12 @@
 void BLF_size(int fontid, int size, int dpi);
 
 /* Draw the string using the default font, size and dpi. */
-void BLF_draw_default(float x, float y, float z, const char *str);
-void BLF_draw_default_ascii(float x, float y, float z, const char *str);
+void BLF_draw_default(float x, float y, float z, const char *str, size_t len);
+void BLF_draw_default_ascii(float x, float y, float z, const char *str, size_t len);
 
 /* Draw the string using the current font. */
-void BLF_draw(int fontid, const char *str);
-void BLF_draw_ascii(int fontid, const char *str);
+void BLF_draw(int fontid, const char *str, size_t len);
+void BLF_draw_ascii(int fontid, const char *str, size_t len);
 
 /*
  * This function return the bounding box of the string

Modified: trunk/blender/source/blender/blenfont/intern/blf.c
===================================================================
--- trunk/blender/source/blender/blenfont/intern/blf.c	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/blenfont/intern/blf.c	2010-11-11 06:35:45 UTC (rev 32996)
@@ -361,7 +361,7 @@
 		font->blur= size;
 }
 
-void BLF_draw_default(float x, float y, float z, const char *str)
+void BLF_draw_default(float x, float y, float z, const char *str, size_t len)
 {
 	if (!str)
 		return;
@@ -376,10 +376,10 @@
 
 	BLF_size(global_font_default, global_font_points, global_font_dpi);
 	BLF_position(global_font_default, x, y, z);
-	BLF_draw(global_font_default, str);
+	BLF_draw(global_font_default, str, len);
 }
 /* same as above but call 'BLF_draw_ascii' */
-void BLF_draw_default_ascii(float x, float y, float z, const char *str)
+void BLF_draw_default_ascii(float x, float y, float z, const char *str, size_t len)
 {
 	if (!str)
 		return;
@@ -394,7 +394,7 @@
 
 	BLF_size(global_font_default, global_font_points, global_font_dpi);
 	BLF_position(global_font_default, x, y, z);
-	BLF_draw_ascii(global_font_default, str);
+	BLF_draw_ascii(global_font_default, str, len); /* XXX, use real length */
 }
 
 void BLF_rotation_default(float angle)
@@ -432,22 +432,22 @@
 	glDisable(GL_TEXTURE_2D);
 }
 
-void BLF_draw(int fontid, const char *str)
+void BLF_draw(int fontid, const char *str, size_t len)
 {
 	FontBLF *font= BLF_get(fontid);
 	if (font) {
 		blf_draw__start(font);
-		blf_font_draw(font, str);
+		blf_font_draw(font, str, len);
 		blf_draw__end();
 	}
 }
 
-void BLF_draw_ascii(int fontid, const char *str)
+void BLF_draw_ascii(int fontid, const char *str, size_t len)
 {
 	FontBLF *font= BLF_get(fontid);
 	if (font) {
 		blf_draw__start(font);
-		blf_font_draw_ascii(font, str);
+		blf_font_draw_ascii(font, str, len);
 		blf_draw__end();
 	}
 }

Modified: trunk/blender/source/blender/blenfont/intern/blf_font.c
===================================================================
--- trunk/blender/source/blender/blenfont/intern/blf_font.c	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/blenfont/intern/blf_font.c	2010-11-11 06:35:45 UTC (rev 32996)
@@ -92,7 +92,7 @@
 	}
 }
 
-void blf_font_draw(FontBLF *font, const char *str)
+void blf_font_draw(FontBLF *font, const char *str, unsigned int len)
 {
 	unsigned int c;
 	GlyphBLF *g, *g_prev;
@@ -110,7 +110,7 @@
 	has_kerning= FT_HAS_KERNING(font->face);
 	g_prev= NULL;
 
-	while (str[i]) {
+	while (str[i] && i < len) {
 		c= blf_utf8_next((unsigned char *)str, &i);
 		if (c == 0)
 			break;
@@ -147,7 +147,7 @@
 }
 
 /* faster version of blf_font_draw, ascii only for view dimensions */
-void blf_font_draw_ascii(FontBLF *font, const char *str)
+void blf_font_draw_ascii(FontBLF *font, const char *str, unsigned int len)
 {
 	char c;
 	GlyphBLF *g, *g_prev;
@@ -177,7 +177,7 @@
 		}
 	}
 	
-	while ((c= *(str++))) {
+	while ((c= *(str++)) && len--) {
 		g= font->glyph_ascii_table[c];
 
 		/* if we don't found a glyph, skip it. */

Modified: trunk/blender/source/blender/blenfont/intern/blf_internal.h
===================================================================
--- trunk/blender/source/blender/blenfont/intern/blf_internal.h	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/blenfont/intern/blf_internal.h	2010-11-11 06:35:45 UTC (rev 32996)
@@ -44,8 +44,8 @@
 void blf_font_attach_from_mem(FontBLF *font, const unsigned char *mem, int mem_size);
 
 void blf_font_size(FontBLF *font, int size, int dpi);
-void blf_font_draw(FontBLF *font, const char *str);
-void blf_font_draw_ascii(FontBLF *font, const char *str);
+void blf_font_draw(FontBLF *font, const char *str, unsigned int len);
+void blf_font_draw_ascii(FontBLF *font, const char *str, unsigned int len);
 void blf_font_buffer(FontBLF *font, char *str);
 void blf_font_boundbox(FontBLF *font, char *str, rctf *box);
 void blf_font_width_and_height(FontBLF *font, char *str, float *width, float *height);

Modified: trunk/blender/source/blender/editors/interface/interface_draw.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_draw.c	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/editors/interface/interface_draw.c	2010-11-11 06:35:45 UTC (rev 32996)
@@ -856,7 +856,7 @@
 		sprintf(str,"%-3d",i*20);
 		str[3]='\0';
 		fdrawline(rect.xmin+22, yofs+(i/5.f)*h, rect.xmax+1, yofs+(i/5.f)*h);
-		BLF_draw_default(rect.xmin+1, yofs-5+(i/5.f)*h, 0, str);
+		BLF_draw_default(rect.xmin+1, yofs-5+(i/5.f)*h, 0, str, sizeof(str)-1);
 		/* in the loop because blf_draw reset it */
 		glEnable(GL_BLEND);
 		glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

Modified: trunk/blender/source/blender/editors/interface/interface_style.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_style.c	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/editors/interface/interface_style.c	2010-11-11 06:35:45 UTC (rev 32996)
@@ -165,7 +165,7 @@
 	if (fs->kerning == 1)
 		BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT);
 
-	BLF_draw(fs->uifont_id, str);
+	BLF_draw(fs->uifont_id, str, 65535); /* XXX, use real length */
 	BLF_disable(fs->uifont_id, BLF_CLIPPING);
 	if (fs->shadow)
 		BLF_disable(fs->uifont_id, BLF_SHADOW);
@@ -218,7 +218,7 @@
 	if (fs->kerning == 1)
 		BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT);
 
-	BLF_draw(fs->uifont_id, str);
+	BLF_draw(fs->uifont_id, str, 65535); /* XXX, use real length */
 	BLF_disable(fs->uifont_id, BLF_ROTATION);
 	BLF_disable(fs->uifont_id, BLF_CLIPPING);
 	if (fs->shadow)
@@ -258,7 +258,7 @@
 
 	uiStyleFontSet(&style->widget);
 	BLF_position(style->widget.uifont_id, x, y, 0.0f);
-	BLF_draw(style->widget.uifont_id, str);
+	BLF_draw(style->widget.uifont_id, str, 65535); /* XXX, use real length */
 
 	if (style->widget.kerning == 1)
 		BLF_disable(style->widget.uifont_id, BLF_KERNING_DEFAULT);

Modified: trunk/blender/source/blender/editors/interface/view2d.c
===================================================================
--- trunk/blender/source/blender/editors/interface/view2d.c	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/editors/interface/view2d.c	2010-11-11 06:35:45 UTC (rev 32996)
@@ -1525,7 +1525,7 @@
 	}
 	
 	/* draw it */
-	BLF_draw_default(x, y, 0.0f, str);
+	BLF_draw_default(x, y, 0.0f, str, sizeof(str)-1);
 }
 
 /* Draw scrollbars in the given 2d-region */
@@ -2054,7 +2054,7 @@
 	for(v2s= strings.first; v2s; v2s= v2s->next) {
 		glColor3fv(v2s->col);
 		if(v2s->rect.xmin==v2s->rect.xmax)
-			BLF_draw_default((float)v2s->mval[0], (float)v2s->mval[1], 0.0, v2s->str);
+			BLF_draw_default((float)v2s->mval[0], (float)v2s->mval[1], 0.0, v2s->str, sizeof(v2s->str)-1);
 		else {
 			int xofs=0, yofs;
 			
@@ -2063,7 +2063,7 @@
 			
 			BLF_clipping_default(v2s->rect.xmin-4, v2s->rect.ymin-4, v2s->rect.xmax+4, v2s->rect.ymax+4);
 			BLF_enable_default(BLF_CLIPPING);
-			BLF_draw_default(v2s->rect.xmin+xofs, v2s->rect.ymin+yofs, 0.0f, v2s->str);
+			BLF_draw_default(v2s->rect.xmin+xofs, v2s->rect.ymin+yofs, 0.0f, v2s->str, sizeof(v2s->str)-1);
 			BLF_disable_default(BLF_CLIPPING);
 		}
 	}

Modified: trunk/blender/source/blender/editors/screen/area.c
===================================================================
--- trunk/blender/source/blender/editors/screen/area.c	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/editors/screen/area.c	2010-11-11 06:35:45 UTC (rev 32996)
@@ -338,7 +338,7 @@
 		glClear(GL_COLOR_BUFFER_BIT);
 		
 		UI_ThemeColor(TH_TEXT);
-		BLF_draw_default(20, 8, 0.0f, ar->headerstr);
+		BLF_draw_default(20, 8, 0.0f, ar->headerstr, 65535); /* XXX, use real length */
 	}
 	else if(at->draw) {
 		at->draw(C, ar);

Modified: trunk/blender/source/blender/editors/space_console/console_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_console/console_draw.c	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/editors/space_console/console_draw.c	2010-11-11 06:35:45 UTC (rev 32996)
@@ -168,7 +168,7 @@
 	return ((tvc->iter= (void *)((Link *)tvc->iter)->prev) != NULL);
 }
 
-static int console_textview_line_get(struct TextViewContext *tvc, char **line, int *len)
+static int console_textview_line_get(struct TextViewContext *tvc, const char **line, int *len)
 {
 	ConsoleLine *cl= (ConsoleLine *)tvc->iter;
 	*line= cl->line;
@@ -231,7 +231,7 @@
 	return ((tvc->iter= (void *)((Link *)tvc->iter)->prev) != NULL);
 }
 
-static int report_textview_line_get(struct TextViewContext *tvc, char **line, int *len)
+static int report_textview_line_get(struct TextViewContext *tvc, const char **line, int *len)
 {
 	Report *report= (Report *)tvc->iter;
 	*line= report->message;

Modified: trunk/blender/source/blender/editors/space_info/textview.c
===================================================================
--- trunk/blender/source/blender/editors/space_info/textview.c	2010-11-11 06:22:55 UTC (rev 32995)
+++ trunk/blender/source/blender/editors/space_info/textview.c	2010-11-11 06:35:45 UTC (rev 32996)
@@ -89,7 +89,7 @@
 /* return 0 if the last line is off the screen
  * should be able to use this for any string type */
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list