1 /* 2 * This program is free software; you can redistribute it and/or 3 * modify it under the terms of the GNU General Public License 4 * as published by the Free Software Foundation; either version 2 5 * of the License, or (at your option) any later version. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software Foundation, 14 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 15 * 16 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. 17 * All rights reserved. 18 */ 19 20 /** \file 21 * \ingroup editorui 22 */ 23 24 #pragma once 25 26 #include "BLI_sys_types.h" 27 28 /* Define icon enum. */ 29 #define DEF_ICON(name) ICON_##name, 30 #define DEF_ICON_VECTOR(name) ICON_##name, 31 #define DEF_ICON_COLOR(name) ICON_##name, 32 #define DEF_ICON_BLANK(name) ICON_BLANK_##name, 33 34 typedef enum { 35 /* ui */ 36 #include "UI_icons.h" 37 BIFICONID_LAST, 38 } BIFIconID; 39 40 #define BIFICONID_FIRST (ICON_NONE) 41 42 /* use to denote intentionally unset theme color */ 43 #define TH_UNDEFINED -1 44 45 #ifdef __cplusplus 46 extern "C" { 47 #endif 48 49 typedef enum ThemeColorID { 50 TH_REDALERT, 51 52 TH_THEMEUI, 53 /* Common colors among spaces. */ 54 55 TH_BACK, 56 /** Use when 'TH_SHOW_BACK_GRAD' is set (the lower, darker color). */ 57 TH_BACK_GRAD, 58 TH_TEXT, 59 TH_TEXT_HI, 60 TH_TITLE, 61 TH_TAB_ACTIVE, 62 TH_TAB_INACTIVE, 63 TH_TAB_BACK, 64 TH_TAB_OUTLINE, 65 66 TH_HEADER, 67 TH_HEADERDESEL, 68 TH_HEADER_TEXT, 69 TH_HEADER_TEXT_HI, 70 71 /* panels */ 72 TH_PANEL_HEADER, 73 TH_PANEL_BACK, 74 TH_PANEL_SUB_BACK, 75 76 TH_BUTBACK, 77 TH_BUTBACK_TEXT, 78 TH_BUTBACK_TEXT_HI, 79 80 TH_SHADE1, 81 TH_SHADE2, 82 TH_HILITE, 83 84 TH_GRID, 85 TH_WIRE, 86 TH_WIRE_INNER, 87 TH_WIRE_EDIT, 88 TH_SELECT, 89 TH_ACTIVE, 90 TH_GROUP, 91 TH_GROUP_ACTIVE, 92 TH_TRANSFORM, 93 TH_VERTEX, 94 TH_VERTEX_SELECT, 95 TH_VERTEX_ACTIVE, 96 TH_VERTEX_UNREFERENCED, 97 TH_VERTEX_SIZE, 98 TH_OUTLINE_WIDTH, 99 TH_OBCENTER_DIA, 100 TH_EDGE, 101 TH_EDGE_SELECT, 102 TH_EDGE_SEAM, 103 TH_EDGE_FACESEL, 104 TH_FACE, 105 TH_FACE_SELECT, 106 TH_FACE_BACK, 107 TH_FACE_FRONT, 108 TH_NORMAL, 109 TH_VNORMAL, 110 TH_LNORMAL, 111 TH_FACE_DOT, 112 TH_FACEDOT_SIZE, 113 TH_CFRAME, 114 TH_TIME_SCRUB_BACKGROUND, 115 TH_TIME_MARKER_LINE, 116 TH_TIME_MARKER_LINE_SELECTED, 117 TH_TIME_KEYFRAME, 118 TH_TIME_GP_KEYFRAME, 119 TH_NURB_ULINE, 120 TH_NURB_VLINE, 121 TH_NURB_SEL_ULINE, 122 TH_NURB_SEL_VLINE, 123 124 /* this eight colors should be in one block */ 125 TH_HANDLE_FREE, 126 TH_HANDLE_AUTO, 127 TH_HANDLE_VECT, 128 TH_HANDLE_ALIGN, 129 TH_HANDLE_AUTOCLAMP, 130 TH_HANDLE_SEL_FREE, 131 TH_HANDLE_SEL_AUTO, 132 TH_HANDLE_SEL_VECT, 133 TH_HANDLE_SEL_ALIGN, 134 TH_HANDLE_SEL_AUTOCLAMP, 135 136 TH_ACTIVE_SPLINE, 137 TH_ACTIVE_VERT, /* equivalent of TH_EDITMESH_ACTIVE for splines */ 138 139 TH_SYNTAX_B, 140 TH_SYNTAX_V, 141 TH_SYNTAX_R, 142 TH_SYNTAX_C, 143 TH_SYNTAX_L, 144 TH_SYNTAX_D, 145 TH_SYNTAX_N, 146 TH_SYNTAX_S, 147 TH_LINENUMBERS, 148 149 TH_BONE_SOLID, 150 TH_BONE_POSE, 151 TH_BONE_POSE_ACTIVE, 152 TH_BONE_LOCKED_WEIGHT, 153 154 TH_STRIP, 155 TH_STRIP_SELECT, 156 157 TH_KEYTYPE_KEYFRAME, /* KEYTYPES */ 158 TH_KEYTYPE_KEYFRAME_SELECT, 159 TH_KEYTYPE_EXTREME, 160 TH_KEYTYPE_EXTREME_SELECT, 161 TH_KEYTYPE_BREAKDOWN, 162 TH_KEYTYPE_BREAKDOWN_SELECT, 163 TH_KEYTYPE_JITTER, 164 TH_KEYTYPE_JITTER_SELECT, 165 TH_KEYTYPE_MOVEHOLD, 166 TH_KEYTYPE_MOVEHOLD_SELECT, 167 168 TH_KEYBORDER, 169 TH_KEYBORDER_SELECT, 170 171 TH_LIGHT, 172 TH_SPEAKER, 173 TH_CAMERA, 174 TH_EMPTY, 175 176 TH_NODE, 177 TH_NODE_INPUT, 178 TH_NODE_OUTPUT, 179 TH_NODE_COLOR, 180 TH_NODE_FILTER, 181 TH_NODE_VECTOR, 182 TH_NODE_TEXTURE, 183 TH_NODE_PATTERN, 184 TH_NODE_SCRIPT, 185 TH_NODE_LAYOUT, 186 TH_NODE_SHADER, 187 TH_NODE_INTERFACE, 188 TH_NODE_CONVERTOR, 189 TH_NODE_GROUP, 190 TH_NODE_FRAME, 191 TH_NODE_MATTE, 192 TH_NODE_DISTORT, 193 194 TH_CONSOLE_OUTPUT, 195 TH_CONSOLE_INPUT, 196 TH_CONSOLE_INFO, 197 TH_CONSOLE_ERROR, 198 TH_CONSOLE_CURSOR, 199 TH_CONSOLE_SELECT, 200 201 TH_SEQ_MOVIE, 202 TH_SEQ_MOVIECLIP, 203 TH_SEQ_MASK, 204 TH_SEQ_IMAGE, 205 TH_SEQ_SCENE, 206 TH_SEQ_AUDIO, 207 TH_SEQ_EFFECT, 208 TH_SEQ_META, 209 TH_SEQ_TEXT, 210 TH_SEQ_PREVIEW, 211 TH_SEQ_COLOR, 212 TH_SEQ_ACTIVE, 213 TH_SEQ_SELECTED, 214 215 TH_EDGE_SHARP, 216 TH_EDITMESH_ACTIVE, 217 218 TH_HANDLE_VERTEX, 219 TH_HANDLE_VERTEX_SELECT, 220 TH_HANDLE_VERTEX_SIZE, 221 222 TH_GP_VERTEX, 223 TH_GP_VERTEX_SELECT, 224 TH_GP_VERTEX_SIZE, 225 226 TH_DOPESHEET_CHANNELOB, 227 TH_DOPESHEET_CHANNELSUBOB, 228 TH_DOPESHEET_IPOLINE, 229 230 TH_PREVIEW_BACK, 231 232 TH_EDGE_CREASE, 233 234 TH_DRAWEXTRA_EDGELEN, 235 TH_DRAWEXTRA_EDGEANG, 236 TH_DRAWEXTRA_FACEAREA, 237 TH_DRAWEXTRA_FACEANG, 238 239 TH_NODE_CURVING, 240 TH_NODE_GRID_LEVELS, 241 242 TH_MARKER_OUTLINE, 243 TH_MARKER, 244 TH_ACT_MARKER, 245 TH_SEL_MARKER, 246 TH_BUNDLE_SOLID, 247 TH_DIS_MARKER, 248 TH_PATH_BEFORE, 249 TH_PATH_AFTER, 250 TH_PATH_KEYFRAME_BEFORE, 251 TH_PATH_KEYFRAME_AFTER, 252 TH_CAMERA_PATH, 253 TH_LOCK_MARKER, 254 255 TH_STITCH_PREVIEW_FACE, 256 TH_STITCH_PREVIEW_EDGE, 257 TH_STITCH_PREVIEW_VERT, 258 TH_STITCH_PREVIEW_STITCHABLE, 259 TH_STITCH_PREVIEW_UNSTITCHABLE, 260 TH_STITCH_PREVIEW_ACTIVE, 261 262 TH_PAINT_CURVE_HANDLE, 263 TH_PAINT_CURVE_PIVOT, 264 265 TH_UV_SHADOW, 266 267 TH_FREESTYLE_EDGE_MARK, 268 TH_FREESTYLE_FACE_MARK, 269 270 TH_MATCH, /* highlight color for search matches */ 271 TH_SELECT_HIGHLIGHT, /* highlight color for selected outliner item */ 272 TH_SELECT_ACTIVE, /* highlight color for active outliner item */ 273 TH_SELECTED_OBJECT, /* selected object color for outliner */ 274 TH_ACTIVE_OBJECT, /* active object color for outliner */ 275 TH_EDITED_OBJECT, /* edited object color for outliner */ 276 TH_ROW_ALTERNATE, /* overlay on every other row */ 277 278 TH_SKIN_ROOT, 279 280 TH_ANIM_ACTIVE, /* active action */ 281 TH_ANIM_INACTIVE, /* no active action */ 282 TH_ANIM_PREVIEW_RANGE, /* preview range overlay */ 283 284 TH_ICON_SCENE, 285 TH_ICON_COLLECTION, 286 TH_ICON_OBJECT, 287 TH_ICON_OBJECT_DATA, 288 TH_ICON_MODIFIER, 289 TH_ICON_SHADING, 290 TH_ICON_FOLDER, 291 TH_ICON_FUND, 292 293 TH_SCROLL_TEXT, 294 295 TH_NLA_TWEAK, /* 'tweaking' track in NLA */ 296 TH_NLA_TWEAK_DUPLI, /* error/warning flag for other strips referencing dupli strip */ 297 298 TH_NLA_TRACK, 299 TH_NLA_TRANSITION, 300 TH_NLA_TRANSITION_SEL, 301 TH_NLA_META, 302 TH_NLA_META_SEL, 303 TH_NLA_SOUND, 304 TH_NLA_SOUND_SEL, 305 306 TH_WIDGET_EMBOSS, 307 TH_WIDGET_TEXT_CURSOR, 308 TH_EDITOR_OUTLINE, 309 310 TH_TRANSPARENT_CHECKER_PRIMARY, 311 TH_TRANSPARENT_CHECKER_SECONDARY, 312 TH_TRANSPARENT_CHECKER_SIZE, 313 314 TH_AXIS_X, /* X/Y/Z Axis */ 315 TH_AXIS_Y, 316 TH_AXIS_Z, 317 318 TH_GIZMO_HI, 319 TH_GIZMO_PRIMARY, 320 TH_GIZMO_SECONDARY, 321 TH_GIZMO_VIEW_ALIGN, 322 TH_GIZMO_A, 323 TH_GIZMO_B, 324 325 TH_BACKGROUND_TYPE, 326 327 TH_INFO_SELECTED, 328 TH_INFO_SELECTED_TEXT, 329 TH_INFO_ERROR, 330 TH_INFO_ERROR_TEXT, 331 TH_INFO_WARNING, 332 TH_INFO_WARNING_TEXT, 333 TH_INFO_INFO, 334 TH_INFO_INFO_TEXT, 335 TH_INFO_DEBUG, 336 TH_INFO_DEBUG_TEXT, 337 TH_INFO_PROPERTY, 338 TH_INFO_PROPERTY_TEXT, 339 TH_INFO_OPERATOR, 340 TH_INFO_OPERATOR_TEXT, 341 TH_VIEW_OVERLAY, 342 343 TH_V3D_CLIPPING_BORDER, 344 345 TH_METADATA_BG, 346 TH_METADATA_TEXT, 347 348 TH_EDGE_BEVEL, 349 TH_VERTEX_BEVEL, 350 } ThemeColorID; 351 352 /* specific defines per space should have higher define values */ 353 354 struct bTheme; 355 356 struct bThemeState { 357 struct bTheme *theme; 358 int spacetype, regionid; 359 }; 360 361 /* THE CODERS API FOR THEMES: */ 362 363 /* returns one value, not scaled */ 364 float UI_GetThemeValuef(int colorid); 365 int UI_GetThemeValue(int colorid); 366 367 float UI_GetThemeValueTypef(int colorid, int spacetype); 368 int UI_GetThemeValueType(int colorid, int spacetype); 369 370 /* get three color values, scaled to 0.0-1.0 range */ 371 void UI_GetThemeColor3fv(int colorid, float col[3]); 372 void UI_GetThemeColorBlend3ubv(int colorid1, int colorid2, float fac, unsigned char col[3]); 373 void UI_GetThemeColorBlend3f(int colorid1, int colorid2, float fac, float r_col[3]); 374 void UI_GetThemeColorBlend4f(int colorid1, int colorid2, float fac, float r_col[4]); 375 /* get the color, range 0.0-1.0, complete with shading offset */ 376 void UI_GetThemeColorShade3fv(int colorid, int offset, float col[3]); 377 void UI_GetThemeColorShade3ubv(int colorid, int offset, unsigned char col[3]); 378 void UI_GetThemeColorShade4ubv(int colorid, int offset, unsigned char col[4]); 379 380 /* get three color values, range 0-255, 381 * complete with shading offset for the RGB components and blending. */ 382 void UI_GetThemeColorBlendShade3ubv( 383 int colorid1, int colorid2, float fac, int offset, unsigned char col[3]); 384 385 /* get four color values, scaled to 0.0-1.0 range */ 386 void UI_GetThemeColor4fv(int colorid, float col[4]); 387 388 /* get four color values from specified space type, scaled to 0.0-1.0 range */ 389 void UI_GetThemeColorType4fv(int colorid, int spacetype, float col[4]); 390 391 /* get four color values, range 0.0-1.0, complete with shading offset for the RGB components */ 392 void UI_GetThemeColorShade4fv(int colorid, int offset, float col[4]); 393 void UI_GetThemeColorShadeAlpha4fv(int colorid, int coloffset, int alphaoffset, float col[4]); 394 395 /* get four color values ranged between 0 and 255; includes the alpha channel */ 396 void UI_GetThemeColorShadeAlpha4ubv(int colorid, 397 int coloffset, 398 int alphaoffset, 399 unsigned char col[4]); 400 401 /* get four color values, range 0.0-1.0, 402 * complete with shading offset for the RGB components and blending. */ 403 void UI_GetThemeColorBlendShade3fv( 404 int colorid1, int colorid2, float fac, int offset, float col[3]); 405 void UI_GetThemeColorBlendShade4fv( 406 int colorid1, int colorid2, float fac, int offset, float col[4]); 407 408 /* get the 3 or 4 byte values */ 409 void UI_GetThemeColor3ubv(int colorid, unsigned char col[3]); 410 void UI_GetThemeColor4ubv(int colorid, unsigned char col[4]); 411 412 /* get a theme color from specified space type */ 413 void UI_GetThemeColorType3fv(int colorid, int spacetype, float col[3]); 414 void UI_GetThemeColorType3ubv(int colorid, int spacetype, unsigned char col[3]); 415 void UI_GetThemeColorType4ubv(int colorid, int spacetype, unsigned char col[4]); 416 417 /* get theme color for coloring monochrome icons */ 418 bool UI_GetIconThemeColor4ubv(int colorid, unsigned char col[4]); 419 420 /* shade a 3 byte color (same as UI_GetColorPtrBlendShade3ubv with 0.0 factor) */ 421 void UI_GetColorPtrShade3ubv(const unsigned char cp1[3], unsigned char col[3], int offset); 422 423 /* get a 3 byte color, blended and shaded between two other char color pointers */ 424 void UI_GetColorPtrBlendShade3ubv(const unsigned char cp1[3], 425 const unsigned char cp2[3], 426 unsigned char col[3], 427 float fac, 428 int offset); 429 430 /* sets the font color 431 * (for anything fancy use UI_GetThemeColor[Fancy] then BLF_color) */ 432 void UI_FontThemeColor(int fontid, int colorid); 433 434 /* clear the framebuffer using the input colorid */ 435 void UI_ThemeClearColor(int colorid); 436 437 /* internal (blender) usage only, for init and set active */ 438 void UI_SetTheme(int spacetype, int regionid); 439 440 /* get current theme */ 441 struct bTheme *UI_GetTheme(void); 442 443 void UI_Theme_Store(struct bThemeState *theme_state); 444 void UI_Theme_Restore(struct bThemeState *theme_state); 445 446 /* return shadow width outside menus and popups */ 447 int UI_ThemeMenuShadowWidth(void); 448 449 /* only for buttons in theme editor! */ 450 const unsigned char *UI_ThemeGetColorPtr(struct bTheme *btheme, int spacetype, int colorid); 451 452 void UI_make_axis_color(const unsigned char *src_col, unsigned char *dst_col, const char axis); 453 454 #ifdef __cplusplus 455 } 456 #endif 457