mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-11 17:01:14 +01:00
TAChart: Extract DrawIfActive and AfterAdd procedures. Minor style fixes.
patch by: Alexander Klenin part 1 of issue #13163 git-svn-id: trunk@18670 -
This commit is contained in:
parent
84bfb63537
commit
eb20e8d8cd
@ -184,8 +184,10 @@ type
|
||||
procedure UpdateBounds(
|
||||
var ANumPoints: Integer; var AXMin, AYMin, AXMax, AYMax: Double);
|
||||
virtual; abstract;
|
||||
procedure AfterAdd; virtual;
|
||||
public
|
||||
function Count: Integer; virtual; abstract;
|
||||
procedure DrawIfActive(ACanvas: TCanvas); virtual; abstract;
|
||||
property SeriesColor: TColor read FSeriesColor write FSeriesColor default clTAColor;
|
||||
end;
|
||||
|
||||
@ -297,7 +299,7 @@ type
|
||||
procedure DrawAxis(ACanvas: TCanvas; ARect: TRect);
|
||||
procedure DrawLegend(ACanvas: TCanvas; ARect: TRect);
|
||||
|
||||
procedure AddSerie(Serie: TComponent);
|
||||
procedure AddSerie(ASerie: TBasicChartSeries);
|
||||
procedure DeleteSerie(Serie: TComponent);
|
||||
function GetSerie(AIndex: Integer): TComponent;
|
||||
procedure SetAutoXMin(Auto: Boolean);
|
||||
@ -395,6 +397,8 @@ const
|
||||
MinDouble = -1.7e308;
|
||||
MaxDouble = 1.7e308;
|
||||
|
||||
{ TChartPen }
|
||||
|
||||
procedure TChartPen.SetVisible(Value: Boolean);
|
||||
begin
|
||||
FVisible := Value;
|
||||
@ -409,7 +413,7 @@ begin
|
||||
inherited Assign( Source );
|
||||
end;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
{ TChartAxis }
|
||||
|
||||
constructor TChartAxis.Create(AOwner: TCustomChart);
|
||||
begin
|
||||
@ -467,7 +471,7 @@ begin
|
||||
FOwner.invalidate;
|
||||
end;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
{ TChartAxisTitle }
|
||||
|
||||
constructor TChartAxisTitle.Create(AOwner: TCustomChart);
|
||||
begin
|
||||
@ -517,7 +521,7 @@ begin
|
||||
inherited Assign(Source);
|
||||
end;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
{ TChartLegend }
|
||||
|
||||
constructor TChartLegend.Create(AOwner: TCustomChart);
|
||||
begin
|
||||
@ -580,7 +584,7 @@ begin
|
||||
FOwner.Invalidate;
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
{ TChartTitle }
|
||||
|
||||
constructor TChartTitle.Create(AOwner: TCustomChart);
|
||||
begin
|
||||
@ -665,6 +669,7 @@ begin
|
||||
FOwner.Invalidate;
|
||||
end;
|
||||
|
||||
{ TChart }
|
||||
|
||||
constructor TChart.Create(AOwner: TComponent);
|
||||
begin
|
||||
@ -1234,29 +1239,22 @@ begin
|
||||
FGraphBrush.Assign(Value);
|
||||
end;
|
||||
|
||||
procedure TChart.AddSerie(Serie: TComponent);
|
||||
procedure TChart.AddSerie(ASerie: TBasicChartSeries);
|
||||
begin
|
||||
if FShowVerticalReticule then DrawVerticalReticule(Canvas, XVMarkOld);
|
||||
if FShowReticule then DrawReticule(Canvas, XMarkOld, YMarkOld);
|
||||
//disable axis when we have TPie series
|
||||
if Serie is TPieSeries then begin
|
||||
LeftAxis.Visible := false;
|
||||
BottomAxis.Visible := false;
|
||||
end;
|
||||
Series.Add(Serie);
|
||||
TBasicChartSeries(Serie).ParentChart := Self;
|
||||
|
||||
Series.Add(ASerie);
|
||||
ASerie.ParentChart := Self;
|
||||
ASerie.AfterAdd;
|
||||
end;
|
||||
|
||||
procedure TChart.DeleteSerie(Serie: TComponent);
|
||||
var
|
||||
i: Integer;
|
||||
MySerie: TComponent;
|
||||
begin
|
||||
i := 0;
|
||||
while i < SeriesCount do begin
|
||||
MySerie := Series[i];
|
||||
if Serie = MySerie then begin
|
||||
if Serie = Series[i] then begin
|
||||
Series.Delete(i);
|
||||
Invalidate;
|
||||
end
|
||||
@ -1560,12 +1558,9 @@ begin
|
||||
PaintOnCanvas(ACanvas, Rect);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TChart.DisplaySeries(ACanvas: TCanvas);
|
||||
var
|
||||
i: Integer;
|
||||
Serie: TChartSeries;
|
||||
begin
|
||||
if FSeries.Count = 0 then exit;
|
||||
|
||||
@ -1573,11 +1568,8 @@ begin
|
||||
IntersectClipRect(ACanvas.Handle, XImageMin, YImageMax, XImageMax, YImageMin);
|
||||
|
||||
// Update all series
|
||||
for i := 0 to FSeries.Count-1 do begin
|
||||
Serie:= TChartSeries( Series[i] );
|
||||
if Serie.Active then
|
||||
Serie.Draw(ACanvas);
|
||||
end;
|
||||
for i := 0 to FSeries.Count - 1 do
|
||||
TBasicChartSeries(Series[i]).DrawIfActive(ACanvas);
|
||||
|
||||
//now disable clipping
|
||||
SelectClipRgn(ACanvas.Handle, 0);
|
||||
@ -1712,7 +1704,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TChart.DrawReticule(ACanvas : TCanvas; X, Y: Integer);
|
||||
procedure TChart.DrawReticule(ACanvas: TCanvas; X, Y: Integer);
|
||||
begin
|
||||
ACanvas.Pen.Style := psSolid;
|
||||
ACanvas.Pen.Mode := pmXor;
|
||||
@ -1936,12 +1928,19 @@ begin
|
||||
Invalidate;
|
||||
end;
|
||||
|
||||
{ TBasicChartSeries }
|
||||
|
||||
procedure TBasicChartSeries.AfterAdd;
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents('Additional', [TChart]);
|
||||
end;
|
||||
|
||||
{$IFDEF fpc}
|
||||
|
||||
initialization
|
||||
{$I tagraph.lrs}
|
||||
{$ENDIF}
|
||||
|
||||
@ -92,8 +92,6 @@ type
|
||||
var ANumPoints: Integer; var AXMin, AYMin, AXMax, AYMax: Double); override;
|
||||
procedure UpdateParentChart;
|
||||
public
|
||||
procedure Draw(ACanvas: TCanvas); virtual; abstract;
|
||||
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
|
||||
@ -104,6 +102,8 @@ type
|
||||
property Title: String read FTitle write FTitle;
|
||||
|
||||
function Count: Integer; override;
|
||||
procedure Draw(ACanvas: TCanvas); virtual; abstract;
|
||||
procedure DrawIfActive(ACanvas: TCanvas); override;
|
||||
function AddXY(X, Y: Double; XLabel: String; Color: TColor): Longint; virtual;
|
||||
function Add(AValue: Double; XLabel: String; Color: TColor): Longint; virtual;
|
||||
procedure Delete(Index: Integer); virtual;
|
||||
@ -195,6 +195,7 @@ type
|
||||
procedure DrawLegend(ACanvas: TCanvas; const ARect: TRect); override;
|
||||
function GetLegendCount: Integer; override;
|
||||
function GetLegendWidth(ACanvas: TCanvas): Integer; override;
|
||||
procedure AfterAdd; override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -363,6 +364,12 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TChartSeries.DrawIfActive(ACanvas: TCanvas);
|
||||
begin
|
||||
if Active then
|
||||
Draw(ACanvas);
|
||||
end;
|
||||
|
||||
procedure TChartSeries.DrawLegend(ACanvas: TCanvas; const ARect: TRect);
|
||||
begin
|
||||
ACanvas.TextOut(ARect.Right + 3, ARect.Top, Title);
|
||||
@ -497,7 +504,7 @@ begin
|
||||
UpdateParentChart;
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
{ TSeriesPointer }
|
||||
|
||||
procedure TSeriesPointer.SetVisible(Value: Boolean);
|
||||
begin
|
||||
@ -626,7 +633,7 @@ begin
|
||||
inherited Assign(Source);
|
||||
end;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
{ TSerie }
|
||||
|
||||
constructor TSerie.Create(AOwner: TComponent);
|
||||
begin
|
||||
@ -1188,9 +1195,9 @@ begin
|
||||
bx2 := topX+(barWidth div 2);
|
||||
by2 := bottomY;
|
||||
}
|
||||
bx1 := topX - (TotalbarWidth div 2) + myPos * barWidth;
|
||||
bx1 := topX - (totalbarWidth div 2) + myPos * barWidth;
|
||||
by1 := topY;
|
||||
bx2 := topX - (TotalbarWidth div 2) + myPos * barWidth + barWidth;
|
||||
bx2 := topX - (totalbarWidth div 2) + myPos * barWidth + barWidth;
|
||||
by2 := bottomY;
|
||||
|
||||
//FIXME only draw if bar inside image coord (get a better way of doing this)
|
||||
@ -1270,6 +1277,13 @@ begin
|
||||
UpdateParentChart;
|
||||
end;
|
||||
|
||||
procedure TPieSeries.AfterAdd;
|
||||
begin
|
||||
// disable axis when we have TPie series
|
||||
ParentChart.LeftAxis.Visible := false;
|
||||
ParentChart.BottomAxis.Visible := false;
|
||||
end;
|
||||
|
||||
function TPieSeries.AddPie(Value: Double; Text: String; Color: TColor): Longint;
|
||||
begin
|
||||
Result := AddXY(getXMinVal + 1, Value, Text, Color);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user