Explorar el Código

more DPI scaling

Juliette ELSASS hace 1 año
padre
commit
266c728298

+ 1 - 0
lazpaint/dialog/uquestion.pas

@@ -91,6 +91,7 @@ var
       Button.Cancel := ACancel;
       Button.Cancel := ACancel;
       Button.Default := ADefault;
       Button.Default := ADefault;
       Button.Width := DoScaleX(120, OriginalDPI);
       Button.Width := DoScaleX(120, OriginalDPI);
+      Button.Height := DoScaleY(24, OriginalDPI);
       self.InsertControl(Button);
       self.InsertControl(Button);
 
 
       Button.Top := y;
       Button.Top := y;

+ 1 - 1
lazpaint/lazpainttype.pas

@@ -104,7 +104,7 @@ type
   TVSCursorPosition = record
   TVSCursorPosition = record
      bounds: TRect;
      bounds: TRect;
      c: TPointF;
      c: TPointF;
-     rx,ry: single;
+     rx,ry,penWidth: single;
   end;
   end;
   ArrayOfLayerId = array of integer;
   ArrayOfLayerId = array of integer;
 
 

+ 4 - 2
lazpaint/uconfig.pas

@@ -427,12 +427,14 @@ end;
 
 
 function TLazPaintConfig.DefaultImageWidth: integer;
 function TLazPaintConfig.DefaultImageWidth: integer;
 begin
 begin
-  result := iniOptions.ReadInteger('General','DefaultImageWidth',640);
+  result := iniOptions.ReadInteger('General','DefaultImageWidth',
+    round(640 * ScreenInfo.PixelsPerInchX / 96));
 end;
 end;
 
 
 function TLazPaintConfig.DefaultImageHeight: integer;
 function TLazPaintConfig.DefaultImageHeight: integer;
 begin
 begin
-  result := iniOptions.ReadInteger('General','DefaultImageHeight',480);
+  result := iniOptions.ReadInteger('General','DefaultImageHeight',
+    round(480 * ScreenInfo.PixelsPerInchX / 96));
 end;
 end;
 
 
 procedure TLazPaintConfig.SetDefaultImageWidth(value: integer);
 procedure TLazPaintConfig.SetDefaultImageWidth(value: integer);

+ 12 - 10
lazpaint/uimageview.pas

@@ -467,7 +467,7 @@ begin
     if not FVirtualScreen.ClipRect.IsEmpty then
     if not FVirtualScreen.ClipRect.IsEmpty then
     begin
     begin
       renderRect := FLastPictureParameters.scaledZoomedArea;
       renderRect := FLastPictureParameters.scaledZoomedArea;
-      OffsetRect(renderRect, -FLastPictureParameters.scaledVirtualScreenArea.Left,
+      Types.OffsetRect(renderRect, -FLastPictureParameters.scaledVirtualScreenArea.Left,
                              -FLastPictureParameters.scaledVirtualScreenArea.Top);
                              -FLastPictureParameters.scaledVirtualScreenArea.Top);
 
 
       DrawThumbnailCheckers(FVirtualScreen, renderRect, Image.IsIconCursor, DoScaleX(60*CanvasScale, OriginalDPI)/60);
       DrawThumbnailCheckers(FVirtualScreen, renderRect, Image.IsIconCursor, DoScaleX(60*CanvasScale, OriginalDPI)/60);
@@ -549,8 +549,8 @@ begin
       oldClip := FVirtualScreen.ClipRect;
       oldClip := FVirtualScreen.ClipRect;
       FVirtualScreen.ClipRect := rectBack;
       FVirtualScreen.ClipRect := rectBack;
       FVirtualScreen.PenStyle := psSolid;
       FVirtualScreen.PenStyle := psSolid;
-      FVirtualScreen.DrawPolygonAntialias(cursorcontourF,BGRA(0,0,0,192),3*CanvasScale);
-      FVirtualScreen.DrawPolygonAntialias(cursorcontourF,BGRA(255,255,255,255),1*CanvasScale);
+      FVirtualScreen.DrawPolygonAntialias(cursorcontourF,BGRA(0,0,0,192),3*cursorPos.penWidth);
+      FVirtualScreen.DrawPolygonAntialias(cursorcontourF,BGRA(255,255,255,255),cursorPos.penWidth);
       FVirtualScreen.ClipRect := oldClip;
       FVirtualScreen.ClipRect := oldClip;
       DrawPart;
       DrawPart;
 
 
@@ -892,9 +892,9 @@ begin
 end;
 end;
 
 
 function TImageView.GetPenCursorPosition: TVSCursorPosition;
 function TImageView.GetPenCursorPosition: TVSCursorPosition;
-const margin = 2;
 var
 var
   tl,br: TPointF;
   tl,br: TPointF;
