[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40304] trunk/blender/source/blender: image button was hard coded to draw the splash screen which it loaded from PNG data on every draw .

Campbell Barton ideasman42 at gmail.com
Sat Sep 17 18:57:37 CEST 2011


Revision: 40304
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40304
Author:   campbellbarton
Date:     2011-09-17 16:57:37 +0000 (Sat, 17 Sep 2011)
Log Message:
-----------
image button was hard coded to draw the splash screen which it loaded from PNG data on every draw.

now pass the ImBuf when callign the image button so we could have different images in buttons later on.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_draw.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c	2011-09-17 15:27:52 UTC (rev 40303)
+++ trunk/blender/source/blender/editors/interface/interface.c	2011-09-17 16:57:37 UTC (rev 40304)
@@ -58,6 +58,7 @@
 
 #include "UI_interface.h"
 
+#include "IMB_imbuf.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -1894,6 +1895,8 @@
 	if(but->str && but->str != but->strdata) MEM_freeN(but->str);
 	ui_free_link(but->link);
 
+	if((but->type == BUT_IMAGE) && but->poin) IMB_freeImBuf((struct ImBuf *)but->poin);
+
 	MEM_freeN(but);
 }
 

Modified: trunk/blender/source/blender/editors/interface/interface_draw.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_draw.c	2011-09-17 15:27:52 UTC (rev 40303)
+++ trunk/blender/source/blender/editors/interface/interface_draw.c	2011-09-17 16:57:37 UTC (rev 40304)
@@ -461,19 +461,14 @@
 
 /* ************** SPECIAL BUTTON DRAWING FUNCTIONS ************* */
 
-void ui_draw_but_IMAGE(ARegion *UNUSED(ar), uiBut *UNUSED(but), uiWidgetColors *UNUSED(wcol), rcti *rect)
+void ui_draw_but_IMAGE(ARegion *UNUSED(ar), uiBut *but, uiWidgetColors *UNUSED(wcol), rcti *rect)
 {
 #ifdef WITH_HEADLESS
 	(void)rect;
 #else
-	extern char datatoc_splash_png[];
-	extern int datatoc_splash_png_size;
-	ImBuf *ibuf;
+	ImBuf *ibuf= (ImBuf *)but->poin;
 	//GLint scissor[4];
 	//int w, h;
-	
-	/* hardcoded to splash, loading and freeing every draw, eek! */
-	ibuf= IMB_ibImageFromMemory((unsigned char*)datatoc_splash_png, datatoc_splash_png_size, IB_rect);
 
 	if (!ibuf) return;
 	
@@ -501,7 +496,6 @@
 	glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
 	*/
 	
-	IMB_freeImBuf(ibuf);
 #endif
 }
 

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2011-09-17 15:27:52 UTC (rev 40303)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2011-09-17 16:57:37 UTC (rev 40304)
@@ -80,6 +80,7 @@
 #include "BIF_glutil.h" /* for paint cursor */
 
 #include "IMB_imbuf_types.h"
+#include "IMB_imbuf.h"
 
 #include "ED_screen.h"
 #include "ED_util.h"
@@ -1206,6 +1207,9 @@
 
 static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(arg))
 {
+	extern char datatoc_splash_png[];
+	extern int datatoc_splash_png_size;
+
 	uiBlock *block;
 	uiBut *but;
 	uiLayout *layout, *split, *col;
@@ -1214,6 +1218,8 @@
 	int i;
 	MenuType *mt= WM_menutype_find("USERPREF_MT_splash", TRUE);
 	char url[96];
+	/* hardcoded to splash, loading and freeing every draw, eek! */
+	ImBuf *ibuf= IMB_ibImageFromMemory((unsigned char*)datatoc_splash_png, datatoc_splash_png_size, IB_rect);
 	
 #ifdef WITH_BUILDINFO
 	int ver_width, rev_width;
@@ -1237,7 +1243,7 @@
 	block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
 	uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN);
 	
-	but= uiDefBut(block, BUT_IMAGE, 0, "", 0, 10, 501, 282, NULL, 0.0, 0.0, 0, 0, "");
+	but= uiDefBut(block, BUT_IMAGE, 0, "", 0, 10, 501, 282, ibuf, 0.0, 0.0, 0, 0, ""); /* button owns the imbuf now */
 	uiButSetFunc(but, wm_block_splash_close, block, NULL);
 	uiBlockSetFunc(block, wm_block_splash_refreshmenu, block, NULL);
 	




More information about the Bf-blender-cvs mailing list