diff options
author | Julian Eisel <eiseljulian@gmail.com> | 2019-08-05 19:25:04 +0300 |
---|---|---|
committer | Julian Eisel <eiseljulian@gmail.com> | 2019-08-05 19:25:04 +0300 |
commit | d20393c8bdf5457e5fd89847563bc0c4471f6254 (patch) | |
tree | bc0da1a1d8b2fcb6d3ec607028e90977227b0933 | |
parent | eee5ba5cc32cb1f373a2155356eeea165d15af3a (diff) |
Cover all UI_GetTheme calls in draw manager
Previous commit wasn't nearly covering all of them.
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_lookdev.c | 2 | ||||
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c | 14 | ||||
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_draw_utils.c | 4 | ||||
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_engine.c | 2 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_data.c | 8 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_anim_viz.c | 4 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_armature.c | 58 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_cache.c | 2 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_common.c | 215 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_common.h | 13 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_view.c | 6 | ||||
-rw-r--r-- | source/blender/draw/modes/edit_mesh_mode_text.c | 13 | ||||
-rw-r--r-- | source/blender/draw/modes/object_mode.c | 20 |
13 files changed, 212 insertions, 149 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_lookdev.c b/source/blender/draw/engines/eevee/eevee_lookdev.c index e6e699bef10..21158d98b2f 100644 --- a/source/blender/draw/engines/eevee/eevee_lookdev.c +++ b/source/blender/draw/engines/eevee/eevee_lookdev.c @@ -142,7 +142,7 @@ void EEVEE_lookdev_cache_init(EEVEE_Data *vedata, stl->g_data->light_cache = stl->lookdev_lightcache; static float background_color[4]; - UI_GetThemeColor4fv(TH_BACK, background_color); + DRW_theme_color_get_4fv(TH_BACK, background_color); /* XXX: Really quick conversion to avoid washed out background. * Needs to be addressed properly (color managed using ocio). */ srgb_to_linearrgb_v4(background_color, background_color); diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c index d5f8d062593..4ccec402a2f 100644 --- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c +++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c @@ -593,16 +593,16 @@ GPUBatch *gpencil_get_buffer_ctrlpoint_geom(bGPdata *gpd) float color[4]; float position[3]; if (ts->gp_sculpt.guide.reference_point == GP_GUIDE_REF_CUSTOM) { - UI_GetThemeColor4fv(TH_GIZMO_PRIMARY, color); + DRW_theme_color_get_4fv(TH_GIZMO_PRIMARY, color); copy_v3_v3(position, ts->gp_sculpt.guide.location); } else if (ts->gp_sculpt.guide.reference_point == GP_GUIDE_REF_OBJECT && ts->gp_sculpt.guide.reference_object != NULL) { - UI_GetThemeColor4fv(TH_GIZMO_SECONDARY, color); + DRW_theme_color_get_4fv(TH_GIZMO_SECONDARY, color); copy_v3_v3(position, ts->gp_sculpt.guide.reference_object->loc); } else { - UI_GetThemeColor4fv(TH_REDALERT, color); + DRW_theme_color_get_4fv(TH_REDALERT, color); copy_v3_v3(position, scene->cursor.location); } GPU_vertbuf_attr_set(vbo, pos_id, idx, position); @@ -714,7 +714,7 @@ void gpencil_get_edit_geom(struct GpencilBatchCacheElem *be, * they stand out more. * - We use the theme setting for size of the unselected verts */ - float bsize = UI_GetThemeValuef(TH_GP_VERTEX_SIZE); + float bsize = DRW_theme_value_get_f(TH_GP_VERTEX_SIZE); float vsize; if ((int)bsize > 8) { vsize = 10.0f; @@ -726,11 +726,11 @@ void gpencil_get_edit_geom(struct GpencilBatchCacheElem *be, /* for now, we assume that the base color of the points is not too close to the real color */ float selectColor[4]; - UI_GetThemeColor3fv(TH_GP_VERTEX_SELECT, selectColor); + DRW_theme_color_get_3fv(TH_GP_VERTEX_SELECT, selectColor); selectColor[3] = alpha; float unselectColor[4]; - UI_GetThemeColor3fv(TH_GP_VERTEX, unselectColor); + DRW_theme_color_get_3fv(TH_GP_VERTEX, unselectColor); unselectColor[3] = alpha; if (be->vbo == NULL) { @@ -813,7 +813,7 @@ void gpencil_get_edlin_geom(struct GpencilBatchCacheElem *be, } float selectColor[4]; - UI_GetThemeColor3fv(TH_GP_VERTEX_SELECT, selectColor); + DRW_theme_color_get_3fv(TH_GP_VERTEX_SELECT, selectColor); selectColor[3] = alpha; float linecolor[4]; copy_v4_v4(linecolor, gpd->line_color); diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c index 9b755217946..be6a8e72a8b 100644 --- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c +++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c @@ -285,7 +285,7 @@ static void set_wireframe_color(Object *ob, /* if fill and wire, use background color */ if ((is_fill) && (stl->shgroups[id].shading_type[0] == OB_WIRE)) { if (v3d->shading.background_type == V3D_SHADING_BACKGROUND_THEME) { - UI_GetThemeColor4fv(TH_BACK, stl->shgroups[id].wire_color); + DRW_theme_color_get_4fv(TH_BACK, stl->shgroups[id].wire_color); stl->shgroups[id].wire_color[3] = 1.0f; } else if (v3d->shading.background_type == V3D_SHADING_BACKGROUND_WORLD) { @@ -307,7 +307,7 @@ static void set_wireframe_color(Object *ob, switch (type) { case V3D_SHADING_SINGLE_COLOR: { if (stl->shgroups[id].shading_type[0] == OB_WIRE) { - UI_GetThemeColor4fv(TH_WIRE, color); + DRW_theme_color_get_4fv(TH_WIRE, color); } else { copy_v3_v3(color, v3d->shading.single_color); diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c index 16162645f3d..a4a51dab714 100644 --- a/source/blender/draw/engines/gpencil/gpencil_engine.c +++ b/source/blender/draw/engines/gpencil/gpencil_engine.c @@ -1117,7 +1117,7 @@ void GPENCIL_draw_scene(void *ved) /* active select flag and selection color */ if (!is_render) { - UI_GetThemeColorShadeAlpha4fv( + DRW_theme_color_shade_alpha_get_4fv( (ob == draw_ctx->obact) ? TH_ACTIVE : TH_SELECT, 0, -40, stl->storage->select_color); } stl->storage->do_select_outline = ((overlay) && (ob->base_flag & BASE_SELECTED) && diff --git a/source/blender/draw/engines/workbench/workbench_data.c b/source/blender/draw/engines/workbench/workbench_data.c index 743a1fc42b6..d69083a5a27 100644 --- a/source/blender/draw/engines/workbench/workbench_data.c +++ b/source/blender/draw/engines/workbench/workbench_data.c @@ -92,9 +92,9 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd) copy_v3_v3(wd->background_color_high, v3d->shading.background_color); } else if (v3d) { - UI_GetThemeColor3fv(UI_GetThemeValue(TH_SHOW_BACK_GRAD) ? TH_BACK_GRAD : TH_BACK, - wd->background_color_low); - UI_GetThemeColor3fv(TH_BACK, wd->background_color_high); + DRW_theme_color_get_3fv(DRW_theme_value_get_i(TH_SHOW_BACK_GRAD) ? TH_BACK_GRAD : TH_BACK, + wd->background_color_low); + DRW_theme_color_get_3fv(TH_BACK, wd->background_color_high); /* XXX: Really quick conversion to avoid washed out background. * Needs to be addressed properly (color managed using ocio). */ @@ -125,7 +125,7 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd) RegionView3D *rv3d = draw_ctx->rv3d; if (rv3d->rflag & RV3D_CLIPPING) { wpd->world_clip_planes = rv3d->clip; - UI_GetThemeColor4fv(TH_V3D_CLIPPING_BORDER, wpd->world_clip_planes_color); + DRW_theme_color_get_4fv(TH_V3D_CLIPPING_BORDER, wpd->world_clip_planes_color); if (wpd->use_color_management) { srgb_to_linearrgb_v3_v3(wpd->world_clip_planes_color, wpd->world_clip_planes_color); } diff --git a/source/blender/draw/intern/draw_anim_viz.c b/source/blender/draw/intern/draw_anim_viz.c index 72459309133..e62a6c0e19f 100644 --- a/source/blender/draw/intern/draw_anim_viz.c +++ b/source/blender/draw/intern/draw_anim_viz.c @@ -238,8 +238,8 @@ static void MPATH_cache_motion_path(MPATH_PassList *psl, if ((avs->path_viewflag & (MOTIONPATH_VIEW_FNUMS)) || (show_kf_no && show_keyframes)) { int i; uchar col[4], col_kf[4]; - UI_GetThemeColor3ubv(TH_TEXT_HI, col); - UI_GetThemeColor3ubv(TH_VERTEX_SELECT, col_kf); + DRW_theme_color_get_3ubv(TH_TEXT_HI, col); + DRW_theme_color_get_3ubv(TH_VERTEX_SELECT, col_kf); col[3] = col_kf[3] = 255; bMotionPathVert *mpv; diff --git a/source/blender/draw/intern/draw_armature.c b/source/blender/draw/intern/draw_armature.c index 30e51333f0f..96592564632 100644 --- a/source/blender/draw/intern/draw_armature.c +++ b/source/blender/draw/intern/draw_armature.c @@ -712,23 +712,23 @@ static bool set_pchan_color(short colCode, } else { if ((boneflag & BONE_DRAW_ACTIVE) && (boneflag & BONE_SELECTED)) { - UI_GetThemeColor4fv(TH_BONE_POSE_ACTIVE, fcolor); + DRW_theme_color_get_4fv(TH_BONE_POSE_ACTIVE, fcolor); } else if (boneflag & BONE_DRAW_ACTIVE) { - UI_GetThemeColorBlendShade4fv(TH_WIRE, TH_BONE_POSE, 0.15f, 0, fcolor); + DRW_theme_color_blend_shade_get_4fv(TH_WIRE, TH_BONE_POSE, 0.15f, 0, fcolor); } else if (boneflag & BONE_SELECTED) { - UI_GetThemeColor4fv(TH_BONE_POSE, fcolor); + DRW_theme_color_get_4fv(TH_BONE_POSE, fcolor); } else { - UI_GetThemeColor4fv(TH_WIRE, fcolor); + DRW_theme_color_get_4fv(TH_WIRE, fcolor); } } return true; } case PCHAN_COLOR_SOLID: { - UI_GetThemeColor4fv(TH_BONE_SOLID, fcolor); + DRW_theme_color_get_4fv(TH_BONE_SOLID, fcolor); if (bcolor) { float solid_bcolor[3]; @@ -781,13 +781,13 @@ static bool set_pchan_color(short colCode, } else { if (boneflag & BONE_DRAW_ACTIVE) { - UI_GetThemeColorShade4fv(TH_BONE_POSE, 40, fcolor); + DRW_theme_color_shade_get_4fv(TH_BONE_POSE, 40, fcolor); } else if (boneflag & BONE_SELECTED) { - UI_GetThemeColor4fv(TH_BONE_POSE, fcolor); + DRW_theme_color_get_4fv(TH_BONE_POSE, fcolor); } else { - UI_GetThemeColor4fv(TH_BONE_SOLID, fcolor); + DRW_theme_color_get_4fv(TH_BONE_SOLID, fcolor); } } @@ -814,13 +814,13 @@ static bool set_pchan_color(short colCode, } else { if (boneflag & BONE_DRAW_ACTIVE) { - UI_GetThemeColorShade4fv(TH_BONE_POSE, 10, fcolor); + DRW_theme_color_shade_get_4fv(TH_BONE_POSE, 10, fcolor); } else if (boneflag & BONE_SELECTED) { - UI_GetThemeColorShade4fv(TH_BONE_POSE, -30, fcolor); + DRW_theme_color_shade_get_4fv(TH_BONE_POSE, -30, fcolor); } else { - UI_GetThemeColorShade4fv(TH_BONE_SOLID, -30, fcolor); + DRW_theme_color_shade_get_4fv(TH_BONE_SOLID, -30, fcolor); } } break; @@ -842,7 +842,7 @@ static bool set_pchan_color(short colCode, rgba_char_args_set((char *)cp, 0, 255, 120, 255); } else if (constflag) { - UI_GetThemeColor4ubv(TH_BONE_POSE, cp); + DRW_theme_color_get_4ubv(TH_BONE_POSE, cp); } /* PCHAN_HAS_ACTION */ rgb_uchar_to_float(fcolor, cp); @@ -854,7 +854,7 @@ static bool set_pchan_color(short colCode, fcolor[3] = 204.f / 255.f; } else { - UI_GetThemeColorShade4fv(TH_BACK, -30, fcolor); + DRW_theme_color_shade_get_4fv(TH_BACK, -30, fcolor); } } @@ -882,22 +882,22 @@ static void update_color(const Object *ob, const float const_color[4]) #define NO_ALPHA(c) (((c)[3] = 1.0f), (c)) - UI_GetThemeColor3fv(TH_SELECT, NO_ALPHA(g_theme.select_color)); - UI_GetThemeColorShade3fv(TH_EDGE_SELECT, 60, NO_ALPHA(g_theme.edge_select_color)); - UI_GetThemeColorShade3fv(TH_EDGE_SELECT, -20, NO_ALPHA(g_theme.bone_select_color)); - UI_GetThemeColor3fv(TH_WIRE, NO_ALPHA(g_theme.wire_color)); - UI_GetThemeColor3fv(TH_WIRE_EDIT, NO_ALPHA(g_theme.wire_edit_color)); - UI_GetThemeColor3fv(TH_BONE_SOLID, NO_ALPHA(g_theme.bone_solid_color)); - UI_GetThemeColorBlendShade3fv( + DRW_theme_color_get_3fv(TH_SELECT, NO_ALPHA(g_theme.select_color)); + DRW_theme_color_shade_get_3fv(TH_EDGE_SELECT, 60, NO_ALPHA(g_theme.edge_select_color)); + DRW_theme_color_shade_get_3fv(TH_EDGE_SELECT, -20, NO_ALPHA(g_theme.bone_select_color)); + DRW_theme_color_get_3fv(TH_WIRE, NO_ALPHA(g_theme.wire_color)); + DRW_theme_color_get_3fv(TH_WIRE_EDIT, NO_ALPHA(g_theme.wire_edit_color)); + DRW_theme_color_get_3fv(TH_BONE_SOLID, NO_ALPHA(g_theme.bone_solid_color)); + DRW_theme_color_blend_shade_get_3fv( TH_WIRE_EDIT, TH_EDGE_SELECT, 0.15f, 0, NO_ALPHA(g_theme.bone_active_unselect_color)); - UI_GetThemeColor3fv(TH_BONE_POSE, NO_ALPHA(g_theme.bone_pose_color)); - UI_GetThemeColor3fv(TH_BONE_POSE_ACTIVE, NO_ALPHA(g_theme.bone_pose_active_color)); - UI_GetThemeColorBlendShade3fv( + DRW_theme_color_get_3fv(TH_BONE_POSE, NO_ALPHA(g_theme.bone_pose_color)); + DRW_theme_color_get_3fv(TH_BONE_POSE_ACTIVE, NO_ALPHA(g_theme.bone_pose_active_color)); + DRW_theme_color_blend_shade_get_3fv( TH_WIRE, TH_BONE_POSE, 0.15f, 0, NO_ALPHA(g_theme.bone_pose_active_unselect_color)); - UI_GetThemeColor3fv(TH_TEXT_HI, NO_ALPHA(g_theme.text_hi_color)); - UI_GetThemeColor3fv(TH_TEXT, NO_ALPHA(g_theme.text_color)); - UI_GetThemeColor3fv(TH_VERTEX_SELECT, NO_ALPHA(g_theme.vertex_select_color)); - UI_GetThemeColor3fv(TH_VERTEX, NO_ALPHA(g_theme.vertex_color)); + DRW_theme_color_get_3fv(TH_TEXT_HI, NO_ALPHA(g_theme.text_hi_color)); + DRW_theme_color_get_3fv(TH_TEXT, NO_ALPHA(g_theme.text_color)); + DRW_theme_color_get_3fv(TH_VERTEX_SELECT, NO_ALPHA(g_theme.vertex_select_color)); + DRW_theme_color_get_3fv(TH_VERTEX, NO_ALPHA(g_theme.vertex_color)); #undef NO_ALPHA } @@ -1948,7 +1948,7 @@ static void draw_armature_edit(Object *ob) /* Draw names of bone */ if (show_text && (arm->flag & ARM_DRAWNAMES)) { uchar color[4]; - UI_GetThemeColor4ubv((eBone->flag & BONE_SELECTED) ? TH_TEXT_HI : TH_TEXT, color); + DRW_theme_color_get_4ubv((eBone->flag & BONE_SELECTED) ? TH_TEXT_HI : TH_TEXT, color); float vec[3]; mid_v3_v3v3(vec, eBone->head, eBone->tail); @@ -2094,7 +2094,7 @@ static void draw_armature_pose(Object *ob, const float const_color[4]) /* Draw names of bone */ if (show_text && (arm->flag & ARM_DRAWNAMES)) { uchar color[4]; - UI_GetThemeColor4ubv( + DRW_theme_color_get_4ubv( (arm->flag & ARM_POSEMODE) && (bone->flag & BONE_SELECTED) ? TH_TEXT_HI : TH_TEXT, color); float vec[3]; diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c index e2e98a2db5a..03f9ca3a59c 100644 --- a/source/blender/draw/intern/draw_cache.c +++ b/source/blender/draw/intern/draw_cache.c @@ -3951,7 +3951,7 @@ GPUBatch *DRW_cache_cursor_get(bool crosshair_lines) if (crosshair_lines) { uchar crosshair_color[3]; - UI_GetThemeColor3ubv(TH_VIEW_OVERLAY, crosshair_color); + DRW_theme_color_get_3ubv(TH_VIEW_OVERLAY, crosshair_color); GPU_indexbuf_add_primitive_restart(&elb); diff --git a/source/blender/draw/intern/draw_common.c b/source/blender/draw/intern/draw_common.c index 5a27158bbc0..44c9ccd8717 100644 --- a/source/blender/draw/intern/draw_common.c +++ b/source/blender/draw/intern/draw_common.c @@ -55,51 +55,38 @@ static struct GPUTexture *DRW_create_weight_colorramp_texture(void); void DRW_globals_update(void) { GlobalsUboStorage *gb = &G_draw.block; - float tmp1[4], tmp2[4]; - - /* Explicitly access values of SPACE_VIEW3D here, don't use UI_SetTheme() to change global - - * thread-unsafe - theme state. */ - -#define DRW_GetThemeValuef(_id) UI_GetThemeValueTypef(_id, SPACE_VIEW3D) -#define DRW_GetThemeColor4fv(_id, _col) UI_GetThemeColorType4fv(_id, SPACE_VIEW3D, _col) -#define DRW_GetThemeColorBlendShade4fv(_id1, _id2, _col, _fac, _ofs) \ - DRW_GetThemeColor4fv(_id1, tmp1); \ - DRW_GetThemeColor4fv(_id2, tmp2); \ - UI_GetColorPtrBlendShade4fv(tmp1, tmp2, _col, _fac, _ofs) -#define DRW_GetThemeColorShadeAlpha4fv(_id, _col, _ofs, _alphaofs) \ - DRW_GetThemeColor4fv(_id, _col); \ - UI_GetColorPtrShadeAlpha4fv(_col, _col, _ofs, _alphaofs) - - DRW_GetThemeColor4fv(TH_WIRE, gb->colorWire); - DRW_GetThemeColor4fv(TH_WIRE_EDIT, gb->colorWireEdit); - DRW_GetThemeColor4fv(TH_ACTIVE, gb->colorActive); - DRW_GetThemeColor4fv(TH_SELECT, gb->colorSelect); + float tmp[4]; + + DRW_theme_color_get_4fv(TH_WIRE, gb->colorWire); + DRW_theme_color_get_4fv(TH_WIRE_EDIT, gb->colorWireEdit); + DRW_theme_color_get_4fv(TH_ACTIVE, gb->colorActive); + DRW_theme_color_get_4fv(TH_SELECT, gb->colorSelect); UI_COLOR_RGBA_FROM_U8(0x88, 0xFF, 0xFF, 155, gb->colorLibrarySelect); UI_COLOR_RGBA_FROM_U8(0x55, 0xCC, 0xCC, 155, gb->colorLibrary); - DRW_GetThemeColor4fv(TH_TRANSFORM, gb->colorTransform); - DRW_GetThemeColor4fv(TH_LIGHT, gb->colorLight); - DRW_GetThemeColor4fv(TH_SPEAKER, gb->colorSpeaker); - DRW_GetThemeColor4fv(TH_CAMERA, gb->colorCamera); - DRW_GetThemeColor4fv(TH_EMPTY, gb->colorEmpty); - DRW_GetThemeColor4fv(TH_VERTEX, gb->colorVertex); - DRW_GetThemeColor4fv(TH_VERTEX_SELECT, gb->colorVertexSelect); - DRW_GetThemeColor4fv(TH_VERTEX_UNREFERENCED, gb->colorVertexUnreferenced); + DRW_theme_color_get_4fv(TH_TRANSFORM, gb->colorTransform); + DRW_theme_color_get_4fv(TH_LIGHT, gb->colorLight); + DRW_theme_color_get_4fv(TH_SPEAKER, gb->colorSpeaker); + DRW_theme_color_get_4fv(TH_CAMERA, gb->colorCamera); + DRW_theme_color_get_4fv(TH_EMPTY, gb->colorEmpty); + DRW_theme_color_get_4fv(TH_VERTEX, gb->colorVertex); + DRW_theme_color_get_4fv(TH_VERTEX_SELECT, gb->colorVertexSelect); + DRW_theme_color_get_4fv(TH_VERTEX_UNREFERENCED, gb->colorVertexUnreferenced); UI_COLOR_RGBA_FROM_U8(0xB0, 0x00, 0xB0, 0xFF, gb->colorVertexMissingData); - DRW_GetThemeColor4fv(TH_EDITMESH_ACTIVE, gb->colorEditMeshActive); - DRW_GetThemeColor4fv(TH_EDGE_SELECT, gb->colorEdgeSelect); - - DRW_GetThemeColor4fv(TH_EDGE_SEAM, gb->colorEdgeSeam); - DRW_GetThemeColor4fv(TH_EDGE_SHARP, gb->colorEdgeSharp); - DRW_GetThemeColor4fv(TH_EDGE_CREASE, gb->colorEdgeCrease); - DRW_GetThemeColor4fv(TH_EDGE_BEVEL, gb->colorEdgeBWeight); - DRW_GetThemeColor4fv(TH_EDGE_FACESEL, gb->colorEdgeFaceSelect); - DRW_GetThemeColor4fv(TH_FACE, gb->colorFace); - DRW_GetThemeColor4fv(TH_FACE_SELECT, gb->colorFaceSelect); - DRW_GetThemeColor4fv(TH_NORMAL, gb->colorNormal); - DRW_GetThemeColor4fv(TH_VNORMAL, gb->colorVNormal); - DRW_GetThemeColor4fv(TH_LNORMAL, gb->colorLNormal); - DRW_GetThemeColor4fv(TH_FACE_DOT, gb->colorFaceDot); - DRW_GetThemeColor4fv(TH_BACK, gb->colorBackground); + DRW_theme_color_get_4fv(TH_EDITMESH_ACTIVE, gb->colorEditMeshActive); + DRW_theme_color_get_4fv(TH_EDGE_SELECT, gb->colorEdgeSelect); + + DRW_theme_color_get_4fv(TH_EDGE_SEAM, gb->colorEdgeSeam); + DRW_theme_color_get_4fv(TH_EDGE_SHARP, gb->colorEdgeSharp); + DRW_theme_color_get_4fv(TH_EDGE_CREASE, gb->colorEdgeCrease); + DRW_theme_color_get_4fv(TH_EDGE_BEVEL, gb->colorEdgeBWeight); + DRW_theme_color_get_4fv(TH_EDGE_FACESEL, gb->colorEdgeFaceSelect); + DRW_theme_color_get_4fv(TH_FACE, gb->colorFace); + DRW_theme_color_get_4fv(TH_FACE_SELECT, gb->colorFaceSelect); + DRW_theme_color_get_4fv(TH_NORMAL, gb->colorNormal); + DRW_theme_color_get_4fv(TH_VNORMAL, gb->colorVNormal); + DRW_theme_color_get_4fv(TH_LNORMAL, gb->colorLNormal); + DRW_theme_color_get_4fv(TH_FACE_DOT, gb->colorFaceDot); + DRW_theme_color_get_4fv(TH_BACK, gb->colorBackground); /* Custom median color to slightly affect the edit mesh colors. */ interp_v4_v4v4(gb->colorEditMeshMiddle, gb->colorVertexSelect, gb->colorWireEdit, 0.35f); @@ -113,63 +100,62 @@ void DRW_globals_update(void) interp_v4_v4v4(gb->colorDupli, gb->colorBackground, gb->colorWire, 0.3f); #ifdef WITH_FREESTYLE - UI_GetThemeColor4fv(TH_FREESTYLE_EDGE_MARK, gb->colorEdgeFreestyle); - UI_GetThemeColor4fv(TH_FREESTYLE_FACE_MARK, gb->colorFaceFreestyle); + DRW_theme_color_get_4fv(TH_FREESTYLE_EDGE_MARK, gb->colorEdgeFreestyle); + DRW_theme_color_get_4fv(TH_FREESTYLE_FACE_MARK, gb->colorFaceFreestyle); #else zero_v4(gb->colorEdgeFreestyle); zero_v4(gb->colorFaceFreestyle); #endif /* Curve */ - DRW_GetThemeColor4fv(TH_HANDLE_FREE, gb->colorHandleFree); - DRW_GetThemeColor4fv(TH_HANDLE_AUTO, gb->colorHandleAuto); - DRW_GetThemeColor4fv(TH_HANDLE_VECT, gb->colorHandleVect); - DRW_GetThemeColor4fv(TH_HANDLE_ALIGN, gb->colorHandleAlign); - DRW_GetThemeColor4fv(TH_HANDLE_AUTOCLAMP, gb->colorHandleAutoclamp); - DRW_GetThemeColor4fv(TH_HANDLE_SEL_FREE, gb->colorHandleSelFree); - DRW_GetThemeColor4fv(TH_HANDLE_SEL_AUTO, gb->colorHandleSelAuto); - DRW_GetThemeColor4fv(TH_HANDLE_SEL_VECT, gb->colorHandleSelVect); - DRW_GetThemeColor4fv(TH_HANDLE_SEL_ALIGN, gb->colorHandleSelAlign); - DRW_GetThemeColor4fv(TH_HANDLE_SEL_AUTOCLAMP, gb->colorHandleSelAutoclamp); - DRW_GetThemeColor4fv(TH_NURB_ULINE, gb->colorNurbUline); - DRW_GetThemeColor4fv(TH_NURB_VLINE, gb->colorNurbVline); - DRW_GetThemeColor4fv(TH_NURB_SEL_ULINE, gb->colorNurbSelUline); - DRW_GetThemeColor4fv(TH_NURB_SEL_VLINE, gb->colorNurbSelVline); - DRW_GetThemeColor4fv(TH_ACTIVE_SPLINE, gb->colorActiveSpline); - - DRW_GetThemeColor4fv(TH_BONE_POSE, gb->colorBonePose); - - DRW_GetThemeColor4fv(TH_CFRAME, gb->colorCurrentFrame); + DRW_theme_color_get_4fv(TH_HANDLE_FREE, gb->colorHandleFree); + DRW_theme_color_get_4fv(TH_HANDLE_AUTO, gb->colorHandleAuto); + DRW_theme_color_get_4fv(TH_HANDLE_VECT, gb->colorHandleVect); + DRW_theme_color_get_4fv(TH_HANDLE_ALIGN, gb->colorHandleAlign); + DRW_theme_color_get_4fv(TH_HANDLE_AUTOCLAMP, gb->colorHandleAutoclamp); + DRW_theme_color_get_4fv(TH_HANDLE_SEL_FREE, gb->colorHandleSelFree); + DRW_theme_color_get_4fv(TH_HANDLE_SEL_AUTO, gb->colorHandleSelAuto); + DRW_theme_color_get_4fv(TH_HANDLE_SEL_VECT, gb->colorHandleSelVect); + DRW_theme_color_get_4fv(TH_HANDLE_SEL_ALIGN, gb->colorHandleSelAlign); + DRW_theme_color_get_4fv(TH_HANDLE_SEL_AUTOCLAMP, gb->colorHandleSelAutoclamp); + DRW_theme_color_get_4fv(TH_NURB_ULINE, gb->colorNurbUline); + DRW_theme_color_get_4fv(TH_NURB_VLINE, gb->colorNurbVline); + DRW_theme_color_get_4fv(TH_NURB_SEL_ULINE, gb->colorNurbSelUline); + DRW_theme_color_get_4fv(TH_NURB_SEL_VLINE, gb->colorNurbSelVline); + DRW_theme_color_get_4fv(TH_ACTIVE_SPLINE, gb->colorActiveSpline); + + DRW_theme_color_get_4fv(TH_BONE_POSE, gb->colorBonePose); + + DRW_theme_color_get_4fv(TH_CFRAME, gb->colorCurrentFrame); /* Grid */ - DRW_GetThemeColor4fv(TH_GRID, tmp1); - UI_GetColorPtrShadeAlpha4fv(tmp1, gb->colorGrid, 10, 0); + DRW_theme_color_get_4fv(TH_GRID, tmp); + DRW_theme_color_shade_get_4fv(TH_GRID, 10, gb->colorGrid); /* emphasise division lines lighter instead of darker, if background is darker than grid */ - UI_GetColorPtrShadeAlpha4fv( - tmp1, - gb->colorGridEmphasise, + DRW_theme_color_shade_get_4fv( + TH_GRID, (gb->colorGrid[0] + gb->colorGrid[1] + gb->colorGrid[2] + 0.12f > gb->colorBackground[0] + gb->colorBackground[1] + gb->colorBackground[2]) ? 20 : -10, - 0); + gb->colorGridEmphasise); /* Grid Axis */ - DRW_GetThemeColorBlendShade4fv(TH_GRID, TH_AXIS_X, gb->colorGridAxisX, 0.5f, -10); - DRW_GetThemeColorBlendShade4fv(TH_GRID, TH_AXIS_Y, gb->colorGridAxisY, 0.5f, -10); - DRW_GetThemeColorBlendShade4fv(TH_GRID, TH_AXIS_Z, gb->colorGridAxisZ, 0.5f, -10); + DRW_theme_color_blend_shade_get_4fv(TH_GRID, TH_AXIS_X, 0.5f, -10, gb->colorGridAxisX); + DRW_theme_color_blend_shade_get_4fv(TH_GRID, TH_AXIS_Y, 0.5f, -10, gb->colorGridAxisY); + DRW_theme_color_blend_shade_get_4fv(TH_GRID, TH_AXIS_Z, 0.5f, -10, gb->colorGridAxisZ); - DRW_GetThemeColorShadeAlpha4fv(TH_TRANSFORM, gb->colorDeselect, 0, -80); - DRW_GetThemeColorShadeAlpha4fv(TH_WIRE, gb->colorOutline, 0, -30); - DRW_GetThemeColorShadeAlpha4fv(TH_LIGHT, gb->colorLightNoAlpha, 0, 255); + DRW_theme_color_shade_alpha_get_4fv(TH_TRANSFORM, 0, -80, gb->colorDeselect); + DRW_theme_color_shade_alpha_get_4fv(TH_WIRE, 0, -30, gb->colorOutline); + DRW_theme_color_shade_alpha_get_4fv(TH_LIGHT, 0, 255, gb->colorLightNoAlpha); - gb->sizeLightCenter = (DRW_GetThemeValuef(TH_OBCENTER_DIA) + 1.5f) * U.pixelsize; + gb->sizeLightCenter = (DRW_theme_value_get_f(TH_OBCENTER_DIA) + 1.5f) * U.pixelsize; gb->sizeLightCircle = U.pixelsize * 9.0f; gb->sizeLightCircleShadow = gb->sizeLightCircle + U.pixelsize * 3.0f; /* M_SQRT2 to be at least the same size of the old square */ gb->sizeVertex = U.pixelsize * - (max_ff(1.0f, DRW_GetThemeValuef(TH_VERTEX_SIZE) * (float)M_SQRT2 / 2.0f)); - gb->sizeFaceDot = U.pixelsize * DRW_GetThemeValuef(TH_FACEDOT_SIZE); + (max_ff(1.0f, DRW_theme_value_get_f(TH_VERTEX_SIZE) * (float)M_SQRT2 / 2.0f)); + gb->sizeFaceDot = U.pixelsize * DRW_theme_value_get_f(TH_FACEDOT_SIZE); gb->sizeEdge = U.pixelsize * (1.0f / 2.0f); /* TODO Theme */ gb->sizeEdgeFix = U.pixelsize * (0.5f + 2.0f * (2.0f * (gb->sizeEdge * (float)M_SQRT1_2))); @@ -226,11 +212,6 @@ void DRW_globals_update(void) G_draw.weight_ramp = DRW_create_weight_colorramp_texture(); } - -#undef DRW_GetThemeValuef -#undef DRW_GetThemeColor4fv -#undef DRW_GetThemeColorBlendShade4fv -#undef DRW_GetThemeColorShadeAlpha4fv } /* ********************************* SHGROUP ************************************* */ @@ -1266,11 +1247,77 @@ float *DRW_color_background_blend_get(int theme_id) break; } - UI_GetThemeColorBlendShade4fv(theme_id, TH_BACK, 0.5, 0, ret); + DRW_theme_color_blend_shade_get_4fv(theme_id, TH_BACK, 0.5, 0, ret); return ret; } +/* The following DRW_theme_color_/DRW_theme_value_ functions are wrappers around UI_GetThemeColor + * functions that for thread safety, don't rely on UI_SetTheme() being called beforehand. */ + +int DRW_theme_value_get_i(int colorid) +{ + return UI_GetThemeValue(colorid); +} +float DRW_theme_value_get_f(int colorid) +{ + return UI_GetThemeValuef(colorid); +} +void DRW_theme_color_get_4fv(int colorid, float r_col[4]) +{ + UI_GetThemeColorType4fv(colorid, SPACE_VIEW3D, r_col); +} +void DRW_theme_color_get_4ubv(int colorid, uchar r_col[4]) +{ + UI_GetThemeColorType4ubv(colorid, SPACE_VIEW3D, r_col); +} +void DRW_theme_color_get_3fv(int colorid, float r_col[3]) +{ + UI_GetThemeColorType3fv(colorid, SPACE_VIEW3D, r_col); +} +void DRW_theme_color_get_3ubv(int colorid, uchar r_col[3]) +{ + UI_GetThemeColorType3ubv(colorid, SPACE_VIEW3D, r_col); +} +void DRW_theme_color_shade_get_4fv(int colorid, int offset, float r_col[4]) +{ + float col[4]; + DRW_theme_color_get_4fv(colorid, col); + UI_GetColorPtrShadeAlpha4fv(col, r_col, offset, 0); +} +void DRW_theme_color_shade_alpha_get_4fv(int colorid, int offset, int alphaoffset, float r_col[4]) +{ + float col[4]; + DRW_theme_color_get_4fv(colorid, col); + UI_GetColorPtrShadeAlpha4fv(col, r_col, offset, alphaoffset); +} +void DRW_theme_color_shade_get_3fv(int colorid, int offset, float r_col[3]) +{ + float col[4]; + DRW_theme_color_get_4fv(colorid, col); + UI_GetColorPtrShadeAlpha4fv(col, col, offset, 0); + copy_v3_v3(r_col, col); +} +void DRW_theme_color_blend_shade_get_4fv( + int colorid1, int colorid2, float fac, int offset, float r_col[4]) +{ + float col1[4], col2[4]; + + DRW_theme_color_get_4fv(colorid1, col1); + DRW_theme_color_get_4fv(colorid2, col2); + UI_GetColorPtrBlendShade4fv(col1, col2, r_col, fac, offset); +} +void DRW_theme_color_blend_shade_get_3fv( + int colorid1, int colorid2, float fac, int offset, float r_col[3]) +{ + float col1[4], col2[4], tmp[4]; + + DRW_theme_color_get_3fv(colorid1, col1); + DRW_theme_color_get_3fv(colorid2, col2); + UI_GetColorPtrBlendShade4fv(col1, col2, tmp, fac, offset); + copy_v3_v3(r_col, tmp); +} + bool DRW_object_is_flat(Object *ob, int *r_axis) { float dim[3]; diff --git a/source/blender/draw/intern/draw_common.h b/source/blender/draw/intern/draw_common.h index 05d7bafa00d..12f88fb84a6 100644 --- a/source/blender/draw/intern/draw_common.h +++ b/source/blender/draw/intern/draw_common.h @@ -219,6 +219,19 @@ struct GPUShader *volume_velocity_shader_get(bool use_needle); struct DRWView *DRW_view_create_with_zoffset(const RegionView3D *rv3d, float offset); +int DRW_theme_value_get_i(int colorid); +float DRW_theme_value_get_f(int colorid); +void DRW_theme_color_get_4fv(int colorid, float r_col[4]); +void DRW_theme_color_get_4ubv(int colorid, uchar r_col[4]); +void DRW_theme_color_get_3fv(int colorid, float r_col[3]); +void DRW_theme_color_get_3ubv(int colorid, uchar r_col[3]); +void DRW_theme_color_shade_get_4fv(int colorid, int offset, float r_col[4]); +void DRW_theme_color_shade_alpha_get_4fv(int colorid, int offset, int alphaoffset, float r_col[4]); +void DRW_theme_color_shade_get_3fv(int colorid, int offset, float r_col[3]); +void DRW_theme_color_blend_shade_get_4fv( + int colorid1, int colorid2, float fac, int offset, float r_col[4]); +void DRW_theme_color_blend_shade_get_3fv( + int colorid1, int colorid2, float fac, int offset, float r_col[3]); int DRW_object_wire_theme_get(struct Object *ob, struct ViewLayer *view_layer, float **r_color); float *DRW_color_background_blend_get(int theme_id); diff --git a/source/blender/draw/intern/draw_view.c b/source/blender/draw/intern/draw_view.c index 7aa2e007f79..6c88d9d9057 100644 --- a/source/blender/draw/intern/draw_view.c +++ b/source/blender/draw/intern/draw_view.c @@ -84,7 +84,7 @@ void DRW_draw_background(bool do_alpha_checker) GPU_depth_test(true); } - else if (UI_GetThemeValue(TH_SHOW_BACK_GRAD)) { + else if (DRW_theme_value_get_i(TH_SHOW_BACK_GRAD)) { float m[4][4]; unit_m4(m); @@ -103,8 +103,8 @@ void DRW_draw_background(bool do_alpha_checker) immBindBuiltinProgram(GPU_SHADER_2D_SMOOTH_COLOR_DITHER); - UI_GetThemeColor3ubv(TH_BACK_GRAD, col_lo); - UI_GetThemeColor3ubv(TH_BACK, col_hi); + DRW_theme_color_get_3ubv(TH_BACK_GRAD, col_lo); + DRW_theme_color_get_3ubv(TH_BACK, col_hi); immBegin(GPU_PRIM_TRI_FAN, 4); immAttr3ubv(color, col_lo); diff --git a/source/blender/draw/modes/edit_mesh_mode_text.c b/source/blender/draw/modes/edit_mesh_mode_text.c index 7c7a9a586fa..3cb6081bed0 100644 --- a/source/blender/draw/modes/edit_mesh_mode_text.c +++ b/source/blender/draw/modes/edit_mesh_mode_text.c @@ -37,6 +37,9 @@ #include "UI_resources.h" +#include "DRW_render.h" + +#include "draw_common.h" #include "draw_manager_text.h" #include "edit_mesh_mode_intern.h" /* own include */ @@ -100,7 +103,7 @@ void DRW_edit_mesh_mode_text_measure_stats(ARegion *ar, if (v3d->overlay.edit_flag & V3D_OVERLAY_EDIT_EDGE_LEN) { BMEdge *eed; - UI_GetThemeColor3ubv(TH_DRAWEXTRA_EDGELEN, col); + DRW_theme_color_get_3ubv(TH_DRAWEXTRA_EDGELEN, col); BM_ITER_MESH (eed, &iter, em->bm, BM_EDGES_OF_MESH) { /* draw selected edges, or edges next to selected verts while dragging */ @@ -152,7 +155,7 @@ void DRW_edit_mesh_mode_text_measure_stats(ARegion *ar, const bool is_rad = (unit->system_rotation == USER_UNIT_ROT_RADIANS); BMEdge *eed; - UI_GetThemeColor3ubv(TH_DRAWEXTRA_EDGEANG, col); + DRW_theme_color_get_3ubv(TH_DRAWEXTRA_EDGEANG, col); BM_ITER_MESH (eed, &iter, em->bm, BM_EDGES_OF_MESH) { BMLoop *l_a, *l_b; @@ -215,7 +218,7 @@ void DRW_edit_mesh_mode_text_measure_stats(ARegion *ar, /* would be nice to use BM_face_calc_area, but that is for 2d faces * so instead add up tessellation triangle areas */ - UI_GetThemeColor3ubv(TH_DRAWEXTRA_FACEAREA, col); + DRW_theme_color_get_3ubv(TH_DRAWEXTRA_FACEAREA, col); int i, n, numtri; BMFace *f = NULL; @@ -270,7 +273,7 @@ void DRW_edit_mesh_mode_text_measure_stats(ARegion *ar, BMFace *efa; const bool is_rad = (unit->system_rotation == USER_UNIT_ROT_RADIANS); - UI_GetThemeColor3ubv(TH_DRAWEXTRA_FACEANG, col); + DRW_theme_color_get_3ubv(TH_DRAWEXTRA_FACEANG, col); BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) { const bool is_face_sel = BM_elem_flag_test_bool(efa, BM_ELEM_SELECT); @@ -325,7 +328,7 @@ void DRW_edit_mesh_mode_text_measure_stats(ARegion *ar, int i; /* For now, reuse an appropriate theme color */ - UI_GetThemeColor3ubv(TH_DRAWEXTRA_FACEANG, col); + DRW_theme_color_get_3ubv(TH_DRAWEXTRA_FACEANG, col); if (em->selectmode & SCE_SELECT_VERTEX) { BMVert *v; diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c index 148a4951dc6..03c615e9b46 100644 --- a/source/blender/draw/modes/object_mode.c +++ b/source/blender/draw/modes/object_mode.c @@ -1366,7 +1366,7 @@ static void OBJECT_cache_init(void *vedata) const DRWContextState *draw_ctx = DRW_context_state_get(); OBJECT_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg]; - const float outline_width = UI_GetThemeValuef(TH_OUTLINE_WIDTH); + const float outline_width = DRW_theme_value_get_f(TH_OUTLINE_WIDTH); const bool do_outline_expand = (U.pixelsize > 1.0) || (outline_width > 2.0f); const bool do_large_expand = ((U.pixelsize > 1.0) && (outline_width > 2.0f)) || (outline_width > 4.0f); @@ -1817,7 +1817,7 @@ static void OBJECT_cache_init(void *vedata) psl->ob_center = DRW_pass_create("Obj Center Pass", state); outlineWidth = 1.0f * U.pixelsize; - size = UI_GetThemeValuef(TH_OBCENTER_DIA) * U.pixelsize + outlineWidth; + size = DRW_theme_value_get_f(TH_OBCENTER_DIA) * U.pixelsize + outlineWidth; GPUShader *sh = GPU_shader_get_builtin_shader_with_config( GPU_SHADER_3D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_OUTLINE_AA, draw_ctx->sh_cfg); @@ -2244,10 +2244,10 @@ static void camera_view3d_reconstruction(OBJECT_ShadingGroupList *sgl, uchar text_color_selected[4], text_color_unselected[4]; float bundle_color_unselected[4], bundle_color_solid[4]; - UI_GetThemeColor4ubv(TH_SELECT, text_color_selected); - UI_GetThemeColor4ubv(TH_TEXT, text_color_unselected); - UI_GetThemeColor4fv(TH_WIRE, bundle_color_unselected); - UI_GetThemeColor4fv(TH_BUNDLE_SOLID, bundle_color_solid); + DRW_theme_color_get_4ubv(TH_SELECT, text_color_selected); + DRW_theme_color_get_4ubv(TH_TEXT, text_color_unselected); + DRW_theme_color_get_4fv(TH_WIRE, bundle_color_unselected); + DRW_theme_color_get_4fv(TH_BUNDLE_SOLID, bundle_color_solid); float camera_mat[4][4]; BKE_tracking_get_camera_object_matrix(scene, ob, camera_mat); @@ -2349,7 +2349,7 @@ static void camera_view3d_reconstruction(OBJECT_ShadingGroupList *sgl, if (reconstruction->camnr) { static float camera_path_color[4]; - UI_GetThemeColor4fv(TH_CAMERA_PATH, camera_path_color); + DRW_theme_color_get_4fv(TH_CAMERA_PATH, camera_path_color); GPUBatch *geom = batch_camera_path_get(&sgl->camera_path, reconstruction); GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_3D_UNIFORM_COLOR); @@ -3178,7 +3178,7 @@ static void DRW_shgroup_texture_space(OBJECT_ShadingGroupList *sgl, Object *ob, mul_m4_m4m4(tmp, ob->obmat, tmp); float color[4]; - UI_GetThemeColor4fv(theme_id, color); + DRW_theme_color_get_4fv(theme_id, color); DRW_buffer_add_entry(sgl->texspace, color, &one, tmp); } @@ -3208,7 +3208,7 @@ static void DRW_shgroup_bounds(OBJECT_ShadingGroupList *sgl, Object *ob, int the BKE_boundbox_init_from_minmax(bb, min, max); } - UI_GetThemeColor4fv(theme_id, color); + DRW_theme_color_get_4fv(theme_id, color); BKE_boundbox_calc_center_aabb(bb, center); BKE_boundbox_calc_size_aabb(bb, size); @@ -3712,7 +3712,7 @@ static void OBJECT_cache_populate(void *vedata, Object *ob) struct DRWTextStore *dt = DRW_text_cache_ensure(); uchar color[4]; - UI_GetThemeColor4ubv(theme_id, color); + DRW_theme_color_get_4ubv(theme_id, color); DRW_text_cache_add(dt, ob->obmat[3], |