Esempio n. 1
0
PreviewImage *UI_icon_to_preview(int icon_id)
{
	Icon *icon = BKE_icon_get(icon_id);
	
	if (icon) {
		DrawInfo *di = (DrawInfo *)icon->drawinfo;
		if (di && di->data.buffer.image) {
			ImBuf *bbuf;
			
			bbuf = IMB_ibImageFromMemory(di->data.buffer.image->datatoc_rect, di->data.buffer.image->datatoc_size, IB_rect, NULL, "<matcap buffer>");
			if (bbuf) {
				PreviewImage *prv = BKE_previewimg_create();
				
				prv->rect[0] = bbuf->rect;

				prv->w[0] = bbuf->x;
				prv->h[0] = bbuf->y;
				
				bbuf->rect = NULL;
				IMB_freeImBuf(bbuf);
				
				return prv;
			}
		}
	}
	return NULL;
}
Esempio n. 2
0
PreviewImage* BKE_previewimg_get(ID *id) 
{
	PreviewImage* prv_img = NULL;

	if (GS(id->name) == ID_MA) {
		Material *mat = (Material*)id;	
		if (!mat->preview) mat->preview = BKE_previewimg_create();
		prv_img = mat->preview;
	} else if (GS(id->name) == ID_TE) {
		Tex *tex = (Tex*)id;
		if (!tex->preview) tex->preview = BKE_previewimg_create();
		prv_img = tex->preview;
	} else if (GS(id->name) == ID_WO) {
		World *wo = (World*)id;
		if (!wo->preview) wo->preview = BKE_previewimg_create();
		prv_img = wo->preview;
	} else if (GS(id->name) == ID_LA) {
		Lamp *la  = (Lamp*)id;
		if (!la->preview) la->preview = BKE_previewimg_create();
		prv_img = la->preview;
	} else if (GS(id->name) == ID_IM) {
		Image *img  = (Image*)id;
		if (!img->preview) img->preview = BKE_previewimg_create();
		prv_img = img->preview;
	} else if (GS(id->name) == ID_BR) {
		Brush *br  = (Brush*)id;
		if (!br->preview) br->preview = BKE_previewimg_create();
		prv_img = br->preview;
	}

	return prv_img;
}
Esempio n. 3
0
PreviewImage *BKE_previewimg_id_ensure(ID *id)
{
	PreviewImage **prv_p = BKE_previewimg_id_get_p(id);

	if (prv_p) {
		if (*prv_p == NULL) {
			*prv_p = BKE_previewimg_create();
		}
		return *prv_p;
	}

	return NULL;
}
Esempio n. 4
0
/**
 * Generate an empty PreviewImage, if not yet existing.
 */
PreviewImage *BKE_previewimg_cached_ensure(const char *name)
{
	PreviewImage *prv = NULL;
	void **prv_p;

	if (!BLI_ghash_ensure_p_ex(gCachedPreviews, name, &prv_p, (GHashKeyCopyFP)BLI_strdup)) {
		*prv_p = BKE_previewimg_create();
	}
	prv = *prv_p;
	BLI_assert(prv);

	return prv;
}
PreviewImage *UI_icon_to_preview(int icon_id)
{
	Icon *icon = BKE_icon_get(icon_id);
	
	if (icon) {
		DrawInfo *di = (DrawInfo *)icon->drawinfo;
		if (di) {
			if (di->type == ICON_TYPE_PREVIEW) {
				PreviewImage *prv = (icon->type != 0) ? BKE_previewimg_id_ensure((ID *)icon->obj) : icon->obj;

				if (prv) {
					return BKE_previewimg_copy(prv);
				}
			}
			else if (di->data.buffer.image) {
				ImBuf *bbuf;

				bbuf = IMB_ibImageFromMemory(di->data.buffer.image->datatoc_rect, di->data.buffer.image->datatoc_size,
				                             IB_rect, NULL, __func__);
				if (bbuf) {
					PreviewImage *prv = BKE_previewimg_create();

					prv->rect[0] = bbuf->rect;

					prv->w[0] = bbuf->x;
					prv->h[0] = bbuf->y;

					bbuf->rect = NULL;
					IMB_freeImBuf(bbuf);

					return prv;
				}
			}
		}
	}
	return NULL;
}