mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-13 14:59:11 +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
|
||||
if FBasicExtentIsValid then
|
||||
exit(FBasicExtent);
|
||||
|
||||
FBasicExtent := EmptyExtent;
|
||||
|
||||
if XCount > 0 then begin
|
||||
if HasXErrorBars then
|
||||
for i := 0 to Count - 1 do begin
|
||||
GetXErrorBarLimits(i, vhi, vlo);
|
||||
UpdateMinMax(vhi, FBasicExtent.a.X, FBasicExtent.b.X);
|
||||
UpdateMinMax(vlo, 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 Count > 0 then begin
|
||||
if XCount > 0 then begin
|
||||
if HasXErrorBars then
|
||||
for i := 0 to Count - 1 do begin
|
||||
GetXErrorBarLimits(i, vhi, vlo);
|
||||
UpdateMinMax(vhi, FBasicExtent.a.X, FBasicExtent.b.X);
|
||||
UpdateMinMax(vlo, FBasicExtent.a.X, FBasicExtent.b.X);
|
||||
end
|
||||
else
|
||||
if (FSortBy = sbX) and (FSortIndex = 0) then begin
|
||||
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 HasYErrorBars then
|
||||
for i := 0 to Count - 1 do begin
|
||||
GetYErrorBarLimits(i, vhi, vlo);
|
||||
UpdateMinMax(vhi, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
||||
UpdateMinMax(vlo, 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);
|
||||
if YCount > 0 then begin
|
||||
if HasYErrorBars then
|
||||
for i := 0 to Count - 1 do begin
|
||||
GetYErrorBarLimits(i, vhi, vlo);
|
||||
UpdateMinMax(vhi, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
||||
UpdateMinMax(vlo, FBasicExtent.a.Y, FBasicExtent.b.Y);
|
||||
end
|
||||
else
|
||||
if (FSortBy = sbY) and (FSortIndex = 0) then begin
|
||||
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;
|
||||
|
||||
FBasicExtentIsValid := true;
|
||||
|
Loading…
Reference in New Issue
Block a user