Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_image/image_ops.c
| Show First 20 Lines • Show All 2,221 Lines • ▼ Show 20 Lines | static int image_save_sequence_exec(bContext *C, wmOperator *op) | ||||
| } | } | ||||
| /* get total dirty buffers and first dirty buffer which is used for menu */ | /* get total dirty buffers and first dirty buffer which is used for menu */ | ||||
| ibuf = NULL; | ibuf = NULL; | ||||
| if (image->cache != NULL) { | if (image->cache != NULL) { | ||||
| iter = IMB_moviecacheIter_new(image->cache); | iter = IMB_moviecacheIter_new(image->cache); | ||||
| while (!IMB_moviecacheIter_done(iter)) { | while (!IMB_moviecacheIter_done(iter)) { | ||||
| ibuf = IMB_moviecacheIter_getImBuf(iter); | ibuf = IMB_moviecacheIter_getImBuf(iter); | ||||
| if (ibuf->userflags & IB_BITMAPDIRTY) { | if (ibuf != NULL && ibuf->userflags & IB_BITMAPDIRTY) { | ||||
| if (first_ibuf == NULL) { | if (first_ibuf == NULL) { | ||||
| first_ibuf = ibuf; | first_ibuf = ibuf; | ||||
| } | } | ||||
| tot++; | tot++; | ||||
| } | } | ||||
| IMB_moviecacheIter_step(iter); | IMB_moviecacheIter_step(iter); | ||||
| } | } | ||||
| IMB_moviecacheIter_free(iter); | IMB_moviecacheIter_free(iter); | ||||
| } | } | ||||
| if (tot == 0) { | if (tot == 0) { | ||||
| BKE_report(op->reports, RPT_WARNING, "No images have been changed"); | BKE_report(op->reports, RPT_WARNING, "No images have been changed"); | ||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| } | } | ||||
| /* get a filename for menu */ | /* get a filename for menu */ | ||||
| BLI_split_dir_part(first_ibuf->name, di, sizeof(di)); | BLI_split_dir_part(first_ibuf->name, di, sizeof(di)); | ||||
| BKE_reportf(op->reports, RPT_INFO, "%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); | ||||
| iter = IMB_moviecacheIter_new(image->cache); | iter = IMB_moviecacheIter_new(image->cache); | ||||
| while (!IMB_moviecacheIter_done(iter)) { | while (!IMB_moviecacheIter_done(iter)) { | ||||
| ibuf = IMB_moviecacheIter_getImBuf(iter); | ibuf = IMB_moviecacheIter_getImBuf(iter); | ||||
| if (ibuf->userflags & IB_BITMAPDIRTY) { | if (ibuf != NULL && ibuf->userflags & IB_BITMAPDIRTY) { | ||||
| char name[FILE_MAX]; | char name[FILE_MAX]; | ||||
| BLI_strncpy(name, ibuf->name, sizeof(name)); | BLI_strncpy(name, ibuf->name, sizeof(name)); | ||||
| BLI_path_abs(name, BKE_main_blendfile_path(bmain)); | BLI_path_abs(name, BKE_main_blendfile_path(bmain)); | ||||
| if (0 == IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat)) { | if (0 == IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat)) { | ||||
| BKE_reportf(op->reports, RPT_ERROR, "Could not write image: %s", strerror(errno)); | BKE_reportf(op->reports, RPT_ERROR, "Could not write image: %s", strerror(errno)); | ||||
| break; | break; | ||||
| ▲ Show 20 Lines • Show All 1,877 Lines • Show Last 20 Lines | |||||