mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 17:19:19 +02:00
TAChart: Use enumerators in utils, tools and transformations
git-svn-id: trunk@31700 -
This commit is contained in:
parent
d73181cc5c
commit
14fabdf99b
@ -130,6 +130,15 @@ type
|
|||||||
|
|
||||||
TShowMessageProc = procedure (const AMsg: String);
|
TShowMessageProc = procedure (const AMsg: String);
|
||||||
|
|
||||||
|
{$IFNDEF fpdoc} // Workaround for issue #18549.
|
||||||
|
generic TTypedFPListEnumerator<T> = class(TFPListEnumerator)
|
||||||
|
{$ELSE}
|
||||||
|
TTypedFPListEnumerator = class(TFPListEnumerator)
|
||||||
|
{$ENDIF}
|
||||||
|
function GetCurrent: T;
|
||||||
|
property Current: T read GetCurrent;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TIndexedComponentList }
|
{ TIndexedComponentList }
|
||||||
|
|
||||||
TIndexedComponentList = class(TFPList)
|
TIndexedComponentList = class(TFPList)
|
||||||
@ -427,6 +436,13 @@ begin
|
|||||||
Result := (A.Code = B.Code) and (A.Data = B.Data);
|
Result := (A.Code = B.Code) and (A.Data = B.Data);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TTypedFPListEnumerator }
|
||||||
|
|
||||||
|
function TTypedFPListEnumerator.GetCurrent: T;
|
||||||
|
begin
|
||||||
|
Result := T(inherited GetCurrent);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TIndexedComponentList }
|
{ TIndexedComponentList }
|
||||||
|
|
||||||
procedure TIndexedComponentList.ChangeNamePrefix(
|
procedure TIndexedComponentList.ChangeNamePrefix(
|
||||||
@ -607,19 +623,19 @@ end;
|
|||||||
|
|
||||||
procedure TBroadcaster.Broadcast(ASender: TObject);
|
procedure TBroadcaster.Broadcast(ASender: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
p: Pointer;
|
||||||
begin
|
begin
|
||||||
if Locked then exit;
|
if Locked then exit;
|
||||||
for i := 0 to Count - 1 do
|
for p in Self do
|
||||||
TListener(Items[i]).Notify(ASender);
|
TListener(p).Notify(ASender);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TBroadcaster.Destroy;
|
destructor TBroadcaster.Destroy;
|
||||||
var
|
var
|
||||||
i: Integer;
|
p: Pointer;
|
||||||
begin
|
begin
|
||||||
for i := 0 to Count - 1 do
|
for p in Self do
|
||||||
TListener(Items[i]).Forget;
|
TListener(p).Forget;
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1180,25 +1180,24 @@ end;
|
|||||||
|
|
||||||
function TDataPointTool.ParseAffectedSeries: TBooleanDynArray;
|
function TDataPointTool.ParseAffectedSeries: TBooleanDynArray;
|
||||||
var
|
var
|
||||||
s: TStringList;
|
sl: TStringList;
|
||||||
i, p: Integer;
|
p: Integer;
|
||||||
|
s: String;
|
||||||
begin
|
begin
|
||||||
SetLength(Result, FChart.SeriesCount);
|
SetLength(Result, FChart.SeriesCount);
|
||||||
if AffectedSeries = '' then begin
|
if AffectedSeries = '' then begin
|
||||||
FillChar(Result[0], Length(Result), true);
|
FillChar(Result[0], Length(Result), true);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
s := TStringList.Create;
|
sl := TStringList.Create;
|
||||||
try
|
try
|
||||||
s.CommaText := AffectedSeries;
|
sl.CommaText := AffectedSeries;
|
||||||
FillChar(Result[0], Length(Result), false);
|
FillChar(Result[0], Length(Result), false);
|
||||||
for i := 0 to s.Count - 1 do begin
|
for s in sl do
|
||||||
p := StrToIntDef(s[i], -1);
|
if TryStrToInt(s, p) and InRange(p, 0, High(Result)) then
|
||||||
if InRange(p, 0, High(Result)) then
|
|
||||||
Result[p] := true;
|
Result[p] := true;
|
||||||
end;
|
|
||||||
finally
|
finally
|
||||||
s.Free;
|
sl.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -70,7 +70,13 @@ type
|
|||||||
|
|
||||||
TAxisTransformClass = class of TAxisTransform;
|
TAxisTransformClass = class of TAxisTransform;
|
||||||
|
|
||||||
|
{$IFNDEF fpdoc} // Workaround for issue #18549.
|
||||||
|
TAxisTransformEnumerator = specialize TTypedFPListEnumerator<TAxisTransform>;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
TAxisTransformList = class(TIndexedComponentList)
|
TAxisTransformList = class(TIndexedComponentList)
|
||||||
|
public
|
||||||
|
function GetEnumerator: TAxisTransformEnumerator;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TChartAxisTransformations }
|
{ TChartAxisTransformations }
|
||||||
@ -258,6 +264,13 @@ begin
|
|||||||
AxisTransformsClassRegistry.AddObject(ACaption, TObject(AAxisTransformClass));
|
AxisTransformsClassRegistry.AddObject(ACaption, TObject(AAxisTransformClass));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TAxisTransformList }
|
||||||
|
|
||||||
|
function TAxisTransformList.GetEnumerator: TAxisTransformEnumerator;
|
||||||
|
begin
|
||||||
|
Result := TAxisTransformEnumerator.Create(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TAxisTransformsComponentEditor }
|
{ TAxisTransformsComponentEditor }
|
||||||
|
|
||||||
function TAxisTransformsComponentEditor.GetVerb(Index: Integer): string;
|
function TAxisTransformsComponentEditor.GetVerb(Index: Integer): string;
|
||||||
@ -450,23 +463,21 @@ end;
|
|||||||
|
|
||||||
function TChartAxisTransformations.AxisToGraph(AX: Double): Double;
|
function TChartAxisTransformations.AxisToGraph(AX: Double): Double;
|
||||||
var
|
var
|
||||||
i: Integer;
|
t: TAxisTransform;
|
||||||
begin
|
begin
|
||||||
Result := AX;
|
Result := AX;
|
||||||
for i := 0 to List.Count - 1 do
|
for t in List do
|
||||||
with TAxisTransform(List[i]) do
|
if t.Enabled then
|
||||||
if Enabled then
|
Result := t.AxisToGraph(Result);
|
||||||
Result := AxisToGraph(Result);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TChartAxisTransformations.ClearBounds;
|
procedure TChartAxisTransformations.ClearBounds;
|
||||||
var
|
var
|
||||||
i: Integer;
|
t: TAxisTransform;
|
||||||
begin
|
begin
|
||||||
for i := List.Count - 1 downto 0 do
|
for t in List do
|
||||||
with TAxisTransform(List[i]) do
|
if t.Enabled then
|
||||||
if Enabled then
|
t.ClearBounds;
|
||||||
ClearBounds;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TChartAxisTransformations.Create(AOwner: TComponent);
|
constructor TChartAxisTransformations.Create(AOwner: TComponent);
|
||||||
@ -488,11 +499,11 @@ end;
|
|||||||
procedure TChartAxisTransformations.GetChildren(
|
procedure TChartAxisTransformations.GetChildren(
|
||||||
Proc: TGetChildProc; Root: TComponent);
|
Proc: TGetChildProc; Root: TComponent);
|
||||||
var
|
var
|
||||||
i: Integer;
|
t: TAxisTransform;
|
||||||
begin
|
begin
|
||||||
for i := 0 to List.Count - 1 do
|
for t in List do
|
||||||
if TAxisTransform(List[i]).Owner = Root then
|
if t.Owner = Root then
|
||||||
Proc(TAxisTransform(List[i]));
|
Proc(t);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TChartAxisTransformations.GraphToAxis(AX: Double): Double;
|
function TChartAxisTransformations.GraphToAxis(AX: Double): Double;
|
||||||
@ -508,12 +519,11 @@ end;
|
|||||||
|
|
||||||
procedure TChartAxisTransformations.SetChart(AChart: TObject);
|
procedure TChartAxisTransformations.SetChart(AChart: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
t: TAxisTransform;
|
||||||
begin
|
begin
|
||||||
for i := 0 to List.Count - 1 do
|
for t in List do
|
||||||
with TAxisTransform(List[i]) do
|
if t.Enabled then
|
||||||
if Enabled then
|
t.SetChart(AChart);
|
||||||
TAxisTransform(List[i]).SetChart(AChart);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TChartAxisTransformations.SetChildOrder(
|
procedure TChartAxisTransformations.SetChildOrder(
|
||||||
@ -539,12 +549,11 @@ end;
|
|||||||
|
|
||||||
procedure TChartAxisTransformations.UpdateBounds(var AMin, AMax: Double);
|
procedure TChartAxisTransformations.UpdateBounds(var AMin, AMax: Double);
|
||||||
var
|
var
|
||||||
i: Integer;
|
t: TAxisTransform;
|
||||||
begin
|
begin
|
||||||
for i := 0 to List.Count - 1 do
|
for t in List do
|
||||||
with TAxisTransform(List[i]) do
|
if t.Enabled then
|
||||||
if Enabled then
|
t.UpdateBounds(AMin, AMax);
|
||||||
UpdateBounds(AMin, AMax);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TLinearAxisTransform }
|
{ TLinearAxisTransform }
|
||||||
|
Loading…
Reference in New Issue
Block a user