mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-28 12:29:13 +02:00
TAChart: Optimzed extent calculation when chart source is sorted. Issue #35389, patch by Marcin Wiazowski.
git-svn-id: trunk@60991 -
This commit is contained in:
parent
fbef644b79
commit
d9bccc11be
@ -809,30 +809,41 @@ var
|
|||||||
begin
|
begin
|
||||||
if FBasicExtentIsValid then
|
if FBasicExtentIsValid then
|
||||||
exit(FBasicExtent);
|
exit(FBasicExtent);
|
||||||
|
|
||||||
FBasicExtent := EmptyExtent;
|
FBasicExtent := EmptyExtent;
|
||||||
|
|
||||||
if XCount > 0 then begin
|
if Count > 0 then begin
|
||||||
if HasXErrorBars then
|
if XCount > 0 then begin
|
||||||
for i := 0 to Count - 1 do begin
|
if HasXErrorBars then
|
||||||
GetXErrorBarLimits(i, vhi, vlo);
|
for i := 0 to Count - 1 do begin
|
||||||
UpdateMinMax(vhi, FBasicExtent.a.X, FBasicExtent.b.X);
|
GetXErrorBarLimits(i, vhi, vlo);
|
||||||
UpdateMinMax(vlo, FBasicExtent.a.X, FBasicExtent.b.X);
|
UpdateMinMax(vhi, FBasicExtent.a.X, FBasicExtent.b.X);
|
||||||
end
|
UpdateMinMax(vlo, FBasicExtent.a.X, FBasicExtent.b.X);
|
||||||
else
|
end
|
||||||
for i:=0 to Count - 1 do
|
else
|
||||||
UpdateMinMax(Item[i]^.X, FBasicExtent.a.X, FBasicExtent.b.X);
|
if (FSortBy = sbX) and (FSortIndex = 0) then begin
|
||||||
end;
|
UpdateMinMax(Item[0]^.X, FBasicExtent.a.X, FBasicExtent.b.X);
|
||||||
|
UpdateMinMax(Item[Count-1]^.X, FBasicExtent.a.X, FBasicExtent.b.X);
|
||||||
|
end else
|
||||||
|
for i:=0 to Count - 1 do
|
||||||
|
UpdateMinMax(Item[i]^.X, FBasicExtent.a.X, FBasicExtent.b.X);
|
||||||
|
end;
|
||||||
|
|
||||||
if YCount > 0 then begin
|
if YCount > 0 then begin
|
||||||
if HasYErrorBars then
|
if HasYErrorBars then
|
||||||
for i := 0 to Count - 1 do begin
|
for i := 0 to Count - 1 do begin
|
||||||
GetYErrorBarLimits(i, vhi, vlo);
|
GetYErrorBarLimits(i, vhi, vlo);
|
||||||
UpdateMinMax(vhi, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
UpdateMinMax(vhi, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
||||||
UpdateMinMax(vlo, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
UpdateMinMax(vlo, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
for i:=0 to Count - 1 do
|
if (FSortBy = sbY) and (FSortIndex = 0) then begin
|
||||||
UpdateMinMax(Item[i]^.Y, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
UpdateMinMax(Item[0]^.Y, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
||||||
|
UpdateMinMax(Item[Count-1]^.Y, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
||||||
|
end else
|
||||||
|
for i:=0 to Count - 1 do
|
||||||
|
UpdateMinMax(Item[i]^.Y, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
FBasicExtentIsValid := true;
|
FBasicExtentIsValid := true;
|
||||||
|
Loading…
Reference in New Issue
Block a user