lcl: graphmath: made some params const, and procs inlinie

git-svn-id: trunk@60228 -
This commit is contained in:
mattias 2019-01-27 08:39:49 +00:00
parent e5be8d6a8e
commit f73562b87c

View File

@ -25,6 +25,7 @@ etc)
unit GraphMath;
{$Mode OBJFPC} {$H+}
{$inline on}
interface
@ -56,27 +57,27 @@ procedure Bezier2Polyline(const Bezier : TBezier; var Points : PPoint;
procedure BezierArcPoints(X, Y, Width, Height : Longint; Angle1, Angle2,
Rotation : Extended; var Points : PPoint; var Count : Longint);
function BezierMidPoint(Bezier : TBezier) : TFloatPoint;
function BezierMidPoint(const Bezier : TBezier) : TFloatPoint; inline;
procedure Coords2Angles(X, Y, Width, Height : Integer; SX, SY,
EX, EY : Integer; var Angle1, Angle2 : Extended);
function Distance(PT1,Pt2 : TPoint) : Extended; overload;
function Distance(Pt, SP, EP : TFloatPoint) : Extended; overload;
function Distance(const PT1,Pt2 : TPoint) : Extended; overload; inline;
function Distance(const Pt, SP, EP : TFloatPoint) : Extended; overload;
function EccentricAngle(PT : TPoint; Rect : TRect) : Extended;
function EccentricAngle(const PT : TPoint; const Rect : TRect) : Extended;
function EllipseRadialLength(Rect : TRect; EccentricAngle : Extended) : Longint;
function EllipseRadialLength(const Rect : TRect; EccentricAngle : Extended) : Longint;
function FloatPoint(AX,AY : Extended): TFloatPoint;
function FloatPoint(AX,AY : Extended): TFloatPoint; inline;
function LineEndPoint(StartPoint : TPoint; Angle, Length : Extended) : TPoint;
function LineEndPoint(const StartPoint : TPoint; Angle, Length : Extended) : TPoint;
procedure PolyBezier2Polyline(Beziers: Array of TBezier;
var Points : PPoint; var Count : Longint); Overload;
procedure PolyBezier2Polyline(Beziers : Array of TPoint;
procedure PolyBezier2Polyline(Beziers : Array of TPoint;
var Points : PPoint; var Count : Longint;
Continuous : Boolean); Overload;
Continuous : Boolean); Overload; inline;
procedure PolyBezier2Polyline(Beziers : PPoint; BCount : Longint;
var Points : PPoint; var Count : Longint;
Continuous : Boolean); Overload;
@ -84,48 +85,48 @@ procedure PolyBezier2Polyline(Beziers : PPoint; BCount : Longint;
procedure PolyBezierArcPoints(X, Y, Width, Height : Longint; Angle1,
Angle2, Rotation : Extended; var Points : PPoint; var Count : Longint);
function Quadrant(PT, Center : TPoint) : Integer;
function Quadrant(const PT, Center : TPoint) : Integer;
function RadialPoint(EccentricAngle : Extended; Rect : TRect) : TPoint;
function RadialPoint(EccentricAngle : Extended; const Rect : TRect) : TPoint;
procedure SplitBezier(Bezier : TBezier; var Left, Right : TBezier);
procedure SplitBezier(const Bezier : TBezier; var Left, Right : TBezier);
Operator + (Addend1, Addend2 : TFloatPoint) : TFloatPoint;
Operator + (Addend1 : TFloatPoint; Addend2 : Extended) : TFloatPoint;
Operator + (Addend1 : Extended; Addend2 : TFloatPoint) : TFloatPoint;
Operator + (Addend1 : TFloatPoint; Addend2 : TPoint) : TFloatPoint;
Operator + (Addend1 : TPoint; Addend2 : TFloatPoint) : TFloatPoint;
Operator + (const Addend1, Addend2 : TFloatPoint) : TFloatPoint; inline;
Operator + (const Addend1 : TFloatPoint; Addend2 : Extended) : TFloatPoint; inline;
Operator + (Addend1 : Extended; const Addend2 : TFloatPoint) : TFloatPoint; inline;
Operator + (const Addend1 : TFloatPoint; const Addend2 : TPoint) : TFloatPoint; inline;
Operator + (const Addend1 : TPoint; const Addend2 : TFloatPoint) : TFloatPoint; inline;
Operator - (Minuend : TFloatPoint; Subtrahend : Extended) : TFloatPoint;
Operator - (Minuend, Subtrahend : TFloatPoint) : TFloatPoint;
Operator - (Minuend : TFloatPoint; Subtrahend : TPoint) : TFloatPoint;
Operator - (Minuend : TPoint; Subtrahend : TFloatPoint) : TFloatPoint;
Operator - (const Minuend : TFloatPoint; Subtrahend : Extended) : TFloatPoint; inline;
Operator - (const Minuend, Subtrahend : TFloatPoint) : TFloatPoint; inline;
Operator - (const Minuend : TFloatPoint; const Subtrahend : TPoint) : TFloatPoint; inline;
Operator - (const Minuend : TPoint; const Subtrahend : TFloatPoint) : TFloatPoint; inline;
Operator * (Multiplicand, Multiplier : TFloatPoint) : TFloatPoint;
Operator * (Multiplicand : TFloatPoint; Multiplier : Extended) : TFloatPoint;
Operator * (Multiplicand : Extended; Multiplier : TFloatPoint) : TFloatPoint;
Operator * (Multiplicand : TFloatPoint; Multiplier : TPoint) : TFloatPoint;
Operator * (Multiplicand : TPoint; Multiplier : TFloatPoint) : TFloatPoint;
Operator * (const Multiplicand, Multiplier : TFloatPoint) : TFloatPoint; inline;
Operator * (const Multiplicand : TFloatPoint; Multiplier : Extended) : TFloatPoint; inline;
Operator * (Multiplicand : Extended; const Multiplier : TFloatPoint) : TFloatPoint; inline;
Operator * (const Multiplicand : TFloatPoint; const Multiplier : TPoint) : TFloatPoint; inline;
Operator * (const Multiplicand : TPoint; const Multiplier : TFloatPoint) : TFloatPoint; inline;
Operator / (Dividend, Divisor : TFloatPoint) : TFloatPoint;
Operator / (Dividend : TFloatPoint; Divisor : Extended) : TFloatPoint;
Operator / (Dividend : TFloatPoint; Divisor : TPoint) : TFloatPoint;
Operator / (Dividend : TPoint; Divisor : TFloatPoint) : TFloatPoint;
Operator / (const Dividend, Divisor : TFloatPoint) : TFloatPoint; inline;
Operator / (const Dividend : TFloatPoint; Divisor : Extended) : TFloatPoint; inline;
Operator / (const Dividend : TFloatPoint; const Divisor : TPoint) : TFloatPoint; inline;
Operator / (const Dividend : TPoint; const Divisor : TFloatPoint) : TFloatPoint; inline;
Operator = (Compare1, Compare2 : TPoint) : Boolean;
Operator = (Compare1, Compare2 : TFloatPoint) : Boolean;
Operator = (const Compare1, Compare2 : TPoint) : Boolean; inline;
Operator = (const Compare1, Compare2 : TFloatPoint) : Boolean; inline;
Operator := (Value : TFloatPoint) : TPoint;
Operator := (const Value : TFloatPoint) : TPoint; inline;
Operator := (Value : TPoint) : TFloatPoint;
Operator := (const Value : TPoint) : TFloatPoint; inline;
Operator = (Compare1, Compare2 : TRect) : Boolean;
Operator = (const Compare1, Compare2 : TRect) : Boolean;
implementation
Operator + (Addend1, Addend2 : TFloatPoint) : TFloatPoint;
Operator + (const Addend1, Addend2 : TFloatPoint) : TFloatPoint;
Begin
With Result do begin
X := Addend1.X + Addend2.X;
@ -133,7 +134,7 @@ Begin
end;
end;
Operator + (Addend1 : TFloatPoint; Addend2 : Extended) : TFloatPoint;
Operator + (const Addend1 : TFloatPoint; Addend2 : Extended) : TFloatPoint;
Begin
With Result do begin
X := Addend1.X + Addend2;
@ -141,12 +142,12 @@ Begin
end;
end;
Operator + (Addend1 : Extended; Addend2 : TFloatPoint) : TFloatPoint;
Operator + (Addend1 : Extended; const Addend2 : TFloatPoint) : TFloatPoint;
begin
Result := Addend2 + Addend1;
end;
Operator + (Addend1 : TFloatPoint; Addend2 : TPoint) : TFloatPoint;
Operator + (const Addend1 : TFloatPoint; const Addend2 : TPoint) : TFloatPoint;
Begin
With Result do begin
X := Addend1.X + Addend2.X;
@ -154,12 +155,12 @@ Begin
end;
end;
Operator + (Addend1 : TPoint; Addend2 : TFloatPoint) : TFloatPoint;
Operator + (const Addend1 : TPoint; const Addend2 : TFloatPoint) : TFloatPoint;
begin
Result := Addend2 + Addend1;
end;
Operator - (Minuend, Subtrahend:TFloatPoint) : TFloatPoint;
Operator - (const Minuend, Subtrahend:TFloatPoint) : TFloatPoint;
Begin
With Result do begin
X := Minuend.X - Subtrahend.X;
@ -167,7 +168,7 @@ Begin
end;
end;
Operator - (Minuend : TFloatPoint; Subtrahend : Extended) : TFloatPoint;
Operator - (const Minuend : TFloatPoint; Subtrahend : Extended) : TFloatPoint;
Begin
With Result do begin
X := Minuend.X - Subtrahend;
@ -175,7 +176,7 @@ Begin
end;
end;
Operator - (Minuend : TFloatPoint; Subtrahend : TPoint) : TFloatPoint;
Operator - (const Minuend : TFloatPoint; const Subtrahend : TPoint) : TFloatPoint;
begin
With Result do begin
X := Minuend.X - Subtrahend.X;
@ -183,7 +184,7 @@ begin
end;
end;
Operator - (Minuend : TPoint; Subtrahend : TFloatPoint) : TFloatPoint;
Operator - (const Minuend : TPoint; const Subtrahend : TFloatPoint) : TFloatPoint;
begin
With Result do begin
X := Minuend.X - Subtrahend.X;
@ -191,7 +192,7 @@ begin
end;
end;
Operator * (Multiplicand, Multiplier : TFloatPoint) : TFloatPoint;
Operator * (const Multiplicand, Multiplier : TFloatPoint) : TFloatPoint;
Begin
With Result do begin
X := Multiplicand.X * Multiplier.X;
@ -199,7 +200,7 @@ Begin
end;
end;
Operator * (Multiplicand : TFloatPoint; Multiplier : Extended) : TFloatPoint;
Operator * (const Multiplicand : TFloatPoint; Multiplier : Extended) : TFloatPoint;
Begin
With Result do begin
X := Multiplicand.X * Multiplier;
@ -207,12 +208,12 @@ Begin
end;
end;
Operator * (Multiplicand : Extended; Multiplier : TFloatPoint) : TFloatPoint;
Operator * (Multiplicand : Extended; const Multiplier : TFloatPoint) : TFloatPoint;
Begin
Result := Multiplier*Multiplicand;
end;
Operator * (Multiplicand : TFloatPoint; Multiplier : TPoint) : TFloatPoint;
Operator * (const Multiplicand : TFloatPoint; const Multiplier : TPoint) : TFloatPoint;
begin
With Result do begin
X := Multiplicand.X * Multiplier.X;
@ -220,12 +221,12 @@ begin
end;
end;
Operator * (Multiplicand : TPoint; Multiplier : TFloatPoint) : TFloatPoint;
Operator * (const Multiplicand : TPoint; const Multiplier : TFloatPoint) : TFloatPoint;
begin
Result := Multiplier*Multiplicand;
end;
Operator / (Dividend, Divisor : TFloatPoint) : TFloatPoint;
Operator / (const Dividend, Divisor : TFloatPoint) : TFloatPoint;
Begin
With Result do begin
X := Dividend.X / Divisor.X;
@ -233,7 +234,7 @@ Begin
end;
end;
Operator / (Dividend : TFloatPoint; Divisor : Extended) : TFloatPoint;
Operator / (const Dividend : TFloatPoint; Divisor : Extended) : TFloatPoint;
begin
With Result do begin
X := Dividend.X / Divisor;
@ -241,7 +242,7 @@ begin
end;
end;
Operator / (Dividend : TFloatPoint; Divisor : TPoint) : TFloatPoint;
Operator / (const Dividend : TFloatPoint; const Divisor : TPoint) : TFloatPoint;
begin
With Result do begin
X := Dividend.X / Divisor.X;
@ -249,7 +250,7 @@ begin
end;
end;
Operator / (Dividend : TPoint; Divisor : TFloatPoint) : TFloatPoint;
Operator / (const Dividend : TPoint; const Divisor : TFloatPoint) : TFloatPoint;
begin
With Result do begin
X := Dividend.X / Divisor.X;
@ -257,23 +258,23 @@ begin
end;
end;
Operator = (Compare1, Compare2 : TPoint) : Boolean;
Operator = (const Compare1, Compare2 : TPoint) : Boolean;
begin
Result := (Compare1.X = Compare2.X) and (Compare1.Y = Compare2.Y);
end;
Operator = (Compare1, Compare2 : TFloatPoint) : Boolean;
Operator = (const Compare1, Compare2 : TFloatPoint) : Boolean;
begin
Result := (Compare1.X = Compare2.X) and (Compare1.Y = Compare2.Y);
end;
Operator := (Value : TFloatPoint) : TPoint;
Operator := (const Value : TFloatPoint) : TPoint;
begin
Result.X := Trunc(SimpleRoundTo(Value.X, 0));
Result.Y := Trunc(SimpleRoundTo(Value.Y, 0));
end;
Operator := (Value : TPoint) : TFloatPoint;
Operator := (const Value : TPoint) : TFloatPoint;
begin
With Result do begin
X := Value.X;
@ -281,7 +282,7 @@ begin
end;
end;
Operator = (Compare1, Compare2 : TRect) : Boolean;
Operator = (const Compare1, Compare2 : TRect) : Boolean;
begin
Result := (Compare1.Left = Compare2.Left) and
(Compare1.Top = Compare2.Top) and
@ -585,7 +586,7 @@ end;
primarily for use in SplitBezier.
------------------------------------------------------------------------------}
function BezierMidPoint(Bezier : TBezier) : TFloatPoint;
function BezierMidPoint(const Bezier : TBezier) : TFloatPoint;
begin
Result := (Bezier[0] + 3*Bezier[1] + 3*Bezier[2] + Bezier[3]) / 8;
end;
@ -629,7 +630,7 @@ end;
for use in other routines such as EccentricAngle.
------------------------------------------------------------------------------}
function Distance(Pt1,Pt2 : TPoint) : Extended;
function Distance(const Pt1,Pt2 : TPoint) : Extended;
begin
Result := Sqrt(Sqr(Pt2.X - Pt1.X) + Sqr(Pt2.Y - Pt1.Y));
end;
@ -644,7 +645,7 @@ end;
are TFloatPoint's, NOT TPoint's.
------------------------------------------------------------------------------}
function Distance(Pt, SP, EP : TFloatPoint) : Extended;
function Distance(const Pt, SP, EP : TFloatPoint) : Extended;
var
A, B, C : Extended;
@ -679,7 +680,7 @@ end;
5760 (16*360). Zero degrees is at the 3'o clock position.
------------------------------------------------------------------------------}
function EccentricAngle(PT : TPoint; Rect : TRect) : Extended;
function EccentricAngle(const PT : TPoint; const Rect : TRect) : Extended;
var
CenterPt : TPoint;
Quad : Integer;
@ -731,7 +732,7 @@ end;
3'o clock position.
------------------------------------------------------------------------------}
function EllipseRadialLength(Rect : TRect; EccentricAngle : Extended) : Longint;
function EllipseRadialLength(const Rect : TRect; EccentricAngle : Extended) : Longint;
var
a, b, R : Extended;
begin
@ -774,7 +775,7 @@ end;
3'o clock position.
------------------------------------------------------------------------------}
function LineEndPoint(StartPoint : TPoint; Angle, Length : Extended) :
function LineEndPoint(const StartPoint : TPoint; Angle, Length : Extended) :
TPoint;
begin
if Angle > 360*16 then
@ -958,7 +959,7 @@ end;
that is, it is the Center.
------------------------------------------------------------------------------}
function Quadrant(Pt,Center : TPoint) : Integer;
function Quadrant(const Pt,Center : TPoint) : Integer;
var
X,Y,CX,CY : Longint;
begin
@ -1015,7 +1016,7 @@ end;
equals 5760 (16*360). Zero degrees is at the 3'o clock position.
------------------------------------------------------------------------------}
function RadialPoint(EccentricAngle : Extended; Rect : TRect) : TPoint;
function RadialPoint(EccentricAngle : Extended; const Rect : TRect) : TPoint;
var
R : Longint;
Begin
@ -1032,7 +1033,7 @@ end;
a 'Left' and a 'Right'. It is primarily for use in Bezier2Polyline.
------------------------------------------------------------------------------}
procedure SplitBezier(Bezier : TBezier; var Left, Right : TBezier);
procedure SplitBezier(const Bezier : TBezier; var Left, Right : TBezier);
var
Tmp : TFloatPoint;
begin