Blender V4.3
resources.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#include <cmath>
10#include <cstdlib>
11#include <cstring>
12
13#include "MEM_guardedalloc.h"
14
15#include "DNA_screen_types.h"
16#include "DNA_space_types.h"
17#include "DNA_userdef_types.h"
18
19#include "BLI_blenlib.h"
20#include "BLI_math_vector.h"
21#include "BLI_utildefines.h"
22
23#include "BKE_addon.h"
24#include "BKE_appdir.hh"
25#include "BKE_main.hh"
26#include "BKE_mesh_runtime.hh"
27
28#include "BLO_userdef_default.h"
29
30#include "BLF_api.hh"
31
32#include "ED_screen.hh"
33
34#include "UI_interface.hh"
35#include "UI_interface_icons.hh"
36
37#include "GPU_framebuffer.hh"
38#include "interface_intern.hh"
39
40/* be sure to keep 'bThemeState' in sync */
42 nullptr,
45};
46
48{
50}
51
53{
55}
56
57/* ******************************************************** */
58/* THEMES */
59/* ******************************************************** */
60
61const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
62{
63 ThemeSpace *ts = nullptr;
64 static uchar error[4] = {240, 0, 240, 255};
65 static uchar alert[4] = {240, 60, 60, 255};
66 static uchar back[4] = {0, 0, 0, 255};
67 static uchar setting = 0;
68 const uchar *cp = error;
69
70 /* ensure we're not getting a color after running BKE_blender_userdef_free */
72 BLI_assert(colorid != TH_UNDEFINED);
73
74 if (btheme) {
75
76 /* first check for ui buttons theme */
77 if (colorid < TH_THEMEUI) {
78
79 switch (colorid) {
80
81 case TH_REDALERT:
82 cp = alert;
83 break;
84 }
85 }
86 else {
87
88 switch (spacetype) {
90 ts = &btheme->space_properties;
91 break;
92 case SPACE_VIEW3D:
93 ts = &btheme->space_view3d;
94 break;
95 case SPACE_GRAPH:
96 ts = &btheme->space_graph;
97 break;
98 case SPACE_FILE:
99 ts = &btheme->space_file;
100 break;
101 case SPACE_NLA:
102 ts = &btheme->space_nla;
103 break;
104 case SPACE_ACTION:
105 ts = &btheme->space_action;
106 break;
107 case SPACE_SEQ:
108 ts = &btheme->space_sequencer;
109 break;
110 case SPACE_IMAGE:
111 ts = &btheme->space_image;
112 break;
113 case SPACE_TEXT:
114 ts = &btheme->space_text;
115 break;
116 case SPACE_OUTLINER:
117 ts = &btheme->space_outliner;
118 break;
119 case SPACE_INFO:
120 ts = &btheme->space_info;
121 break;
122 case SPACE_USERPREF:
123 ts = &btheme->space_preferences;
124 break;
125 case SPACE_CONSOLE:
126 ts = &btheme->space_console;
127 break;
128 case SPACE_NODE:
129 ts = &btheme->space_node;
130 break;
131 case SPACE_CLIP:
132 ts = &btheme->space_clip;
133 break;
134 case SPACE_TOPBAR:
135 ts = &btheme->space_topbar;
136 break;
137 case SPACE_STATUSBAR:
138 ts = &btheme->space_statusbar;
139 break;
141 ts = &btheme->space_spreadsheet;
142 break;
143 default:
144 ts = &btheme->space_view3d;
145 break;
146 }
147
148 switch (colorid) {
149 case TH_BACK:
151 cp = ts->back;
152 }
154 cp = ts->list;
155 }
157 cp = ts->header;
158 }
160 cp = ts->navigation_bar;
161 }
163 cp = ts->execution_buts;
164 }
166 cp = ts->asset_shelf.back;
167 }
169 cp = ts->asset_shelf.header_back;
170 }
171 else {
172 cp = ts->button;
173 }
174
175 copy_v4_v4_uchar(back, cp);
177 back[3] = 255;
178 }
179 cp = back;
180 break;
181 case TH_BACK_GRAD:
182 cp = ts->back_grad;
183 break;
184
186 cp = &setting;
187 setting = ts->background_type;
188 break;
189 case TH_TEXT:
191 cp = ts->text;
192 }
194 cp = ts->list_text;
195 }
196 else if (ELEM(g_theme_state.regionid,
200 {
201 cp = ts->header_text;
202 }
203 else {
204 cp = ts->button_text;
205 }
206 break;
207 case TH_TEXT_HI:
209 cp = ts->text_hi;
210 }
212 cp = ts->list_text_hi;
213 }
214 else if (ELEM(g_theme_state.regionid,
218 {
219 cp = ts->header_text_hi;
220 }
221 else {
222 cp = ts->button_text_hi;
223 }
224 break;
225 case TH_TITLE:
227 cp = ts->title;
228 }
230 cp = ts->list_title;
231 }
232 else if (ELEM(g_theme_state.regionid,
236 {
237 cp = ts->header_title;
238 }
239 else {
240 cp = ts->button_title;
241 }
242 break;
243
244 case TH_HEADER:
245 cp = ts->header;
246 break;
247
248 case TH_HEADER_TEXT:
249 cp = ts->header_text;
250 break;
252 cp = ts->header_text_hi;
253 break;
254
255 case TH_PANEL_HEADER:
256 cp = ts->panelcolors.header;
257 break;
258 case TH_PANEL_BACK:
259 cp = ts->panelcolors.back;
260 break;
262 cp = ts->panelcolors.sub_back;
263 break;
264
265 case TH_BUTBACK:
266 cp = ts->button;
267 break;
268 case TH_BUTBACK_TEXT:
269 cp = ts->button_text;
270 break;
272 cp = ts->button_text_hi;
273 break;
274
275 case TH_TAB_ACTIVE:
276 cp = ts->tab_active;
277 break;
278 case TH_TAB_INACTIVE:
279 cp = ts->tab_inactive;
280 break;
281 case TH_TAB_BACK:
282 cp = ts->tab_back;
283 break;
284 case TH_TAB_OUTLINE:
285 cp = ts->tab_outline;
286 break;
287
288 case TH_SHADE1:
289 cp = ts->shade1;
290 break;
291 case TH_SHADE2:
292 cp = ts->shade2;
293 break;
294 case TH_HILITE:
295 cp = ts->hilite;
296 break;
297
298 case TH_GRID:
299 cp = ts->grid;
300 break;
302 cp = ts->time_scrub_background;
303 break;
305 cp = ts->time_marker_line;
306 break;
309 break;
310 case TH_VIEW_OVERLAY:
311 cp = ts->view_overlay;
312 break;
313 case TH_WIRE:
314 cp = ts->wire;
315 break;
316 case TH_WIRE_INNER:
317 cp = ts->syntaxr;
318 break;
319 case TH_WIRE_EDIT:
320 cp = ts->wire_edit;
321 break;
322 case TH_LIGHT:
323 cp = ts->lamp;
324 break;
325 case TH_SPEAKER:
326 cp = ts->speaker;
327 break;
328 case TH_CAMERA:
329 cp = ts->camera;
330 break;
331 case TH_EMPTY:
332 cp = ts->empty;
333 break;
334 case TH_SELECT:
335 cp = ts->select;
336 break;
337 case TH_ACTIVE:
338 cp = ts->active;
339 break;
340 case TH_GROUP:
341 cp = ts->group;
342 break;
343 case TH_GROUP_ACTIVE:
344 cp = ts->group_active;
345 break;
346 case TH_TRANSFORM:
347 cp = ts->transform;
348 break;
349 case TH_VERTEX:
350 cp = ts->vertex;
351 break;
352 case TH_VERTEX_SELECT:
353 cp = ts->vertex_select;
354 break;
355 case TH_VERTEX_ACTIVE:
356 cp = ts->vertex_active;
357 break;
358 case TH_VERTEX_BEVEL:
359 cp = ts->vertex_bevel;
360 break;
362 cp = ts->vertex_unreferenced;
363 break;
364 case TH_VERTEX_SIZE:
365 cp = &ts->vertex_size;
366 break;
367 case TH_OUTLINE_WIDTH:
368 cp = &ts->outline_width;
369 break;
370 case TH_OBCENTER_DIA:
371 cp = &ts->obcenter_dia;
372 break;
373 case TH_EDGE:
374 cp = ts->edge;
375 break;
376 case TH_EDGE_WIDTH:
377 cp = &ts->edge_width;
378 break;
379 case TH_EDGE_SELECT:
380 cp = ts->edge_select;
381 break;
383 cp = ts->edge_mode_select;
384 break;
385 case TH_EDGE_SEAM:
386 cp = ts->edge_seam;
387 break;
388 case TH_EDGE_SHARP:
389 cp = ts->edge_sharp;
390 break;
391 case TH_EDGE_CREASE:
392 cp = ts->edge_crease;
393 break;
394 case TH_EDGE_BEVEL:
395 cp = ts->edge_bevel;
396 break;
398 cp = ts->editmesh_active;
399 break;
400 case TH_EDGE_FACESEL:
401 cp = ts->edge_facesel;
402 break;
403 case TH_FACE:
404 cp = ts->face;
405 break;
406 case TH_FACE_SELECT:
407 cp = ts->face_select;
408 break;
410 cp = ts->face_mode_select;
411 break;
413 cp = ts->face_retopology;
414 break;
415 case TH_FACE_BACK:
416 cp = ts->face_back;
417 break;
418 case TH_FACE_FRONT:
419 cp = ts->face_front;
420 break;
421 case TH_FACE_DOT:
422 cp = ts->face_dot;
423 break;
424 case TH_FACEDOT_SIZE:
425 cp = &ts->facedot_size;
426 break;
428 cp = ts->extra_edge_len;
429 break;
431 cp = ts->extra_edge_angle;
432 break;
434 cp = ts->extra_face_area;
435 break;
437 cp = ts->extra_face_angle;
438 break;
439 case TH_NORMAL:
440 cp = ts->normal;
441 break;
442 case TH_VNORMAL:
443 cp = ts->vertex_normal;
444 break;
445 case TH_LNORMAL:
446 cp = ts->loop_normal;
447 break;
448 case TH_BONE_SOLID:
449 cp = ts->bone_solid;
450 break;
451 case TH_BONE_POSE:
452 cp = ts->bone_pose;
453 break;
455 cp = ts->bone_pose_active;
456 break;
458 cp = ts->bone_locked_weight;
459 break;
460 case TH_STRIP:
461 cp = ts->strip;
462 break;
463 case TH_STRIP_SELECT:
464 cp = ts->strip_select;
465 break;
467 cp = ts->keytype_keyframe;
468 break;
471 break;
473 cp = ts->keytype_extreme;
474 break;
476 cp = ts->keytype_extreme_select;
477 break;
479 cp = ts->keytype_breakdown;
480 break;
483 break;
485 cp = ts->keytype_jitter;
486 break;
488 cp = ts->keytype_jitter_select;
489 break;
491 cp = ts->keytype_movehold;
492 break;
495 break;
497 cp = ts->keytype_generated;
498 break;
501 break;
502 case TH_KEYBORDER:
503 cp = ts->keyborder;
504 break;
506 cp = ts->keyborder_select;
507 break;
508 case TH_CFRAME:
509 cp = ts->cframe;
510 break;
511 case TH_FRAME_BEFORE:
512 cp = ts->before_current_frame;
513 break;
514 case TH_FRAME_AFTER:
515 cp = ts->after_current_frame;
516 break;
517 case TH_TIME_KEYFRAME:
518 cp = ts->time_keyframe;
519 break;
521 cp = ts->time_gp_keyframe;
522 break;
523 case TH_NURB_ULINE:
524 cp = ts->nurb_uline;
525 break;
526 case TH_NURB_VLINE:
527 cp = ts->nurb_vline;
528 break;
530 cp = ts->nurb_sel_uline;
531 break;
533 cp = ts->nurb_sel_vline;
534 break;
535 case TH_ACTIVE_SPLINE:
536 cp = ts->act_spline;
537 break;
538 case TH_ACTIVE_VERT:
539 cp = ts->lastsel_point;
540 break;
541 case TH_HANDLE_FREE:
542 cp = ts->handle_free;
543 break;
544 case TH_HANDLE_AUTO:
545 cp = ts->handle_auto;
546 break;
548 cp = ts->handle_auto_clamped;
549 break;
550 case TH_HANDLE_VECT:
551 cp = ts->handle_vect;
552 break;
553 case TH_HANDLE_ALIGN:
554 cp = ts->handle_align;
555 break;
557 cp = ts->handle_sel_free;
558 break;
560 cp = ts->handle_sel_auto;
561 break;
564 break;
566 cp = ts->handle_sel_vect;
567 break;
569 cp = ts->handle_sel_align;
570 break;
572 cp = ts->freestyle_edge_mark;
573 break;
575 cp = ts->freestyle_face_mark;
576 break;
577
578 case TH_SYNTAX_B:
579 cp = ts->syntaxb;
580 break;
581 case TH_SYNTAX_V:
582 cp = ts->syntaxv;
583 break;
584 case TH_SYNTAX_C:
585 cp = ts->syntaxc;
586 break;
587 case TH_SYNTAX_L:
588 cp = ts->syntaxl;
589 break;
590 case TH_SYNTAX_D:
591 cp = ts->syntaxd;
592 break;
593 case TH_SYNTAX_R:
594 cp = ts->syntaxr;
595 break;
596 case TH_SYNTAX_N:
597 cp = ts->syntaxn;
598 break;
599 case TH_SYNTAX_S:
600 cp = ts->syntaxs;
601 break;
602 case TH_LINENUMBERS:
603 cp = ts->line_numbers;
604 break;
605
606 case TH_NODE:
607 cp = ts->syntaxl;
608 break;
609 case TH_NODE_INPUT:
610 cp = ts->syntaxn;
611 break;
612 case TH_NODE_OUTPUT:
613 cp = ts->nodeclass_output;
614 break;
615 case TH_NODE_COLOR:
616 cp = ts->syntaxb;
617 break;
618 case TH_NODE_FILTER:
619 cp = ts->nodeclass_filter;
620 break;
621 case TH_NODE_VECTOR:
622 cp = ts->nodeclass_vector;
623 break;
624 case TH_NODE_TEXTURE:
625 cp = ts->nodeclass_texture;
626 break;
627 case TH_NODE_PATTERN:
628 cp = ts->nodeclass_pattern;
629 break;
630 case TH_NODE_SCRIPT:
631 cp = ts->nodeclass_script;
632 break;
633 case TH_NODE_LAYOUT:
634 cp = ts->nodeclass_layout;
635 break;
636 case TH_NODE_GEOMETRY:
637 cp = ts->nodeclass_geometry;
638 break;
640 cp = ts->nodeclass_attribute;
641 break;
642 case TH_NODE_SHADER:
643 cp = ts->nodeclass_shader;
644 break;
646 cp = ts->syntaxv;
647 break;
648 case TH_NODE_GROUP:
649 cp = ts->syntaxc;
650 break;
652 cp = ts->console_output;
653 break;
654 case TH_NODE_FRAME:
655 cp = ts->movie;
656 break;
657 case TH_NODE_MATTE:
658 cp = ts->syntaxs;
659 break;
660 case TH_NODE_DISTORT:
661 cp = ts->syntaxd;
662 break;
663 case TH_NODE_CURVING:
664 cp = &ts->noodle_curving;
665 break;
667 cp = &ts->grid_levels;
668 break;
670 cp = ts->node_zone_simulation;
671 break;
673 cp = ts->node_zone_repeat;
674 break;
677 break;
679 cp = ts->simulated_frames;
680 break;
681
682 case TH_SEQ_MOVIE:
683 cp = ts->movie;
684 break;
685 case TH_SEQ_MOVIECLIP:
686 cp = ts->movieclip;
687 break;
688 case TH_SEQ_MASK:
689 cp = ts->mask;
690 break;
691 case TH_SEQ_IMAGE:
692 cp = ts->image;
693 break;
694 case TH_SEQ_SCENE:
695 cp = ts->scene;
696 break;
697 case TH_SEQ_AUDIO:
698 cp = ts->audio;
699 break;
700 case TH_SEQ_EFFECT:
701 cp = ts->effect;
702 break;
704 cp = ts->transition;
705 break;
706 case TH_SEQ_META:
707 cp = ts->meta;
708 break;
709 case TH_SEQ_TEXT:
710 cp = ts->text_strip;
711 break;
712 case TH_SEQ_PREVIEW:
713 cp = ts->preview_back;
714 break;
715 case TH_SEQ_COLOR:
716 cp = ts->color_strip;
717 break;
718 case TH_SEQ_ACTIVE:
719 cp = ts->active_strip;
720 break;
721 case TH_SEQ_SELECTED:
722 cp = ts->selected_strip;
723 break;
724
726 cp = ts->console_output;
727 break;
728 case TH_CONSOLE_INPUT:
729 cp = ts->console_input;
730 break;
731 case TH_CONSOLE_INFO:
732 cp = ts->console_info;
733 break;
734 case TH_CONSOLE_ERROR:
735 cp = ts->console_error;
736 break;
738 cp = ts->console_cursor;
739 break;
741 cp = ts->console_select;
742 break;
743
744 case TH_HANDLE_VERTEX:
745 cp = ts->handle_vertex;
746 break;
748 cp = ts->handle_vertex_select;
749 break;
751 cp = &ts->handle_vertex_size;
752 break;
753
754 case TH_GP_VERTEX:
755 cp = ts->gp_vertex;
756 break;
758 cp = ts->gp_vertex_select;
759 break;
761 cp = &ts->gp_vertex_size;
762 break;
763
765 cp = ts->ds_channel;
766 break;
768 cp = ts->ds_subchannel;
769 break;
771 cp = ts->ds_ipoline;
772 break;
773
774 case TH_PREVIEW_BACK:
775 cp = ts->preview_back;
776 break;
777
779 cp = ts->preview_stitch_face;
780 break;
781
783 cp = ts->preview_stitch_edge;
784 break;
785
787 cp = ts->preview_stitch_vert;
788 break;
789
792 break;
793
796 break;
798 cp = ts->preview_stitch_active;
799 break;
800
802 cp = ts->paint_curve_handle;
803 break;
805 cp = ts->paint_curve_pivot;
806 break;
807
808 case TH_METADATA_BG:
809 cp = ts->metadatabg;
810 break;
811 case TH_METADATA_TEXT:
812 cp = ts->metadatatext;
813 break;
814
815 case TH_UV_SHADOW:
816 cp = ts->uv_shadow;
817 break;
818
820 cp = ts->marker_outline;
821 break;
822 case TH_MARKER:
823 cp = ts->marker;
824 break;
825 case TH_ACT_MARKER:
826 cp = ts->act_marker;
827 break;
828 case TH_SEL_MARKER:
829 cp = ts->sel_marker;
830 break;
831 case TH_BUNDLE_SOLID:
832 cp = ts->bundle_solid;
833 break;
834 case TH_DIS_MARKER:
835 cp = ts->dis_marker;
836 break;
837 case TH_PATH_BEFORE:
838 cp = ts->path_before;
839 break;
840 case TH_PATH_AFTER:
841 cp = ts->path_after;
842 break;
844 cp = ts->path_keyframe_before;
845 break;
847 cp = ts->path_keyframe_after;
848 break;
849 case TH_CAMERA_PATH:
850 cp = ts->camera_path;
851 break;
853 cp = ts->camera_passepartout;
854 break;
855 case TH_LOCK_MARKER:
856 cp = ts->lock_marker;
857 break;
858
859 case TH_MATCH:
860 cp = ts->match;
861 break;
862
864 cp = ts->selected_highlight;
865 break;
866
867 case TH_SELECT_ACTIVE:
868 cp = ts->active;
869 break;
870
872 cp = ts->selected_object;
873 break;
874
875 case TH_ACTIVE_OBJECT:
876 cp = ts->active_object;
877 break;
878
879 case TH_EDITED_OBJECT:
880 cp = ts->edited_object;
881 break;
882
883 case TH_ROW_ALTERNATE:
884 cp = ts->row_alternate;
885 break;
886
887 case TH_SKIN_ROOT:
888 cp = ts->skin_root;
889 break;
890
891 case TH_ANIM_ACTIVE:
892 cp = ts->anim_active;
893 break;
894 case TH_ANIM_INACTIVE:
895 cp = ts->anim_non_active;
896 break;
898 cp = ts->anim_preview_range;
899 break;
900
901 case TH_NLA_TWEAK:
902 cp = ts->nla_tweaking;
903 break;
905 cp = ts->nla_tweakdupli;
906 break;
907
908 case TH_NLA_TRACK:
909 cp = ts->nla_track;
910 break;
912 cp = ts->nla_transition;
913 break;
915 cp = ts->nla_transition_sel;
916 break;
917 case TH_NLA_META:
918 cp = ts->nla_meta;
919 break;
920 case TH_NLA_META_SEL:
921 cp = ts->nla_meta_sel;
922 break;
923 case TH_NLA_SOUND:
924 cp = ts->nla_sound;
925 break;
926 case TH_NLA_SOUND_SEL:
927 cp = ts->nla_sound_sel;
928 break;
929
930 case TH_WIDGET_EMBOSS:
931 cp = btheme->tui.widget_emboss;
932 break;
933
934 case TH_EDITOR_BORDER:
935 cp = btheme->tui.editor_border;
936 break;
938 cp = btheme->tui.editor_outline;
939 break;
941 cp = btheme->tui.editor_outline_active;
942 break;
944 cp = btheme->tui.widget_text_cursor;
945 break;
947 cp = btheme->tui.wcol_text.item;
948 break;
950 cp = btheme->tui.wcol_text.text_sel;
951 break;
952
954 cp = btheme->tui.transparent_checker_primary;
955 break;
958 break;
960 cp = &btheme->tui.transparent_checker_size;
961 break;
962
963 case TH_AXIS_X:
964 cp = btheme->tui.xaxis;
965 break;
966 case TH_AXIS_Y:
967 cp = btheme->tui.yaxis;
968 break;
969 case TH_AXIS_Z:
970 cp = btheme->tui.zaxis;
971 break;
972
973 case TH_GIZMO_HI:
974 cp = btheme->tui.gizmo_hi;
975 break;
976 case TH_GIZMO_PRIMARY:
977 cp = btheme->tui.gizmo_primary;
978 break;
980 cp = btheme->tui.gizmo_secondary;
981 break;
983 cp = btheme->tui.gizmo_view_align;
984 break;
985 case TH_GIZMO_A:
986 cp = btheme->tui.gizmo_a;
987 break;
988 case TH_GIZMO_B:
989 cp = btheme->tui.gizmo_b;
990 break;
991
992 case TH_ICON_SCENE:
993 cp = btheme->tui.icon_scene;
994 break;
996 cp = btheme->tui.icon_collection;
997 break;
998 case TH_ICON_OBJECT:
999 cp = btheme->tui.icon_object;
1000 break;
1002 cp = btheme->tui.icon_object_data;
1003 break;
1004 case TH_ICON_MODIFIER:
1005 cp = btheme->tui.icon_modifier;
1006 break;
1007 case TH_ICON_SHADING:
1008 cp = btheme->tui.icon_shading;
1009 break;
1010 case TH_ICON_FOLDER:
1011 cp = btheme->tui.icon_folder;
1012 break;
1013 case TH_ICON_AUTOKEY:
1014 cp = btheme->tui.icon_autokey;
1015 break;
1016 case TH_ICON_FUND: {
1017 /* Development fund icon color is not part of theme. */
1018 static const uchar red[4] = {204, 48, 72, 255};
1019 cp = red;
1020 break;
1021 }
1022
1023 case TH_SCROLL_TEXT:
1024 cp = btheme->tui.wcol_scroll.text;
1025 break;
1026
1027 case TH_INFO_SELECTED:
1028 cp = ts->info_selected;
1029 break;
1031 cp = ts->info_selected_text;
1032 break;
1033 case TH_INFO_ERROR:
1034 cp = ts->info_error;
1035 break;
1036 case TH_INFO_ERROR_TEXT:
1037 cp = ts->info_error_text;
1038 break;
1039 case TH_INFO_WARNING:
1040 cp = ts->info_warning;
1041 break;
1043 cp = ts->info_warning_text;
1044 break;
1045 case TH_INFO_INFO:
1046 cp = ts->info_info;
1047 break;
1048 case TH_INFO_INFO_TEXT:
1049 cp = ts->info_info_text;
1050 break;
1051 case TH_INFO_DEBUG:
1052 cp = ts->info_debug;
1053 break;
1054 case TH_INFO_DEBUG_TEXT:
1055 cp = ts->info_debug_text;
1056 break;
1057 case TH_INFO_PROPERTY:
1058 cp = ts->info_property;
1059 break;
1061 cp = ts->info_property_text;
1062 break;
1063 case TH_INFO_OPERATOR:
1064 cp = ts->info_operator;
1065 break;
1067 cp = ts->info_operator_text;
1068 break;
1070 cp = ts->clipping_border_3d;
1071 break;
1072 }
1073 }
1074 }
1075
1076 return (const uchar *)cp;
1077}
1078
1080{
1081 /* We search for the theme with the default name. */
1082 bTheme *btheme = static_cast<bTheme *>(
1084 if (btheme == nullptr) {
1085 btheme = MEM_cnew<bTheme>(__func__);
1086 STRNCPY(btheme->name, U_theme_default.name);
1087 BLI_addhead(&U.themes, btheme);
1088 }
1089
1090 /* Must be first, see `U.themes` doc-string. */
1091 BLI_listbase_rotate_first(&U.themes, btheme);
1092
1093 UI_SetTheme(0, 0); /* make sure the global used in this file is set */
1094
1095 const int active_theme_area = btheme->active_theme_area;
1096 MEMCPY_STRUCT_AFTER(btheme, &U_theme_default, name);
1097 btheme->active_theme_area = active_theme_area;
1098}
1099
1101{
1102 BLI_freelistN(&U.uistyles);
1103 /* gets automatically re-allocated */
1104 uiStyleInit();
1105}
1106
1107void UI_SetTheme(int spacetype, int regionid)
1108{
1109 if (spacetype) {
1110 /* later on, a local theme can be found too */
1111 g_theme_state.theme = static_cast<bTheme *>(U.themes.first);
1112 g_theme_state.spacetype = spacetype;
1113 g_theme_state.regionid = regionid;
1114 }
1115 else if (regionid) {
1116 /* popups */
1117 g_theme_state.theme = static_cast<bTheme *>(U.themes.first);
1119 g_theme_state.regionid = regionid;
1120 }
1121 else {
1122 /* for safety, when theme was deleted */
1123 g_theme_state.theme = static_cast<bTheme *>(U.themes.first);
1126 }
1127}
1128
1130{
1131 return static_cast<bTheme *>(U.themes.first);
1132}
1133
1134void UI_Theme_Store(bThemeState *theme_state)
1135{
1136 *theme_state = g_theme_state;
1137}
1138void UI_Theme_Restore(const bThemeState *theme_state)
1139{
1140 g_theme_state = *theme_state;
1141}
1142
1143void UI_GetThemeColorShadeAlpha4ubv(int colorid, int coloffset, int alphaoffset, uchar col[4])
1144{
1145 int r, g, b, a;
1147 r = coloffset + int(cp[0]);
1148 CLAMP(r, 0, 255);
1149 g = coloffset + int(cp[1]);
1150 CLAMP(g, 0, 255);
1151 b = coloffset + int(cp[2]);
1152 CLAMP(b, 0, 255);
1153 a = alphaoffset + int(cp[3]);
1154 CLAMP(a, 0, 255);
1155
1156 col[0] = r;
1157 col[1] = g;
1158 col[2] = b;
1159 col[3] = a;
1160}
1161
1162void UI_GetThemeColorBlend3ubv(int colorid1, int colorid2, float fac, uchar col[3])
1163{
1166
1167 CLAMP(fac, 0.0f, 1.0f);
1168 col[0] = floorf((1.0f - fac) * cp1[0] + fac * cp2[0]);
1169 col[1] = floorf((1.0f - fac) * cp1[1] + fac * cp2[1]);
1170 col[2] = floorf((1.0f - fac) * cp1[2] + fac * cp2[2]);
1171}
1172
1173void UI_GetThemeColorBlend3f(int colorid1, int colorid2, float fac, float r_col[3])
1174{
1177
1178 CLAMP(fac, 0.0f, 1.0f);
1179 r_col[0] = ((1.0f - fac) * cp1[0] + fac * cp2[0]) / 255.0f;
1180 r_col[1] = ((1.0f - fac) * cp1[1] + fac * cp2[1]) / 255.0f;
1181 r_col[2] = ((1.0f - fac) * cp1[2] + fac * cp2[2]) / 255.0f;
1182}
1183
1184void UI_GetThemeColorBlend4f(int colorid1, int colorid2, float fac, float r_col[4])
1185{
1188
1189 CLAMP(fac, 0.0f, 1.0f);
1190 r_col[0] = ((1.0f - fac) * cp1[0] + fac * cp2[0]) / 255.0f;
1191 r_col[1] = ((1.0f - fac) * cp1[1] + fac * cp2[1]) / 255.0f;
1192 r_col[2] = ((1.0f - fac) * cp1[2] + fac * cp2[2]) / 255.0f;
1193 r_col[3] = ((1.0f - fac) * cp1[3] + fac * cp2[3]) / 255.0f;
1194}
1195
1196void UI_FontThemeColor(int fontid, int colorid)
1197{
1198 uchar color[4];
1199 UI_GetThemeColor4ubv(colorid, color);
1200 BLF_color4ubv(fontid, color);
1201}
1202
1203float UI_GetThemeValuef(int colorid)
1204{
1206 return float(cp[0]);
1207}
1208
1209int UI_GetThemeValue(int colorid)
1210{
1212 return int(cp[0]);
1213}
1214
1215float UI_GetThemeValueTypef(int colorid, int spacetype)
1216{
1217 const uchar *cp = UI_ThemeGetColorPtr(g_theme_state.theme, spacetype, colorid);
1218 return float(cp[0]);
1219}
1220
1221int UI_GetThemeValueType(int colorid, int spacetype)
1222{
1223 const uchar *cp = UI_ThemeGetColorPtr(g_theme_state.theme, spacetype, colorid);
1224 return int(cp[0]);
1225}
1226
1227void UI_GetThemeColor3fv(int colorid, float col[3])
1228{
1230 col[0] = float(cp[0]) / 255.0f;
1231 col[1] = float(cp[1]) / 255.0f;
1232 col[2] = float(cp[2]) / 255.0f;
1233}
1234
1235void UI_GetThemeColor4fv(int colorid, float col[4])
1236{
1238 col[0] = float(cp[0]) / 255.0f;
1239 col[1] = float(cp[1]) / 255.0f;
1240 col[2] = float(cp[2]) / 255.0f;
1241 col[3] = float(cp[3]) / 255.0f;
1242}
1243
1244void UI_GetThemeColorType4fv(int colorid, int spacetype, float col[4])
1245{
1246 const uchar *cp = UI_ThemeGetColorPtr(g_theme_state.theme, spacetype, colorid);
1247 col[0] = float(cp[0]) / 255.0f;
1248 col[1] = float(cp[1]) / 255.0f;
1249 col[2] = float(cp[2]) / 255.0f;
1250 col[3] = float(cp[3]) / 255.0f;
1251}
1252
1253void UI_GetThemeColorShade3fv(int colorid, int offset, float col[3])
1254{
1256 int r, g, b;
1257
1258 r = offset + int(cp[0]);
1259 CLAMP(r, 0, 255);
1260 g = offset + int(cp[1]);
1261 CLAMP(g, 0, 255);
1262 b = offset + int(cp[2]);
1263 CLAMP(b, 0, 255);
1264
1265 col[0] = float(r) / 255.0f;
1266 col[1] = float(g) / 255.0f;
1267 col[2] = float(b) / 255.0f;
1268}
1269
1270void UI_GetThemeColorShade3ubv(int colorid, int offset, uchar col[3])
1271{
1273 int r, g, b;
1274
1275 r = offset + int(cp[0]);
1276 CLAMP(r, 0, 255);
1277 g = offset + int(cp[1]);
1278 CLAMP(g, 0, 255);
1279 b = offset + int(cp[2]);
1280 CLAMP(b, 0, 255);
1281
1282 col[0] = r;
1283 col[1] = g;
1284 col[2] = b;
1285}
1286
1288 int colorid1, int colorid2, float fac, int offset, uchar col[3])
1289{
1292
1293 CLAMP(fac, 0.0f, 1.0f);
1294
1295 float blend[3];
1296 blend[0] = (offset + floorf((1.0f - fac) * cp1[0] + fac * cp2[0])) / 255.0f;
1297 blend[1] = (offset + floorf((1.0f - fac) * cp1[1] + fac * cp2[1])) / 255.0f;
1298 blend[2] = (offset + floorf((1.0f - fac) * cp1[2] + fac * cp2[2])) / 255.0f;
1299
1301}
1302
1303void UI_GetThemeColorShade4ubv(int colorid, int offset, uchar col[4])
1304{
1306 int r, g, b;
1307
1308 r = offset + int(cp[0]);
1309 CLAMP(r, 0, 255);
1310 g = offset + int(cp[1]);
1311 CLAMP(g, 0, 255);
1312 b = offset + int(cp[2]);
1313 CLAMP(b, 0, 255);
1314
1315 col[0] = r;
1316 col[1] = g;
1317 col[2] = b;
1318 col[3] = cp[3];
1319}
1320
1321void UI_GetThemeColorShadeAlpha4fv(int colorid, int coloffset, int alphaoffset, float col[4])
1322{
1324 int r, g, b, a;
1325
1326 r = coloffset + int(cp[0]);
1327 CLAMP(r, 0, 255);
1328 g = coloffset + int(cp[1]);
1329 CLAMP(g, 0, 255);
1330 b = coloffset + int(cp[2]);
1331 CLAMP(b, 0, 255);
1332 a = alphaoffset + int(cp[3]);
1333 CLAMP(a, 0, 255);
1334
1335 col[0] = float(r) / 255.0f;
1336 col[1] = float(g) / 255.0f;
1337 col[2] = float(b) / 255.0f;
1338 col[3] = float(a) / 255.0f;
1339}
1340
1341void UI_GetThemeColorBlendShade3fv(int colorid1, int colorid2, float fac, int offset, float col[3])
1342{
1345 int r, g, b;
1346
1347 CLAMP(fac, 0.0f, 1.0f);
1348
1349 r = offset + floorf((1.0f - fac) * cp1[0] + fac * cp2[0]);
1350 CLAMP(r, 0, 255);
1351 g = offset + floorf((1.0f - fac) * cp1[1] + fac * cp2[1]);
1352 CLAMP(g, 0, 255);
1353 b = offset + floorf((1.0f - fac) * cp1[2] + fac * cp2[2]);
1354 CLAMP(b, 0, 255);
1355
1356 col[0] = float(r) / 255.0f;
1357 col[1] = float(g) / 255.0f;
1358 col[2] = float(b) / 255.0f;
1359}
1360
1361void UI_GetThemeColorBlendShade4fv(int colorid1, int colorid2, float fac, int offset, float col[4])
1362{
1365 int r, g, b, a;
1366
1367 CLAMP(fac, 0.0f, 1.0f);
1368
1369 r = offset + floorf((1.0f - fac) * cp1[0] + fac * cp2[0]);
1370 CLAMP(r, 0, 255);
1371 g = offset + floorf((1.0f - fac) * cp1[1] + fac * cp2[1]);
1372 CLAMP(g, 0, 255);
1373 b = offset + floorf((1.0f - fac) * cp1[2] + fac * cp2[2]);
1374 CLAMP(b, 0, 255);
1375
1376 a = floorf((1.0f - fac) * cp1[3] + fac * cp2[3]); /* No shading offset. */
1377 CLAMP(a, 0, 255);
1378
1379 col[0] = float(r) / 255.0f;
1380 col[1] = float(g) / 255.0f;
1381 col[2] = float(b) / 255.0f;
1382 col[3] = float(a) / 255.0f;
1383}
1384
1385void UI_GetThemeColor3ubv(int colorid, uchar col[3])
1386{
1388 col[0] = cp[0];
1389 col[1] = cp[1];
1390 col[2] = cp[2];
1391}
1392
1393void UI_GetThemeColorShade4fv(int colorid, int offset, float col[4])
1394{
1396 int r, g, b, a;
1397
1398 r = offset + int(cp[0]);
1399 CLAMP(r, 0, 255);
1400 g = offset + int(cp[1]);
1401 CLAMP(g, 0, 255);
1402 b = offset + int(cp[2]);
1403 CLAMP(b, 0, 255);
1404
1405 a = int(cp[3]); /* no shading offset... */
1406 CLAMP(a, 0, 255);
1407
1408 col[0] = float(r) / 255.0f;
1409 col[1] = float(g) / 255.0f;
1410 col[2] = float(b) / 255.0f;
1411 col[3] = float(a) / 255.0f;
1412}
1413
1414void UI_GetThemeColor4ubv(int colorid, uchar col[4])
1415{
1417 col[0] = cp[0];
1418 col[1] = cp[1];
1419 col[2] = cp[2];
1420 col[3] = cp[3];
1421}
1422
1423void UI_GetThemeColorType3fv(int colorid, int spacetype, float col[3])
1424{
1425 const uchar *cp = UI_ThemeGetColorPtr(g_theme_state.theme, spacetype, colorid);
1426 col[0] = float(cp[0]) / 255.0f;
1427 col[1] = float(cp[1]) / 255.0f;
1428 col[2] = float(cp[2]) / 255.0f;
1429}
1430
1431void UI_GetThemeColorType3ubv(int colorid, int spacetype, uchar col[3])
1432{
1433 const uchar *cp = UI_ThemeGetColorPtr(g_theme_state.theme, spacetype, colorid);
1434 col[0] = cp[0];
1435 col[1] = cp[1];
1436 col[2] = cp[2];
1437}
1438
1439void UI_GetThemeColorType4ubv(int colorid, int spacetype, uchar col[4])
1440{
1441 const uchar *cp = UI_ThemeGetColorPtr(g_theme_state.theme, spacetype, colorid);
1442 col[0] = cp[0];
1443 col[1] = cp[1];
1444 col[2] = cp[2];
1445 col[3] = cp[3];
1446}
1447
1449{
1450 if (colorid == 0) {
1451 return false;
1452 }
1453 if (colorid == TH_ICON_FUND) {
1454 /* Always color development fund icon. */
1455 }
1456 else if (!((g_theme_state.spacetype == SPACE_OUTLINER &&
1461 {
1462 /* Only colored icons in specific places, overall UI is intended
1463 * to stay monochrome and out of the way except a few places where it
1464 * is important to communicate different data types. */
1465 return false;
1466 }
1467
1469 col[0] = cp[0];
1470 col[1] = cp[1];
1471 col[2] = cp[2];
1472 col[3] = cp[3];
1473
1474 return true;
1475}
1476
1477void UI_GetColorPtrShade3ubv(const uchar cp[3], int offset, uchar r_col[3])
1478{
1479 int r, g, b;
1480
1481 r = offset + int(cp[0]);
1482 g = offset + int(cp[1]);
1483 b = offset + int(cp[2]);
1484
1485 CLAMP(r, 0, 255);
1486 CLAMP(g, 0, 255);
1487 CLAMP(b, 0, 255);
1488
1489 r_col[0] = r;
1490 r_col[1] = g;
1491 r_col[2] = b;
1492}
1493
1495 const uchar cp1[3], const uchar cp2[3], float fac, int offset, uchar r_col[3])
1496{
1497 int r, g, b;
1498
1499 CLAMP(fac, 0.0f, 1.0f);
1500 r = offset + floor((1.0f - fac) * cp1[0] + fac * cp2[0]);
1501 g = offset + floor((1.0f - fac) * cp1[1] + fac * cp2[1]);
1502 b = offset + floor((1.0f - fac) * cp1[2] + fac * cp2[2]);
1503
1504 CLAMP(r, 0, 255);
1505 CLAMP(g, 0, 255);
1506 CLAMP(b, 0, 255);
1507
1508 r_col[0] = r;
1509 r_col[1] = g;
1510 r_col[2] = b;
1511}
1512
1513void UI_ThemeClearColor(int colorid)
1514{
1515 float col[3];
1516
1517 UI_GetThemeColor3fv(colorid, col);
1518 GPU_clear_color(col[0], col[1], col[2], 1.0f);
1519}
1520
1522{
1523 const bTheme *btheme = UI_GetTheme();
1524 return int(btheme->tui.menu_shadow_width * UI_SCALE_FAC);
1525}
1526
1527void UI_make_axis_color(const uchar col[3], const char axis, uchar r_col[3])
1528{
1529 uchar col_axis[3];
1530
1531 switch (axis) {
1532 case 'X':
1534 UI_GetColorPtrBlendShade3ubv(col, col_axis, 0.5f, -10, r_col);
1535 break;
1536 case 'Y':
1538 UI_GetColorPtrBlendShade3ubv(col, col_axis, 0.5f, -10, r_col);
1539 break;
1540 case 'Z':
1542 UI_GetColorPtrBlendShade3ubv(col, col_axis, 0.5f, -10, r_col);
1543 break;
1544 default:
1545 BLI_assert(0);
1546 break;
1547 }
1548}
void BLF_color4ubv(int fontid, const unsigned char rgba[4])
Definition blf.cc:435
#define BLI_assert(a)
Definition BLI_assert.h:50
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
Definition listbase.cc:90
void BLI_listbase_rotate_first(struct ListBase *lb, void *vlink) ATTR_NONNULL(1
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
Definition listbase.cc:496
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
#define STRNCPY(dst, src)
Definition BLI_string.h:593
unsigned char uchar
#define CLAMP(a, b, c)
#define ELEM(...)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
const bTheme U_theme_default
@ RGN_TYPE_CHANNELS
@ RGN_TYPE_EXECUTE
@ RGN_TYPE_ASSET_SHELF_HEADER
@ RGN_TYPE_WINDOW
@ RGN_TYPE_ASSET_SHELF
@ RGN_TYPE_PREVIEW
@ RGN_TYPE_NAV_BAR
@ RGN_TYPE_FOOTER
@ RGN_TYPE_HEADER
@ SPACE_TEXT
@ SPACE_CLIP
@ SPACE_ACTION
@ SPACE_CONSOLE
@ SPACE_OUTLINER
@ SPACE_STATUSBAR
@ SPACE_TOPBAR
@ SPACE_NODE
@ SPACE_SPREADSHEET
@ SPACE_USERPREF
@ SPACE_FILE
@ SPACE_PROPERTIES
@ SPACE_NLA
@ SPACE_SEQ
@ SPACE_IMAGE
@ SPACE_GRAPH
@ SPACE_VIEW3D
@ SPACE_INFO
#define UI_SCALE_FAC
bool ED_region_is_overlap(int spacetype, int regiontype)
Definition area.cc:1407
void GPU_clear_color(float red, float green, float blue, float alpha)
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a producing a negative Combine Generate a color from its red
void UI_icons_init()
void UI_icons_free()
#define TH_UNDEFINED
@ TH_SELECT_ACTIVE
@ TH_EDGE_SHARP
@ TH_ICON_MODIFIER
@ TH_SIMULATED_FRAMES
@ TH_BONE_SOLID
@ TH_TAB_OUTLINE
@ TH_GIZMO_HI
@ TH_ROW_ALTERNATE
@ TH_HANDLE_ALIGN
@ TH_INFO_PROPERTY_TEXT
@ TH_NORMAL
@ TH_PATH_BEFORE
@ TH_LIGHT
@ TH_PANEL_HEADER
@ TH_NODE_FRAME
@ TH_KEYTYPE_GENERATED
@ TH_KEYBORDER_SELECT
@ TH_NODE_INPUT
@ TH_FACE_BACK
@ TH_NODE
@ TH_BACK_GRAD
@ TH_ICON_AUTOKEY
@ TH_MARKER_OUTLINE
@ TH_TIME_SCRUB_BACKGROUND
@ TH_LNORMAL
@ TH_TIME_KEYFRAME
@ TH_KEYTYPE_BREAKDOWN
@ TH_EDGE_FACESEL
@ TH_NODE_FILTER
@ TH_SELECT_HIGHLIGHT
@ TH_INFO_WARNING_TEXT
@ TH_NURB_SEL_VLINE
@ TH_FRAME_AFTER
@ TH_ICON_OBJECT
@ TH_BUNDLE_SOLID
@ TH_NODE_GROUP
@ TH_KEYTYPE_KEYFRAME
@ TH_TRANSPARENT_CHECKER_PRIMARY
@ TH_NODE_ZONE_REPEAT
@ TH_WIDGET_TEXT_HIGHLIGHT
@ TH_BONE_POSE_ACTIVE
@ TH_DRAWEXTRA_EDGEANG
@ TH_SYNTAX_B
@ TH_FREESTYLE_FACE_MARK
@ TH_NLA_TRACK
@ TH_INFO_DEBUG
@ TH_DRAWEXTRA_FACEANG
@ TH_ACTIVE_OBJECT
@ TH_ICON_FOLDER
@ TH_TAB_ACTIVE
@ TH_FREESTYLE_EDGE_MARK
@ TH_HEADER
@ TH_GRID
@ TH_VERTEX_ACTIVE
@ TH_NODE_SCRIPT
@ TH_HANDLE_VERTEX_SIZE
@ TH_NLA_TRANSITION_SEL
@ TH_SEQ_SELECTED
@ TH_BACK
@ TH_NODE_GEOMETRY
@ TH_LOCK_MARKER
@ TH_INFO_INFO
@ TH_NODE_OUTPUT
@ TH_SEQ_TRANSITION
@ TH_NODE_COLOR
@ TH_GIZMO_B
@ TH_NLA_META
@ TH_DOPESHEET_IPOLINE
@ TH_TIME_MARKER_LINE
@ TH_KEYBORDER
@ TH_WIRE
@ TH_KEYTYPE_JITTER
@ TH_INFO_INFO_TEXT
@ TH_SYNTAX_C
@ TH_SYNTAX_R
@ TH_INFO_PROPERTY
@ TH_SYNTAX_S
@ TH_BONE_LOCKED_WEIGHT
@ TH_TIME_GP_KEYFRAME
@ TH_KEYTYPE_EXTREME
@ TH_FACEDOT_SIZE
@ TH_WIDGET_EMBOSS
@ TH_BONE_POSE
@ TH_TIME_MARKER_LINE_SELECTED
@ TH_GROUP
@ TH_ICON_COLLECTION
@ TH_DOPESHEET_CHANNELSUBOB
@ TH_NLA_META_SEL
@ TH_HANDLE_SEL_AUTO
@ TH_INFO_DEBUG_TEXT
@ TH_SKIN_ROOT
@ TH_EDGE_SELECT
@ TH_TRANSPARENT_CHECKER_SECONDARY
@ TH_ICON_OBJECT_DATA
@ TH_ACTIVE_VERT
@ TH_HANDLE_SEL_AUTOCLAMP
@ TH_ACTIVE_SPLINE
@ TH_STITCH_PREVIEW_VERT
@ TH_EDITED_OBJECT
@ TH_CAMERA
@ TH_KEYTYPE_KEYFRAME_SELECT
@ TH_SELECTED_OBJECT
@ TH_PATH_AFTER
@ TH_ICON_SHADING
@ TH_NODE_PATTERN
@ TH_BUTBACK_TEXT
@ TH_STITCH_PREVIEW_UNSTITCHABLE
@ TH_TRANSFORM
@ TH_NODE_ATTRIBUTE
@ TH_EDGE_BEVEL
@ TH_OUTLINE_WIDTH
@ TH_BUTBACK
@ TH_HANDLE_AUTO
@ TH_PANEL_SUB_BACK
@ TH_NODE_DISTORT
@ TH_ICON_SCENE
@ TH_ANIM_ACTIVE
@ TH_INFO_ERROR
@ TH_NURB_VLINE
@ TH_SEQ_TEXT
@ TH_REDALERT
@ TH_SPEAKER
@ TH_INFO_ERROR_TEXT
@ TH_VERTEX
@ TH_METADATA_TEXT
@ TH_CAMERA_PASSEPARTOUT
@ TH_EDITOR_BORDER
@ TH_SEQ_MASK
@ TH_VERTEX_SIZE
@ TH_INFO_OPERATOR
@ TH_HANDLE_SEL_ALIGN
@ TH_SEQ_MOVIE
@ TH_GP_VERTEX_SELECT
@ TH_OBCENTER_DIA
@ TH_CONSOLE_SELECT
@ TH_KEYTYPE_MOVEHOLD
@ TH_INFO_WARNING
@ TH_GIZMO_VIEW_ALIGN
@ TH_SEQ_COLOR
@ TH_GIZMO_A
@ TH_SHADE2
@ TH_CONSOLE_ERROR
@ TH_KEYTYPE_BREAKDOWN_SELECT
@ TH_DIS_MARKER
@ TH_UV_SHADOW
@ TH_NODE_MATTE
@ TH_PAINT_CURVE_HANDLE
@ TH_FACE_RETOPOLOGY
@ TH_STITCH_PREVIEW_EDGE
@ TH_NLA_TWEAK
@ TH_NODE_GRID_LEVELS
@ TH_PREVIEW_BACK
@ TH_HANDLE_SEL_FREE
@ TH_VERTEX_BEVEL
@ TH_SEQ_META
@ TH_FACE_SELECT
@ TH_CFRAME
@ TH_HANDLE_VERTEX_SELECT
@ TH_HANDLE_VERTEX
@ TH_SCROLL_TEXT
@ TH_LINENUMBERS
@ TH_STITCH_PREVIEW_ACTIVE
@ TH_ANIM_PREVIEW_RANGE
@ TH_NURB_ULINE
@ TH_MARKER
@ TH_KEYTYPE_EXTREME_SELECT
@ TH_NODE_ZONE_FOREACH_GEOMETRY_ELEMENT
@ TH_EDGE_SEAM
@ TH_AXIS_Y
@ TH_AXIS_X
@ TH_NODE_TEXTURE
@ TH_EDITOR_OUTLINE_ACTIVE
@ TH_NODE_VECTOR
@ TH_EDGE
@ TH_SHADE1
@ TH_INFO_SELECTED_TEXT
@ TH_HANDLE_SEL_VECT
@ TH_VERTEX_SELECT
@ TH_STRIP
@ TH_NODE_CONVERTER
@ TH_KEYTYPE_MOVEHOLD_SELECT
@ TH_THEMEUI
@ TH_CONSOLE_CURSOR
@ TH_EMPTY
@ TH_ANIM_INACTIVE
@ TH_KEYTYPE_JITTER_SELECT
@ TH_ICON_FUND
@ TH_FACE_FRONT
@ TH_VERTEX_UNREFERENCED
@ TH_GIZMO_PRIMARY
@ TH_TRANSPARENT_CHECKER_SIZE
@ TH_STITCH_PREVIEW_STITCHABLE
@ TH_HEADER_TEXT
@ TH_PAINT_CURVE_PIVOT
@ TH_V3D_CLIPPING_BORDER
@ TH_NLA_TWEAK_DUPLI
@ TH_AXIS_Z
@ TH_EDGE_WIDTH
@ TH_EDITMESH_ACTIVE
@ TH_SEQ_PREVIEW
@ TH_GP_VERTEX_SIZE
@ TH_CONSOLE_INFO
@ TH_GP_VERTEX
@ TH_INFO_OPERATOR_TEXT
@ TH_FRAME_BEFORE
@ TH_SYNTAX_D
@ TH_VIEW_OVERLAY
@ TH_HILITE
@ TH_GIZMO_SECONDARY
@ TH_BUTBACK_TEXT_HI
@ TH_ACT_MARKER
@ TH_FACE_DOT
@ TH_TITLE
@ TH_CONSOLE_OUTPUT
@ TH_CONSOLE_INPUT
@ TH_NODE_ZONE_SIMULATION
@ TH_PATH_KEYFRAME_AFTER
@ TH_WIDGET_TEXT_SELECTION
@ TH_KEYTYPE_GENERATED_SELECT
@ TH_SYNTAX_V
@ TH_EDGE_MODE_SELECT
@ TH_INFO_SELECTED
@ TH_SEQ_AUDIO
@ TH_NODE_CURVING
@ TH_SEL_MARKER
@ TH_FACE_MODE_SELECT
@ TH_TAB_BACK
@ TH_CAMERA_PATH
@ TH_SELECT
@ TH_WIDGET_TEXT_CURSOR
@ TH_HANDLE_FREE
@ TH_NLA_SOUND
@ TH_SYNTAX_L
@ TH_SEQ_ACTIVE
@ TH_HANDLE_AUTOCLAMP
@ TH_EDITOR_OUTLINE
@ TH_GROUP_ACTIVE
@ TH_TAB_INACTIVE
@ TH_BACKGROUND_TYPE
@ TH_SYNTAX_N
@ TH_DRAWEXTRA_EDGELEN
@ TH_MATCH
@ TH_NLA_TRANSITION
@ TH_SEQ_EFFECT
@ TH_SEQ_SCENE
@ TH_NODE_LAYOUT
@ TH_EDGE_CREASE
@ TH_PANEL_BACK
@ TH_HANDLE_VECT
@ TH_HEADER_TEXT_HI
@ TH_TEXT
@ TH_METADATA_BG
@ TH_NODE_SHADER
@ TH_WIRE_EDIT
@ TH_SEQ_MOVIECLIP
@ TH_WIRE_INNER
@ TH_DRAWEXTRA_FACEAREA
@ TH_SEQ_IMAGE
@ TH_NODE_INTERFACE
@ TH_STITCH_PREVIEW_FACE
@ TH_DOPESHEET_CHANNELOB
@ TH_NURB_SEL_ULINE
@ TH_ACTIVE
@ TH_STRIP_SELECT
@ TH_NLA_SOUND_SEL
@ TH_PATH_KEYFRAME_BEFORE
@ TH_FACE
@ TH_VNORMAL
@ TH_TEXT_HI
unsigned int U
Definition btGjkEpa3.h:78
local_group_size(16, 16) .push_constant(Type b
#define floorf(x)
#define offsetof(t, d)
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
uint col
void uiStyleInit()
#define unit_float_to_uchar_clamp_v3(v1, v2)
ccl_device_inline float2 floor(const float2 a)
static void error(const char *str)
bool UI_GetIconThemeColor4ubv(int colorid, uchar col[4])
void UI_Theme_Store(bThemeState *theme_state)
void UI_GetColorPtrBlendShade3ubv(const uchar cp1[3], const uchar cp2[3], float fac, int offset, uchar r_col[3])
void UI_Theme_Restore(const bThemeState *theme_state)
void UI_GetThemeColorType3fv(int colorid, int spacetype, float col[3])
void UI_GetColorPtrShade3ubv(const uchar cp[3], int offset, uchar r_col[3])
void ui_resources_free()
Definition resources.cc:52
void UI_GetThemeColor3fv(int colorid, float col[3])
void UI_make_axis_color(const uchar col[3], const char axis, uchar r_col[3])
const uchar * UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
Definition resources.cc:61
int UI_GetThemeValueType(int colorid, int spacetype)
void UI_GetThemeColorBlend4f(int colorid1, int colorid2, float fac, float r_col[4])
void UI_GetThemeColorShade3fv(int colorid, int offset, float col[3])
void UI_GetThemeColorBlendShade4fv(int colorid1, int colorid2, float fac, int offset, float col[4])
void UI_GetThemeColorShadeAlpha4ubv(int colorid, int coloffset, int alphaoffset, uchar col[4])
void UI_ThemeClearColor(int colorid)
float UI_GetThemeValueTypef(int colorid, int spacetype)
void UI_GetThemeColorType4fv(int colorid, int spacetype, float col[4])
void UI_GetThemeColorShade4ubv(int colorid, int offset, uchar col[4])
void UI_GetThemeColorBlendShade3fv(int colorid1, int colorid2, float fac, int offset, float col[3])
void UI_GetThemeColorShadeAlpha4fv(int colorid, int coloffset, int alphaoffset, float col[4])
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_GetThemeColorShade4fv(int colorid, int offset, float col[4])
void UI_GetThemeColor4ubv(int colorid, uchar col[4])
void UI_style_init_default()
bTheme * UI_GetTheme()
int UI_GetThemeValue(int colorid)
void UI_GetThemeColorBlend3f(int colorid1, int colorid2, float fac, float r_col[3])
void UI_FontThemeColor(int fontid, int colorid)
static bThemeState g_theme_state
Definition resources.cc:41
void UI_GetThemeColorBlend3ubv(int colorid1, int colorid2, float fac, uchar col[3])
float UI_GetThemeValuef(int colorid)
void UI_GetThemeColorBlendShade3ubv(int colorid1, int colorid2, float fac, int offset, uchar col[3])
void UI_SetTheme(int spacetype, int regionid)
void UI_theme_init_default()
void UI_GetThemeColorType3ubv(int colorid, int spacetype, uchar col[3])
void UI_GetThemeColorShade3ubv(int colorid, int offset, uchar col[3])
void UI_GetThemeColorType4ubv(int colorid, int spacetype, uchar col[4])
void UI_GetThemeColor3ubv(int colorid, uchar col[3])
int UI_ThemeMenuShadowWidth()
void ui_resources_init()
Definition resources.cc:47
unsigned char back[4]
unsigned char header_back[4]
unsigned char keytype_keyframe_select[4]
unsigned char back_grad[4]
unsigned char preview_stitch_vert[4]
unsigned char path_before[4]
unsigned char edge_bevel[4]
unsigned char noodle_curving
unsigned char active_strip[4]
unsigned char movie[4]
unsigned char edge_mode_select[4]
unsigned char lock_marker[4]
unsigned char movieclip[4]
unsigned char bundle_solid[4]
unsigned char dis_marker[4]
unsigned char ds_ipoline[4]
ThemeAssetShelf asset_shelf
unsigned char info_warning[4]
unsigned char handle_sel_auto[4]
unsigned char time_scrub_background[4]
unsigned char syntaxl[4]
unsigned char active_object[4]
unsigned char nodeclass_filter[4]
unsigned char keytype_jitter[4]
unsigned char keytype_keyframe[4]
unsigned char keytype_breakdown_select[4]
unsigned char anim_active[4]
unsigned char anim_non_active[4]
unsigned char shade2[4]
unsigned char handle_free[4]
unsigned char console_info[4]
unsigned char edge_crease[4]
unsigned char group_active[4]
unsigned char edge_select[4]
unsigned char handle_sel_vect[4]
unsigned char selected_highlight[4]
unsigned char editmesh_active[4]
unsigned char console_select[4]
unsigned char vertex[4]
unsigned char vertex_size
unsigned char marker[4]
unsigned char keytype_extreme[4]
unsigned char text[4]
unsigned char gp_vertex_size
unsigned char syntaxv[4]
unsigned char ds_subchannel[4]
unsigned char syntaxc[4]
unsigned char syntaxn[4]
unsigned char gp_vertex_select[4]
unsigned char sel_marker[4]
unsigned char navigation_bar[4]
unsigned char keytype_movehold_select[4]
unsigned char vertex_unreferenced[4]
unsigned char effect[4]
unsigned char list_text[4]
unsigned char transition[4]
unsigned char keytype_extreme_select[4]
unsigned char active[4]
unsigned char vertex_select[4]
unsigned char outline_width
unsigned char selected_object[4]
unsigned char time_marker_line_selected[4]
unsigned char empty[4]
unsigned char header_text_hi[4]
unsigned char face_back[4]
unsigned char edge[4]
unsigned char info_property_text[4]
unsigned char normal[4]
unsigned char syntaxs[4]
unsigned char time_keyframe[4]
unsigned char transform[4]
unsigned char select[4]
unsigned char handle_vertex_size
unsigned char before_current_frame[4]
unsigned char list[4]
unsigned char face_dot[4]
unsigned char marker_outline[4]
unsigned char bone_pose_active[4]
unsigned char info_info[4]
unsigned char match[4]
unsigned char obcenter_dia
unsigned char act_marker[4]
unsigned char camera_path[4]
unsigned char nla_meta[4]
unsigned char info_selected_text[4]
uiPanelColors panelcolors
unsigned char handle_vect[4]
unsigned char syntaxr[4]
unsigned char handle_auto[4]
unsigned char extra_edge_len[4]
unsigned char list_title[4]
unsigned char speaker[4]
unsigned char view_overlay[4]
unsigned char wire_edit[4]
unsigned char skin_root[4]
unsigned char node_zone_repeat[4]
unsigned char after_current_frame[4]
unsigned char console_error[4]
unsigned char camera_passepartout[4]
unsigned char handle_auto_clamped[4]
unsigned char keytype_breakdown[4]
unsigned char bone_solid[4]
unsigned char clipping_border_3d[4]
unsigned char extra_edge_angle[4]
unsigned char header[4]
unsigned char face_select[4]
unsigned char mask[4]
unsigned char facedot_size
unsigned char loop_normal[4]
unsigned char nla_track[4]
unsigned char node_zone_foreach_geometry_element[4]
unsigned char nodeclass_vector[4]
unsigned char camera[4]
unsigned char button_text_hi[4]
unsigned char preview_stitch_face[4]
unsigned char freestyle_face_mark[4]
unsigned char nodeclass_layout[4]
unsigned char path_after[4]
unsigned char title[4]
unsigned char edge_facesel[4]
unsigned char button_title[4]
unsigned char face[4]
unsigned char bone_locked_weight[4]
unsigned char group[4]
unsigned char keyborder_select[4]
unsigned char extra_face_angle[4]
unsigned char tab_back[4]
unsigned char vertex_bevel[4]
unsigned char metadatatext[4]
unsigned char preview_stitch_edge[4]
unsigned char nodeclass_attribute[4]
unsigned char edge_width
unsigned char face_mode_select[4]
unsigned char freestyle_edge_mark[4]
unsigned char anim_preview_range[4]
unsigned char preview_back[4]
unsigned char gp_vertex[4]
unsigned char extra_face_area[4]
unsigned char handle_sel_align[4]
unsigned char lastsel_point[4]
unsigned char nurb_sel_vline[4]
unsigned char line_numbers[4]
unsigned char node_zone_simulation[4]
unsigned char preview_stitch_stitchable[4]
unsigned char console_cursor[4]
unsigned char text_strip[4]
unsigned char button_text[4]
unsigned char metadatabg[4]
unsigned char preview_stitch_unstitchable[4]
unsigned char meta[4]
unsigned char syntaxd[4]
unsigned char strip[4]
unsigned char nurb_sel_uline[4]
unsigned char info_property[4]
unsigned char info_selected[4]
unsigned char nurb_vline[4]
unsigned char bone_pose[4]
unsigned char edge_sharp[4]
unsigned char wire[4]
unsigned char shade1[4]
unsigned char handle_align[4]
unsigned char color_strip[4]
unsigned char vertex_active[4]
unsigned char preview_stitch_active[4]
unsigned char nodeclass_geometry[4]
unsigned char cframe[4]
unsigned char path_keyframe_before[4]
unsigned char nodeclass_script[4]
unsigned char tab_inactive[4]
unsigned char nodeclass_shader[4]
unsigned char time_marker_line[4]
unsigned char paint_curve_pivot[4]
unsigned char nodeclass_pattern[4]
unsigned char image[4]
unsigned char vertex_normal[4]
unsigned char nla_tweakdupli[4]
unsigned char info_debug_text[4]
unsigned char nla_transition[4]
unsigned char face_retopology[4]
unsigned char nla_sound_sel[4]
unsigned char grid_levels
unsigned char nla_sound[4]
unsigned char header_text[4]
unsigned char text_hi[4]
unsigned char uv_shadow[4]
unsigned char edited_object[4]
unsigned char button[4]
unsigned char grid[4]
unsigned char path_keyframe_after[4]
unsigned char keytype_generated[4]
unsigned char hilite[4]
unsigned char edge_seam[4]
unsigned char nla_transition_sel[4]
unsigned char info_error[4]
unsigned char nodeclass_output[4]
unsigned char info_operator[4]
unsigned char simulated_frames[4]
unsigned char header_title[4]
unsigned char handle_sel_auto_clamped[4]
unsigned char info_operator_text[4]
unsigned char back[4]
unsigned char tab_active[4]
unsigned char console_output[4]
unsigned char act_spline[4]
unsigned char info_info_text[4]
unsigned char time_gp_keyframe[4]
unsigned char lamp[4]
unsigned char handle_vertex_select[4]
unsigned char handle_sel_free[4]
unsigned char audio[4]
unsigned char nurb_uline[4]
unsigned char keytype_movehold[4]
unsigned char info_debug[4]
unsigned char nodeclass_texture[4]
unsigned char paint_curve_handle[4]
unsigned char face_front[4]
unsigned char handle_vertex[4]
unsigned char keyborder[4]
unsigned char execution_buts[4]
unsigned char row_alternate[4]
unsigned char ds_channel[4]
unsigned char nla_tweaking[4]
unsigned char list_text_hi[4]
unsigned char console_input[4]
unsigned char nla_meta_sel[4]
unsigned char strip_select[4]
unsigned char info_warning_text[4]
unsigned char tab_outline[4]
unsigned char info_error_text[4]
unsigned char selected_strip[4]
unsigned char keytype_generated_select[4]
unsigned char keytype_jitter_select[4]
unsigned char scene[4]
unsigned char syntaxb[4]
unsigned char gizmo_primary[4]
unsigned char editor_border[4]
unsigned char xaxis[4]
unsigned char transparent_checker_secondary[4]
short menu_shadow_width
unsigned char icon_modifier[4]
unsigned char zaxis[4]
unsigned char editor_outline_active[4]
unsigned char icon_shading[4]
unsigned char transparent_checker_size
unsigned char gizmo_view_align[4]
unsigned char icon_folder[4]
uiWidgetColors wcol_text
unsigned char icon_scene[4]
unsigned char gizmo_hi[4]
unsigned char editor_outline[4]
unsigned char gizmo_secondary[4]
unsigned char icon_object[4]
unsigned char gizmo_a[4]
uiWidgetColors wcol_scroll
unsigned char icon_collection[4]
unsigned char widget_text_cursor[4]
unsigned char gizmo_b[4]
unsigned char widget_emboss[4]
unsigned char transparent_checker_primary[4]
unsigned char icon_autokey[4]
unsigned char yaxis[4]
unsigned char icon_object_data[4]
bTheme * theme
ThemeSpace space_sequencer
int active_theme_area
ThemeSpace space_clip
ThemeSpace space_topbar
ThemeSpace space_action
ThemeSpace space_view3d
ThemeSpace space_properties
ThemeSpace space_outliner
ThemeSpace space_nla
ThemeSpace space_graph
ThemeSpace space_preferences
ThemeSpace space_image
ThemeSpace space_node
ThemeSpace space_console
ThemeSpace space_spreadsheet
char name[64]
ThemeSpace space_text
ThemeSpace space_info
ThemeSpace space_statusbar
ThemeSpace space_file
unsigned char sub_back[4]
unsigned char back[4]
unsigned char header[4]
unsigned char text[4]
unsigned char item[4]
unsigned char text_sel[4]