mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 21:42:51 +02:00
SynEdit: refactor TLazSynSurface
git-svn-id: trunk@63174 -
This commit is contained in:
parent
43f41ddd9d
commit
0f8b9dd9a8
@ -190,24 +190,36 @@ type
|
|||||||
property OnStatusChange: TStatusChangeEvent read fOnStatusChange write fOnStatusChange;
|
property OnStatusChange: TStatusChangeEvent read fOnStatusChange write fOnStatusChange;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TLazSynSurfaceWithText }
|
||||||
|
|
||||||
|
TLazSynSurfaceWithText = class(TLazSynSurface)
|
||||||
|
private
|
||||||
|
FTextArea: TLazSynTextArea;
|
||||||
|
protected
|
||||||
|
procedure SetTextArea(AValue: TLazSynTextArea); virtual;
|
||||||
|
function GetTextArea: TLazSynTextArea; virtual;
|
||||||
|
public
|
||||||
|
procedure Assign(Src: TLazSynSurface); override;
|
||||||
|
property TextArea: TLazSynTextArea read GetTextArea write SetTextArea;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TLazSynSurfaceManager }
|
{ TLazSynSurfaceManager }
|
||||||
|
|
||||||
TLazSynSurfaceManager = class(TLazSynSurface)
|
TLazSynSurfaceManager = class(TLazSynSurfaceWithText)
|
||||||
private
|
private
|
||||||
FLeftGutterArea: TLazSynSurface;
|
FLeftGutterArea: TLazSynSurfaceWithText;
|
||||||
FLeftGutterWidth: integer;
|
FLeftGutterWidth: integer;
|
||||||
FRightGutterArea: TLazSynSurface;
|
FRightGutterArea: TLazSynSurfaceWithText;
|
||||||
FRightGutterWidth: integer;
|
FRightGutterWidth: integer;
|
||||||
FTextArea: TLazSynTextArea;
|
procedure SetLeftGutterArea(AValue: TLazSynSurfaceWithText);
|
||||||
procedure SetLeftGutterArea(AValue: TLazSynSurface);
|
|
||||||
procedure SetLeftGutterWidth(AValue: integer);
|
procedure SetLeftGutterWidth(AValue: integer);
|
||||||
procedure SetRightGutterArea(AValue: TLazSynSurface);
|
procedure SetRightGutterArea(AValue: TLazSynSurfaceWithText);
|
||||||
procedure SetRightGutterWidth(AValue: integer);
|
procedure SetRightGutterWidth(AValue: integer);
|
||||||
procedure SetTextArea(AValue: TLazSynTextArea);
|
|
||||||
protected
|
protected
|
||||||
function GetLeftGutterArea: TLazSynSurface; virtual;
|
function GetLeftGutterArea: TLazSynSurfaceWithText; virtual;
|
||||||
function GetRightGutterArea: TLazSynSurface; virtual;
|
function GetRightGutterArea: TLazSynSurfaceWithText; virtual;
|
||||||
function GetTextArea: TLazSynTextArea; virtual;
|
procedure SetTextArea(AValue: TLazSynTextArea); override;
|
||||||
|
function GetTextArea: TLazSynTextArea; override;
|
||||||
protected
|
protected
|
||||||
procedure SetBackgroundColor(AValue: TColor); virtual;
|
procedure SetBackgroundColor(AValue: TColor); virtual;
|
||||||
procedure SetExtraCharSpacing(AValue: integer); virtual;
|
procedure SetExtraCharSpacing(AValue: integer); virtual;
|
||||||
@ -229,9 +241,8 @@ type
|
|||||||
procedure InvalidateTextLines(FirstTextLine, LastTextLine: TLineIdx); virtual;
|
procedure InvalidateTextLines(FirstTextLine, LastTextLine: TLineIdx); virtual;
|
||||||
procedure InvalidateGutterLines(FirstTextLine, LastTextLine: TLineIdx); virtual;
|
procedure InvalidateGutterLines(FirstTextLine, LastTextLine: TLineIdx); virtual;
|
||||||
|
|
||||||
property TextArea: TLazSynTextArea read GetTextArea write SetTextArea;
|
property LeftGutterArea: TLazSynSurfaceWithText read GetLeftGutterArea write SetLeftGutterArea;
|
||||||
property LeftGutterArea: TLazSynSurface read GetLeftGutterArea write SetLeftGutterArea;
|
property RightGutterArea: TLazSynSurfaceWithText read GetRightGutterArea write SetRightGutterArea;
|
||||||
property RightGutterArea: TLazSynSurface read GetRightGutterArea write SetRightGutterArea;
|
|
||||||
property LeftGutterWidth: integer read FLeftGutterWidth write SetLeftGutterWidth;
|
property LeftGutterWidth: integer read FLeftGutterWidth write SetLeftGutterWidth;
|
||||||
property RightGutterWidth: integer read FRightGutterWidth write SetRightGutterWidth;
|
property RightGutterWidth: integer read FRightGutterWidth write SetRightGutterWidth;
|
||||||
public
|
public
|
||||||
@ -960,6 +971,24 @@ begin
|
|||||||
end; // while True
|
end; // while True
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TLazSynSurfaceWithText }
|
||||||
|
|
||||||
|
procedure TLazSynSurfaceWithText.SetTextArea(AValue: TLazSynTextArea);
|
||||||
|
begin
|
||||||
|
FTextArea := AValue;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TLazSynSurfaceWithText.GetTextArea: TLazSynTextArea;
|
||||||
|
begin
|
||||||
|
Result := FTextArea;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLazSynSurfaceWithText.Assign(Src: TLazSynSurface);
|
||||||
|
begin
|
||||||
|
inherited Assign(Src);
|
||||||
|
FTextArea := TLazSynSurfaceWithText(Src).FTextArea;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TLazSynSurfaceManager }
|
{ TLazSynSurfaceManager }
|
||||||
|
|
||||||
procedure TLazSynSurfaceManager.SetLeftGutterWidth(AValue: integer);
|
procedure TLazSynSurfaceManager.SetLeftGutterWidth(AValue: integer);
|
||||||
@ -989,19 +1018,20 @@ begin
|
|||||||
FTextArea.RightEdgeVisible := AValue;
|
FTextArea.RightEdgeVisible := AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLazSynSurfaceManager.SetLeftGutterArea(AValue: TLazSynSurface);
|
procedure TLazSynSurfaceManager.SetLeftGutterArea(AValue: TLazSynSurfaceWithText);
|
||||||
begin
|
begin
|
||||||
if FLeftGutterArea = AValue then Exit;
|
if FLeftGutterArea = AValue then Exit;
|
||||||
FLeftGutterArea := AValue;
|
FLeftGutterArea := AValue;
|
||||||
FLeftGutterArea.DisplayView := DisplayView;
|
FLeftGutterArea.DisplayView := DisplayView;
|
||||||
|
FLeftGutterArea.TextArea := FTextArea;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TLazSynSurfaceManager.GetLeftGutterArea: TLazSynSurface;
|
function TLazSynSurfaceManager.GetLeftGutterArea: TLazSynSurfaceWithText;
|
||||||
begin
|
begin
|
||||||
Result := FLeftGutterArea;
|
Result := FLeftGutterArea;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TLazSynSurfaceManager.GetRightGutterArea: TLazSynSurface;
|
function TLazSynSurfaceManager.GetRightGutterArea: TLazSynSurfaceWithText;
|
||||||
begin
|
begin
|
||||||
Result := FRightGutterArea;
|
Result := FRightGutterArea;
|
||||||
end;
|
end;
|
||||||
@ -1031,11 +1061,12 @@ begin
|
|||||||
FTextArea.ForegroundColor := AValue;
|
FTextArea.ForegroundColor := AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLazSynSurfaceManager.SetRightGutterArea(AValue: TLazSynSurface);
|
procedure TLazSynSurfaceManager.SetRightGutterArea(AValue: TLazSynSurfaceWithText);
|
||||||
begin
|
begin
|
||||||
if FRightGutterArea = AValue then Exit;
|
if FRightGutterArea = AValue then Exit;
|
||||||
FRightGutterArea := AValue;
|
FRightGutterArea := AValue;
|
||||||
FRightGutterArea.DisplayView := DisplayView;
|
FRightGutterArea.DisplayView := DisplayView;
|
||||||
|
FLeftGutterArea.TextArea := FTextArea;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLazSynSurfaceManager.SetRightGutterWidth(AValue: integer);
|
procedure TLazSynSurfaceManager.SetRightGutterWidth(AValue: integer);
|
||||||
@ -1050,6 +1081,10 @@ begin
|
|||||||
if FTextArea = AValue then Exit;
|
if FTextArea = AValue then Exit;
|
||||||
FTextArea := AValue;
|
FTextArea := AValue;
|
||||||
FTextArea.DisplayView := DisplayView;
|
FTextArea.DisplayView := DisplayView;
|
||||||
|
if FLeftGutterArea <> nil then
|
||||||
|
FLeftGutterArea.TextArea := FTextArea;
|
||||||
|
if FRightGutterArea <> nil then
|
||||||
|
FRightGutterArea.TextArea := FTextArea;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLazSynSurfaceManager.SetVisibleSpecialChars(AValue: TSynVisibleSpecialChars);
|
procedure TLazSynSurfaceManager.SetVisibleSpecialChars(AValue: TSynVisibleSpecialChars);
|
||||||
|
@ -99,18 +99,15 @@ type
|
|||||||
|
|
||||||
{ TLazSynGutterArea }
|
{ TLazSynGutterArea }
|
||||||
|
|
||||||
TLazSynGutterArea = class(TLazSynSurface)
|
TLazSynGutterArea = class(TLazSynSurfaceWithText)
|
||||||
private
|
private
|
||||||
FGutter: TSynGutter;
|
FGutter: TSynGutter;
|
||||||
FTextArea: TLazSynTextArea;
|
|
||||||
function GetTextBounds: TRect;
|
function GetTextBounds: TRect;
|
||||||
protected
|
protected
|
||||||
procedure DoPaint(ACanvas: TCanvas; AClip: TRect); override;
|
procedure DoPaint(ACanvas: TCanvas; AClip: TRect); override;
|
||||||
procedure SetTextArea(const ATextArea: TLazSynTextArea); virtual;
|
|
||||||
public
|
public
|
||||||
procedure InvalidateLines(FirstTextLine, LastTextLine: TLineIdx); override;
|
procedure InvalidateLines(FirstTextLine, LastTextLine: TLineIdx); override;
|
||||||
procedure Assign(Src: TLazSynSurface); override;
|
procedure Assign(Src: TLazSynSurface); override;
|
||||||
property TextArea: TLazSynTextArea read FTextArea write SetTextArea;
|
|
||||||
property Gutter: TSynGutter read FGutter write FGutter;
|
property Gutter: TSynGutter read FGutter write FGutter;
|
||||||
property TextBounds: TRect read GetTextBounds;
|
property TextBounds: TRect read GetTextBounds;
|
||||||
end;
|
end;
|
||||||
@ -160,15 +157,9 @@ begin
|
|||||||
InvalidateRect(Handle, @rcInval, FALSE);
|
InvalidateRect(Handle, @rcInval, FALSE);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLazSynGutterArea.SetTextArea(const ATextArea: TLazSynTextArea);
|
|
||||||
begin
|
|
||||||
FTextArea := ATextArea;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TLazSynGutterArea.Assign(Src: TLazSynSurface);
|
procedure TLazSynGutterArea.Assign(Src: TLazSynSurface);
|
||||||
begin
|
begin
|
||||||
inherited Assign(Src);
|
inherited Assign(Src);
|
||||||
FTextArea := TLazSynGutterArea(Src).FTextArea;
|
|
||||||
FGutter := TLazSynGutterArea(Src).FGutter;
|
FGutter := TLazSynGutterArea(Src).FGutter;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ type
|
|||||||
procedure TextSizeChanged(Sender: TObject);
|
procedure TextSizeChanged(Sender: TObject);
|
||||||
protected
|
protected
|
||||||
procedure DoPaint(ACanvas: TCanvas; AClip: TRect); override;
|
procedure DoPaint(ACanvas: TCanvas; AClip: TRect); override;
|
||||||
procedure SetTextArea(const ATextArea: TLazSynTextArea); override;
|
procedure SetTextArea(ATextArea: TLazSynTextArea); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TSourceLazSynSurfaceManager }
|
{ TSourceLazSynSurfaceManager }
|
||||||
@ -108,8 +108,8 @@ type
|
|||||||
FTopLineCount: Integer;
|
FTopLineCount: Integer;
|
||||||
procedure SetTopLineCount(AValue: Integer);
|
procedure SetTopLineCount(AValue: Integer);
|
||||||
protected
|
protected
|
||||||
function GetLeftGutterArea: TLazSynSurface; override;
|
function GetLeftGutterArea: TLazSynSurfaceWithText; override;
|
||||||
function GetRightGutterArea: TLazSynSurface; override;
|
function GetRightGutterArea: TLazSynSurfaceWithText; override;
|
||||||
function GetTextArea: TLazSynTextArea; override;
|
function GetTextArea: TLazSynTextArea; override;
|
||||||
protected
|
protected
|
||||||
procedure SetBackgroundColor(AValue: TColor); override;
|
procedure SetBackgroundColor(AValue: TColor); override;
|
||||||
@ -1250,8 +1250,7 @@ begin
|
|||||||
Gutter.Paint(ACanvas, Self, AClip, 0, -1);
|
Gutter.Paint(ACanvas, Self, AClip, 0, -1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSourceLazSynSurfaceGutter.SetTextArea(
|
procedure TSourceLazSynSurfaceGutter.SetTextArea(ATextArea: TLazSynTextArea);
|
||||||
const ATextArea: TLazSynTextArea);
|
|
||||||
begin
|
begin
|
||||||
inherited SetTextArea(ATextArea);
|
inherited SetTextArea(ATextArea);
|
||||||
ATextArea.AddTextSizeChangeHandler(@TextSizeChanged);
|
ATextArea.AddTextSizeChangeHandler(@TextSizeChanged);
|
||||||
@ -1271,12 +1270,12 @@ begin
|
|||||||
BoundsChanged;
|
BoundsChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TSourceLazSynSurfaceManager.GetLeftGutterArea: TLazSynSurface;
|
function TSourceLazSynSurfaceManager.GetLeftGutterArea: TLazSynSurfaceWithText;
|
||||||
begin
|
begin
|
||||||
Result := FOriginalManager.LeftGutterArea;
|
Result := FOriginalManager.LeftGutterArea;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TSourceLazSynSurfaceManager.GetRightGutterArea: TLazSynSurface;
|
function TSourceLazSynSurfaceManager.GetRightGutterArea: TLazSynSurfaceWithText;
|
||||||
begin
|
begin
|
||||||
Result := FOriginalManager.RightGutterArea;
|
Result := FOriginalManager.RightGutterArea;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user