Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
		}
	}
}
Ejemplo n.º 3
0
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);
}