mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-13 11:59:25 +02:00
TAChart: Move Pointer property to TBasicPointSeries
git-svn-id: trunk@31432 -
This commit is contained in:
parent
80486ae12e
commit
1a44819dcf
@ -136,7 +136,7 @@ type
|
||||
protected
|
||||
property Styles: TChartStyles read FStyles write SetStyles;
|
||||
public
|
||||
procedure Assign(Source: TPersistent); override;
|
||||
procedure Assign(ASource: TPersistent); override;
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
|
||||
@ -190,15 +190,20 @@ type
|
||||
FMarkPositions: TLinearMarkPositions;
|
||||
function GetLabelDirection(AIndex: Integer): TLabelDirection;
|
||||
procedure SetMarkPositions(AValue: TLinearMarkPositions);
|
||||
procedure SetPointer(AValue: TSeriesPointer);
|
||||
procedure SetUseReticule(AValue: Boolean);
|
||||
protected
|
||||
FGraphPoints: array of TDoublePoint;
|
||||
FLoBound: Integer;
|
||||
FMinXRange: Double;
|
||||
FPointer: TSeriesPointer;
|
||||
FUpBound: Integer;
|
||||
FUseReticule: Boolean;
|
||||
|
||||
procedure AfterDrawPointer(
|
||||
ADrawer: IChartDrawer; AIndex: Integer; const APos: TPoint); virtual;
|
||||
procedure DrawLabels(ADrawer: IChartDrawer);
|
||||
procedure DrawPointers(ADrawer: IChartDrawer);
|
||||
procedure GetLegendItemsRect(AItems: TChartLegendItems; ABrush: TBrush);
|
||||
function GetXRange(AX: Double; AIndex: Integer): Double;
|
||||
function GetZeroLevel: Double; virtual;
|
||||
@ -209,7 +214,12 @@ type
|
||||
procedure UpdateMinXRange;
|
||||
property UseReticule: Boolean
|
||||
read FUseReticule write SetUseReticule default false;
|
||||
protected
|
||||
property Pointer: TSeriesPointer read FPointer write SetPointer;
|
||||
public
|
||||
destructor Destroy; override;
|
||||
public
|
||||
procedure Assign(ASource: TPersistent); override;
|
||||
function GetNearestPoint(
|
||||
ADistFunc: TPointDistFunc; const APoint: TPoint;
|
||||
out AIndex: Integer; out AImg: TPoint; out AValue: TDoublePoint): Boolean;
|
||||
@ -486,10 +496,10 @@ begin
|
||||
Source.AfterDraw;
|
||||
end;
|
||||
|
||||
procedure TChartSeries.Assign(Source: TPersistent);
|
||||
procedure TChartSeries.Assign(ASource: TPersistent);
|
||||
begin
|
||||
if Source is TChartSeries then
|
||||
with TChartSeries(Source) do begin
|
||||
if ASource is TChartSeries then
|
||||
with TChartSeries(ASource) do begin
|
||||
Self.Marks := FMarks;
|
||||
Self.FOnGetMark := FOnGetMark;
|
||||
Self.Source := FSource;
|
||||
@ -740,6 +750,29 @@ end;
|
||||
|
||||
{ TBasicPointSeries }
|
||||
|
||||
procedure TBasicPointSeries.AfterDrawPointer(
|
||||
ADrawer: IChartDrawer; AIndex: Integer; const APos: TPoint);
|
||||
begin
|
||||
Unused(ADrawer);
|
||||
Unused(AIndex, APos);
|
||||
end;
|
||||
|
||||
procedure TBasicPointSeries.Assign(ASource: TPersistent);
|
||||
begin
|
||||
if ASource is TBasicPointSeries then
|
||||
with TBasicPointSeries(ASource) do begin
|
||||
Self.FPointer := Pointer;
|
||||
Self.FUseReticule := UseReticule;
|
||||
end;
|
||||
inherited Assign(ASource);
|
||||
end;
|
||||
|
||||
destructor TBasicPointSeries.Destroy;
|
||||
begin
|
||||
FreeAndNil(FPointer);
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TBasicPointSeries.DrawLabels(ADrawer: IChartDrawer);
|
||||
var
|
||||
prevLabelPoly: TPointArray;
|
||||
@ -782,6 +815,23 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TBasicPointSeries.DrawPointers(ADrawer: IChartDrawer);
|
||||
var
|
||||
i: Integer;
|
||||
p: TDoublePoint;
|
||||
ai: TPoint;
|
||||
begin
|
||||
Assert(Pointer <> nil, 'Series pointer');
|
||||
if not Pointer.Visible then exit;
|
||||
for i := FLoBound to FUpBound do begin
|
||||
p := FGraphPoints[i - FLoBound];
|
||||
if not ParentChart.IsPointInViewPort(p) then continue;
|
||||
ai := ParentChart.GraphToImage(p);
|
||||
Pointer.Draw(ADrawer, ai, Source[i]^.Color);
|
||||
AfterDrawPointer(ADrawer, i, ai);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TBasicPointSeries.GetLabelDirection(AIndex: Integer): TLabelDirection;
|
||||
const
|
||||
DIR: array [Boolean, Boolean] of TLabelDirection =
|
||||
@ -910,6 +960,12 @@ begin
|
||||
UpdateParentChart;
|
||||
end;
|
||||
|
||||
procedure TBasicPointSeries.SetPointer(AValue: TSeriesPointer);
|
||||
begin
|
||||
FPointer.Assign(AValue);
|
||||
UpdateParentChart;
|
||||
end;
|
||||
|
||||
procedure TBasicPointSeries.SetUseReticule(AValue: Boolean);
|
||||
begin
|
||||
if FUseReticule = AValue then exit;
|
||||
|
@ -185,25 +185,25 @@ type
|
||||
FLinePen: TPen;
|
||||
FLineType: TLineType;
|
||||
FOnDrawPointer: TSeriesPointerDrawEvent;
|
||||
FPointer: TSeriesPointer;
|
||||
FShowPoints: Boolean;
|
||||
|
||||
procedure DrawSingleLineInStack(ADrawer: IChartDrawer; AIndex: Integer);
|
||||
function GetShowLines: Boolean;
|
||||
procedure SetLinePen(AValue: TPen);
|
||||
procedure SetLineType(AValue: TLineType);
|
||||
procedure SetPointer(Value: TSeriesPointer);
|
||||
procedure SetSeriesColor(AValue: TColor);
|
||||
procedure SetShowLines(Value: Boolean);
|
||||
procedure SetShowPoints(Value: Boolean);
|
||||
protected
|
||||
procedure AfterAdd; override;
|
||||
procedure AfterDrawPointer(
|
||||
ADrawer: IChartDrawer; AIndex: Integer; const APos: TPoint); override;
|
||||
procedure GetLegendItems(AItems: TChartLegendItems); override;
|
||||
function GetSeriesColor: TColor; override;
|
||||
public
|
||||
procedure Assign(ASource: TPersistent); override;
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure Draw(ADrawer: IChartDrawer); override;
|
||||
public
|
||||
@ -219,7 +219,7 @@ type
|
||||
property MarkPositions;
|
||||
property OnDrawPointer: TSeriesPointerDrawEvent
|
||||
read FOnDrawPointer write FOnDrawPointer;
|
||||
property Pointer: TSeriesPointer read FPointer write SetPointer;
|
||||
property Pointer;
|
||||
property SeriesColor: TColor
|
||||
read GetSeriesColor write SetSeriesColor stored false default clBlack;
|
||||
property ShowLines: Boolean
|
||||
@ -324,7 +324,16 @@ uses
|
||||
procedure TLineSeries.AfterAdd;
|
||||
begin
|
||||
inherited AfterAdd;
|
||||
FPointer.SetOwner(FChart);
|
||||
Pointer.SetOwner(FChart);
|
||||
end;
|
||||
|
||||
procedure TLineSeries.AfterDrawPointer(
|
||||
ADrawer: IChartDrawer; AIndex: Integer; const APos: TPoint);
|
||||
var
|
||||
ic: IChartTCanvasDrawer;
|
||||
begin
|
||||
if Supports(ADrawer, IChartTCanvasDrawer, ic) and Assigned(FOnDrawPointer) then
|
||||
FOnDrawPointer(Self, ic.Canvas, AIndex, APos);
|
||||
end;
|
||||
|
||||
procedure TLineSeries.Assign(ASource: TPersistent);
|
||||
@ -334,7 +343,6 @@ begin
|
||||
Self.LinePen := FLinePen;
|
||||
Self.FLineType := FLineType;
|
||||
Self.FOnDrawPointer := FOnDrawPointer;
|
||||
Self.Pointer := FPointer;
|
||||
Self.FShowPoints := FShowPoints;
|
||||
end;
|
||||
inherited Assign(ASource);
|
||||
@ -359,7 +367,6 @@ end;
|
||||
destructor TLineSeries.Destroy;
|
||||
begin
|
||||
FreeAndNil(FLinePen);
|
||||
FreeAndNil(FPointer);
|
||||
inherited;
|
||||
end;
|
||||
|
||||
@ -491,24 +498,11 @@ var
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
i: Integer;
|
||||
ai: TPoint;
|
||||
p: TDoublePoint;
|
||||
ic: IChartTCanvasDrawer;
|
||||
begin
|
||||
DrawLines;
|
||||
DrawLabels(ADrawer);
|
||||
|
||||
if ShowPoints and Pointer.Visible then
|
||||
for i := FLoBound to FUpBound do begin
|
||||
p := FGraphPoints[i - FLoBound];
|
||||
if not ParentChart.IsPointInViewPort(p) then continue;
|
||||
ai := ParentChart.GraphToImage(p);
|
||||
Pointer.Draw(ADrawer, ai, Source[i]^.Color);
|
||||
if Supports(ADrawer, IChartTCanvasDrawer, ic) and Assigned(FOnDrawPointer) then
|
||||
FOnDrawPointer(Self, ic.Canvas, i, ai);
|
||||
end;
|
||||
if ShowPoints then
|
||||
DrawPointers(ADrawer);
|
||||
end;
|
||||
|
||||
procedure TLineSeries.EndUpdate;
|
||||
@ -567,12 +561,6 @@ begin
|
||||
UpdateParentChart;
|
||||
end;
|
||||
|
||||
procedure TLineSeries.SetPointer(Value: TSeriesPointer);
|
||||
begin
|
||||
FPointer.Assign(Value);
|
||||
UpdateParentChart;
|
||||
end;
|
||||
|
||||
procedure TLineSeries.SetSeriesColor(AValue: TColor);
|
||||
begin
|
||||
FLinePen.Color := AValue;
|
||||
|
Loading…
Reference in New Issue
Block a user