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