static void rna_Image_pack( Image *image, Main *bmain, bContext *C, ReportList *reports, int as_png, const char *data, int data_len) { ImBuf *ibuf = BKE_image_acquire_ibuf(image, NULL, NULL); if (!as_png && (ibuf && (ibuf->userflags & IB_BITMAPDIRTY))) { BKE_report(reports, RPT_ERROR, "Cannot pack edited image from disk, only as internal PNG"); } else { BKE_image_free_packedfiles(image); if (as_png) { BKE_image_memorypack(image); } else if (data) { char *data_dup = MEM_mallocN(sizeof(*data_dup) * (size_t)data_len, __func__); memcpy(data_dup, data, (size_t)data_len); BKE_image_packfiles_from_mem(reports, image, data_dup, (size_t)data_len); } else { BKE_image_packfiles(reports, image, ID_BLEND_PATH(bmain, &image->id)); } } BKE_image_release_ibuf(image, ibuf, NULL); WM_event_add_notifier(C, NC_IMAGE | NA_EDITED, image); }
static void rna_Image_pack(Image *image, ReportList *reports, int as_png) { ImBuf *ibuf = BKE_image_get_ibuf(image, NULL); if (!as_png && (ibuf && (ibuf->userflags & IB_BITMAPDIRTY))) { BKE_reportf(reports, RPT_ERROR, "Can't pack edited image from disk, only as internal PNG"); } else { if(as_png) { BKE_image_memorypack(image); } else { image->packedfile= newPackedFile(reports, image->name); } } }
static void rna_Image_pack(Image *image, ReportList *reports, int as_png) { ImBuf *ibuf = BKE_image_acquire_ibuf(image, NULL, NULL); if (!as_png && (ibuf && (ibuf->userflags & IB_BITMAPDIRTY))) { BKE_report(reports, RPT_ERROR, "Cannot pack edited image from disk, only as internal PNG"); } else { if (as_png) { BKE_image_memorypack(image); } else { image->packedfile = newPackedFile(reports, image->name, ID_BLEND_PATH(G.main, &image->id)); } } BKE_image_release_ibuf(image, ibuf, NULL); }