Cleanup: simplify studiolight/matcap enum code, remove limit.

This commit is contained in:
Brecht Van Lommel 2018-06-05 12:08:29 +02:00
parent 0d47a4d2fe
commit 6d7327f607
1 changed files with 10 additions and 224 deletions

View File

@ -200,217 +200,15 @@ const EnumPropertyItem rna_enum_viewport_lighting_items[] = {
{0, NULL, 0, NULL, NULL}
};
#define DEF_SINGLE_STUDIO_LIGHT_ITEM(value) {value, "STUDIOLIGHT_" #value, 0, "", ""}
static const EnumPropertyItem rna_enum_studio_light_items[] = {
DEF_SINGLE_STUDIO_LIGHT_ITEM(0),
DEF_SINGLE_STUDIO_LIGHT_ITEM(1),
DEF_SINGLE_STUDIO_LIGHT_ITEM(2),
DEF_SINGLE_STUDIO_LIGHT_ITEM(3),
DEF_SINGLE_STUDIO_LIGHT_ITEM(4),
DEF_SINGLE_STUDIO_LIGHT_ITEM(5),
DEF_SINGLE_STUDIO_LIGHT_ITEM(6),
DEF_SINGLE_STUDIO_LIGHT_ITEM(7),
DEF_SINGLE_STUDIO_LIGHT_ITEM(8),
DEF_SINGLE_STUDIO_LIGHT_ITEM(9),
DEF_SINGLE_STUDIO_LIGHT_ITEM(10),
DEF_SINGLE_STUDIO_LIGHT_ITEM(11),
DEF_SINGLE_STUDIO_LIGHT_ITEM(12),
DEF_SINGLE_STUDIO_LIGHT_ITEM(13),
DEF_SINGLE_STUDIO_LIGHT_ITEM(14),
DEF_SINGLE_STUDIO_LIGHT_ITEM(15),
DEF_SINGLE_STUDIO_LIGHT_ITEM(16),
DEF_SINGLE_STUDIO_LIGHT_ITEM(17),
DEF_SINGLE_STUDIO_LIGHT_ITEM(18),
DEF_SINGLE_STUDIO_LIGHT_ITEM(19),
DEF_SINGLE_STUDIO_LIGHT_ITEM(20),
DEF_SINGLE_STUDIO_LIGHT_ITEM(21),
DEF_SINGLE_STUDIO_LIGHT_ITEM(22),
DEF_SINGLE_STUDIO_LIGHT_ITEM(23),
DEF_SINGLE_STUDIO_LIGHT_ITEM(24),
DEF_SINGLE_STUDIO_LIGHT_ITEM(25),
DEF_SINGLE_STUDIO_LIGHT_ITEM(26),
DEF_SINGLE_STUDIO_LIGHT_ITEM(27),
DEF_SINGLE_STUDIO_LIGHT_ITEM(28),
DEF_SINGLE_STUDIO_LIGHT_ITEM(29),
DEF_SINGLE_STUDIO_LIGHT_ITEM(30),
DEF_SINGLE_STUDIO_LIGHT_ITEM(31),
DEF_SINGLE_STUDIO_LIGHT_ITEM(32),
DEF_SINGLE_STUDIO_LIGHT_ITEM(33),
DEF_SINGLE_STUDIO_LIGHT_ITEM(34),
DEF_SINGLE_STUDIO_LIGHT_ITEM(35),
DEF_SINGLE_STUDIO_LIGHT_ITEM(36),
DEF_SINGLE_STUDIO_LIGHT_ITEM(37),
DEF_SINGLE_STUDIO_LIGHT_ITEM(38),
DEF_SINGLE_STUDIO_LIGHT_ITEM(39),
DEF_SINGLE_STUDIO_LIGHT_ITEM(40),
DEF_SINGLE_STUDIO_LIGHT_ITEM(41),
DEF_SINGLE_STUDIO_LIGHT_ITEM(42),
DEF_SINGLE_STUDIO_LIGHT_ITEM(43),
DEF_SINGLE_STUDIO_LIGHT_ITEM(44),
DEF_SINGLE_STUDIO_LIGHT_ITEM(45),
DEF_SINGLE_STUDIO_LIGHT_ITEM(46),
DEF_SINGLE_STUDIO_LIGHT_ITEM(47),
DEF_SINGLE_STUDIO_LIGHT_ITEM(48),
DEF_SINGLE_STUDIO_LIGHT_ITEM(49),
DEF_SINGLE_STUDIO_LIGHT_ITEM(50),
DEF_SINGLE_STUDIO_LIGHT_ITEM(51),
DEF_SINGLE_STUDIO_LIGHT_ITEM(52),
DEF_SINGLE_STUDIO_LIGHT_ITEM(53),
DEF_SINGLE_STUDIO_LIGHT_ITEM(54),
DEF_SINGLE_STUDIO_LIGHT_ITEM(55),
DEF_SINGLE_STUDIO_LIGHT_ITEM(56),
DEF_SINGLE_STUDIO_LIGHT_ITEM(57),
DEF_SINGLE_STUDIO_LIGHT_ITEM(58),
DEF_SINGLE_STUDIO_LIGHT_ITEM(59),
DEF_SINGLE_STUDIO_LIGHT_ITEM(60),
DEF_SINGLE_STUDIO_LIGHT_ITEM(61),
DEF_SINGLE_STUDIO_LIGHT_ITEM(62),
DEF_SINGLE_STUDIO_LIGHT_ITEM(63),
DEF_SINGLE_STUDIO_LIGHT_ITEM(64),
DEF_SINGLE_STUDIO_LIGHT_ITEM(65),
DEF_SINGLE_STUDIO_LIGHT_ITEM(66),
DEF_SINGLE_STUDIO_LIGHT_ITEM(67),
DEF_SINGLE_STUDIO_LIGHT_ITEM(68),
DEF_SINGLE_STUDIO_LIGHT_ITEM(69),
DEF_SINGLE_STUDIO_LIGHT_ITEM(70),
DEF_SINGLE_STUDIO_LIGHT_ITEM(71),
DEF_SINGLE_STUDIO_LIGHT_ITEM(72),
DEF_SINGLE_STUDIO_LIGHT_ITEM(73),
DEF_SINGLE_STUDIO_LIGHT_ITEM(74),
DEF_SINGLE_STUDIO_LIGHT_ITEM(75),
DEF_SINGLE_STUDIO_LIGHT_ITEM(76),
DEF_SINGLE_STUDIO_LIGHT_ITEM(77),
DEF_SINGLE_STUDIO_LIGHT_ITEM(78),
DEF_SINGLE_STUDIO_LIGHT_ITEM(79),
DEF_SINGLE_STUDIO_LIGHT_ITEM(80),
DEF_SINGLE_STUDIO_LIGHT_ITEM(81),
DEF_SINGLE_STUDIO_LIGHT_ITEM(82),
DEF_SINGLE_STUDIO_LIGHT_ITEM(83),
DEF_SINGLE_STUDIO_LIGHT_ITEM(84),
DEF_SINGLE_STUDIO_LIGHT_ITEM(85),
DEF_SINGLE_STUDIO_LIGHT_ITEM(86),
DEF_SINGLE_STUDIO_LIGHT_ITEM(87),
DEF_SINGLE_STUDIO_LIGHT_ITEM(88),
DEF_SINGLE_STUDIO_LIGHT_ITEM(89),
DEF_SINGLE_STUDIO_LIGHT_ITEM(90),
DEF_SINGLE_STUDIO_LIGHT_ITEM(91),
DEF_SINGLE_STUDIO_LIGHT_ITEM(92),
DEF_SINGLE_STUDIO_LIGHT_ITEM(93),
DEF_SINGLE_STUDIO_LIGHT_ITEM(94),
DEF_SINGLE_STUDIO_LIGHT_ITEM(95),
DEF_SINGLE_STUDIO_LIGHT_ITEM(96),
DEF_SINGLE_STUDIO_LIGHT_ITEM(97),
DEF_SINGLE_STUDIO_LIGHT_ITEM(98),
DEF_SINGLE_STUDIO_LIGHT_ITEM(99),
{0, "DEFAULT", 0, "Default", ""},
{0, NULL, 0, NULL, NULL}
};
#define NUM_STUDIOLIGHT_ITEMS 100
static const EnumPropertyItem rna_enum_matcap_items[] = {
DEF_SINGLE_STUDIO_LIGHT_ITEM(0),
DEF_SINGLE_STUDIO_LIGHT_ITEM(1),
DEF_SINGLE_STUDIO_LIGHT_ITEM(2),
DEF_SINGLE_STUDIO_LIGHT_ITEM(3),
DEF_SINGLE_STUDIO_LIGHT_ITEM(4),
DEF_SINGLE_STUDIO_LIGHT_ITEM(5),
DEF_SINGLE_STUDIO_LIGHT_ITEM(6),
DEF_SINGLE_STUDIO_LIGHT_ITEM(7),
DEF_SINGLE_STUDIO_LIGHT_ITEM(8),
DEF_SINGLE_STUDIO_LIGHT_ITEM(9),
DEF_SINGLE_STUDIO_LIGHT_ITEM(10),
DEF_SINGLE_STUDIO_LIGHT_ITEM(11),
DEF_SINGLE_STUDIO_LIGHT_ITEM(12),
DEF_SINGLE_STUDIO_LIGHT_ITEM(13),
DEF_SINGLE_STUDIO_LIGHT_ITEM(14),
DEF_SINGLE_STUDIO_LIGHT_ITEM(15),
DEF_SINGLE_STUDIO_LIGHT_ITEM(16),
DEF_SINGLE_STUDIO_LIGHT_ITEM(17),
DEF_SINGLE_STUDIO_LIGHT_ITEM(18),
DEF_SINGLE_STUDIO_LIGHT_ITEM(19),
DEF_SINGLE_STUDIO_LIGHT_ITEM(20),
DEF_SINGLE_STUDIO_LIGHT_ITEM(21),
DEF_SINGLE_STUDIO_LIGHT_ITEM(22),
DEF_SINGLE_STUDIO_LIGHT_ITEM(23),
DEF_SINGLE_STUDIO_LIGHT_ITEM(24),
DEF_SINGLE_STUDIO_LIGHT_ITEM(25),
DEF_SINGLE_STUDIO_LIGHT_ITEM(26),
DEF_SINGLE_STUDIO_LIGHT_ITEM(27),
DEF_SINGLE_STUDIO_LIGHT_ITEM(28),
DEF_SINGLE_STUDIO_LIGHT_ITEM(29),
DEF_SINGLE_STUDIO_LIGHT_ITEM(30),
DEF_SINGLE_STUDIO_LIGHT_ITEM(31),
DEF_SINGLE_STUDIO_LIGHT_ITEM(32),
DEF_SINGLE_STUDIO_LIGHT_ITEM(33),
DEF_SINGLE_STUDIO_LIGHT_ITEM(34),
DEF_SINGLE_STUDIO_LIGHT_ITEM(35),
DEF_SINGLE_STUDIO_LIGHT_ITEM(36),
DEF_SINGLE_STUDIO_LIGHT_ITEM(37),
DEF_SINGLE_STUDIO_LIGHT_ITEM(38),
DEF_SINGLE_STUDIO_LIGHT_ITEM(39),
DEF_SINGLE_STUDIO_LIGHT_ITEM(40),
DEF_SINGLE_STUDIO_LIGHT_ITEM(41),
DEF_SINGLE_STUDIO_LIGHT_ITEM(42),
DEF_SINGLE_STUDIO_LIGHT_ITEM(43),
DEF_SINGLE_STUDIO_LIGHT_ITEM(44),
DEF_SINGLE_STUDIO_LIGHT_ITEM(45),
DEF_SINGLE_STUDIO_LIGHT_ITEM(46),
DEF_SINGLE_STUDIO_LIGHT_ITEM(47),
DEF_SINGLE_STUDIO_LIGHT_ITEM(48),
DEF_SINGLE_STUDIO_LIGHT_ITEM(49),
DEF_SINGLE_STUDIO_LIGHT_ITEM(50),
DEF_SINGLE_STUDIO_LIGHT_ITEM(51),
DEF_SINGLE_STUDIO_LIGHT_ITEM(52),
DEF_SINGLE_STUDIO_LIGHT_ITEM(53),
DEF_SINGLE_STUDIO_LIGHT_ITEM(54),
DEF_SINGLE_STUDIO_LIGHT_ITEM(55),
DEF_SINGLE_STUDIO_LIGHT_ITEM(56),
DEF_SINGLE_STUDIO_LIGHT_ITEM(57),
DEF_SINGLE_STUDIO_LIGHT_ITEM(58),
DEF_SINGLE_STUDIO_LIGHT_ITEM(59),
DEF_SINGLE_STUDIO_LIGHT_ITEM(60),
DEF_SINGLE_STUDIO_LIGHT_ITEM(61),
DEF_SINGLE_STUDIO_LIGHT_ITEM(62),
DEF_SINGLE_STUDIO_LIGHT_ITEM(63),
DEF_SINGLE_STUDIO_LIGHT_ITEM(64),
DEF_SINGLE_STUDIO_LIGHT_ITEM(65),
DEF_SINGLE_STUDIO_LIGHT_ITEM(66),
DEF_SINGLE_STUDIO_LIGHT_ITEM(67),
DEF_SINGLE_STUDIO_LIGHT_ITEM(68),
DEF_SINGLE_STUDIO_LIGHT_ITEM(69),
DEF_SINGLE_STUDIO_LIGHT_ITEM(70),
DEF_SINGLE_STUDIO_LIGHT_ITEM(71),
DEF_SINGLE_STUDIO_LIGHT_ITEM(72),
DEF_SINGLE_STUDIO_LIGHT_ITEM(73),
DEF_SINGLE_STUDIO_LIGHT_ITEM(74),
DEF_SINGLE_STUDIO_LIGHT_ITEM(75),
DEF_SINGLE_STUDIO_LIGHT_ITEM(76),
DEF_SINGLE_STUDIO_LIGHT_ITEM(77),
DEF_SINGLE_STUDIO_LIGHT_ITEM(78),
DEF_SINGLE_STUDIO_LIGHT_ITEM(79),
DEF_SINGLE_STUDIO_LIGHT_ITEM(80),
DEF_SINGLE_STUDIO_LIGHT_ITEM(81),
DEF_SINGLE_STUDIO_LIGHT_ITEM(82),
DEF_SINGLE_STUDIO_LIGHT_ITEM(83),
DEF_SINGLE_STUDIO_LIGHT_ITEM(84),
DEF_SINGLE_STUDIO_LIGHT_ITEM(85),
DEF_SINGLE_STUDIO_LIGHT_ITEM(86),
DEF_SINGLE_STUDIO_LIGHT_ITEM(87),
DEF_SINGLE_STUDIO_LIGHT_ITEM(88),
DEF_SINGLE_STUDIO_LIGHT_ITEM(89),
DEF_SINGLE_STUDIO_LIGHT_ITEM(90),
DEF_SINGLE_STUDIO_LIGHT_ITEM(91),
DEF_SINGLE_STUDIO_LIGHT_ITEM(92),
DEF_SINGLE_STUDIO_LIGHT_ITEM(93),
DEF_SINGLE_STUDIO_LIGHT_ITEM(94),
DEF_SINGLE_STUDIO_LIGHT_ITEM(95),
DEF_SINGLE_STUDIO_LIGHT_ITEM(96),
DEF_SINGLE_STUDIO_LIGHT_ITEM(97),
DEF_SINGLE_STUDIO_LIGHT_ITEM(98),
DEF_SINGLE_STUDIO_LIGHT_ITEM(99),
{0, "DEFAULT", 0, "Default", ""},
{0, NULL, 0, NULL, NULL}
};
#define NUM_MATCAP_ITEMS 100
#undef DEF_SINGLE_STUDIO_LIGHT_ITEM
const EnumPropertyItem rna_enum_clip_editor_mode_items[] = {
{SC_MODE_TRACKING, "TRACKING", ICON_ANIM_DATA, "Tracking", "Show tracking and solving tools"},
@ -950,13 +748,11 @@ static const EnumPropertyItem *rna_View3DShading_studio_light_itemf(
{
View3D *v3d = (View3D *)ptr->data;
EnumPropertyItem *item = NULL;
EnumPropertyItem *lastitem;
int totitem = 0;
bool show_studiolight;
LISTBASE_FOREACH(StudioLight *, sl, BKE_studiolight_listbase()) {
show_studiolight = false;
int icon_id = sl->irradiance_icon_id;
bool show_studiolight = false;
if ((sl->flag & STUDIOLIGHT_INTERNAL)) {
/* always show internal lights */
@ -976,12 +772,9 @@ static const EnumPropertyItem *rna_View3DShading_studio_light_itemf(
}
}
if (show_studiolight && totitem < NUM_STUDIOLIGHT_ITEMS) {
RNA_enum_items_add_value(&item, &totitem, rna_enum_studio_light_items, sl->index);
lastitem = &item[totitem - 1];
lastitem->value = sl->index;
lastitem->icon = icon_id;
lastitem->name = sl->name;
if (show_studiolight) {
EnumPropertyItem tmp = {sl->index, sl->name, icon_id, sl->name, ""};
RNA_enum_item_add(&item, &totitem, &tmp);
}
}
@ -1010,24 +803,17 @@ static const EnumPropertyItem *rna_View3DShading_matcap_itemf(
PropertyRNA *UNUSED(prop), bool *r_free)
{
EnumPropertyItem *item = NULL;
EnumPropertyItem *lastitem;
int totitem = 0;
bool show_studiolight;
const int flags = (STUDIOLIGHT_EXTERNAL_FILE | STUDIOLIGHT_ORIENTATION_VIEWNORMAL);
LISTBASE_FOREACH(StudioLight *, sl, BKE_studiolight_listbase()) {
show_studiolight = false;
int icon_id = sl->irradiance_icon_id;
bool show_studiolight = (sl->flag & flags) == flags;
show_studiolight = (sl->flag & flags) == flags;
if (show_studiolight && totitem < NUM_MATCAP_ITEMS) {
RNA_enum_items_add_value(&item, &totitem, rna_enum_matcap_items, sl->index);
lastitem = &item[totitem - 1];
lastitem->value = sl->index;
lastitem->icon = icon_id;
lastitem->name = sl->name;
if (show_studiolight) {
EnumPropertyItem tmp = {sl->index, sl->name, icon_id, sl->name, ""};
RNA_enum_item_add(&item, &totitem, &tmp);
}
}