mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-19 19:59:19 +02:00
SynEdit: support high-dpi image list for gutter images
git-svn-id: trunk@57866 -
This commit is contained in:
parent
936a0dea02
commit
5784573538
@ -23,6 +23,8 @@ type
|
|||||||
FBookMarkOpt: TSynBookMarkOpt;
|
FBookMarkOpt: TSynBookMarkOpt;
|
||||||
procedure Init; override;
|
procedure Init; override;
|
||||||
function PreferedWidth: Integer; override;
|
function PreferedWidth: Integer; override;
|
||||||
|
function GetImgListRes(const ACanvas: TCanvas;
|
||||||
|
const AImages: TCustomImageList): TScaledImageListResolution;
|
||||||
// PaintMarks: True, if it has any Mark, that is *not* a bookmark
|
// PaintMarks: True, if it has any Mark, that is *not* a bookmark
|
||||||
function PaintMarks(aScreenLine: Integer; Canvas : TCanvas; AClip : TRect;
|
function PaintMarks(aScreenLine: Integer; Canvas : TCanvas; AClip : TRect;
|
||||||
var aFirstCustomColumnIdx: integer): Boolean;
|
var aFirstCustomColumnIdx: integer): Boolean;
|
||||||
@ -70,6 +72,18 @@ begin
|
|||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TSynGutterMarks.GetImgListRes(const ACanvas: TCanvas;
|
||||||
|
const AImages: TCustomImageList): TScaledImageListResolution;
|
||||||
|
var
|
||||||
|
Scale: Double;
|
||||||
|
begin
|
||||||
|
if ACanvas is TControlCanvas then
|
||||||
|
Scale := TControlCanvas(ACanvas).Control.GetCanvasScaleFactor
|
||||||
|
else
|
||||||
|
Scale := 1;
|
||||||
|
Result := AImages.ResolutionForPPI[0, ACanvas.Font.PixelsPerInch, Scale];
|
||||||
|
end;
|
||||||
|
|
||||||
function TSynGutterMarks.PaintMarks(aScreenLine: Integer; Canvas : TCanvas;
|
function TSynGutterMarks.PaintMarks(aScreenLine: Integer; Canvas : TCanvas;
|
||||||
AClip : TRect; var aFirstCustomColumnIdx: integer): Boolean;
|
AClip : TRect; var aFirstCustomColumnIdx: integer): Boolean;
|
||||||
var
|
var
|
||||||
@ -77,7 +91,7 @@ var
|
|||||||
|
|
||||||
procedure DoPaintMark(CurMark: TSynEditMark; aRect: TRect);
|
procedure DoPaintMark(CurMark: TSynEditMark; aRect: TRect);
|
||||||
var
|
var
|
||||||
img: TCustomImageList;
|
img: TScaledImageListResolution;
|
||||||
begin
|
begin
|
||||||
if CurMark.InternalImage or
|
if CurMark.InternalImage or
|
||||||
( (not assigned(FBookMarkOpt.BookmarkImages)) and
|
( (not assigned(FBookMarkOpt.BookmarkImages)) and
|
||||||
@ -100,9 +114,9 @@ var
|
|||||||
else begin
|
else begin
|
||||||
// draw from ImageList
|
// draw from ImageList
|
||||||
if assigned(CurMark.ImageList) then
|
if assigned(CurMark.ImageList) then
|
||||||
img := CurMark.ImageList
|
img := GetImgListRes(Canvas, CurMark.ImageList)
|
||||||
else
|
else
|
||||||
img := FBookMarkOpt.BookmarkImages;
|
img := GetImgListRes(Canvas, FBookMarkOpt.BookmarkImages);
|
||||||
|
|
||||||
if (CurMark.ImageIndex <= img.Count) and (CurMark.ImageIndex >= 0) then begin
|
if (CurMark.ImageIndex <= img.Count) and (CurMark.ImageIndex >= 0) then begin
|
||||||
if LineHeight > img.Height then
|
if LineHeight > img.Height then
|
||||||
@ -195,7 +209,7 @@ begin
|
|||||||
LCLIntf.SetBkColor(Canvas.Handle, TColorRef(Canvas.Brush.Color));
|
LCLIntf.SetBkColor(Canvas.Handle, TColorRef(Canvas.Brush.Color));
|
||||||
|
|
||||||
if assigned(FBookMarkOpt) and assigned(FBookMarkOpt.BookmarkImages) then
|
if assigned(FBookMarkOpt) and assigned(FBookMarkOpt.BookmarkImages) then
|
||||||
FColumnWidth := FBookMarkOpt.BookmarkImages.Width
|
FColumnWidth := GetImgListRes(Canvas, FBookMarkOpt.BookmarkImages).Width
|
||||||
else
|
else
|
||||||
FColumnWidth := Width;
|
FColumnWidth := Width;
|
||||||
FColumnCount := Max((Width+1) div FColumnWidth, 1); // full columns
|
FColumnCount := Max((Width+1) div FColumnWidth, 1); // full columns
|
||||||
|
Loading…
Reference in New Issue
Block a user