Initial revision
[AROS-Contrib.git] / development / compilers / freepascal / rtl / aros / diskfont.pas
blob3b1c5703e0a67c67d1f474d84b6f9728b7ba74fd
2 This file is part of the Free Pascal run time library.
4 A file in Amiga system run time library.
5 Copyright (c) 1998 by Nils Sjoholm
6 member of the Amiga RTL development team.
8 See the file COPYING.FPC, included in this distribution,
9 for details about the copyright.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 **********************************************************************}
17 unit diskfont;
19 INTERFACE
21 uses exec, graphics;
23 Const
25 MAXFONTPATH = 256;
27 Type
29 pFontContents = ^tFontContents;
30 tFontContents = record
31 fc_FileName : Array [0..MAXFONTPATH-1] of Char;
32 fc_YSize : Word;
33 fc_Style : Byte;
34 fc_Flags : Byte;
35 end;
38 pTFontContents = ^tTFontContents;
39 tTFontContents = record
40 tfc_FileName : Array[0..MAXFONTPATH-3] of Char;
41 tfc_TagCount : Word;
43 tfc_YSize : Word;
44 tfc_Style,
45 tfc_Flags : Byte;
46 END;
49 Const
51 FCH_ID = $0f00;
52 TFCH_ID = $0f02;
53 OFCH_ID = $0f03;
57 Type
59 pFontContentsHeader = ^tFontContentsHeader;
60 tFontContentsHeader = record
61 fch_FileID : Word;
62 fch_NumEntries : Word;
63 end;
65 Const
67 DFH_ID = $0f80;
68 MAXFONTNAME = 32;
70 Type
72 pDiskFontHeader = ^tDiskFontHeader;
73 tDiskFontHeader = record
74 dfh_DF : tNode;
75 dfh_FileID : Word;
76 dfh_Revision : Word;
77 dfh_Segment : Longint;
78 dfh_Name : Array [0..MAXFONTNAME-1] of Char;
79 dfh_TF : tTextFont;
80 end;
82 Const
84 AFB_MEMORY = 0;
85 AFF_MEMORY = 1;
86 AFB_DISK = 1;
87 AFF_DISK = 2;
88 AFB_SCALED = 2;
89 AFF_SCALED = $0004;
90 AFB_BITMAP = 3;
91 AFF_BITMAP = $0008;
92 AFB_TAGGED = 16;
93 AFF_TAGGED = $10000;
96 Type
98 pAvailFonts = ^tAvailFonts;
99 tAvailFonts = record
100 af_Type : Word;
101 af_Attr : tTextAttr;
102 end;
104 pTAvailFonts = ^tTAvailFonts;
105 tTAvailFonts = record
106 taf_Type : Word;
107 taf_Attr : tTTextAttr;
108 END;
110 pAvailFontsHeader = ^tAvailFontsHeader;
111 tAvailFontsHeader = record
112 afh_NumEntries : Word;
113 end;
115 VAR DiskfontBase : pLibrary;
117 FUNCTION AvailFonts(buffer : pCHAR; bufBytes : LONGINT; flags : LONGINT) : LONGINT;
118 PROCEDURE DisposeFontContents(fontContentsHeader : pFontContentsHeader);
119 FUNCTION NewFontContents(fontsLock : BPTR; fontName : pCHAR) : pFontContentsHeader;
120 FUNCTION NewScaledDiskFont(sourceFont : pTextFont; destTextAttr : pTextAttr) : pDiskFontHeader;
121 FUNCTION OpenDiskFont(textAttr : pTextAttr) : pTextFont;
123 IMPLEMENTATION
125 FUNCTION AvailFonts(buffer : pCHAR; bufBytes : LONGINT; flags : LONGINT) : LONGINT;
126 BEGIN
128 MOVE.L A6,-(A7)
129 MOVEA.L buffer,A0
130 MOVE.L bufBytes,D0
131 MOVE.L flags,D1
132 MOVEA.L DiskfontBase,A6
133 JSR -036(A6)
134 MOVEA.L (A7)+,A6
135 MOVE.L D0,@RESULT
136 END;
137 END;
139 PROCEDURE DisposeFontContents(fontContentsHeader : pFontContentsHeader);
140 BEGIN
142 MOVE.L A6,-(A7)
143 MOVEA.L fontContentsHeader,A1
144 MOVEA.L DiskfontBase,A6
145 JSR -048(A6)
146 MOVEA.L (A7)+,A6
147 END;
148 END;
150 FUNCTION NewFontContents(fontsLock : BPTR; fontName : pCHAR) : pFontContentsHeader;
151 BEGIN
153 MOVE.L A6,-(A7)
154 MOVEA.L fontsLock,A0
155 MOVEA.L fontName,A1
156 MOVEA.L DiskfontBase,A6
157 JSR -042(A6)
158 MOVEA.L (A7)+,A6
159 MOVE.L D0,@RESULT
160 END;
161 END;
163 FUNCTION NewScaledDiskFont(sourceFont : pTextFont; destTextAttr : pTextAttr) : pDiskFontHeader;
164 BEGIN
166 MOVE.L A6,-(A7)
167 MOVEA.L sourceFont,A0
168 MOVEA.L destTextAttr,A1
169 MOVEA.L DiskfontBase,A6
170 JSR -054(A6)
171 MOVEA.L (A7)+,A6
172 MOVE.L D0,@RESULT
173 END;
174 END;
176 FUNCTION OpenDiskFont(textAttr : pTextAttr) : pTextFont;
177 BEGIN
179 MOVE.L A6,-(A7)
180 MOVEA.L textAttr,A0
181 MOVEA.L DiskfontBase,A6
182 JSR -030(A6)
183 MOVEA.L (A7)+,A6
184 MOVE.L D0,@RESULT
185 END;
186 END;
188 END. (* UNIT DISKFONT *)