-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPascalType.Painter.pas
More file actions
110 lines (94 loc) · 4.32 KB
/
PascalType.Painter.pas
File metadata and controls
110 lines (94 loc) · 4.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
unit PascalType.Painter;
////////////////////////////////////////////////////////////////////////////////
// //
// Version: MPL 1.1 or LGPL 2.1 with linking exception //
// //
// The contents of this file are subject to the Mozilla Public License //
// Version 1.1 (the "License"); you may not use this file except in //
// compliance with the License. You may obtain a copy of the License at //
// http://www.mozilla.org/MPL/ //
// //
// Software distributed under the License is distributed on an "AS IS" //
// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the //
// License for the specific language governing rights and limitations under //
// the License. //
// //
// Alternatively, the contents of this file may be used under the terms of //
// the Free Pascal modified version of the GNU Lesser General Public //
// License Version 2.1 (the "FPC modified LGPL License"), in which case the //
// provisions of this license are applicable instead of those above. //
// Please see the file LICENSE.txt for additional information concerning //
// this license. //
// //
// The code is part of the PascalType Project //
// //
// The initial developer of this code is Christian-W. Budde //
// //
// Portions created by Christian-W. Budde are Copyright (C) 2010-2017 //
// by Christian-W. Budde. All Rights Reserved. //
// //
////////////////////////////////////////////////////////////////////////////////
interface
{$I PT_Compiler.inc}
{$define FILL_PATH}
{-$define STROKE_PATH}
//------------------------------------------------------------------------------
//
// IPascalTypePainter
//
//------------------------------------------------------------------------------
// Represents the object used to paint a glyph.
//------------------------------------------------------------------------------
type
TRenderFloat = Single;
TFloatPoint = record
X, Y: TRenderFloat;
end;
TFloatRect = record
procedure Inflate(dx, dy: TRenderFloat);
public
case integer of
0: (Left, Top, Right, Bottom: TRenderFloat);
1: (TopLeft, BottomRight: TFloatPoint);
end;
IPascalTypePainter = interface
['{E16C8963-A9E5-407A-84C4-FEDDE957B7CF}']
procedure BeginUpdate;
procedure EndUpdate;
procedure BeginGlyph;
procedure EndGlyph;
procedure BeginPath;
procedure EndPath(AClose: boolean);
procedure MoveTo(const p: TFloatPoint);
procedure LineTo(const p: TFloatPoint);
procedure QuadraticBezierTo(const ControlPoint, p: TFloatPoint);
procedure CubicBezierTo(const ControlPoint1, ControlPoint2, p: TFloatPoint);
procedure Rectangle(const r: TFloatRect);
procedure Circle(const p: TFloatPoint; Radius: TRenderFloat);
procedure SetColor(Color: Cardinal);
function GetColor: Cardinal;
procedure SetStrokeColor(Color: Cardinal);
function GetStrokeColor: Cardinal;
property Color: Cardinal read GetColor write SetColor;
property StrokeColor: Cardinal read GetStrokeColor write SetStrokeColor;
end;
implementation
//------------------------------------------------------------------------------
//
// TFloatRect
//
//------------------------------------------------------------------------------
procedure TFloatRect.Inflate(dx, dy: TRenderFloat);
begin
if (dx <> 0) then
begin
Left := Left - dx;
Right := Right + dx;
end;
if (dy <> 0) then
begin
Top := Top - dy;
Bottom := Bottom + dy;
end;
end;
end.