[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18930] branches/blender2.5/blender/source /blender: 2.5: Image window, some small changes:

Brecht Van Lommel brecht at blender.org
Wed Feb 11 20:16:14 CET 2009


Revision: 18930
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18930
Author:   blendix
Date:     2009-02-11 20:16:14 +0100 (Wed, 11 Feb 2009)

Log Message:
-----------
2.5: Image window, some small changes:

* Added notifier for edited images.
* Fix main region emboss drawing when showing render.
* Don't go fullscreen with fileselect for now to work
  around context getting lost, so open/replace works.
* Save operators are more complete now, but still lack
  confirmation and choosing image type.
* Pack operators work correctly now (but not unpack).
* Setting white/black point for curves.
* Time cursor for record composite.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/space_image/image_draw.c
    branches/blender2.5/blender/source/blender/editors/space_image/image_header.c
    branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h
    branches/blender2.5/blender/source/blender/editors/space_image/image_ops.c
    branches/blender2.5/blender/source/blender/editors/space_image/space_image.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_types.h

Modified: branches/blender2.5/blender/source/blender/editors/space_image/image_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_image/image_draw.c	2009-02-11 17:46:10 UTC (rev 18929)
+++ branches/blender2.5/blender/source/blender/editors/space_image/image_draw.c	2009-02-11 19:16:14 UTC (rev 18930)
@@ -125,7 +125,7 @@
 	}
 }
 
-static void sima_draw_render_info(SpaceImage *sima, ARegion *ar)
+static void draw_render_info(SpaceImage *sima, ARegion *ar)
 {
 	rcti rect;
 	float colf[3];
@@ -136,23 +136,24 @@
 		return;
 	
 	rect= ar->winrct;
-	rect.ymin= rect.ymax - HEADER_HEIGHT;
+	rect.xmin= 0;
+	rect.ymin= ar->winrct.ymax - ar->winrct.ymin - HEADER_HEIGHT;
+	rect.xmax= ar->winrct.xmax - ar->winrct.xmin;
+	rect.ymax= ar->winrct.ymax - ar->winrct.ymin;
 	
-	glaDefine2DArea(&rect);
-	
 	/* clear header rect */
 	UI_GetThemeColor3fv(TH_BACK, colf);
-	glClearColor(colf[0]+0.1f, colf[1]+0.1f, colf[2]+0.1f, 1.0); 
-	glClear(GL_COLOR_BUFFER_BIT);
+	glColor3f(colf[0]+0.1f, colf[1]+0.1f, colf[2]+0.1f);
+	glRecti(rect.xmin, rect.ymin, rect.xmax, rect.ymax);
 	
 	UI_ThemeColor(TH_TEXT_HI);
-	glRasterPos2i(12, 5);
-	UI_RasterPos(12, 5);
+	glRasterPos2i(12, rect.ymin + 5);
+	UI_RasterPos(12, rect.ymin + 5);
 
 	if(showspare) {
 		UI_DrawString(G.fonts, "(Previous)", 0);
-		glRasterPos2i(72, 5);
-		UI_RasterPos(72, 5);
+		glRasterPos2i(72, rect.ymin + 5);
+		UI_RasterPos(72, rect.ymin + 5);
 	}
 
 	UI_DrawString(G.fonts, str, 0);
@@ -668,7 +669,7 @@
 
 	/* render info */
 	if(ibuf && show_render)
-		sima_draw_render_info(sima, ar);
+		draw_render_info(sima, ar);
 
 	/* XXX integrate this code */
 #if 0

Modified: branches/blender2.5/blender/source/blender/editors/space_image/image_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_image/image_header.c	2009-02-11 17:46:10 UTC (rev 18929)
+++ branches/blender2.5/blender/source/blender/editors/space_image/image_header.c	2009-02-11 19:16:14 UTC (rev 18930)
@@ -186,37 +186,6 @@
 #ifndef DISABLE_PYTHON
 	if (event >= 20) BPY_menu_do_python(PYMENU_IMAGE, event - 20);
 #endif	
-	switch(event)
-	{
-	case 0:
-		open_image_sima((G.qual==LR_CTRLKEY));
-		break;
-	case 1:
-		replace_image_sima((G.qual==LR_CTRLKEY));
-		break;
-	case 2:
-		pack_image_sima();
-		break;
-	case 5:
-		save_as_image_sima();
-		break;
-	case 6:
-		reload_image_sima();
-		break;
-	case 7:
-		new_image_sima();
-		break;
-	case 8:
-		save_image_sima();
-		break;
-	case 9:
-		save_image_sequence_sima();
-		break;
-	case 10:
-		BKE_image_memorypack(sima->image);
-		allqueue(REDRAWIMAGE, 0);
-		break;
-	}
 }
 #endif
 
