0024428: Implementation of LGPL license
[occt.git] / src / Aspect / Aspect_FontStyle.cdl
1 -- Created on: 1993-09-07
2 -- Created by: GG
3 -- Copyright (c) 1993-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and / or modify it
9 -- under the terms of the GNU Lesser General Public version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class FontStyle from Aspect
18
19         ---Version:
20
21         ---Purpose: This class defines a Font Style.
22         --          The Style can be Predefined or defined by the user
23
24         ---Keywords: FontStyle 
25
26         ---Warning:
27         ---References:
28
29 uses
30
31         Length from Quantity,
32         PlaneAngle from Quantity,
33         TypeOfFont from Aspect,
34         AsciiString from TCollection
35
36 raises
37
38         FontStyleDefinitionError from Aspect
39
40 is
41
42         Create
43                 returns FontStyle from Aspect
44         ---Level: Public
45         ---Purpose: Creates a font style with the default values of
46         --          FontStyle type : DEFAULT
47         --
48         raises FontStyleDefinitionError from Aspect;
49         -- if the maximum number of font style is exceeded
50
51         Create ( Type : TypeOfFont from Aspect; 
52                  Size : Length from Quantity; 
53                  Slant : PlaneAngle from Quantity = 0.0;
54                  CapsHeight : Boolean from Standard = Standard_False)
55                 returns FontStyle from Aspect 
56         ---Level: Public
57         ---Purpose: Creates the font style <Type> depending of
58         --          Size given in the basic LENGTH unit and Slant in 
59         --          the basic PLANE ANGLE unit.
60         --          When CapsHeight is TRUE the size defines the
61         --          ascent height of the font;if FALSE,the size
62         --          defines the ascent+descent part of the font.
63         raises FontStyleDefinitionError from Aspect;
64         -- if the Size is <= 0. 
65
66         Create ( Style : CString from Standard;
67                  Size : Length from Quantity;
68                  Slant : PlaneAngle from Quantity = 0.0;
69                  CapsHeight : Boolean from Standard = Standard_False)
70                 returns FontStyle from Aspect
71         ---Level: Public
72         ---Purpose: Creates a font style from Adobe font style descriptor 
73         --         depending of Size given in MM and Slant in RADIAN.
74         --          When CapsHeight is TRUE the size defines the
75         --          ascent height of the font;if FALSE,the size
76         --          defines the ascent+descent part of the font.
77         --          Font Style Descriptor must be :
78         --             Simple form is "family"          Ex: "helvetica"
79         --             More complex form is "family-weight" Ex: "helvetica-bold"
80         --             Full form is :
81         --              "-foundry-family-weight-slant-swdth-adstyl-pixelsize"
82         --              "-pointsize-resx-resy-spacing-avgWidth-registry-encoding"
83         --              where each field must be replaced by an "*"
84         --  Warning: create the smalest font size if the foundry height
85         --and the <Size> are null.
86         raises FontStyleDefinitionError from Aspect;
87         -- if <Style> is empty or don't have an normalized X format
88
89         Create ( Style : CString from Standard)
90         returns FontStyle from Aspect
91         ---Level: Public
92         ---Purpose: Creates a transformable font with the full font name <Style>
93         --  given in the XLFD descriptor :
94         -- "-foundry-family-weight-slant-swidth-adstyl-pixelsize-pointsize-
95         --  resx-resy-spacing-avdWidth-registry-encoding".
96         -- The fields pixelsize ,pointsize,resx,resy are sets to 0
97         -- and all unknown fields sets to '*'.
98         --  Example: "adobe-helvetica-bold-*-*-*-0-0-0-0-*-*-iso8859-*"
99         --  Warning: the height and slant of the font is supposed to be NULL
100         -- and computed dynamically at the drawing text time. 
101         raises FontStyleDefinitionError from Aspect;
102         ---Trigger: If <Style> is empty or dont't have an XLFD font descriptor.
103
104         ---------------------------------------------------
105         -- Category: Methods to modify the class definition
106         ---------------------------------------------------
107
108         Assign ( me     : in out ;
109                  Other  : FontStyle from Aspect )
110                 returns FontStyle from Aspect;
111         ---Level: Public
112         ---Purpose: Updates the font style <me> from the definition of the
113         --          font style <Other>.
114         ---Category: Methods to modify the class definition
115         ---C++: alias operator =
116         ---C++: return &
117
118         SetValues ( me          : in out ;
119                     Type        : TypeOfFont from Aspect; 
120                     Size        : Length from Quantity;
121                     Slant       : PlaneAngle from Quantity = 0.0;
122                     CapsHeight  : Boolean from Standard = Standard_False)
123         ---Level: Public
124         ---Purpose: Updates the font style <me> from the definition of the
125         --          font style <Type>.
126         raises FontStyleDefinitionError from Aspect;
127         -- if the Size is <= 0. 
128         ---Category: Methods to modify the class definition
129
130         SetValues ( me          : in out ;
131                     Style       : CString from Standard;
132                     Size        : Length from Quantity;
133                     Slant       : PlaneAngle from Quantity = 0.0;
134                     CapsHeight  : Boolean from Standard = Standard_False)
135         ---Level: Public
136         ---Purpose: Updates a font style with the new Abode font descriptor
137         --  Warning: create the smalest font size if the foundry height
138         --and the <Size> are null.
139         raises FontStyleDefinitionError from Aspect;
140         ---Trigger: If <Style> is empty or dont't have an normalized X format.
141         ---Category: Methods to modify the class definition
142
143         SetValues ( me          : in out ;
144                     Style       : CString from Standard)
145         ---Level: Public
146         ---Purpose: Updates a font style with the new XLFD font descriptor
147         raises FontStyleDefinitionError from Aspect;
148         ---Trigger: If <Style> is empty or dont't have an XLFD font descriptor.
149         ---Category: Methods to modify the class definition
150
151         SetFamily (me : in out;
152                    aName: CString from Standard);
153         ---Level: Public
154         ---Purpose: Sets the family of the font.
155
156         SetWeight (me : in out;
157                    aName: CString from Standard);
158         ---Level: Public
159         ---Purpose: Sets the weight of the font.
160
161         SetRegistry (me : in out;
162                    aName: CString from Standard);
163         ---Level: Public
164         ---Purpose: Sets the registry of the font.
165
166         SetEncoding (me : in out;
167                    aName: CString from Standard);
168         ---Level: Public
169         ---Purpose: Sets the encoding of the font.
170
171         ----------------------------
172         -- Category: Inquire methods
173         ----------------------------
174
175         Style ( me )
176                 returns TypeOfFont from Aspect;
177         ---Level: Public
178         ---Purpose: Returns the type of the font style <me> 
179         ---Category: Inquire methods
180
181         Length ( me )
182                 returns Integer from Standard ;
183         ---Level: Public
184         ---Purpose: Returns the string components length of the 
185         -- font style descriptor
186         ---Category: Inquire methods
187
188         Value ( me ) 
189                 returns CString from Standard ;
190         ---Level: Public
191         ---Purpose: Returns the String component of a font style  
192         ---Category: Inquire methods
193
194         Size ( me ) 
195                 returns Length from Quantity ;
196         ---Level: Public
197         ---Purpose: Returns the Size component of a font style  
198         ---Category: Inquire methods
199
200         Slant ( me ) 
201                 returns PlaneAngle from Quantity ;
202         ---Level: Public
203         ---Purpose: Returns the Slant component of a font style  
204         ---Category: Inquire methods
205
206         CapsHeight( me )
207                 returns Boolean from Standard;
208         ---Level: Public
209         ---Purpose: Returns the CapsHeight component of a font style  
210         ---Category: Inquire methods
211
212         AliasName (me)
213                 returns CString from Standard;
214         ---Level: Public
215         ---Purpose: Returns a shorter font name which identify the
216         --          main characteristics of the fonts.
217         ---Example: "helvetica-bold"
218
219         FullName (me)
220                 returns CString from Standard;
221         ---Level: Public
222         ---Purpose: Returns the full normalized font name
223
224         Foundry (me)
225                 returns CString from Standard;
226         ---Level: Public
227         ---Purpose: Returns the foundry of the font.
228         ---Example: "adobe"
229
230         Family (me)
231                 returns CString from Standard;
232         ---Level: Public
233         ---Purpose: Returns the family of the font.
234         ---Example: "helvetica"
235
236         Weight (me)
237                 returns CString from Standard;
238         ---Level: Public
239         ---Purpose: Returns the weight of the font.
240         ---Example: "bold"
241
242         Registry (me)
243                 returns CString from Standard;
244         ---Level: Public
245         ---Purpose: Returns the char set registry of the font.
246         ---Example: "iso8859"
247
248         Encoding (me)
249                 returns CString from Standard;
250         ---Level: Public
251         ---Purpose: Returns the char set encoding of the font.
252         ---Example: "1"
253
254         SSlant (me)
255                 returns CString from Standard;
256         ---Level: Public
257         ---Purpose: Returns the slant of the font.
258         ---Example: "i"
259
260         SWidth (me)
261                 returns CString from Standard;
262         ---Level: Public
263         ---Purpose: Returns the width name of the font.
264         ---Example: "normal"
265
266         SStyle (me)
267                 returns CString from Standard;
268         ---Level: Public
269         ---Purpose: Returns the style name of the font.
270         ---Example: "serif"
271
272         SPixelSize (me)
273                 returns CString from Standard;
274         ---Level: Public
275         ---Purpose: Returns the pixel size of the font.
276
277         SPointSize (me)
278                 returns CString from Standard;
279         ---Level: Public
280         ---Purpose: Returns the point size of the font.
281
282         SResolutionX (me)
283                 returns CString from Standard;
284         ---Level: Public
285         ---Purpose: Returns the resolution X of the font.
286
287         SResolutionY (me)
288                 returns CString from Standard;
289         ---Level: Public
290         ---Purpose: Returns the resolution Y of the font.
291
292         SSpacing (me)
293                 returns CString from Standard;
294         ---Level: Public
295         ---Purpose: Returns the spacing of the font.
296         ---Example: "p"
297
298         SAverageWidth (me)
299                 returns CString from Standard;
300         ---Level: Public
301         ---Purpose: Returns the average width of the font.
302         ---Example: "90"
303
304         Dump (me);
305         ---Level: Public
306         ---Purpose: Dumps the font attributes.
307
308
309         IsEqual(me; Other : FontStyle from Aspect) returns Boolean;
310             ---C++: alias operator==
311
312         IsNotEqual(me; Other : FontStyle from Aspect) returns Boolean;
313             ---C++: alias operator!=
314
315         ----------------------------
316         -- Category: Private methods
317         ----------------------------
318
319         SetPredefinedStyle ( me : in out  ;
320                      Type       : TypeOfFont from Aspect;  
321                      Size       : Length from Quantity;
322                      Slant      : PlaneAngle from Quantity;
323                      CapsHeight : Boolean from Standard)
324         ---Level: Internal
325         ---Purpose: Set MyFontString with the predefined style value
326         --          and size according of type
327         ---Category: Private methods
328         raises FontStyleDefinitionError from Aspect is private;
329         -- if the Type is USERDEFINED ! 
330
331         Normalize (myclass;
332                 aFontName: CString from Standard;
333                 aSize: in out Real from Standard)
334                 returns CString from Standard is private;
335         ---Purpose: Returns a normalized descriptor from the font name
336         --         <aFontName>
337
338         Field (myclass;
339                 aFontName: AsciiString from TCollection;
340                 aRank: Integer from Standard)
341                 returns CString from Standard is private;
342         ---Purpose: Returns the field at position <aRank>
343         --          from the font name <aFontName>.
344
345         SetField (myclass;
346                 aFontName: AsciiString from TCollection;
347                 aField: CString from Standard;
348                 aRank: Integer from Standard)
349                 returns CString from Standard is private;
350         ---Purpose: Sets the field at position <aRank>
351         --          of the fontname <aFontName>
352         --          from the field name <aField>.
353
354 --\f
355
356 fields
357
358 --
359 -- Class        :       Aspect_FontStyle
360 --
361 -- Purpose      :       Declaration of variables specific to font styles
362 --
363
364         MyFontType              : TypeOfFont from Aspect is protected;
365         MyStyle                 : AsciiString from TCollection is protected;
366         MyFontName              : AsciiString from TCollection is protected;
367         MyFontSize              : Real from Standard is protected;
368         MyFontSlant             : Real from Standard is protected;
369         MyCapsHeight            : Boolean from Standard is protected;
370
371 end FontStyle;