+  margin: single;
 begin
 begin
   with LazPaintInstance.ToolManager do
   with LazPaintInstance.ToolManager do
   begin
   begin
@@ -902,14 +902,16 @@ begin
     tl := self.BitmapToVirtualScreen(ToolCurrentCursorPos.X-PenWidth/2,ToolCurrentCursorPos.Y-PenWidth/2);
     tl := self.BitmapToVirtualScreen(ToolCurrentCursorPos.X-PenWidth/2,ToolCurrentCursorPos.Y-PenWidth/2);
     br := self.BitmapToVirtualScreen(ToolCurrentCursorPos.X+PenWidth/2,ToolCurrentCursorPos.Y+PenWidth/2);
     br := self.BitmapToVirtualScreen(ToolCurrentCursorPos.X+PenWidth/2,ToolCurrentCursorPos.Y+PenWidth/2);
   end;
   end;
+  result.penWidth:= max(1, 0.75 * ScreenInfo.PixelsPerInchX / OriginalDPI * CanvasScale);
   result.rx := (br.x-tl.x)/2-0.5;
   result.rx := (br.x-tl.x)/2-0.5;
   result.ry := (br.y-tl.y)/2-0.5;
   result.ry := (br.y-tl.y)/2-0.5;
+  margin := result.penWidth/2*3 + 1;
   if FPenCursorVisible then
   if FPenCursorVisible then
   begin
   begin
-    result.bounds.left := floor(tl.x)-margin*CanvasScale;
-    result.bounds.top := floor(tl.y)-margin*CanvasScale;
-    result.bounds.right := ceil(br.x)+1+2*margin*CanvasScale;
-    result.bounds.bottom := ceil(br.y)+1+2*margin*CanvasScale;
+    result.bounds.left := floor(tl.x-margin)-1;
+    result.bounds.top := floor(tl.y-margin)-1;
+    result.bounds.right := ceil(br.x+margin)+2;
+    result.bounds.bottom := ceil(br.y+margin)+2;
   end else
   end else
     result.bounds := EmptyRect;
     result.bounds := EmptyRect;
 end;
 end;
@@ -941,7 +943,7 @@ begin
     area.Right := (area.Right+CanvasScale-1) div CanvasScale;
     area.Right := (area.Right+CanvasScale-1) div CanvasScale;
     area.Bottom := (area.Bottom+CanvasScale-1) div CanvasScale;
     area.Bottom := (area.Bottom+CanvasScale-1) div CanvasScale;
   end;
   end;
-  OffsetRect(area, FLastPictureParameters.virtualScreenArea.Left,
+  Types.OffsetRect(area, FLastPictureParameters.virtualScreenArea.Left,
                    FLastPictureParameters.virtualScreenArea.Top);
                    FLastPictureParameters.virtualScreenArea.Top);
   {$IFDEF IMAGEVIEW_DIRECTUPDATE}
   {$IFDEF IMAGEVIEW_DIRECTUPDATE}
   PaintVirtualScreenImplementation(AWorkArea, area);
   PaintVirtualScreenImplementation(AWorkArea, area);
@@ -966,7 +968,7 @@ begin
     result := GetRenderUpdateRectVS(True);
     result := GetRenderUpdateRectVS(True);
     result := RectUnion(result,FPenCursorPosBefore.bounds);
     result := RectUnion(result,FPenCursorPosBefore.bounds);
     result := RectUnion(result,FPenCursorPos.bounds);
     result := RectUnion(result,FPenCursorPos.bounds);
-    OffsetRect(result, FLastPictureParameters.scaledVirtualScreenArea.Left,
+    Types.OffsetRect(result, FLastPictureParameters.scaledVirtualScreenArea.Left,
                      FLastPictureParameters.scaledVirtualScreenArea.Top);
                      FLastPictureParameters.scaledVirtualScreenArea.Top);
     if CanvasScale > 1 then
     if CanvasScale > 1 then
     begin
     begin

+ 4 - 1
lazpaint/uloading.pas

@@ -69,6 +69,10 @@ end;
 
 
 procedure TFLoading.FormCreate(Sender: TObject);
 procedure TFLoading.FormCreate(Sender: TObject);
 begin
 begin
+  if PopupFontFullHeight = 0 then
+  begin
+    PopupFontFullHeight := DoScaleY(20,OriginalDPI);
+  end;
 end;
 end;
 
 
 procedure TFLoading.BGRAPanel1AfterRenderBCPanel(Sender: TObject;
 procedure TFLoading.BGRAPanel1AfterRenderBCPanel(Sender: TObject;
@@ -136,7 +140,6 @@ end;
 {$R *.lfm}
 {$R *.lfm}
 
 
 initialization
 initialization
-  PopupFontFullHeight := DoScaleY(20,OriginalDPI);
 
 
 finalization
 finalization