@@ -242,12 +211,14 @@
 	uiMenuItemO(head, 0, "IMAGE_OT_open"); // Open...
 
 	if(ima) {
-		uiMenuItemO(head, 0, "IMAGE_OT_replace"); // Replace...
-		uiMenuItemO(head, 0, "IMAGE_OT_reload"); // Reload...
+		if(!show_render) {
+			uiMenuItemO(head, 0, "IMAGE_OT_replace"); // Replace...
+			uiMenuItemO(head, 0, "IMAGE_OT_reload"); // Reload...
+		}
 		uiMenuItemO(head, 0, "IMAGE_OT_save"); // Save
 		uiMenuItemO(head, 0, "IMAGE_OT_save_as"); // Save As...
 		if(ima->source == IMA_SRC_SEQUENCE)
-			uiMenuItemO(head, 0, "IMAGE_OT_save_changed"); // Save Changed Images
+			uiMenuItemO(head, 0, "IMAGE_OT_save_sequence"); // Save Changed Sequence Images
 
 		if(!show_render) {
 			uiMenuSeparator(head);

Modified: branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h	2009-02-11 17:46:10 UTC (rev 18929)
+++ branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h	2009-02-11 19:16:14 UTC (rev 18930)
@@ -68,7 +68,9 @@
 void IMAGE_OT_save_sequence(struct wmOperatorType *ot);
 void IMAGE_OT_pack(struct wmOperatorType *ot);
 void IMAGE_OT_unpack(struct wmOperatorType *ot);
+
 void IMAGE_OT_sample(struct wmOperatorType *ot);
+void IMAGE_OT_set_curves_point(struct wmOperatorType *ot);
 
 void IMAGE_OT_record_composite(struct wmOperatorType *ot);
 

Modified: branches/blender2.5/blender/source/blender/editors/space_image/image_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_image/image_ops.c	2009-02-11 17:46:10 UTC (rev 18929)
+++ branches/blender2.5/blender/source/blender/editors/space_image/image_ops.c	2009-02-11 19:16:14 UTC (rev 18930)
@@ -68,6 +68,8 @@
 #include "ED_space_api.h"
 #include "ED_uvedit.h"
 
+#include "UI_interface.h"
+#include "UI_resources.h"
 #include "UI_view2d.h"
 
 #include "WM_api.h"
@@ -591,13 +593,15 @@
 {
 	SpaceFile *sfile;
 
-	ED_screen_full_newspace(C, CTX_wm_area(C), SPACE_FILE);
+	// XXX context is not set back ok afterwards
+	// ED_screen_full_newspace(C, CTX_wm_area(C), SPACE_FILE);
+	ED_area_newspace(C, CTX_wm_area(C), SPACE_FILE);
 	
 	/* settings for filebrowser */
 	sfile= (SpaceFile*)CTX_wm_space_data(C);
 	sfile->op= op;
 
-	/* XXX right params for image filter browse, filters, .. */
+	/* XXX right params for image save, with pupmenu and image type .. */
 	ED_fileselect_set_params(sfile, FILE_SPECIAL, op->type->name, path, 0, 0, 0);
 }
 
@@ -618,8 +622,6 @@
 	if(!ima)
 		return OPERATOR_CANCELLED;
 
-	return OPERATOR_FINISHED; // XXX context not correct!
-
 	BKE_image_signal(ima, &sima->iuser, IMA_SIGNAL_RELOAD);
 	ED_space_image_set(C, sima, scene, obedit, ima);
 
@@ -664,8 +666,6 @@
 	SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
 	char *str;
 
-	return OPERATOR_CANCELLED; // XXX context not correct!
-
 	if(!sima->image)
 		return OPERATOR_CANCELLED;
 	
@@ -674,6 +674,7 @@
 	MEM_freeN(str);
 
 	BKE_image_signal(sima->image, &sima->iuser, IMA_SIGNAL_RELOAD);
+	WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, sima->image);
 
 	return OPERATOR_FINISHED;
 }
@@ -714,7 +715,7 @@
 
 /******************** save image as operator ********************/
 
-static void save_image_doit(SpaceImage *sima, Scene *scene, char *name)
+static void save_image_doit(bContext *C, SpaceImage *sima, Scene *scene, wmOperator *op, char *name)
 {
 	Image *ima= ED_space_image(sima);
 	ImBuf *ibuf= ED_space_image_buffer(sima);
@@ -756,7 +757,8 @@
 						ibuf->userflags &= ~IB_BITMAPDIRTY;
 					
 				}
-				else; // XXX error("Did not write, no Multilayer Image");
+				else
+					BKE_report(op->reports, RPT_ERROR, "Did not write, no Multilayer Image");
 			}
 			else if (BKE_write_ibuf(scene, ibuf, str, sima->imtypenr, scene->r.subimtype, scene->r.quality)) {
 				BLI_strncpy(ima->name, name, sizeof(ima->name));
@@ -777,12 +779,10 @@
 				while (len > 0 && str[len - 1] != '/' && str[len - 1] != '\\') len--;
 				rename_id(&ima->id, str+len);
 			} 
