mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-11 02:47:20 +01:00
TAChart: fix SeriesColor to work uniformly for all kinds of series
patch by: Alexander Klenin fixes issue #13184 git-svn-id: trunk@18709 -
This commit is contained in:
parent
677032c756
commit
06cd260566
@ -217,7 +217,7 @@ begin
|
||||
FBar := TBarSeries.Create(Chart1);
|
||||
Chart1.AddSerie(FBar);
|
||||
FBar.Title := 'bars';
|
||||
FBar.SeriesColor := clRed;
|
||||
FBar.SeriesColor := clGreen;
|
||||
end;
|
||||
|
||||
procedure TForm1.InitLine;
|
||||
|
||||
@ -173,8 +173,6 @@ type
|
||||
{ TBasicChartSeries }
|
||||
|
||||
TBasicChartSeries = class(TComponent)
|
||||
private
|
||||
FSeriesColor: TColor;
|
||||
protected
|
||||
ParentChart: TChart;
|
||||
procedure DrawLegend(ACanvas: TCanvas; const ARect: TRect); virtual; abstract;
|
||||
@ -189,10 +187,13 @@ type
|
||||
ADistFunc: TPointDistFunc; const APoint: TPoint;
|
||||
out AIndex: Integer; out AImg: TPoint; out AValue: TDoublePoint): Boolean;
|
||||
virtual;
|
||||
function GetSeriesColor: TColor; virtual; abstract;
|
||||
procedure SetSeriesColor(const AValue: TColor); virtual; abstract;
|
||||
public
|
||||
function Count: Integer; virtual; abstract;
|
||||
procedure DrawIfActive(ACanvas: TCanvas); virtual; abstract;
|
||||
property SeriesColor: TColor read FSeriesColor write FSeriesColor default clTAColor;
|
||||
property SeriesColor: TColor
|
||||
read GetSeriesColor write SetSeriesColor default clTAColor;
|
||||
end;
|
||||
|
||||
{ TChart }
|
||||
|
||||
@ -167,6 +167,8 @@ type
|
||||
procedure ExamineAllBarSeries(out ATotalNumber, AMyPos: Integer);
|
||||
protected
|
||||
procedure DrawLegend(ACanvas: TCanvas; const ARect: TRect); override;
|
||||
function GetSeriesColor: TColor; override;
|
||||
procedure SetSeriesColor(const AValue: TColor); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -195,6 +197,8 @@ type
|
||||
function GetLegendCount: Integer; override;
|
||||
function GetLegendWidth(ACanvas: TCanvas): Integer; override;
|
||||
procedure AfterAdd; override;
|
||||
function GetSeriesColor: TColor; override;
|
||||
procedure SetSeriesColor(const AValue: TColor); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -223,6 +227,8 @@ type
|
||||
procedure SetInvertedStairs(Value: Boolean);
|
||||
protected
|
||||
procedure DrawLegend(ACanvas: TCanvas; const ARect: TRect); override;
|
||||
function GetSeriesColor: TColor; override;
|
||||
procedure SetSeriesColor(const AValue: TColor); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -252,6 +258,7 @@ type
|
||||
private
|
||||
FPointer: TSeriesPointer;
|
||||
FStyle: TPenStyle;
|
||||
FSeriesColor: TColor;
|
||||
|
||||
XOfYGraphMin, XOfYGraphMax: Double; // X max value of points
|
||||
FShowPoints: Boolean;
|
||||
@ -266,6 +273,8 @@ type
|
||||
ADistFunc: TPointDistFunc; const APoint: TPoint;
|
||||
out AIndex: Integer; out AImg: TPoint; out AValue: TDoublePoint): Boolean;
|
||||
override;
|
||||
function GetSeriesColor: TColor; override;
|
||||
procedure SetSeriesColor(const AValue: TColor); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -303,6 +312,8 @@ type
|
||||
property Pointer: TSeriesPointer read FPointer write SetPointer;
|
||||
end;
|
||||
|
||||
{ TLine }
|
||||
|
||||
TLine = class(TBasicLineSeries)
|
||||
private
|
||||
FStyle: TLineStyle;
|
||||
@ -315,6 +326,9 @@ type
|
||||
procedure SetPos(Value: Double);
|
||||
procedure SetPen(Value: TPen);
|
||||
procedure SetStyle(Value: TLineStyle);
|
||||
protected
|
||||
function GetSeriesColor: TColor; override;
|
||||
procedure SetSeriesColor(const AValue: TColor); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -668,6 +682,11 @@ begin
|
||||
UpdateParentChart;
|
||||
end;
|
||||
|
||||
procedure TSerie.SetSeriesColor(const AValue: TColor);
|
||||
begin
|
||||
FSeriesColor := AValue;
|
||||
end;
|
||||
|
||||
procedure TSerie.Draw(ACanvas: TCanvas);
|
||||
var
|
||||
xi1, yi1, xi2, yi2: Integer;
|
||||
@ -939,6 +958,11 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TSerie.GetSeriesColor: TColor;
|
||||
begin
|
||||
Result := FSeriesColor;
|
||||
end;
|
||||
|
||||
procedure TSerie.SetColor(Index: Integer; AColor: TColor);
|
||||
begin
|
||||
PChartCoord(FCoordList.items[Index])^.Color := AColor;
|
||||
@ -1052,7 +1076,12 @@ begin
|
||||
UpdateParentChart;
|
||||
end;
|
||||
|
||||
procedure TLine.Draw;
|
||||
procedure TLine.SetSeriesColor(const AValue: TColor);
|
||||
begin
|
||||
FPen.Color := AValue;
|
||||
end;
|
||||
|
||||
procedure TLine.Draw(ACanvas: TCanvas);
|
||||
var
|
||||
XMin, XMax, YMin, YMax: Integer;
|
||||
begin
|
||||
@ -1076,6 +1105,11 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TLine.GetSeriesColor: TColor;
|
||||
begin
|
||||
Result := FPen.Color;
|
||||
end;
|
||||
|
||||
constructor TBarSeries.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
@ -1102,7 +1136,6 @@ end;
|
||||
|
||||
procedure TBarSeries.SetBarBrush(Value: TBrush);
|
||||
begin
|
||||
SeriesColor := Value.Color;
|
||||
FBarBrush.Assign(Value);
|
||||
end;
|
||||
|
||||
@ -1119,6 +1152,11 @@ begin
|
||||
FBarWidthPercent := Value;
|
||||
end;
|
||||
|
||||
procedure TBarSeries.SetSeriesColor(const AValue: TColor);
|
||||
begin
|
||||
FBarBrush.Color := AValue;
|
||||
end;
|
||||
|
||||
function TBarSeries.AddXY(X, Y: Double; XLabel: String; Color: TColor): Longint;
|
||||
begin
|
||||
if Color = clTAColor then Color := SeriesColor;
|
||||
@ -1248,6 +1286,11 @@ begin
|
||||
Assert(AMyPos >= 0);
|
||||
end;
|
||||
|
||||
function TBarSeries.GetSeriesColor: TColor;
|
||||
begin
|
||||
Result := FBarBrush.Color;
|
||||
end;
|
||||
|
||||
constructor TPieSeries.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
@ -1273,6 +1316,11 @@ begin
|
||||
FPiePen.Assign(Value);
|
||||
end;
|
||||
|
||||
procedure TPieSeries.SetSeriesColor(const AValue: TColor);
|
||||
begin
|
||||
// SeriesColor is meaningless for PieSeries
|
||||
end;
|
||||
|
||||
function TPieSeries.AddXY(X, Y: Double; XLabel: String; Color: TColor): Longint;
|
||||
begin
|
||||
if Color = clTAColor then Color := Colors[ColorIndex];
|
||||
@ -1453,6 +1501,11 @@ begin
|
||||
Result := Max(ACanvas.TextWidth(Format('%1.2g %s', [y, Text])), Result);
|
||||
end;
|
||||
|
||||
function TPieSeries.GetSeriesColor: TColor;
|
||||
begin
|
||||
Result := clBlack; // SeriesColor is meaningless for PieSeries
|
||||
end;
|
||||
|
||||
|
||||
constructor TAreaSeries.Create(AOwner: TComponent);
|
||||
begin
|
||||
@ -1502,6 +1555,11 @@ begin
|
||||
UpdateParentChart;
|
||||
end;
|
||||
|
||||
procedure TAreaSeries.SetSeriesColor(const AValue: TColor);
|
||||
begin
|
||||
FAreaBrush.Color := AValue;
|
||||
end;
|
||||
|
||||
procedure TAreaSeries.Draw(ACanvas: TCanvas);
|
||||
var
|
||||
i: Integer;
|
||||
@ -1615,6 +1673,11 @@ begin
|
||||
ACanvas.Rectangle(ARect);
|
||||
end;
|
||||
|
||||
function TAreaSeries.GetSeriesColor: TColor;
|
||||
begin
|
||||
Result := FAreaBrush.Color;
|
||||
end;
|
||||
|
||||
{ TBasicLineSeries }
|
||||
|
||||
procedure TBasicLineSeries.DrawLegend(ACanvas: TCanvas; const ARect: TRect);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user