0024428: Implementation of LGPL license
[occt.git] / src / Aspect / Aspect_WindowDriver.cdl
1 -- Created on: 1993-12-08
2 -- Created by: Jean Louis FRENKEL, Stephane CALLEGARI
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 deferred class WindowDriver from Aspect inherits Driver from Aspect
18
19 ---Purpose: defines the WINDOW oriented output driver. 
20 --  Warning: A limited number of mono attribute and translatable BUFFERS can be defined
21 --          for retaining a lot of primitives for DRAGGING .
22 --
23
24 uses
25         TypeOfResize from Aspect,
26         Window from Aspect,
27         TypeOfDrawMode from Aspect,
28         Factor from Quantity,
29         PlaneAngle from Quantity,
30         ExtendedString from TCollection
31     
32 raises
33         DriverError     from Aspect
34
35 is
36         Initialize(aWindow: Window from Aspect);
37
38         BeginDraw (me: mutable;
39                    DoubleBuffer: Boolean = Standard_True;
40                    aRetainBuffer: Integer = 0)
41         ---Purpose: Begin graphics and drawn directly to the Window or Pixmap if
42         --<aRetainBuffer> is 0 or in the retain buffer if > 0.
43                 raises DriverError from Aspect is deferred;
44         ---Trigger: Raises if the retain buffer is not open.
45         --         call BufferIsOpen() method before.
46
47         ResizeSpace(me : mutable)
48         returns TypeOfResize from Aspect
49         raises DriverError from Aspect
50         is deferred;
51  
52         Window(me) returns Window from Aspect;
53
54         SetDrawMode (me: mutable;
55                 aMode: TypeOfDrawMode from Aspect)
56         is deferred;
57         ---Level: Public
58         ---Purpose: Change the current drawing mode of the Driver
59         --          XW_REPLACE : the primitive is drawn with his defined color.
60         --          XW_ERASE   : the primitive is erased from the window.
61         --          XW_XOR     : the primitive is xored to the window.
62         --          XW_XORLIGHT: the primitive is xored depending of the current
63         --                      highlight and background colors.
64
65         -------------------------------------------------------------
66         -- Category: Methods to define or edit a buffer of primitives
67         -------------------------------------------------------------
68
69         OpenBuffer (me: mutable; aRetainBuffer: Integer;
70                                  aPivotX: ShortReal = 0.0;
71                                  aPivotY: ShortReal = 0.0; 
72                                  aWidthIndex: Integer = 0;
73                                  aColorIndex: Integer = 0;
74                                  aFontIndex: Integer = 0;
75                                  aDrawMode: TypeOfDrawMode = Aspect_TODM_REPLACE)
76                                         returns Boolean is deferred;
77         ---Purpose: Allocate the retain buffer <aRetainBuffer> ,
78         -- Defines the DWU coordinates of the pivot point for all primitives 
79         --contains inside.
80         -- Defines the buffer color and font index :
81         --  the default color is the highlight color of the colormap.
82         --  the default font is the default system font of the fontmap. 
83         -- The other attributes are fixed :
84         --  line type is Solid,
85         --  line width is 1 Pixel,
86         --  polygon fill mode is Solid,   
87         --  Warning: The number of allocated buffers is limited,it's 
88         --recommended to close unused buffers some time! 
89         --          The TypeOfDrawMode REPLACE is enabled only if the
90         --          background drawing has been drawn with the DoubleBuffer
91         --          flag set to ENABLE at the last BeginDraw time.
92         --          The TypeOfDrawMode XOR is enabled in any case.
93         --          The other TypeOfDrawMode are not authorized.
94         -- Returns TRUE if the buffer is allocated and enabled for drawing.
95
96         CloseBuffer (me; aRetainBuffer: Integer)
97         ---Purpose: Clear & Deallocate the retain buffer <aRetainBuffer>.
98                 raises DriverError from Aspect is deferred;
99         ---Trigger: Raises if the retain buffer is not opened.
100         --         call BufferIsOpen() method before.
101
102         ClearBuffer (me; aRetainBuffer: Integer)
103         ---Purpose: Erase & Clear ALL primitives retains in the buffer <aRetainBuffer>.
104                 raises DriverError from Aspect is deferred;
105         ---Trigger: Raises if the retain buffer is not opened.
106         --         call BufferIsOpen() method before.
107
108         DrawBuffer (me; aRetainBuffer: Integer)
109         ---Purpose: Draw ALL primitives retains in the buffer <aRetainBuffer>.
110         --  Warning: Note that the aspect of a retain buffer drawing is 
111         -- mono-colored with the current buffer Attributes and 
112         -- Depending of the DoubleBuffer state flag at the BeginDraw() buffer time,
113         -- when DB is TRUE,an XOR method is use for drawing and erasing buffers in the
114         -- same way.In this case,some color side effect can occurs depending of the 
115         -- traversal primitive colors and the supported hardware.
116         -- when DB is FALSE and the background drawing has been generated with
117         -- DB at TRUE,no color side effect occurs because the DB is used for restoring
118         -- the drawing context at EraseBuffer() time,this is more powerfull for the
119         -- drawing quality excepted for large buffers (flicking) . 
120                 raises DriverError from Aspect is deferred;
121         ---Trigger: Raises if the retain buffer is not opened.
122         --         call BufferIsOpen() method before.
123
124         EraseBuffer (me; aRetainBuffer: Integer)
125         ---Purpose: Erase ALL primitives retains in the buffer <aRetainBuffer>.
126                 raises DriverError from Aspect is deferred;
127         ---Trigger: Raises if the retain buffer is not opened.
128         --         call BufferIsOpen() method before.
129
130         MoveBuffer (me; aRetainBuffer: Integer;
131                                  aPivotX: ShortReal = 0.0;
132                                  aPivotY: ShortReal = 0.0) 
133         ---Purpose: Erase , Translate and reDraw ALL primitives retains in the buffer 
134         --<aRetainBuffer>.
135         --<aPivotX,aPivotY> are the new DWU attached point absolute coordinates 
136         --of the buffer pivot point.
137                 raises DriverError from Aspect is deferred;
138         ---Trigger: Raises if the retain buffer is not opened
139         --         call BufferIsOpen() method before.
140
141         ScaleBuffer (me; aRetainBuffer: Integer; aScaleX: Factor = 1.0;
142                                                  aScaleY: Factor = 1.0)
143         ---Purpose: Erase , Scale the buffer from the Pivot point and reDraw ALL primitives 
144         --retains in the buffer <aRetainBuffer>.
145         --<aScaleX,aScaleY> are the absolute scale factors apply on the two axis.
146         --  Warning: Note that the scalling of some primitives can provided some bad 
147         --smoothing side effect (i.e: Circles,...)
148                 raises DriverError from Aspect is deferred;
149         ---Trigger: Raises if the retain buffer is not opened or 
150         --one of <aScale> factor is <= 0.
151         --         call BufferIsOpen() method before.
152
153         RotateBuffer (me; aRetainBuffer: Integer; anAngle: PlaneAngle = 0.0)
154         ---Purpose: Erase , Rotate the buffer from the Pivot point and reDraw ALL primitives 
155         --retains in the buffer <aRetainBuffer>.
156         --<anAngle> is the absolute counter-clockwise rotation angle from the 
157         --Horizontal axis.
158                 raises DriverError from Aspect is deferred;
159         ---Trigger: Raises if the retain buffer is not opened.
160         --         call BufferIsOpen() method before.
161
162         ----------------------------
163         -- Category: Inquire methods
164         ----------------------------
165
166         BufferIsOpen(me; aRetainBuffer : Integer) returns Boolean is deferred;
167         ---Purpose: Returns TRUE if the retain buffer <aRetainBuffer> is enabled 
168         --for drawing.
169
170         BufferIsEmpty(me; aRetainBuffer : Integer) returns Boolean is deferred;
171         ---Purpose: Returns TRUE if the retain buffer has not been opened or empty. 
172         ---         Returns FALSE if a lot of primitives have been stored inside
173         --         because a BeginDraw(..,<aRetainBuffer>) has been done previously.
174
175         BufferIsDrawn(me; aRetainBuffer : Integer) returns Boolean is deferred;
176         ---Purpose: Returns TRUE if the retain buffer s actually displayed at screen.
177
178         AngleOfBuffer(me; aRetainBuffer : Integer; anAngle: out PlaneAngle)
179         ---Purpose: Returns the current buffer rotate angle from the X axis.
180                 raises DriverError from Aspect is deferred;
181         ---Trigger: Raises if the retain buffer is not opened.
182         --         call BufferIsOpen() method before.
183
184         ScaleOfBuffer(me; aRetainBuffer : Integer; aScaleX,aScaleY: out Factor)
185         ---Purpose: Returns the current buffer scale factors.
186                 raises DriverError from Aspect is deferred;
187         ---Trigger: Raises if the retain buffer is not opened.
188         --         call BufferIsOpen() method before.
189
190         PositionOfBuffer(me; aRetainBuffer : Integer; aPivotX,aPivotY: out ShortReal )
191         ---Purpose: Returns the current buffer position.
192                 raises DriverError from Aspect is deferred;
193         ---Trigger: Raises if the retain buffer is not opened.
194         --         call BufferIsOpen() method before.
195
196         TextSize (me; aText: ExtendedString from TCollection;
197                       aWidth, aHeight: out ShortReal from Standard;
198                       aFontIndex: Integer from Standard = -1)
199         ---Level: Public
200         ---Purpose: Returns the TEXT size in DWU space depending
201         --          of the required FontIndex if aFontIndex is >= 0
202         --          or the current FontIndex if < 0 (default).
203         ---Trigger: Raises if font is not defined.
204                 raises DriverError from Aspect is deferred;
205         ---Category: Inquire methods
206
207         TextSize (me; aText: ExtendedString from TCollection;
208                       aWidth, aHeight, anXoffset, anYoffset: out ShortReal from Standard;
209                       aFontIndex: Integer from Standard = -1)
210         ---Level: Public
211         ---Purpose: Returns the TEXT size and offsets 
212         --          in DWU space depending
213         --          of the required FontIndex if aFontIndex is >= 0
214         --          or the current FontIndex if < 0 (default).
215         ---Trigger: Raises if font is not defined.
216                 raises DriverError from Aspect is deferred;
217         ---Category: Inquire methods
218  
219         FontSize (me; aSlant: out PlaneAngle from Quantity;
220                       aSize,aBheight: out ShortReal from Standard;
221                       aFontIndex: Integer from Standard = -1)
222                                 returns CString from Standard
223         ---Level: Public
224         ---Purpose: Returns the font string,slant,size and
225         --baseline height in DWU space depending
226         --          of the required FontIndex if aFontIndex is >= 0
227         --          or the current FontIndex if < 0 (default).
228         ---Trigger: Raises if font is not defined.
229                 raises DriverError from Aspect is deferred;
230         ---Category: Inquire methods
231
232         ColorBoundIndexs(me; aMinIndex,aMaxIndex : out Integer from Standard)
233                                                                 is deferred;
234         ---Level: Advanced
235         ---Purpose: 
236         -- Returns the min and max driver virtual color indexs.
237         ---Category: Inquire methods
238
239         LocalColorIndex(me; anIndex : Integer from Standard)
240                                 returns Integer from Standard is deferred;
241         ---Level: Advanced
242         ---Purpose: 
243         -- Returns the local colormap hardware index from a virtual driver color
244         -- index or returns -1 if the index is not defined.
245         ---Category: Inquire methods
246  
247         FontBoundIndexs(me; aMinIndex,aMaxIndex : out Integer from Standard)
248                                                                 is deferred;
249         ---Level: Advanced
250         ---Purpose: 
251         -- Returns the min and max driver virtual font indexs.
252         ---Category: Inquire methods
253
254         LocalFontIndex(me; anIndex : Integer from Standard)
255                                 returns Integer from Standard is deferred;
256         ---Level: Advanced
257         ---Purpose:
258         -- Returns the associated fontmap hardware index from a virtual driver font
259         -- index or returns -1 if the index is not defined.
260         ---Category: Inquire methods
261  
262         TypeBoundIndexs(me; aMinIndex,aMaxIndex : out Integer from Standard)
263                                                                 is deferred;
264         ---Level: Advanced
265         ---Purpose: 
266         -- Returns the min and max driver virtual type indexs.
267         ---Category: Inquire methods
268
269         LocalTypeIndex(me; anIndex : Integer from Standard)
270                                 returns Integer from Standard is deferred;
271         ---Level: Advanced
272         ---Purpose: 
273         -- Returns the associated typemap hardware index from a virtual driver type
274         -- index or returns -1 if the index is not defined.
275         ---Category: Inquire methods
276  
277         WidthBoundIndexs(me; aMinIndex,aMaxIndex : out Integer from Standard)
278                                                                 is deferred;
279         ---Level: Advanced
280         ---Purpose: 
281         -- Returns the min and max driver virtual width indexs.
282         ---Category: Inquire methods
283
284         LocalWidthIndex(me; anIndex : Integer from Standard)
285                                 returns Integer from Standard is deferred;
286         ---Level: Advanced
287         ---Purpose:
288         -- Returns the associated widthmap hardware index from a virtual driver width
289         -- index or returns -1 if the index is not defined.
290         ---Category: Inquire methods
291  
292         MarkBoundIndexs(me; aMinIndex,aMaxIndex : out Integer from Standard)
293                                                                 is deferred;
294         ---Level: Advanced
295         ---Purpose: 
296         -- Returns the min and max driver virtual marker indexs.
297         ---Category: Inquire methods
298
299         LocalMarkIndex(me; anIndex : Integer from Standard)
300                                 returns Integer from Standard is deferred;
301         ---Level: Advanced
302         ---Purpose:
303         -- Returns the local markmap hardware index from a virtual driver marker
304         -- index or returns -1 if the index is not defined.
305         ---Category: Inquire methods
306  
307 fields
308         MyWindow : Window from Aspect is protected;
309         MyDrawMode : TypeOfDrawMode from Aspect is protected;
310         MyRetainBuffer : Integer from Standard is protected;
311     
312 end WindowDriver from Aspect;