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: 26-JAN-00 : EUG/GG G003
56 -- Add enum TypeOfDegenerateModel
57 -- Modified: 23-FEB-00 : GG
58 -- Returns format name in ValuesOfFOSP() internal method.
59 -- Modified: 27-03-02 RIC120302 GG Add imported class
60 -- Display, Drawable, RenderingContext, GraphicCallbackProc
61 -- Modified: 22-03-04 OCC4895 SAN High-level interface for controlling polygon offsets
62 -- Modified: 21-06-04 STV Added Aspect_ColorScale class
64 ------------------------------------------------------------------------
70 ---Purpose: This package contains the group of graphic elements common
71 -- to different types of visualisers. It allows the description
72 -- of a screen background, a window, an edge, and groups of
73 -- graphic attributes that can be used in describing 2D
76 ---Keywords: Window, Aspect, FillArea, Line, Marker, Edge
77 -- Highlight, Hatch, Background, GradientBackground, Color map,
78 -- Type map, Width map, Font map
93 ---------------------------
94 -- Category: Imported types
95 ---------------------------
97 -- waiting for RBA creating this class in Standard ...
103 ---Purpose: Defines the C structure <alayer>
104 ---Category: Imported types
112 -- To manage Drawable
118 primitive RenderingContext;
120 -- To manage 2D or 3D graphic context
122 imported GraphicCallbackProc;
124 -- To manage client post display
126 -- 22-03-04 OCC4895 SAN High-level interface for controlling polygon offsets
127 imported PolygonOffsetMode;
129 -- Enumeration for polygon offset modes
131 ---------------------
132 -- Category: Pointers
133 ---------------------
135 pointer DriverPtr to Driver from Aspect;
136 pointer WindowDriverPtr to WindowDriver from Aspect;
138 ---Category: Pointers
140 -----------------------
141 -- Category: Exceptions
142 -----------------------
144 exception AspectLineDefinitionError inherits OutOfRange;
145 ---Category: Exceptions
147 exception AspectFillAreaDefinitionError inherits OutOfRange;
148 ---Category: Exceptions
150 exception AspectMarkerDefinitionError inherits OutOfRange;
151 ---Category: Exceptions
153 exception BadAccess inherits DomainError;
154 ---Category: Exceptions
156 exception ColorMapDefinitionError inherits OutOfRange;
157 ---Category: The exceptions
159 exception EdgeDefinitionError inherits OutOfRange;
160 ---Category: Exceptions
162 exception IdentDefinitionError inherits OutOfRange;
163 ---Category: Exceptions
165 exception TypeMapDefinitionError inherits OutOfRange;
166 ---Category: The exceptions
168 exception WidthMapDefinitionError inherits OutOfRange;
169 ---Category: The exceptions
171 exception FontMapDefinitionError inherits OutOfRange;
172 ---Category: The exceptions
174 exception MarkMapDefinitionError inherits OutOfRange;
175 ---Category: The exceptions
177 exception WindowDefinitionError inherits OutOfRange;
178 ---Category: The exceptions
180 exception WindowError inherits OutOfRange;
181 ---Category: The exceptions
183 exception PixmapDefinitionError inherits OutOfRange;
184 ---Category: The exceptions
186 exception PixmapError inherits OutOfRange;
187 ---Category: The exceptions
189 exception DriverDefinitionError inherits OutOfRange;
190 ---Category: The exceptions
192 exception DriverError inherits OutOfRange;
193 ---Category: The exceptions
195 exception GraphicDeviceDefinitionError inherits OutOfRange;
196 ---Category: The exceptions
198 exception DisplayConnectionDefinitionError inherits OutOfRange;
199 ---Category: The exceptions
201 exception LineStyleDefinitionError inherits OutOfRange;
202 ---Category: Exceptions
204 exception LineWidthDefinitionError inherits OutOfRange;
205 ---Category: Exceptions
207 exception PolyStyleDefinitionError inherits OutOfRange;
208 ---Category: Exceptions
210 exception FontStyleDefinitionError inherits OutOfRange;
211 ---Category: Exceptions
213 exception MarkerStyleDefinitionError inherits OutOfRange;
214 ---Category: Exceptions
216 exception UndefinedMap inherits OutOfRange;
217 ---Category: Exceptions
219 ------------------------------
220 -- Category: Classes Color map
221 ------------------------------
223 deferred class ColorMap;
224 ---Purpose: Defines a color map.
225 ---Category: Classes Color map
227 class ColorCubeColorMap;
228 ---Purpose: Associates a index and a color in the "ColorCube" space.
229 ---Category: Classes Color map
231 class ColorRampColorMap;
232 ---Purpose: Associates a index and a color in the linear "ColorRamp"
234 ---Category: Classes Color map
236 class GenericColorMap;
237 ---Purpose: Associates an index and a color.
238 ---Category: Classes Color map
241 ---Purpose: Defines an entry in the color map :
242 -- an index and a color.
243 ---Category: Classes Color map
245 ------------------------------
246 -- Category: Classes Pixel
247 ------------------------------
249 deferred class Pixel;
250 ---Purpose: Defines a picture element.
251 ---Category: Classes Pixel
255 ---Category: Classes Pixel
259 ---Category: Classes Pixel
261 ---------------------------
262 -- Category: Classes Aspect
263 ---------------------------
265 deferred class AspectLine;
266 ---Purpose: Creates and updates a group of graphic attributes
267 -- for primitives 'Line'
268 ---Category: Classes Aspect
270 deferred class AspectMarker;
271 ---Purpose: Creates and updates a group of graphic attributes
272 -- for primitives 'Marker'.
273 ---Category: Classes Aspect
275 deferred class AspectFillArea;
276 ---Purpose: Creates and updates a group of graphic attributes
277 -- for primitives 'Face'.
278 ---Category: Classes Aspect
285 ---Purpose: Defines a window background
288 class GradientBackground;
289 ---Purpose: Defines a window gradient background
293 ---Purpose: Defines an edge.
297 ---Purpose: Creates and controles all identifiers.
300 deferred class GraphicDriver;
301 ---Purpose: Defines a graphic driver (3d library)
304 ---Purpose: Defines a Font Style
305 ---Category: The classes
308 ---Purpose: Defines an entry in the Font map :
309 -- an index and a text Font.
310 ---Category: Classes Font map
313 ---Purpose: Associates an index and a text Font entry.
314 ---Category: The classes
317 ---Purpose: Defines an entry in the Width map :
318 -- an index and a line Width.
319 ---Category: Classes Width map
322 ---Purpose: Associates an index and a line width entry.
323 ---Category: The classes
326 ---Purpose: Defines a Line Style
327 ---Category: The classes
330 ---Purpose: Associates an index and a line type entry.
331 ---Category: The classes
334 ---Purpose: Defines an entry in the Type map :
335 -- an index and a line style.
336 ---Category: Classes Type map
339 ---Purpose: Defines a Marker Style
340 ---Category: The classes
343 ---Purpose: Associates an index and a Marker entry.
344 ---Category: The classes
347 ---Purpose: Defines an entry in the Marker map :
348 -- an index and a marker style.
349 ---Category: Classes Mark map
351 deferred class Window;
352 ---Purpose: Defines a window.
355 deferred class Driver;
356 ---Purpose: Defines a virtual driver.
359 deferred class WindowDriver;
360 ---Purpose: Defines a virtual driver associated to a window.
364 class RectangularGrid;
367 deferred class ColorScale;
368 ---Purpose: Defines a color scale for viewer.
370 imported DisplayConnection;
371 ---Purpose: Creates and provides connection with X server.
373 imported DisplayConnection_Handle;
374 ---Purpose: Handle for DisplayConnection;
376 -------------------------
377 -- Category: Enumerations
378 -------------------------
380 enumeration HatchStyle is HS_HORIZONTAL,
387 HS_DIAGONAL_135_WIDE,
391 HS_GRID_DIAGONAL_WIDE
393 ---Purpose: Definition of all available hatch styles.
396 -- HS_HORIZONTAL_WIDE
400 -- HS_DIAGONAL_45_WIDE
402 -- HS_DIAGONAL_135_WIDE
406 -- HS_GRID_DIAGONAL_WIDE
408 ---Category: Enumerations
410 enumeration InteriorStyle is IS_EMPTY,
416 ---Purpose: Definition of interior types for primitive
419 -- IS_EMPTY no interior.
420 -- IS_HOLLOW display the boundaries of the surface.
421 -- IS_HATCH display hatched with a hatch style.
422 -- IS_SOLID display the interior entirely filled.
423 -- IS_HIDDENLINE display in hidden lines removed.
425 ---Category: Enumerations
427 enumeration TypeOfColorMap is TOC_Generic,
431 ---Purpose: Definition of the color map types
433 ---Category: Enumerations
435 enumeration TypeOfConstraint is TOC_BOTTOM_LEFT,
439 end TypeOfConstraint;
440 ---Purpose: Definition of the attachment for the layers
442 ---Category: Enumerations
444 enumeration TypeOfDrawMode is TODM_REPLACE,
449 ---Purpose: Definition of the draw modes
451 ---Category: Enumerations
453 enumeration TypeOfEdge is TOE_VISIBLE,
456 ---Purpose: Definition of edge visibility
458 -- TOE_VISIBLE Edge is displayed
459 -- TOE_INVISIBLE Edge is not displayed
461 ---Category: Enumerations
463 enumeration TypeOfHighlightMethod is TOHM_COLOR,
466 end TypeOfHighlightMethod;
467 ---Purpose: Definition of a highlight method
469 -- TOHM_COLOR drawn in the highlight color
471 -- TOHM_BLINK blinking
472 -- TOHM_BOUNDBOX enclosed by the boundary box
475 ---Category: Enumerations
477 enumeration TypeOfLine is TOL_SOLID,
483 ---Purpose: Definition of line types
485 -- TOL_SOLID continuous
486 -- TOL_DASH dashed 2.0,1.0 (MM)
487 -- TOL_DOT dotted 0.2,0.5 (MM)
488 -- TOL_DOTDASH mixed 10.0,1.0,2.0,1.0 (MM)
489 -- TOL_USERDEFINED defined by Users
490 ---Category: Enumerations
492 enumeration WidthOfLine is WOL_THIN,
498 ---Purpose: Definition of line types
500 -- WOL_THIN thin line (1 pixel width)
501 -- WOL_MEDIUM medium width of 0.5 MM
502 -- WOL_THICK thick width of 0.7 MM
503 -- WOL_VERYTHICK very thick width of 1.5 MM
504 -- WOL_USERDEFINED defined by Users
505 ---Category: Enumerations
507 enumeration TypeOfFont is TOF_DEFAULT,
513 ---Purpose: Definition of line types
515 -- TOF_DEFAULT Default system font
518 -- TOF_USERDEFINED defined by Users
519 ---Category: Enumerations
521 enumeration TypeOfText is TOT_SOLID,
524 ---Purpose: Definition of Text types
526 -- TOF_SOLID Default text
528 ---Category: Enumerations
530 enumeration TypeOfStyleText is TOST_NORMAL,
533 ---Purpose: Define the style of the text.
535 -- TOST_NORMAL Default text. The text is displayed like any other graphic object.
536 -- This text can be hidden by another object that is nearest from the
538 -- TOST_ANNOTATION The text is always visible. The texte is displayed
539 -- over the other object according to the priority.
540 ---Category: Enumerations
542 enumeration TypeOfDisplayText is TODT_NORMAL,
546 end TypeOfDisplayText;
547 ---Purpose: Define the display type of the text.
549 -- TODT_NORMAL Default display. Text only.
550 -- TODT_SUBTITLE There is a subtitle under the text.
551 -- TODT_DEKALE The text is displayed with a 3D style.
552 -- TODT_BLEND The text is displayed in XOR.
553 ---Category: Enumerations
555 enumeration TypeOfMarker is TOM_POINT,
570 ---Purpose: Definition of types of markers
577 -- TOM_O_POINT a point in a circle
578 -- TOM_O_PLUS a plus in a circle
579 -- TOM_O_STAR a star in a circle
580 -- TOM_O_X a cross in a circle
581 -- TOM_BALL a ball with 1 color and different saturations
582 -- TOM_RING1 a large ring
583 -- TOM_RING2 a medium ring
584 -- TOM_RING3 a small ring
585 -- TOM_USERDEFINED defined by Users
587 ---Category: Enumerations
589 enumeration TypeOfUpdate is TOU_ASAP,
592 ---Purpose: Definition of screen refresh mode
594 -- TOU_ASAP as soon as possible
595 -- TOU_WAIT on demand (Update)
597 ---Category: Enumerations
599 enumeration TypeOfDeflection is TOD_RELATIVE,
601 end TypeOfDeflection;
602 ---Purpose: Defines if the maximal chordial deflection used when
603 -- drawing an object is absolute or relative to the size
606 enumeration TypeOfResize is TOR_UNKNOWN,
612 TOR_TOP_AND_RIGHT_BORDER,
613 TOR_RIGHT_AND_BOTTOM_BORDER,
614 TOR_BOTTOM_AND_LEFT_BORDER,
615 TOR_LEFT_AND_TOP_BORDER
617 ---Purpose: Defines the type of Resize Window method applied
620 enumeration CardinalPoints is CP_North,
631 enumeration TypeOfRenderingMode is TORM_IMMEDIAT,
633 TORM_CLEAR_AND_RETAIN
634 end TypeOfRenderingMode;
635 ---Purpose: Definition of the rendering modes
637 enumeration TypeOfColorSpace is TOCS_BlackAndWhite,
640 end TypeOfColorSpace;
643 enumeration FormatOfSheetPaper is
644 FOSP_A0, -- 0.841 x 1.189 (M)
645 FOSP_A1, -- 0.594 x 0.841 (M)
646 FOSP_A2, -- 0.420 x 0.594 (M)
647 FOSP_A3, -- 0.297 x 0.420 (M)
648 FOSP_A4, -- 0.210 x 0.297 (M)
649 FOSP_A5, -- 0.1485 x 0.210 (M)
650 FOSP_K_LONG, -- 1.016 x 3.6322 (M)
651 FOSP_K_SHORT, -- 1.016 x 1.397 (M)
652 FOSP_J_LONG, -- 0.8636 x 4.4704 (M)
653 FOSP_J_SHORT, -- 0.8636 x 1.397 (M)
654 FOSP_H_LONG, -- 0.7112 x 3.6322 (M)
655 FOSP_H_SHORT, -- 0.7112 x 1.1176 (M)
656 FOSP_G_LONG, -- 0.2794 x 2.286 (M)
657 FOSP_G_SHORT, -- 0.2794 x 0.5715 (M)
658 FOSP_F, -- 0.7112 x 1.016 (M)
659 FOSP_E, -- 0.8636 x 1.1176 (M)
660 FOSP_D, -- 0.5588 x 0.8636 (M)
661 FOSP_C, -- 0.4318 x 0.5588 (M)
662 FOSP_B, -- 0.2794 x 0.4318 (M)
663 FOSP_A, -- 0.2159 x 0.2794 (M)
664 FOSP_UNKNOWN -- User defined
665 end FormatOfSheetPaper;
668 enumeration TypeOfPrimitive is
680 enumeration GridDrawMode is GDM_Lines,
684 ---Purpose: Defines the grid draw mode. The grid may be drawn
685 -- by using lines or points.
687 enumeration GridType is GT_Rectangular,
690 ---Purpose: Defines the grid type : Rectangular or Circular.
692 --------- Start DCB modification ----------------------------------------
693 enumeration PlotMode is
698 ---Purpose: Defines plot mode for plotter drivers derived from
699 -- Aspect_PlotterDriver:
700 -- 1) PM_DPLOTTER - send file to plotter and delete file
701 -- 2) PM_FILEONLY - do not send file to the plotter
702 -- 3) PM_NPLOTTER - send file to the plotter but not delete a file
705 enumeration ListingType is
710 ---Purpose: Defines where to search plotter files (PLO)
712 enumeration PlotterOrigin is
720 --------- Stop DCB modification ----------------------------------------
723 enumeration TypeOfTriedronEcho is TOTE_NONE,
741 end TypeOfTriedronEcho;
742 ---Purpose: Definition of the Triedron echo zone to highlight
744 -- TOTE_NONE no echo zone
745 -- TOTE_ORIGIN a box on origin of the Triedron
746 -- TOTE_AXIS_X highlights the X axis
747 -- TOTE_AXIS_Y highlights the Y axis
748 -- TOTE_AXIS_Z highlights the Z axis
749 -- TOTE_TEXT_X highlights the X character
750 -- TOTE_TEXT_Y highlights the Y character
751 -- TOTE_TEXT_Z highlights the Z character
752 -- TOTE_01 to TOTE_10 not yet implemented.
753 ---Category: The enumerations
756 enumeration TypeOfTriedronPosition is TOTP_CENTER,
771 end TypeOfTriedronPosition;
772 ---Purpose: Definition of the Triedron position in the views
774 -- TOTP_CENTER at the center of the view
775 -- TOTP_LEFT_LOWER at the left lower corner
776 -- TOTP_LEFT_UPPER at the left upper corner
777 -- TOTP_RIGHT_LOWER at the right lower corner
778 -- TOTP_RIGHT_UPPER at the right upper corner
779 -- TOTP_01 to TOTP_10 not yet implemented.
780 ---Category: The enumerations
782 enumeration TypeOfLayer is TOL_OVERLAY,
785 ---Purpose: Modes of drawing for the objects in a layer
787 -- TOL_OVERLAY, the graphic of the layer is draw
788 -- after the 3d graphic.
789 -- TOL_UNDERLAY, the graphic of the layer is draw
790 -- before the 3d graphic.
791 ---Category: The enumerations
793 enumeration TypeOfFacingModel is TOFM_BOTH_SIDE,
796 end TypeOfFacingModel;
798 enumeration TypeOfDegenerateModel is
805 end TypeOfDegenerateModel;
806 ---Purpose: Defines type of degeneration model of the
807 -- graphic structure.
808 ---Category: The enumerations
810 enumeration FillMethod is
816 ---Purpose: Defines the fill methods to
817 -- write bitmaps in a window.
819 enumeration GradientFillMethod is
829 end GradientFillMethod;
830 ---Purpose: Defines the fill methods to
831 -- write gradient background in a window.
833 enumeration TypeOfColorScaleData is
836 end TypeOfColorScaleData;
837 ---Purpose: Defines the using type of colors and labels
839 enumeration TypeOfColorScalePosition is
844 end TypeOfColorScalePosition;
845 ---Purpose: Defines the type of position for color scale labels
847 enumeration TypeOfColorScaleOrientation is
852 end TypeOfColorScaleOrientation;
853 ---Purpose: Defines the type of color scale orientation
855 enumeration PrintAlgo is
859 ---Purpose: Defines print algorithm
861 -- 1) PA_STRETCH - Stretch offscreen printing frame
862 -- if its dimensions are smaller than
863 -- the printer's printing area dimensions;
864 -- This algorithm is more reliable as it
865 -- works on any hardware and is recommended
866 -- to be used with average printing resolutions,
867 -- as it more RAM memory dependent than PA_TILE;
868 -- Stretching is performend using bicubic interpolation
869 -- algorithm from FreeImage library if OCCT is built
870 -- with FreeImage support, otherwise Windows API
871 -- StretchBlt() function in STRETCH_HALFTONE mode
873 -- 2) PA_TILE - If the offscreen printing frame dimensions
874 -- are smaller than the printer's printing
875 -- area dimensions - use multiple printing
876 -- frames to cover the whole printing area
878 ---------------------------------
879 -- Category: Instantiated classes
880 ---------------------------------
882 class Array1OfEdge instantiates
883 Array1 from TCollection (Edge from Aspect);
884 ---Category: Instantiated classes
886 class SequenceOfColorMapEntry instantiates
887 Sequence from TCollection (ColorMapEntry from Aspect);
888 ---Category: Instantiated classes
890 class SequenceOfTypeMapEntry instantiates
891 Sequence from TCollection (TypeMapEntry from Aspect);
892 ---Category: Instantiated classes
894 class SequenceOfWidthMapEntry instantiates
895 Sequence from TCollection (WidthMapEntry from Aspect);
896 ---Category: Instantiated classes
898 class SequenceOfFontMapEntry instantiates
899 Sequence from TCollection (FontMapEntry from Aspect);
900 ---Category: Instantiated classes
902 class SequenceOfMarkMapEntry instantiates
903 Sequence from TCollection (MarkMapEntry from Aspect);
904 ---Category: Instantiated classes
906 class SequenceOfColor instantiates
907 Sequence from TCollection(Color from Quantity);
909 ----------------------------
910 -- Category: Package methods
911 ----------------------------
913 ValuesOfFOSP (aFOSP : FormatOfSheetPaper from Aspect;
914 aWidth, aHeight : out Length from Quantity)
915 returns CString from Standard;
917 ---Purpose: Returns the format size according to the default
918 -- LENGTH unit of the required format <aFOSP>.
919 -- Returns more the normalized format name.
920 ---Category: Package methods
922 ToCString (aString: ExtendedString from TCollection)
923 returns CString from Standard;
925 ---Purpose: Translates an ExtendedString to a CString
926 -- depending of the local format.
927 ---Category: Package methods
929 Inverse ( aMat : Array2OfReal from TColStd;
930 Inv : out Array2OfReal from TColStd )
931 returns Boolean from Standard;
933 ---Purpose: Inverses <aMat> a 4x4 matrix.