Przeglądaj źródła

UI: Make spacing helpers DPI aware

Addition to 76ae9cbc which was made independently of the spacing helpers
introduced in 2d6a9c9c
gxalpha 3 lat temu
rodzic
commit
3233c455d1
1 zmienionych plików z 16 dodań i 12 usunięć
  1. 16 12
      UI/window-basic-preview.cpp

+ 16 - 12
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);
 }