Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/interface/interface_icons.c')
-rw-r--r--source/blender/editors/interface/interface_icons.c34
1 files changed, 14 insertions, 20 deletions
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index afd57fdcd05..9f5c2005878 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -58,6 +58,7 @@
#include "BKE_global.h"
#include "BKE_icons.h"
#include "BKE_appdir.h"
+#include "BKE_studiolight.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
@@ -493,23 +494,6 @@ static void init_matcap_icons(void)
}
-static void init_studio_light_icons(void)
-{
- /* dynamic allocation now, tucking datatoc pointers in DrawInfo */
-#define INIT_STUDIOLIGHT_ICON(icon_id, studiolight_id) \
- { \
- DrawInfo *di; \
- di = def_internal_icon(NULL, icon_id, 0, 0, 96, ICON_TYPE_BUFFER); \
- di->data.buffer.image->rect = WORKBENCH_generate_studiolight_preview(studiolight_id, 96); \
- } (void)0
-
- INIT_STUDIOLIGHT_ICON(ICON_STUDIOLIGHT_01, 0);
- INIT_STUDIOLIGHT_ICON(ICON_STUDIOLIGHT_02, 1);
- INIT_STUDIOLIGHT_ICON(ICON_STUDIOLIGHT_03, 2);
- INIT_STUDIOLIGHT_ICON(ICON_STUDIOLIGHT_04, 3);
- INIT_STUDIOLIGHT_ICON(ICON_STUDIOLIGHT_05, 4);
-
-}
static void init_internal_icons(void)
{
// bTheme *btheme = UI_GetTheme();
@@ -779,8 +763,9 @@ void UI_icons_free_drawinfo(void *drawinfo)
/**
* #Icon.data_type and #Icon.obj
*/
-static DrawInfo *icon_create_drawinfo(int icon_data_type)
+static DrawInfo *icon_create_drawinfo(Icon *icon)
{
+ int icon_data_type = icon->obj_type;
DrawInfo *di = NULL;
di = MEM_callocN(sizeof(DrawInfo), "di_icon");
@@ -791,6 +776,16 @@ static DrawInfo *icon_create_drawinfo(int icon_data_type)
else if (icon_data_type == ICON_DATA_GEOM) {
di->type = ICON_TYPE_GEOM;
}
+ else if (icon_data_type == ICON_DATA_STUDIOLIGHT) {
+ const int STUDIOLIGHT_SIZE = 96;
+ StudioLight *sl = icon->obj;
+ di->type = ICON_TYPE_BUFFER;
+ IconImage *img = MEM_mallocN(sizeof(IconImage), __func__);
+ img->w = STUDIOLIGHT_SIZE;
+ img->h = STUDIOLIGHT_SIZE;
+ img->rect = BKE_studiolight_preview(sl, STUDIOLIGHT_SIZE);
+ di->data.buffer.image = img;
+ }
else {
BLI_assert(0);
}
@@ -803,7 +798,7 @@ static DrawInfo *icon_ensure_drawinfo(Icon *icon)
if (icon->drawinfo) {
return icon->drawinfo;
}
- DrawInfo *di = icon_create_drawinfo(icon->obj_type);
+ DrawInfo *di = icon_create_drawinfo(icon);
icon->drawinfo = di;
icon->drawinfo_free = UI_icons_free_drawinfo;
return di;
@@ -856,7 +851,6 @@ void UI_icons_init(int first_dyn_id)
init_internal_icons();
init_brush_icons();
init_matcap_icons();
- init_studio_light_icons();
#endif
}