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 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.
297 deferred class GraphicDriver;
298 ---Purpose: Defines a graphic driver (3d library)
301 ---Purpose: Defines a Font Style
302 ---Category: The classes
305 ---Purpose: Defines an entry in the Font map :
306 -- an index and a text Font.
307 ---Category: Classes Font map
310 ---Purpose: Associates an index and a text Font entry.
311 ---Category: The classes
314 ---Purpose: Defines an entry in the Width map :
315 -- an index and a line Width.
316 ---Category: Classes Width map
319 ---Purpose: Associates an index and a line width entry.
320 ---Category: The classes
323 ---Purpose: Defines a Line Style
324 ---Category: The classes
327 ---Purpose: Associates an index and a line type entry.
328 ---Category: The classes
331 ---Purpose: Defines an entry in the Type map :
332 -- an index and a line style.
333 ---Category: Classes Type map
336 ---Purpose: Defines a Marker Style
337 ---Category: The classes
340 ---Purpose: Associates an index and a Marker entry.
341 ---Category: The classes
344 ---Purpose: Defines an entry in the Marker map :
345 -- an index and a marker style.
346 ---Category: Classes Mark map
348 deferred class Window;
349 ---Purpose: Defines a window.
352 deferred class GraphicDevice;
353 ---Purpose: Defines a physical graphic device allowing to
354 -- shares graphical ressources.
357 deferred class Driver;
358 ---Purpose: Defines a virtual driver.
361 deferred class WindowDriver;
362 ---Purpose: Defines a virtual driver associated to a window.
366 class RectangularGrid;
369 deferred class ColorScale;
370 ---Purpose: Defines a color scale for viewer.
372 -------------------------
373 -- Category: Enumerations
374 -------------------------
376 enumeration HatchStyle is HS_HORIZONTAL,
383 HS_DIAGONAL_135_WIDE,
387 HS_GRID_DIAGONAL_WIDE
389 ---Purpose: Definition of all available hatch styles.
392 -- HS_HORIZONTAL_WIDE
396 -- HS_DIAGONAL_45_WIDE
398 -- HS_DIAGONAL_135_WIDE
402 -- HS_GRID_DIAGONAL_WIDE
404 ---Category: Enumerations
406 enumeration InteriorStyle is IS_EMPTY,
412 ---Purpose: Definition of interior types for primitive
415 -- IS_EMPTY no interior.
416 -- IS_HOLLOW display the boundaries of the surface.
417 -- IS_HATCH display hatched with a hatch style.
418 -- IS_SOLID display the interior entirely filled.
419 -- IS_HIDDENLINE display in hidden lines removed.
421 ---Category: Enumerations
423 enumeration TypeOfColorMap is TOC_Generic,
427 ---Purpose: Definition of the color map types
429 ---Category: Enumerations
431 enumeration TypeOfConstraint is TOC_BOTTOM_LEFT,
435 end TypeOfConstraint;
436 ---Purpose: Definition of the attachment for the layers
438 ---Category: Enumerations
440 enumeration TypeOfDrawMode is TODM_REPLACE,
445 ---Purpose: Definition of the draw modes
447 ---Category: Enumerations
449 enumeration TypeOfEdge is TOE_VISIBLE,
452 ---Purpose: Definition of edge visibility
454 -- TOE_VISIBLE Edge is displayed
455 -- TOE_INVISIBLE Edge is not displayed
457 ---Category: Enumerations
459 enumeration TypeOfHighlightMethod is TOHM_COLOR,
462 end TypeOfHighlightMethod;
463 ---Purpose: Definition of a highlight method
465 -- TOHM_COLOR drawn in the highlight color
467 -- TOHM_BLINK blinking
468 -- TOHM_BOUNDBOX enclosed by the boundary box
471 ---Category: Enumerations
473 enumeration TypeOfLine is TOL_SOLID,
479 ---Purpose: Definition of line types
481 -- TOL_SOLID continuous
482 -- TOL_DASH dashed 2.0,1.0 (MM)
483 -- TOL_DOT dotted 0.2,0.5 (MM)
484 -- TOL_DOTDASH mixed 10.0,1.0,2.0,1.0 (MM)
485 -- TOL_USERDEFINED defined by Users
486 ---Category: Enumerations
488 enumeration WidthOfLine is WOL_THIN,
494 ---Purpose: Definition of line types
496 -- WOL_THIN thin line (1 pixel width)
497 -- WOL_MEDIUM medium width of 0.5 MM
498 -- WOL_THICK thick width of 0.7 MM
499 -- WOL_VERYTHICK very thick width of 1.5 MM
500 -- WOL_USERDEFINED defined by Users
501 ---Category: Enumerations
503 enumeration TypeOfFont is TOF_DEFAULT,
509 ---Purpose: Definition of line types
511 -- TOF_DEFAULT Default system font
514 -- TOF_USERDEFINED defined by Users
515 ---Category: Enumerations
517 enumeration TypeOfText is TOT_SOLID,
520 ---Purpose: Definition of Text types
522 -- TOF_SOLID Default text
524 ---Category: Enumerations
526 enumeration TypeOfStyleText is TOST_NORMAL,
529 ---Purpose: Define the style of the text.
531 -- TOST_NORMAL Default text. The text is displayed like any other graphic object.
532 -- This text can be hidden by another object that is nearest from the
534 -- TOST_ANNOTATION The text is always visible. The texte is displayed
535 -- over the other object according to the priority.
536 ---Category: Enumerations
538 enumeration TypeOfDisplayText is TODT_NORMAL,
542 end TypeOfDisplayText;
543 ---Purpose: Define the display type of the text.
545 -- TODT_NORMAL Default display. Text only.
546 -- TODT_SUBTITLE There is a subtitle under the text.
547 -- TODT_DEKALE The text is displayed with a 3D style.
548 -- TODT_BLEND The text is displayed in XOR.
549 ---Category: Enumerations
551 enumeration TypeOfMarker is TOM_POINT,
566 ---Purpose: Definition of types of markers
573 -- TOM_O_POINT a point in a circle
574 -- TOM_O_PLUS a plus in a circle
575 -- TOM_O_STAR a star in a circle
576 -- TOM_O_X a cross in a circle
577 -- TOM_BALL a ball with 1 color and different saturations
578 -- TOM_RING1 a large ring
579 -- TOM_RING2 a medium ring
580 -- TOM_RING3 a small ring
581 -- TOM_USERDEFINED defined by Users
583 ---Category: Enumerations
585 enumeration TypeOfUpdate is TOU_ASAP,
588 ---Purpose: Definition of screen refresh mode
590 -- TOU_ASAP as soon as possible
591 -- TOU_WAIT on demand (Update)
593 ---Category: Enumerations
595 enumeration TypeOfDeflection is TOD_RELATIVE,
597 end TypeOfDeflection;
598 ---Purpose: Defines if the maximal chordial deflection used when
599 -- drawing an object is absolute or relative to the size
602 enumeration TypeOfResize is TOR_UNKNOWN,
608 TOR_TOP_AND_RIGHT_BORDER,
609 TOR_RIGHT_AND_BOTTOM_BORDER,
610 TOR_BOTTOM_AND_LEFT_BORDER,
611 TOR_LEFT_AND_TOP_BORDER
613 ---Purpose: Defines the type of Resize Window method applied
616 enumeration CardinalPoints is CP_North,
627 enumeration TypeOfRenderingMode is TORM_IMMEDIAT,
629 TORM_CLEAR_AND_RETAIN
630 end TypeOfRenderingMode;
631 ---Purpose: Definition of the rendering modes
633 enumeration TypeOfColorSpace is TOCS_BlackAndWhite,
636 end TypeOfColorSpace;
639 enumeration FormatOfSheetPaper is
640 FOSP_A0, -- 0.841 x 1.189 (M)
641 FOSP_A1, -- 0.594 x 0.841 (M)
642 FOSP_A2, -- 0.420 x 0.594 (M)
643 FOSP_A3, -- 0.297 x 0.420 (M)
644 FOSP_A4, -- 0.210 x 0.297 (M)
645 FOSP_A5, -- 0.1485 x 0.210 (M)
646 FOSP_K_LONG, -- 1.016 x 3.6322 (M)
647 FOSP_K_SHORT, -- 1.016 x 1.397 (M)
648 FOSP_J_LONG, -- 0.8636 x 4.4704 (M)
649 FOSP_J_SHORT, -- 0.8636 x 1.397 (M)
650 FOSP_H_LONG, -- 0.7112 x 3.6322 (M)
651 FOSP_H_SHORT, -- 0.7112 x 1.1176 (M)
652 FOSP_G_LONG, -- 0.2794 x 2.286 (M)
653 FOSP_G_SHORT, -- 0.2794 x 0.5715 (M)
654 FOSP_F, -- 0.7112 x 1.016 (M)
655 FOSP_E, -- 0.8636 x 1.1176 (M)
656 FOSP_D, -- 0.5588 x 0.8636 (M)
657 FOSP_C, -- 0.4318 x 0.5588 (M)
658 FOSP_B, -- 0.2794 x 0.4318 (M)
659 FOSP_A, -- 0.2159 x 0.2794 (M)
660 FOSP_UNKNOWN -- User defined
661 end FormatOfSheetPaper;
664 enumeration TypeOfPrimitive is
676 enumeration GridDrawMode is GDM_Lines,
680 ---Purpose: Defines the grid draw mode. The grid may be drawn
681 -- by using lines or points.
683 enumeration GridType is GT_Rectangular,
686 ---Purpose: Defines the grid type : Rectangular or Circular.
688 --------- Start DCB modification ----------------------------------------
689 enumeration PlotMode is
694 ---Purpose: Defines plot mode for plotter drivers derived from
695 -- Aspect_PlotterDriver:
696 -- 1) PM_DPLOTTER - send file to plotter and delete file
697 -- 2) PM_FILEONLY - do not send file to the plotter
698 -- 3) PM_NPLOTTER - send file to the plotter but not delete a file
701 enumeration ListingType is
706 ---Purpose: Defines where to search plotter files (PLO)
708 enumeration PlotterOrigin is
716 --------- Stop DCB modification ----------------------------------------
719 enumeration TypeOfTriedronEcho is TOTE_NONE,
737 end TypeOfTriedronEcho;
738 ---Purpose: Definition of the Triedron echo zone to highlight
740 -- TOTE_NONE no echo zone
741 -- TOTE_ORIGIN a box on origin of the Triedron
742 -- TOTE_AXIS_X highlights the X axis
743 -- TOTE_AXIS_Y highlights the Y axis
744 -- TOTE_AXIS_Z highlights the Z axis
745 -- TOTE_TEXT_X highlights the X character
746 -- TOTE_TEXT_Y highlights the Y character
747 -- TOTE_TEXT_Z highlights the Z character
748 -- TOTE_01 to TOTE_10 not yet implemented.
749 ---Category: The enumerations
752 enumeration TypeOfTriedronPosition is TOTP_CENTER,
767 end TypeOfTriedronPosition;
768 ---Purpose: Definition of the Triedron position in the views
770 -- TOTP_CENTER at the center of the view
771 -- TOTP_LEFT_LOWER at the left lower corner
772 -- TOTP_LEFT_UPPER at the left upper corner
773 -- TOTP_RIGHT_LOWER at the right lower corner
774 -- TOTP_RIGHT_UPPER at the right upper corner
775 -- TOTP_01 to TOTP_10 not yet implemented.
776 ---Category: The enumerations
778 enumeration TypeOfLayer is TOL_OVERLAY,
781 ---Purpose: Modes of drawing for the objects in a layer
783 -- TOL_OVERLAY, the graphic of the layer is draw
784 -- after the 3d graphic.
785 -- TOL_UNDERLAY, the graphic of the layer is draw
786 -- before the 3d graphic.
787 ---Category: The enumerations
789 enumeration TypeOfFacingModel is TOFM_BOTH_SIDE,
792 end TypeOfFacingModel;
794 enumeration TypeOfDegenerateModel is
801 end TypeOfDegenerateModel;
802 ---Purpose: Defines type of degeneration model of the
803 -- graphic structure.
804 ---Category: The enumerations
806 enumeration FillMethod is
812 ---Purpose: Defines the fill methods to
813 -- write bitmaps in a window.
815 enumeration GradientFillMethod is
825 end GradientFillMethod;
826 ---Purpose: Defines the fill methods to
827 -- write gradient background in a window.
829 enumeration TypeOfColorScaleData is
832 end TypeOfColorScaleData;
833 ---Purpose: Defines the using type of colors and labels
835 enumeration TypeOfColorScalePosition is
840 end TypeOfColorScalePosition;
841 ---Purpose: Defines the type of position for color scale labels
843 enumeration TypeOfColorScaleOrientation is
848 end TypeOfColorScaleOrientation;
849 ---Purpose: Defines the type of color scale orientation
851 enumeration PrintAlgo is
855 ---Purpose: Defines print algorithm
857 -- 1) PA_STRETCH - Stretch offscreen printing frame
858 -- if its dimensions are smaller than
859 -- the printer's printing area dimensions;
860 -- This algorithm is more reliable as it
861 -- works on any hardware and is recommended
862 -- to be used with average printing resolutions,
863 -- as it more RAM memory dependent than PA_TILE;
864 -- Stretching is performend using bicubic interpolation
865 -- algorithm from FreeImage library if OCCT is built
866 -- with FreeImage support, otherwise Windows API
867 -- StretchBlt() function in STRETCH_HALFTONE mode
869 -- 2) PA_TILE - If the offscreen printing frame dimensions
870 -- are smaller than the printer's printing
871 -- area dimensions - use multiple printing
872 -- frames to cover the whole printing area
874 ---------------------------------
875 -- Category: Instantiated classes
876 ---------------------------------
878 class Array1OfEdge instantiates
879 Array1 from TCollection (Edge from Aspect);
880 ---Category: Instantiated classes
882 class SequenceOfColorMapEntry instantiates
883 Sequence from TCollection (ColorMapEntry from Aspect);
884 ---Category: Instantiated classes
886 class SequenceOfTypeMapEntry instantiates
887 Sequence from TCollection (TypeMapEntry from Aspect);
888 ---Category: Instantiated classes
890 class SequenceOfWidthMapEntry instantiates
891 Sequence from TCollection (WidthMapEntry from Aspect);
892 ---Category: Instantiated classes
894 class SequenceOfFontMapEntry instantiates
895 Sequence from TCollection (FontMapEntry from Aspect);
896 ---Category: Instantiated classes
898 class SequenceOfMarkMapEntry instantiates
899 Sequence from TCollection (MarkMapEntry from Aspect);
900 ---Category: Instantiated classes
902 class SequenceOfColor instantiates
903 Sequence from TCollection(Color from Quantity);
905 ----------------------------
906 -- Category: Package methods
907 ----------------------------
909 ValuesOfFOSP (aFOSP : FormatOfSheetPaper from Aspect;
910 aWidth, aHeight : out Length from Quantity)
911 returns CString from Standard;
913 ---Purpose: Returns the format size according to the default
914 -- LENGTH unit of the required format <aFOSP>.
915 -- Returns more the normalized format name.
916 ---Category: Package methods
918 ToCString (aString: ExtendedString from TCollection)
919 returns CString from Standard;
921 ---Purpose: Translates an ExtendedString to a CString
922 -- depending of the local format.
923 ---Category: Package methods
925 Inverse ( aMat : Array2OfReal from TColStd;
926 Inv : out Array2OfReal from TColStd )
927 returns Boolean from Standard;
929 ---Purpose: Inverses <aMat> a 4x4 matrix.