1 -- Created by: NW,JPB,CAL
2 -- Copyright (c) 1991-1999 Matra Datavision
3 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 -- The content of this file is subject to the Open CASCADE Technology Public
6 -- License Version 6.5 (the "License"). You may not use the content of this file
7 -- except in compliance with the License. Please obtain a copy of the License
8 -- at http://www.opencascade.org and read it completely before using this file.
10 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 -- The Original Code and all software distributed under the License is
14 -- distributed on an "AS IS" basis, without warranty of any kind, and the
15 -- Initial Developer hereby disclaims all such warranties, including without
16 -- limitation, any warranties of merchantability, fitness for a particular
17 -- purpose or non-infringement. Please see the License for the specific terms
18 -- and conditions governing the rights and limitations under the License.
21 -- Updated: Vendredi 2 Octobre 1992
22 -- Mercredi 31 mars 1993
23 -- Lundi 16 janvier 1995
24 -- Reason : Traitement des Markers (G400)
25 -- Purpose: Specifications definitives
26 -- Modified: 15/01/98 ; FMN : Ajout Hidden Line
27 -- Modified: 07/07/98 ; DCB : Adding plotmode enum
28 -- Modified: 07-07-98 by DCB (S3602 study)
29 -- Adding plotmode enum
30 -- Modified: 20-07-98 by DCB (S3602 study)
31 -- Adding Plotter and PlotterConfigTool classes
33 -- Modified: 22-07-98 by DCB
34 -- Adding DriverPtr, PlotterDriverPtr, WindowDriverPtr
36 -- Modified: 24/08/98 ; CAL : S3892. Ajout grilles 3d.
37 -- Modified: 16-09-98 by BGN (S3989)
38 --- Adding TypeOfTriedronEcho, TypeOfTriedronPosition.
39 -- Modified: 30-11-98 ; FMN : S4069. Textes always visible.
40 -- Modified: 30/10/98 : DCB : S4046
41 -- Adding class PlotterParameter and changing the Plotter's class
42 -- implementation according to new PLO specifications (S3604 ???)
43 -- Also new classes : (H)Array1OfPlotterParameter
44 -- New enumeration : TypeOfPlotterParameter.
45 -- New exception : PlotterParameterError.
46 -- Modified: 25-NOV-98 : DCB
47 -- Removing all plotters specific implementation from Aspect.
48 -- These classes and enums will now be located in PlotMgt.
49 -- Modified: 17-NOV-99 : GG GER61351
50 -- Add TypeOfFacingModel enum
51 -- Modified: 20-JAN-00 : GG
52 -- Add GDM_None in enum GridDrawMode.
53 -- Modified: 25-JAN-00 : VKH
55 -- Modified: 23-FEB-00 : GG
56 -- Returns format name in ValuesOfFOSP() internal method.
57 -- Modified: 27-03-02 RIC120302 GG Add imported class
58 -- Display, Drawable, RenderingContext, GraphicCallbackProc
59 -- Modified: 22-03-04 OCC4895 SAN High-level interface for controlling polygon offsets
60 -- Modified: 21-06-04 STV Added Aspect_ColorScale class
62 ------------------------------------------------------------------------
68 ---Purpose: This package contains the group of graphic elements common
69 -- to different types of visualisers. It allows the description
70 -- of a screen background, a window, an edge, and groups of
71 -- graphic attributes that can be used in describing 2D
74 ---Keywords: Window, Aspect, FillArea, Line, Marker, Edge
75 -- Highlight, Hatch, Background, GradientBackground, Color map,
76 -- Type map, Width map, Font map
90 ---------------------------
91 -- Category: Imported types
92 ---------------------------
94 -- waiting for RBA creating this class in Standard ...
100 ---Purpose: Defines the C structure <alayer>
101 ---Category: Imported types
109 -- To manage Drawable
115 primitive RenderingContext;
117 -- To manage 2D or 3D graphic context
119 imported GraphicCallbackProc;
121 -- To manage client post display
123 -- 22-03-04 OCC4895 SAN High-level interface for controlling polygon offsets
124 imported PolygonOffsetMode;
126 -- Enumeration for polygon offset modes
128 ---------------------
129 -- Category: Pointers
130 ---------------------
132 pointer DriverPtr to Driver from Aspect;
133 pointer WindowDriverPtr to WindowDriver from Aspect;
135 ---Category: Pointers
137 -----------------------
138 -- Category: Exceptions
139 -----------------------
141 exception AspectLineDefinitionError inherits OutOfRange;
142 ---Category: Exceptions
144 exception AspectFillAreaDefinitionError inherits OutOfRange;
145 ---Category: Exceptions
147 exception AspectMarkerDefinitionError inherits OutOfRange;
148 ---Category: Exceptions
150 exception BadAccess inherits DomainError;
151 ---Category: Exceptions
153 exception ColorMapDefinitionError inherits OutOfRange;
154 ---Category: The exceptions
156 exception EdgeDefinitionError inherits OutOfRange;
157 ---Category: Exceptions
159 exception IdentDefinitionError inherits OutOfRange;
160 ---Category: Exceptions
162 exception TypeMapDefinitionError inherits OutOfRange;
163 ---Category: The exceptions
165 exception WidthMapDefinitionError inherits OutOfRange;
166 ---Category: The exceptions
168 exception FontMapDefinitionError inherits OutOfRange;
169 ---Category: The exceptions
171 exception MarkMapDefinitionError inherits OutOfRange;
172 ---Category: The exceptions
174 exception WindowDefinitionError inherits OutOfRange;
175 ---Category: The exceptions
177 exception WindowError inherits OutOfRange;
178 ---Category: The exceptions
180 exception PixmapDefinitionError inherits OutOfRange;
181 ---Category: The exceptions
183 exception PixmapError inherits OutOfRange;
184 ---Category: The exceptions
186 exception DriverDefinitionError inherits OutOfRange;
187 ---Category: The exceptions
189 exception DriverError inherits OutOfRange;
190 ---Category: The exceptions
192 exception GraphicDeviceDefinitionError inherits OutOfRange;
193 ---Category: The exceptions
195 exception DisplayConnectionDefinitionError inherits OutOfRange;
196 ---Category: The exceptions
198 exception LineStyleDefinitionError inherits OutOfRange;
199 ---Category: Exceptions
201 exception LineWidthDefinitionError inherits OutOfRange;
202 ---Category: Exceptions
204 exception PolyStyleDefinitionError inherits OutOfRange;
205 ---Category: Exceptions
207 exception FontStyleDefinitionError inherits OutOfRange;
208 ---Category: Exceptions
210 exception MarkerStyleDefinitionError inherits OutOfRange;
211 ---Category: Exceptions
213 exception UndefinedMap inherits OutOfRange;
214 ---Category: Exceptions
216 ------------------------------
217 -- Category: Classes Color map
218 ------------------------------
220 deferred class ColorMap;
221 ---Purpose: Defines a color map.
222 ---Category: Classes Color map
224 class ColorCubeColorMap;
225 ---Purpose: Associates a index and a color in the "ColorCube" space.
226 ---Category: Classes Color map
228 class ColorRampColorMap;
229 ---Purpose: Associates a index and a color in the linear "ColorRamp"
231 ---Category: Classes Color map
233 class GenericColorMap;
234 ---Purpose: Associates an index and a color.
235 ---Category: Classes Color map
238 ---Purpose: Defines an entry in the color map :
239 -- an index and a color.
240 ---Category: Classes Color map
242 ------------------------------
243 -- Category: Classes Pixel
244 ------------------------------
246 deferred class Pixel;
247 ---Purpose: Defines a picture element.
248 ---Category: Classes Pixel
252 ---Category: Classes Pixel
256 ---Category: Classes Pixel
258 ---------------------------
259 -- Category: Classes Aspect
260 ---------------------------
262 deferred class AspectLine;
263 ---Purpose: Creates and updates a group of graphic attributes
264 -- for primitives 'Line'
265 ---Category: Classes Aspect
267 deferred class AspectMarker;
268 ---Purpose: Creates and updates a group of graphic attributes
269 -- for primitives 'Marker'.
270 ---Category: Classes Aspect
272 deferred class AspectFillArea;
273 ---Purpose: Creates and updates a group of graphic attributes
274 -- for primitives 'Face'.
275 ---Category: Classes Aspect
282 ---Purpose: Defines a window background
285 class GradientBackground;
286 ---Purpose: Defines a window gradient background
290 ---Purpose: Defines an edge.
294 ---Purpose: Creates and controles all identifiers.
298 ---Purpose: Defines a Font Style
299 ---Category: The classes
302 ---Purpose: Defines an entry in the Font map :
303 -- an index and a text Font.
304 ---Category: Classes Font map
307 ---Purpose: Associates an index and a text Font entry.
308 ---Category: The classes
311 ---Purpose: Defines an entry in the Width map :
312 -- an index and a line Width.
313 ---Category: Classes Width map
316 ---Purpose: Associates an index and a line width entry.
317 ---Category: The classes
320 ---Purpose: Defines a Line Style
321 ---Category: The classes
324 ---Purpose: Associates an index and a line type entry.
325 ---Category: The classes
328 ---Purpose: Defines an entry in the Type map :
329 -- an index and a line style.
330 ---Category: Classes Type map
333 ---Purpose: Defines a Marker Style
334 ---Category: The classes
337 ---Purpose: Associates an index and a Marker entry.
338 ---Category: The classes
341 ---Purpose: Defines an entry in the Marker map :
342 -- an index and a marker style.
343 ---Category: Classes Mark map
345 deferred class Window;
346 ---Purpose: Defines a window.
349 deferred class Driver;
350 ---Purpose: Defines a virtual driver.
353 deferred class WindowDriver;
354 ---Purpose: Defines a virtual driver associated to a window.
358 class RectangularGrid;
361 deferred class ColorScale;
362 ---Purpose: Defines a color scale for viewer.
364 imported DisplayConnection;
365 ---Purpose: Creates and provides connection with X server.
367 imported DisplayConnection_Handle;
368 ---Purpose: Handle for DisplayConnection;
370 -------------------------
371 -- Category: Enumerations
372 -------------------------
374 enumeration HatchStyle is HS_HORIZONTAL,
381 HS_DIAGONAL_135_WIDE,
385 HS_GRID_DIAGONAL_WIDE
387 ---Purpose: Definition of all available hatch styles.
390 -- HS_HORIZONTAL_WIDE
394 -- HS_DIAGONAL_45_WIDE
396 -- HS_DIAGONAL_135_WIDE
400 -- HS_GRID_DIAGONAL_WIDE
402 ---Category: Enumerations
404 enumeration InteriorStyle is IS_EMPTY,
410 ---Purpose: Definition of interior types for primitive
413 -- IS_EMPTY no interior.
414 -- IS_HOLLOW display the boundaries of the surface.
415 -- IS_HATCH display hatched with a hatch style.
416 -- IS_SOLID display the interior entirely filled.
417 -- IS_HIDDENLINE display in hidden lines removed.
419 ---Category: Enumerations
421 enumeration TypeOfColorMap is TOC_Generic,
425 ---Purpose: Definition of the color map types
427 ---Category: Enumerations
429 enumeration TypeOfConstraint is TOC_BOTTOM_LEFT,
433 end TypeOfConstraint;
434 ---Purpose: Definition of the attachment for the layers
436 ---Category: Enumerations
438 enumeration TypeOfDrawMode is TODM_REPLACE,
443 ---Purpose: Definition of the draw modes
445 ---Category: Enumerations
447 enumeration TypeOfEdge is TOE_VISIBLE,
450 ---Purpose: Definition of edge visibility
452 -- TOE_VISIBLE Edge is displayed
453 -- TOE_INVISIBLE Edge is not displayed
455 ---Category: Enumerations
457 enumeration TypeOfHighlightMethod is TOHM_COLOR,
460 end TypeOfHighlightMethod;
461 ---Purpose: Definition of a highlight method
463 -- TOHM_COLOR drawn in the highlight color
465 -- TOHM_BLINK blinking
466 -- TOHM_BOUNDBOX enclosed by the boundary box
469 ---Category: Enumerations
471 enumeration TypeOfLine is TOL_SOLID,
477 ---Purpose: Definition of line types
479 -- TOL_SOLID continuous
480 -- TOL_DASH dashed 2.0,1.0 (MM)
481 -- TOL_DOT dotted 0.2,0.5 (MM)
482 -- TOL_DOTDASH mixed 10.0,1.0,2.0,1.0 (MM)
483 -- TOL_USERDEFINED defined by Users
484 ---Category: Enumerations
486 enumeration WidthOfLine is WOL_THIN,
492 ---Purpose: Definition of line types
494 -- WOL_THIN thin line (1 pixel width)
495 -- WOL_MEDIUM medium width of 0.5 MM
496 -- WOL_THICK thick width of 0.7 MM
497 -- WOL_VERYTHICK very thick width of 1.5 MM
498 -- WOL_USERDEFINED defined by Users
499 ---Category: Enumerations
501 enumeration TypeOfFont is TOF_DEFAULT,
507 ---Purpose: Definition of line types
509 -- TOF_DEFAULT Default system font
512 -- TOF_USERDEFINED defined by Users
513 ---Category: Enumerations
515 enumeration TypeOfText is TOT_SOLID,
518 ---Purpose: Definition of Text types
520 -- TOF_SOLID Default text
522 ---Category: Enumerations
524 enumeration TypeOfStyleText is TOST_NORMAL,
527 ---Purpose: Define the style of the text.
529 -- TOST_NORMAL Default text. The text is displayed like any other graphic object.
530 -- This text can be hidden by another object that is nearest from the
532 -- TOST_ANNOTATION The text is always visible. The texte is displayed
533 -- over the other object according to the priority.
534 ---Category: Enumerations
536 enumeration TypeOfDisplayText is TODT_NORMAL,
540 end TypeOfDisplayText;
541 ---Purpose: Define the display type of the text.
543 -- TODT_NORMAL Default display. Text only.
544 -- TODT_SUBTITLE There is a subtitle under the text.
545 -- TODT_DEKALE The text is displayed with a 3D style.
546 -- TODT_BLEND The text is displayed in XOR.
547 ---Category: Enumerations
549 enumeration TypeOfMarker is TOM_POINT,
564 ---Purpose: Definition of types of markers
571 -- TOM_O_POINT a point in a circle
572 -- TOM_O_PLUS a plus in a circle
573 -- TOM_O_STAR a star in a circle
574 -- TOM_O_X a cross in a circle
575 -- TOM_BALL a ball with 1 color and different saturations
576 -- TOM_RING1 a large ring
577 -- TOM_RING2 a medium ring
578 -- TOM_RING3 a small ring
579 -- TOM_USERDEFINED defined by Users
581 ---Category: Enumerations
583 enumeration TypeOfUpdate is TOU_ASAP,
586 ---Purpose: Definition of screen refresh mode
588 -- TOU_ASAP as soon as possible
589 -- TOU_WAIT on demand (Update)
591 ---Category: Enumerations
593 enumeration TypeOfDeflection is TOD_RELATIVE,
595 end TypeOfDeflection;
596 ---Purpose: Defines if the maximal chordial deflection used when
597 -- drawing an object is absolute or relative to the size
600 enumeration TypeOfResize is TOR_UNKNOWN,
606 TOR_TOP_AND_RIGHT_BORDER,
607 TOR_RIGHT_AND_BOTTOM_BORDER,
608 TOR_BOTTOM_AND_LEFT_BORDER,
609 TOR_LEFT_AND_TOP_BORDER
611 ---Purpose: Defines the type of Resize Window method applied
614 enumeration CardinalPoints is CP_North,
625 enumeration TypeOfRenderingMode is TORM_IMMEDIAT,
627 TORM_CLEAR_AND_RETAIN
628 end TypeOfRenderingMode;
629 ---Purpose: Definition of the rendering modes
631 enumeration TypeOfColorSpace is TOCS_BlackAndWhite,
634 end TypeOfColorSpace;
637 enumeration FormatOfSheetPaper is
638 FOSP_A0, -- 0.841 x 1.189 (M)
639 FOSP_A1, -- 0.594 x 0.841 (M)
640 FOSP_A2, -- 0.420 x 0.594 (M)
641 FOSP_A3, -- 0.297 x 0.420 (M)
642 FOSP_A4, -- 0.210 x 0.297 (M)
643 FOSP_A5, -- 0.1485 x 0.210 (M)
644 FOSP_K_LONG, -- 1.016 x 3.6322 (M)
645 FOSP_K_SHORT, -- 1.016 x 1.397 (M)
646 FOSP_J_LONG, -- 0.8636 x 4.4704 (M)
647 FOSP_J_SHORT, -- 0.8636 x 1.397 (M)
648 FOSP_H_LONG, -- 0.7112 x 3.6322 (M)
649 FOSP_H_SHORT, -- 0.7112 x 1.1176 (M)
650 FOSP_G_LONG, -- 0.2794 x 2.286 (M)
651 FOSP_G_SHORT, -- 0.2794 x 0.5715 (M)
652 FOSP_F, -- 0.7112 x 1.016 (M)
653 FOSP_E, -- 0.8636 x 1.1176 (M)
654 FOSP_D, -- 0.5588 x 0.8636 (M)
655 FOSP_C, -- 0.4318 x 0.5588 (M)
656 FOSP_B, -- 0.2794 x 0.4318 (M)
657 FOSP_A, -- 0.2159 x 0.2794 (M)
658 FOSP_UNKNOWN -- User defined
659 end FormatOfSheetPaper;
662 enumeration TypeOfPrimitive is
674 enumeration GridDrawMode is GDM_Lines,
678 ---Purpose: Defines the grid draw mode. The grid may be drawn
679 -- by using lines or points.
681 enumeration GridType is GT_Rectangular,
684 ---Purpose: Defines the grid type : Rectangular or Circular.
686 --------- Start DCB modification ----------------------------------------
687 enumeration PlotMode is
692 ---Purpose: Defines plot mode for plotter drivers derived from
693 -- Aspect_PlotterDriver:
694 -- 1) PM_DPLOTTER - send file to plotter and delete file
695 -- 2) PM_FILEONLY - do not send file to the plotter
696 -- 3) PM_NPLOTTER - send file to the plotter but not delete a file
699 enumeration ListingType is
704 ---Purpose: Defines where to search plotter files (PLO)
706 enumeration PlotterOrigin is
714 --------- Stop DCB modification ----------------------------------------
717 enumeration TypeOfTriedronEcho is TOTE_NONE,
735 end TypeOfTriedronEcho;
736 ---Purpose: Definition of the Triedron echo zone to highlight
738 -- TOTE_NONE no echo zone
739 -- TOTE_ORIGIN a box on origin of the Triedron
740 -- TOTE_AXIS_X highlights the X axis
741 -- TOTE_AXIS_Y highlights the Y axis
742 -- TOTE_AXIS_Z highlights the Z axis
743 -- TOTE_TEXT_X highlights the X character
744 -- TOTE_TEXT_Y highlights the Y character
745 -- TOTE_TEXT_Z highlights the Z character
746 -- TOTE_01 to TOTE_10 not yet implemented.
747 ---Category: The enumerations
750 enumeration TypeOfTriedronPosition is TOTP_CENTER,
765 end TypeOfTriedronPosition;
766 ---Purpose: Definition of the Triedron position in the views
768 -- TOTP_CENTER at the center of the view
769 -- TOTP_LEFT_LOWER at the left lower corner
770 -- TOTP_LEFT_UPPER at the left upper corner
771 -- TOTP_RIGHT_LOWER at the right lower corner
772 -- TOTP_RIGHT_UPPER at the right upper corner
773 -- TOTP_01 to TOTP_10 not yet implemented.
774 ---Category: The enumerations
776 enumeration TypeOfLayer is TOL_OVERLAY,
779 ---Purpose: Modes of drawing for the objects in a layer
781 -- TOL_OVERLAY, the graphic of the layer is draw
782 -- after the 3d graphic.
783 -- TOL_UNDERLAY, the graphic of the layer is draw
784 -- before the 3d graphic.
785 ---Category: The enumerations
787 enumeration TypeOfFacingModel is TOFM_BOTH_SIDE,
790 end TypeOfFacingModel;
792 enumeration FillMethod is
798 ---Purpose: Defines the fill methods to
799 -- write bitmaps in a window.
801 enumeration GradientFillMethod is
811 end GradientFillMethod;
812 ---Purpose: Defines the fill methods to
813 -- write gradient background in a window.
815 enumeration TypeOfColorScaleData is
818 end TypeOfColorScaleData;
819 ---Purpose: Defines the using type of colors and labels
821 enumeration TypeOfColorScalePosition is
826 end TypeOfColorScalePosition;
827 ---Purpose: Defines the type of position for color scale labels
829 enumeration TypeOfColorScaleOrientation is
834 end TypeOfColorScaleOrientation;
835 ---Purpose: Defines the type of color scale orientation
837 enumeration PrintAlgo is
841 ---Purpose: Defines print algorithm
843 -- 1) PA_STRETCH - Stretch offscreen printing frame
844 -- if its dimensions are smaller than
845 -- the printer's printing area dimensions;
846 -- This algorithm is more reliable as it
847 -- works on any hardware and is recommended
848 -- to be used with average printing resolutions,
849 -- as it more RAM memory dependent than PA_TILE;
850 -- Stretching is performend using bicubic interpolation
851 -- algorithm from FreeImage library if OCCT is built
852 -- with FreeImage support, otherwise Windows API
853 -- StretchBlt() function in STRETCH_HALFTONE mode
855 -- 2) PA_TILE - If the offscreen printing frame dimensions
856 -- are smaller than the printer's printing
857 -- area dimensions - use multiple printing
858 -- frames to cover the whole printing area
862 ---Purpose: Defines custom identifiers(atoms) for X window custom named properties
863 ---------------------------------
864 -- Category: Instantiated classes
865 ---------------------------------
867 class Array1OfEdge instantiates
868 Array1 from TCollection (Edge from Aspect);
869 ---Category: Instantiated classes
871 class SequenceOfColorMapEntry instantiates
872 Sequence from TCollection (ColorMapEntry from Aspect);
873 ---Category: Instantiated classes
875 class SequenceOfTypeMapEntry instantiates
876 Sequence from TCollection (TypeMapEntry from Aspect);
877 ---Category: Instantiated classes
879 class SequenceOfWidthMapEntry instantiates
880 Sequence from TCollection (WidthMapEntry from Aspect);
881 ---Category: Instantiated classes
883 class SequenceOfFontMapEntry instantiates
884 Sequence from TCollection (FontMapEntry from Aspect);
885 ---Category: Instantiated classes
887 class SequenceOfMarkMapEntry instantiates
888 Sequence from TCollection (MarkMapEntry from Aspect);
889 ---Category: Instantiated classes
891 class SequenceOfColor instantiates
892 Sequence from TCollection(Color from Quantity);
894 ----------------------------
895 -- Category: Package methods
896 ----------------------------
898 ValuesOfFOSP (aFOSP : FormatOfSheetPaper from Aspect;
899 aWidth, aHeight : out Length from Quantity)
900 returns CString from Standard;
902 ---Purpose: Returns the format size according to the default
903 -- LENGTH unit of the required format <aFOSP>.
904 -- Returns more the normalized format name.
905 ---Category: Package methods
907 ToCString (aString: ExtendedString from TCollection)
908 returns CString from Standard;
910 ---Purpose: Translates an ExtendedString to a CString
911 -- depending of the local format.
912 ---Category: Package methods
914 Inverse ( aMat : Array2OfReal from TColStd;
915 Inv : out Array2OfReal from TColStd )
916 returns Boolean from Standard;
918 ---Purpose: Inverses <aMat> a 4x4 matrix.