mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-21 06:28:33 +02:00
TAChart: allow series to include margins.
git-svn-id: trunk@18871 -
This commit is contained in:
parent
f940156a21
commit
ca17997c57
@ -171,6 +171,7 @@ type
|
|||||||
function GetLegendCount: Integer; virtual; abstract;
|
function GetLegendCount: Integer; virtual; abstract;
|
||||||
function GetLegendWidth(ACanvas: TCanvas): Integer; virtual; abstract;
|
function GetLegendWidth(ACanvas: TCanvas): Integer; virtual; abstract;
|
||||||
function IsInLegend: Boolean; virtual; abstract;
|
function IsInLegend: Boolean; virtual; abstract;
|
||||||
|
procedure UpdateMargins(ACanvas: TCanvas; var AMargins: TRect); virtual;
|
||||||
procedure UpdateBounds(
|
procedure UpdateBounds(
|
||||||
var ANumPoints: Integer; var AXMin, AYMin, AXMax, AYMax: Double);
|
var ANumPoints: Integer; var AXMin, AYMin, AXMax, AYMax: Double);
|
||||||
virtual; abstract;
|
virtual; abstract;
|
||||||
@ -265,7 +266,8 @@ type
|
|||||||
|
|
||||||
FAxisVisible: Boolean;
|
FAxisVisible: Boolean;
|
||||||
|
|
||||||
procedure CalculateTransformationCoeffs;
|
function GetMargins(ACanvas: TCanvas): TRect;
|
||||||
|
procedure CalculateTransformationCoeffs(const AMargin: TRect);
|
||||||
procedure PrepareXorPen;
|
procedure PrepareXorPen;
|
||||||
procedure SetAutoUpdateXMin(Value: Boolean);
|
procedure SetAutoUpdateXMin(Value: Boolean);
|
||||||
procedure SetAutoUpdateXMax(Value: Boolean);
|
procedure SetAutoUpdateXMax(Value: Boolean);
|
||||||
@ -853,13 +855,13 @@ begin
|
|||||||
Canvas.Pen.Width := 1;
|
Canvas.Pen.Width := 1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TChart.CalculateTransformationCoeffs;
|
procedure TChart.CalculateTransformationCoeffs(const AMargin: TRect);
|
||||||
var
|
var
|
||||||
lo, hi: Integer;
|
lo, hi: Integer;
|
||||||
begin
|
begin
|
||||||
if FXGraphMax <> FXGraphMin then begin
|
if FXGraphMax <> FXGraphMin then begin
|
||||||
lo := XImageMin;
|
lo := XImageMin + AMargin.Left;
|
||||||
hi := XImageMax;
|
hi := XImageMax - AMargin.Right;
|
||||||
if BottomAxis.Inverted then
|
if BottomAxis.Inverted then
|
||||||
Exchange(lo, hi);
|
Exchange(lo, hi);
|
||||||
FScale.X := (hi - lo) / (FXGraphMax - FXGraphMin);
|
FScale.X := (hi - lo) / (FXGraphMax - FXGraphMin);
|
||||||
@ -870,8 +872,8 @@ begin
|
|||||||
FOffset.X := 0;
|
FOffset.X := 0;
|
||||||
end;
|
end;
|
||||||
if FYGraphMax <> FYGraphMin then begin
|
if FYGraphMax <> FYGraphMin then begin
|
||||||
lo := YImageMin;
|
lo := YImageMin - AMargin.Bottom;
|
||||||
hi := YImageMax;
|
hi := YImageMax + AMargin.Top;
|
||||||
if LeftAxis.Inverted then
|
if LeftAxis.Inverted then
|
||||||
Exchange(lo, hi);
|
Exchange(lo, hi);
|
||||||
FScale.Y := (hi - lo) / (FYGraphMax - FYGraphMin);
|
FScale.Y := (hi - lo) / (FYGraphMax - FYGraphMin);
|
||||||
@ -1086,7 +1088,7 @@ begin
|
|||||||
XImageMax := ARect.Right - 10 - GetLegendWidth(ACanvas);
|
XImageMax := ARect.Right - 10 - GetLegendWidth(ACanvas);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
CalculateTransformationCoeffs;
|
CalculateTransformationCoeffs(GetMargins(ACanvas));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Background
|
// Background
|
||||||
@ -1273,6 +1275,15 @@ begin
|
|||||||
Result += 20 + 10;
|
Result += 20 + 10;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TChart.GetMargins(ACanvas: TCanvas): TRect;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
Result := Rect(0, 0, 0, 0);
|
||||||
|
for i := 0 to SeriesCount - 1 do
|
||||||
|
Series[i].UpdateMargins(ACanvas, Result);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TChart.SetGraphBrush(Value: TBrush);
|
procedure TChart.SetGraphBrush(Value: TBrush);
|
||||||
begin
|
begin
|
||||||
FGraphBrush.Assign(Value);
|
FGraphBrush.Assign(Value);
|
||||||
@ -1394,7 +1405,8 @@ begin
|
|||||||
if FAutoUpdateYMax then FYGraphMax := 0;
|
if FAutoUpdateYMax then FYGraphMax := 0;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
CalculateTransformationCoeffs;
|
|
||||||
|
CalculateTransformationCoeffs(GetMargins(ACanvas));
|
||||||
Clean(ACanvas, ARect);
|
Clean(ACanvas, ARect);
|
||||||
DrawAxis(ACanvas, ARect);
|
DrawAxis(ACanvas, ARect);
|
||||||
DisplaySeries(ACanvas);
|
DisplaySeries(ACanvas);
|
||||||
@ -1837,6 +1849,12 @@ begin
|
|||||||
(AParent as TChart).AddSeries(Self);
|
(AParent as TChart).AddSeries(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TBasicChartSeries.UpdateMargins(
|
||||||
|
ACanvas: TCanvas; var AMargins: TRect);
|
||||||
|
begin
|
||||||
|
// nothing
|
||||||
|
end;
|
||||||
|
|
||||||
procedure Register;
|
procedure Register;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
Loading…
Reference in New Issue
Block a user