You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4887 8e941d3f-bd1b-0410-a28a-d453659cc2b4
128 lines
3.2 KiB
ObjectPascal
128 lines
3.2 KiB
ObjectPascal
unit VpBasePainter;
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, Graphics, LCLType,
|
|
VPBase;
|
|
|
|
type
|
|
|
|
{ TVpBasePainter }
|
|
|
|
TVpBasePainter = class
|
|
protected
|
|
// Buffered input parameters
|
|
RenderCanvas: TCanvas;
|
|
Angle: TVpRotationAngle;
|
|
Scale: Extended;
|
|
RenderDate: TDateTime;
|
|
RenderIn: TRect;
|
|
StartLine: Integer;
|
|
StopLine: Integer;
|
|
UseGran: TVpGranularity;
|
|
DisplayOnly: Boolean;
|
|
protected
|
|
// Shared local variables of all the old painting routines
|
|
Rgn: HRGN;
|
|
RealWidth: Integer;
|
|
RealHeight: Integer;
|
|
RealLeft: Integer;
|
|
RealRight: Integer;
|
|
RealTop: Integer;
|
|
RealBottom: Integer;
|
|
SaveBrushColor: TColor;
|
|
SavePenStyle: TPenStyle;
|
|
SavePenColor: TColor;
|
|
procedure DrawDotDotDot(ARect: TRect; AColor: TColor);
|
|
procedure InitPenBrush; virtual;
|
|
procedure SavePenBrush; virtual;
|
|
procedure RestorePenBrush; virtual;
|
|
procedure SetMeasurements; virtual;
|
|
public
|
|
constructor Create(ARenderCanvas: TCanvas);
|
|
procedure RenderToCanvas(ARenderIn: TRect; AAngle: TVpRotationAngle;
|
|
AScale: Extended; ARenderDate: TDateTime; AStartLine, AStopLine: Integer;
|
|
AGranularity: TVpGranularity; ADisplayOnly: Boolean); virtual;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
LCLIntf,
|
|
VpCanvasUtils;
|
|
|
|
{ TBasePainter }
|
|
|
|
constructor TVpBasePainter.Create(ARenderCanvas: TCanvas);
|
|
begin
|
|
RenderCanvas := ARenderCanvas;
|
|
end;
|
|
|
|
procedure TVpBasePainter.DrawDotDotDot(ARect: TRect; AColor: TColor);
|
|
var
|
|
R: TRect;
|
|
begin
|
|
RenderCanvas.Brush.Color := AColor;
|
|
{ draw dot dot dot }
|
|
R := Rect(ARect.Right, ARect.Bottom, ARect.Right + 3, ARect.Bottom + 3);
|
|
OffsetRect(R, -20, -7);
|
|
TPSFillRect(RenderCanvas, Angle, RenderIn, R);
|
|
OffsetRect(R, 7, 0);
|
|
TPSFillRect(RenderCanvas, Angle, RenderIn, R);
|
|
OffsetRect(R, 7, 0);
|
|
TPSFillRect(RenderCanvas, Angle, RenderIn, R);
|
|
end;
|
|
|
|
procedure TVpBasePainter.InitPenBrush;
|
|
begin
|
|
RenderCanvas.Pen.Style := psSolid;
|
|
RenderCanvas.Pen.Width := 1;
|
|
RenderCanvas.Pen.Mode := pmCopy;
|
|
RenderCanvas.Brush.Style := bsSolid;
|
|
end;
|
|
|
|
procedure TVpBasePainter.RenderToCanvas(ARenderIn: TRect;
|
|
AAngle: TVpRotationAngle; AScale: Extended; ARenderDate: TDateTime;
|
|
AStartLine, AStopLine: Integer; AGranularity: TVpGranularity;
|
|
ADisplayOnly: Boolean);
|
|
begin
|
|
// Buffer parameters
|
|
RenderIn := ARenderIn;
|
|
Angle := AAngle;
|
|
Scale := AScale;
|
|
RenderDate := ARenderDate;
|
|
StartLine := AStartLine;
|
|
StopLine := AStopLine;
|
|
UseGran := AGranularity;
|
|
DisplayOnly := ADisplayOnly;
|
|
|
|
// call the old RenderToCanvas method here...
|
|
end;
|
|
|
|
procedure TVpBasePainter.RestorePenBrush;
|
|
begin
|
|
RenderCanvas.Pen.Style := SavePenStyle;
|
|
RenderCanvas.Brush.Color := SaveBrushColor;
|
|
RenderCanvas.Pen.Color := SavePenColor;
|
|
end;
|
|
|
|
procedure TVpBasePainter.SavePenBrush;
|
|
begin
|
|
SavePenStyle := RenderCanvas.Pen.Style;
|
|
SaveBrushColor := RenderCanvas.Brush.Color;
|
|
SavePenColor := RenderCanvas.Pen.Color;
|
|
end;
|
|
|
|
procedure TVpBasePainter.SetMeasurements;
|
|
begin
|
|
RealWidth := TPSViewportWidth(Angle, RenderIn);
|
|
RealHeight := TPSViewportHeight(Angle, RenderIn);
|
|
RealLeft := TPSViewportLeft(Angle, RenderIn);
|
|
RealRight := TPSViewportRight(Angle, RenderIn);
|
|
RealTop := TPSViewportTop(Angle, RenderIn);
|
|
RealBottom := TPSViewportBottom(Angle, RenderIn);
|
|
end;
|
|
|
|
end.
|