diff options
author | Julian Eisel <eiseljulian@gmail.com> | 2019-08-06 01:41:49 +0300 |
---|---|---|
committer | Julian Eisel <eiseljulian@gmail.com> | 2019-08-06 01:41:49 +0300 |
commit | 02aca1bfb758761ec9b3a1b00bf8652cfcd37a35 (patch) | |
tree | d8322351ba93ca4f23a947b0572065ae76873c8c /source/blender/draw/intern | |
parent | 6a468602200b68d34eb33d4fc598fb8774447a11 (diff) | |
parent | 43d4ac5db64f3bcb9d9238485734d5a5ade90855 (diff) |
Merge branch 'temp-concurrent-viewport-theme' into temp-vr-draw-thread
Diffstat (limited to 'source/blender/draw/intern')
-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 | 213 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_common.h | 13 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_view.c | 6 |
6 files changed, 177 insertions, 119 deletions
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..328c7fa903d 100644 --- a/source/blender/draw/intern/draw_common.c +++ b/source/blender/draw/intern/draw_common.c @@ -55,51 +55,37 @@ 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); + + 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 +99,61 @@ 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_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 +210,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 +1245,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); |