-			else {
-				; // XXX error("Couldn't write image: %s", str);
-			}
+			else
+				BKE_reportf(op->reports, RPT_ERROR, "Couldn't write image: %s", str);
 
-			// XXX allqueue(REDRAWHEADERS, 0);
-			// XXX allqueue(REDRAWBUTSSHADING, 0);
+			WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, sima->image);
 
 			WM_cursor_wait(0);
 		}
@@ -793,16 +793,14 @@
 {
 	SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
 	Scene *scene= CTX_data_scene(C);
-	//Image *ima = ED_space_image(sima);
+	Image *ima = ED_space_image(sima);
 	char *str;
 
-	return OPERATOR_CANCELLED; // XXX context not correct!
+	if(!ima)
+		return OPERATOR_CANCELLED;
 
-	/*if(!ima)
-		return OPERATOR_CANCELLED;*/
-
 	str= RNA_string_get_alloc(op->ptr, "filename", NULL, 0);
-	save_image_doit(sima, scene, str);
+	save_image_doit(C, sima, scene, op, str);
 	MEM_freeN(str);
 
 	return OPERATOR_FINISHED;
@@ -887,7 +885,7 @@
 			else 
 				sima->imtypenr= BKE_ftype_to_imtype(ibuf->ftype);
 			
-			save_image_doit(sima, scene, ibuf->name);
+			save_image_doit(C, sima, scene, op, ibuf->name);
 		}
 		else
 			return save_as_exec(C, op);
@@ -950,24 +948,22 @@
 	BLI_strncpy(di, ibuf->name, FILE_MAX);
 	BLI_splitdirstring(di, fi);
 	
-	sprintf(fi, "%d Image(s) will be saved in %s", tot, di);
+	BKE_reportf(op->reports, RPT_INFO, "%d Image(s) will be saved in %s", tot, di);
 
-	if(1) { // XXX okee(fi)) {
-		
-		for(ibuf= sima->image->ibufs.first; ibuf; ibuf= ibuf->next) {
-			if(ibuf->userflags & IB_BITMAPDIRTY) {
-				char name[FILE_MAX];
-				BLI_strncpy(name, ibuf->name, sizeof(name));
-				
-				BLI_convertstringcode(name, G.sce);
+	for(ibuf= sima->image->ibufs.first; ibuf; ibuf= ibuf->next) {
+		if(ibuf->userflags & IB_BITMAPDIRTY) {
+			char name[FILE_MAX];
+			BLI_strncpy(name, ibuf->name, sizeof(name));
+			
+			BLI_convertstringcode(name, G.sce);
 
-				if(0 == IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat)) {
-					BKE_reportf(op->reports, RPT_ERROR, "Could not write image %s.", name);
-					break;
-				}
-				printf("Saved: %s\n", ibuf->name);
-				ibuf->userflags &= ~IB_BITMAPDIRTY;
+			if(0 == IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat)) {
+				BKE_reportf(op->reports, RPT_ERROR, "Could not write image %s.", name);
+				break;
 			}
+
+			printf("Saved: %s\n", ibuf->name);
+			ibuf->userflags &= ~IB_BITMAPDIRTY;
 		}
 	}
 
@@ -1003,8 +999,8 @@
 	BKE_image_signal(sima->image, &sima->iuser, IMA_SIGNAL_RELOAD);
 	/* ED_space_image_set(C, sima, scene, obedit, NULL); - do we really need this? */
 
-	// XXX notifier
 	// XXX BIF_preview_changed(ID_TE);
+	WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, sima->image);
 	ED_area_tag_redraw(CTX_wm_area(C));
 	
 	return OPERATOR_FINISHED;
@@ -1081,33 +1077,66 @@
 
 /********************* pack operator *********************/
 
-static int pack_exec(bContext *C, wmOperator *op)
+static int pack_test(bContext *C, wmOperator *op)
 {
-	SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
 	Image *ima= CTX_data_edit_image(C);
-	ImBuf *ibuf= ED_space_image_buffer(sima);
 	int as_png= RNA_boolean_get(op->ptr, "as_png");
 
 	if(!ima)
-		return OPERATOR_CANCELLED;
+		return 0;
 	if(!as_png && ima->packedfile)
-		return OPERATOR_CANCELLED;
+		return 0;
 
 	if(ima->source==IMA_SRC_SEQUENCE || ima->source==IMA_SRC_MOVIE) {
 		BKE_report(op->reports, RPT_ERROR, "Can't pack movie or image sequence.");
+		return 0;
+	}
+
+	return 1;
+}
+
+static int pack_exec(bContext *C, wmOperator *op)
+{
+	SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+	Image *ima= ED_space_image(sima);
+	ImBuf *ibuf= ED_space_image_buffer(sima);
+	int as_png= RNA_boolean_get(op->ptr, "as_png");
+
+	if(!pack_test(C, op))
 		return OPERATOR_CANCELLED;
+	

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list