mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-16 01:40:37 +01:00
TAChart: Extract TChartDataItem.MultiplyY and SetY methods
git-svn-id: trunk@32330 -
This commit is contained in:
parent
8aa42c7c6c
commit
ef2a5f2019
@ -90,7 +90,8 @@ type
|
||||
Text: String;
|
||||
YList: TDoubleDynArray;
|
||||
function GetY(AIndex: Integer): Double;
|
||||
procedure ClearY;
|
||||
procedure SetY(AValue: Double);
|
||||
procedure MultiplyY(ACoeff: Double);
|
||||
end;
|
||||
PChartDataItem = ^TChartDataItem;
|
||||
|
||||
@ -339,15 +340,6 @@ end;
|
||||
|
||||
{ TChartDataItem }
|
||||
|
||||
procedure TChartDataItem.ClearY;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
Y := 0;
|
||||
for i := 0 to High(YList) do
|
||||
YList[i] := 0;
|
||||
end;
|
||||
|
||||
function TChartDataItem.GetY(AIndex: Integer): Double;
|
||||
begin
|
||||
AIndex := EnsureRange(AIndex, 0, Length(YList));
|
||||
@ -357,6 +349,24 @@ begin
|
||||
Result := YList[AIndex - 1];
|
||||
end;
|
||||
|
||||
procedure TChartDataItem.MultiplyY(ACoeff: Double);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
Y *= ACoeff;
|
||||
for i := 0 to High(YList) do
|
||||
YList[i] *= ACoeff;
|
||||
end;
|
||||
|
||||
procedure TChartDataItem.SetY(AValue: Double);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
Y := AValue;
|
||||
for i := 0 to High(YList) do
|
||||
YList[i] := AValue;
|
||||
end;
|
||||
|
||||
{ TChartSourceBuffer }
|
||||
|
||||
procedure TChartSourceBuffer.AddFirst(const AItem: TChartDataItem);
|
||||
|
||||
@ -894,9 +894,7 @@ begin
|
||||
FHistory.GetSum(FItem);
|
||||
camAverage: begin
|
||||
FHistory.GetSum(FItem);
|
||||
FItem.Y /= Min(ar, AIndex + 1);
|
||||
for i := 0 to High(FItem.YList) do
|
||||
FItem.YList[i] /= Min(ar, AIndex + 1);
|
||||
FItem.MultiplyY(1 / Min(ar, AIndex + 1));
|
||||
end;
|
||||
camDerivative:
|
||||
CalcDerivative(AIndex);
|
||||
@ -920,7 +918,7 @@ var
|
||||
i, j, ar: Integer;
|
||||
dx: Double;
|
||||
begin
|
||||
FItem.ClearY;
|
||||
FItem.SetY(0.0);
|
||||
if AIndex = 0 then begin
|
||||
FItem.X := SafeNan;
|
||||
exit;
|
||||
@ -938,21 +936,17 @@ begin
|
||||
for i := 0 to High(FItem.YList) do
|
||||
FItem.YList[i] += prevItem^.YList[i] * COEFFS[ar, j];
|
||||
end;
|
||||
FItem.Y /= dx;
|
||||
for i := 0 to High(FItem.YList) do
|
||||
FItem.YList[i] /= dx;
|
||||
FItem.MultiplyY(1 / dx);
|
||||
end;
|
||||
|
||||
procedure TCalculatedChartSource.CalcPercentage;
|
||||
var
|
||||
s: Double;
|
||||
i: Integer;
|
||||
begin
|
||||
if not Percentage then exit;
|
||||
s := (FItem.Y + Sum(FItem.YList)) * PERCENT;
|
||||
FItem.Y /= s;
|
||||
for i := 0 to High(FItem.YList) do
|
||||
FItem.YList[i] /= s;
|
||||
if s = 0 then exit;
|
||||
FItem.MultiplyY(1 / s);
|
||||
end;
|
||||
|
||||
procedure TCalculatedChartSource.Changed(ASender: TObject);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user