UI: Make spacing helpers DPI aware

Addition to 76ae9cbc which was made independently of the spacing helpers
introduced in 2d6a9c9c
master
gxalpha 2022-08-03 16:47:25 +02:00 committed by Jim
parent a46cc43e6f
commit 3233c455d1
1 changed files with 16 additions and 12 deletions

View File

@ -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);
}