mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 01:39:31 +02:00
TAChart: Fix TChart.IsPointInViewPort to allow for floating point round-off errors (issue #34961).
git-svn-id: trunk@60235 -
This commit is contained in:
parent
7ede3bf313
commit
7a10cc1e56
@ -1306,7 +1306,8 @@ function TChart.IsPointInViewPort(const AP: TDoublePoint): Boolean;
|
||||
begin
|
||||
Result :=
|
||||
not IsNan(AP) and
|
||||
InRange(AP.X, XGraphMin, XGraphMax) and InRange(AP.Y, YGraphMin, YGraphMax);
|
||||
SafeInRangeWithBounds(AP.X, XGraphMin, XGraphMax) and
|
||||
SafeInRangeWithBounds(AP.Y, YGraphMin, YGraphMax);
|
||||
end;
|
||||
|
||||
procedure TChart.KeyDownAfterInterface(var AKey: Word; AShift: TShiftState);
|
||||
|
@ -28,6 +28,7 @@ function InRangeUlps(AX, ALo, AHi: Double; AMaxUlps: Word): Boolean;
|
||||
|
||||
function SafeInfinity: Double; inline;
|
||||
function SafeInRange(AValue, ABound1, ABound2: Double): Boolean;
|
||||
function SafeInRangeWithBounds(AValue, ABound1, ABound2: Double): Boolean;
|
||||
function SafeMin(A, B: Double): Double;
|
||||
function SafeNan: Double; inline;
|
||||
function SafeEqual(A, B: Double): Boolean;
|
||||
@ -159,6 +160,13 @@ begin
|
||||
Result := InRange(AValue, ABound1, ABound2);
|
||||
end;
|
||||
|
||||
function SafeInRangeWithBounds(AValue, ABound1, ABound2: Double): Boolean;
|
||||
begin
|
||||
EnsureOrder(ABound1, ABound2);
|
||||
Result := InRange(AValue, ABound1, ABound2) or
|
||||
SameValue(AValue, ABound1) or SameValue(AValue, ABound2);
|
||||
end;
|
||||
|
||||
function SafeMin(A, B: Double): Double;
|
||||
begin
|
||||
if IsNan(A) then
|
||||
|
Loading…
Reference in New Issue
Block a user