From 3233c455d14db15aca77a2b115af57c43ce922ca Mon Sep 17 00:00:00 2001 From: gxalpha Date: Wed, 3 Aug 2022 16:47:25 +0200 Subject: [PATCH] UI: Make spacing helpers DPI aware Addition to 76ae9cbc which was made independently of the spacing helpers introduced in 2d6a9c9c --- UI/window-basic-preview.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/UI/window-basic-preview.cpp b/UI/window-basic-preview.cpp index 234f7450a..97b97f9d9 100644 --- a/UI/window-basic-preview.cpp +++ b/UI/window-basic-preview.cpp @@ -2286,7 +2286,7 @@ OBSBasicPreview *OBSBasicPreview::Get() return OBSBasic::Get()->ui->preview; } -static obs_source_t *CreateLabel() +static obs_source_t *CreateLabel(float pixelRatio) { OBSDataAutoRelease settings = obs_data_create(); OBSDataAutoRelease font = obs_data_create(); @@ -2299,7 +2299,7 @@ static obs_source_t *CreateLabel() obs_data_set_string(font, "face", "Monospace"); #endif obs_data_set_int(font, "flags", 1); // Bold text - obs_data_set_int(font, "size", 16); + obs_data_set_int(font, "size", 16 * pixelRatio); obs_data_set_obj(settings, "font", font); obs_data_set_bool(settings, "outline", true); @@ -2350,7 +2350,8 @@ static void DrawLabel(OBSSource source, vec3 &pos, vec3 &viewport) gs_matrix_pop(); } -static void DrawSpacingLine(vec3 &start, vec3 &end, vec3 &viewport) +static void DrawSpacingLine(vec3 &start, vec3 &end, vec3 &viewport, + float pixelRatio) { matrix4 transform; matrix4_identity(&transform); @@ -2373,7 +2374,8 @@ static void DrawSpacingLine(vec3 &start, vec3 &end, vec3 &viewport) vec2 scale; vec2_set(&scale, viewport.x, viewport.y); - DrawLine(start.x, start.y, end.x, end.y, HANDLE_RADIUS / 2, scale); + DrawLine(start.x, start.y, end.x, end.y, + pixelRatio * (HANDLE_RADIUS / 2), scale); gs_matrix_pop(); @@ -2384,7 +2386,7 @@ static void DrawSpacingLine(vec3 &start, vec3 &end, vec3 &viewport) } static void RenderSpacingHelper(int sourceIndex, vec3 &start, vec3 &end, - vec3 &viewport) + vec3 &viewport, float pixelRatio) { bool horizontal = (sourceIndex == 2 || sourceIndex == 3); @@ -2418,7 +2420,8 @@ static void RenderSpacingHelper(int sourceIndex, vec3 &start, vec3 &end, vec3_div(&labelSize, &labelSize, &viewport); vec3 labelMargin; - vec3_set(&labelMargin, SPACER_LABEL_MARGIN, SPACER_LABEL_MARGIN, 1.0f); + vec3_set(&labelMargin, SPACER_LABEL_MARGIN * pixelRatio, + SPACER_LABEL_MARGIN * pixelRatio, 1.0f); vec3_div(&labelMargin, &labelMargin, &viewport); vec3_set(&labelPos, end.x, end.y, end.z); @@ -2433,7 +2436,7 @@ static void RenderSpacingHelper(int sourceIndex, vec3 &start, vec3 &end, labelPos.x += labelMargin.x; } - DrawSpacingLine(start, end, viewport); + DrawSpacingLine(start, end, viewport, pixelRatio); SetLabelText(sourceIndex, (int)px); DrawLabel(source, labelPos, viewport); } @@ -2559,24 +2562,25 @@ void OBSBasicPreview::DrawSpacingHelpers() // Draw spacer lines and labels vec3 start, end; + float pixelRatio = main->GetDevicePixelRatio(); for (int i = 0; i < 4; i++) { if (!spacerLabel[i]) - spacerLabel[i] = CreateLabel(); + spacerLabel[i] = CreateLabel(pixelRatio); } vec3_set(&start, top.x, 0.0f, 1.0f); vec3_set(&end, top.x, top.y, 1.0f); - RenderSpacingHelper(0, start, end, viewport); + RenderSpacingHelper(0, start, end, viewport, pixelRatio); vec3_set(&start, bottom.x, 1.0f - bottom.y, 1.0f); vec3_set(&end, bottom.x, 1.0f, 1.0f); - RenderSpacingHelper(1, start, end, viewport); + RenderSpacingHelper(1, start, end, viewport, pixelRatio); vec3_set(&start, 0.0f, left.y, 1.0f); vec3_set(&end, left.x, left.y, 1.0f); - RenderSpacingHelper(2, start, end, viewport); + RenderSpacingHelper(2, start, end, viewport, pixelRatio); vec3_set(&start, 1.0f - right.x, right.y, 1.0f); vec3_set(&end, 1.0f, right.y, 1.0f); - RenderSpacingHelper(3, start, end, viewport); + RenderSpacingHelper(3, start, end, viewport, pixelRatio); }