mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-26 20:50:07 +02:00
lcl: graphmath: made some params const, and procs inlinie
git-svn-id: trunk@60228 -
This commit is contained in:
parent
e5be8d6a8e
commit
f73562b87c
135
lcl/graphmath.pp
135
lcl/graphmath.pp
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user