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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs