0024887: Visualization - revise and extend Raytracing controls
[occt.git] / src / Graphic3d / Graphic3d.cdl
old mode 100755 (executable)
new mode 100644 (file)
index fa0ca14..e08f81a
@@ -1,22 +1,18 @@
 -- Created on: 1993-03-31
 -- Created by: NW,JPB,CAL
 -- Copyright (c) 1993-1999 Matra Datavision
--- Copyright (c) 1999-2012 OPEN CASCADE SAS
+-- Copyright (c) 1999-2014 OPEN CASCADE SAS
 --
--- The content of this file is subject to the Open CASCADE Technology Public
--- License Version 6.5 (the "License"). You may not use the content of this file
--- except in compliance with the License. Please obtain a copy of the License
--- at http://www.opencascade.org and read it completely before using this file.
+-- This file is part of Open CASCADE Technology software library.
 --
--- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
--- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+-- This library is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU Lesser General Public License version 2.1 as published
+-- by the Free Software Foundation, with special exception defined in the file
+-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+-- distribution for complete text of the license and disclaimer of any warranty.
 --
--- The Original Code and all software distributed under the License is
--- distributed on an "AS IS" basis, without warranty of any kind, and the
--- Initial Developer hereby disclaims all such warranties, including without
--- limitation, any warranties of merchantability, fitness for a particular
--- purpose or non-infringement. Please see the License for the specific terms
--- and conditions governing the rights and limitations under the License.
+-- Alternatively, this file may be used under the terms of Open CASCADE
+-- commercial license or contractual agreement.
 
 -- Package  :   Graphic3d
 -- Updated  :   Vendredi 2 Octobre 1992
@@ -25,7 +21,6 @@
 --      1/08/97 ; PCT : Ajout texture mapping
 --      11/97 ; CAL : retrait de la dependance avec math
 --      11/97 ; CAL : retrait des DataStructure
---      11/97 ; CAL : ajout pointer StructPtr
 --              04/98 ; FGU : ajout champs 'TOR_EMISSION'
 --      16-09-98; BGN: (S3819) Ajout TypeOfTriedronEcho,
 --                             TypeOfTriedronPosition.
@@ -69,14 +64,13 @@ uses
 
     TCollection,
     TColStd,
+    TColgp,
     OSD,
     Quantity,
     Aspect,
     MMgt,
-    Xw,
     WNT,
     Image,
-    AlienImage,
     gp,
     Font
 is
@@ -100,9 +94,6 @@ is
     exception MaterialDefinitionError inherits OutOfRange;
     ---Category: Exceptions
 
-    exception PickIdDefinitionError inherits OutOfRange;
-    ---Category: Exceptions
-
     exception PlotterDefinitionError inherits OutOfRange;
     ---Category: The exceptions
 
@@ -124,32 +115,39 @@ is
 
         enumeration NameOfMaterial is
                     NOM_BRASS,      -- laiton       (PHYSIC)
-                                        NOM_BRONZE,     -- bronze       (PHYSIC)
-                                        NOM_COPPER,     -- cuivre       (PHYSIC)
-                                        NOM_GOLD,       -- or           (PHYSIC)
+                    NOM_BRONZE,     -- bronze       (PHYSIC)
+                    NOM_COPPER,     -- cuivre       (PHYSIC)
+                    NOM_GOLD,       -- or           (PHYSIC)
+
+                    NOM_PEWTER,     -- etain        (PHYSIC)
+
+                    NOM_PLASTER,    -- platre       (GENERIC)
+                    NOM_PLASTIC,    -- plastic      (GENERIC)
+
+                    NOM_SILVER,     -- argent       (PHYSIC)
 
-                                        NOM_PEWTER,     -- etain        (PHYSIC)
+                    NOM_STEEL,      -- acier        (PHYSIC)
 
-                                        NOM_PLASTER,    -- platre       (GENERIC)
-                                        NOM_PLASTIC,    -- plastic      (GENERIC)
+                    NOM_STONE,      -- pierre       (PHYSIC)
 
-                                        NOM_SILVER,     -- argent       (PHYSIC)
+                    NOM_SHINY_PLASTIC,   -- plastique brillant   (GENERIC)
+                    NOM_SATIN,           --  satin        (GENERIC)
+                    NOM_METALIZED,       -- metallise New (GENERIC)
+                    NOM_NEON_GNC,        -- neon      New (GENERIC)
+                    NOM_CHROME,          -- chrome    New (PHYSIC)
+                    NOM_ALUMINIUM,       -- aluminium New (PHYSIC)
+                    NOM_OBSIDIAN,        -- obsidian  New (PHYSIC)
+                    NOM_NEON_PHC,        -- neon      New (PHYSIC)
+                    NOM_JADE,            -- jade      New (PHYSIC)
 
-                                        NOM_STEEL,      -- acier        (PHYSIC)
+                    NOM_CHARCOAL,
 
-                                        NOM_STONE,      -- pierre       (PHYSIC)
+                    NOM_WATER,
+                    NOM_GLASS,
+                    NOM_DIAMOND,
 
-                                        NOM_SHINY_PLASTIC,      -- plastique brillant   (GENERIC)
-                                        NOM_SATIN,      --  satin       (GENERIC)
-                                        NOM_METALIZED,  -- metallise New (GENERIC)
-                                        NOM_NEON_GNC,   -- neon      New (GENERIC)
-                                        NOM_CHROME,     -- chrome    New (PHYSIC)
-                                        NOM_ALUMINIUM,  -- aluminium New (PHYSIC)
-                                        NOM_OBSIDIAN,   -- obsidian  New (PHYSIC)
-                                        NOM_NEON_PHC,   -- neon      New (PHYSIC)
-                                        NOM_JADE,       -- jade      New (PHYSIC)
-                        NOM_DEFAULT,
-                        NOM_UserDefined -- owner material
+                    NOM_DEFAULT,
+                    NOM_UserDefined -- owner material
     end NameOfMaterial;
     ---Purpose: Types of aspect materials.
     ---Category: Enumerations
@@ -216,10 +214,26 @@ is
     enumeration  TypeOfTextureMode  is  TOTM_OBJECT,
                                         TOTM_SPHERE,
                                         TOTM_EYE,
-                                        TOTM_MANUAL;
+                                        TOTM_MANUAL,
+                                        TOTM_SPRITE;
     ---Purpose: Type of the texture projection.
     ---Category: Enumerations
 
+    enumeration  TypeOfTextureFilter is TOTF_NEAREST,
+                                        TOTF_BILINEAR,
+                                        TOTF_TRILINEAR;
+    ---Purpose: Type of the texture filter.
+    -- Notice that for textures without mipmaps linear interpolation will be used instead of TOTF_BILINEAR and TOTF_TRILINEAR.
+    ---Category: Enumerations
+
+    enumeration  LevelOfTextureAnisotropy is LOTA_OFF,
+                                             LOTA_FAST,
+                                             LOTA_MIDDLE,
+                                             LOTA_QUALITY;
+    ---Purpose: Level of anisotropy filter.
+    -- Notice that actual quality depends on hardware capabilities!
+    ---Category: Enumerations
+
     enumeration  NameOfTexturePlane  is  NOTP_XY,
                                          NOTP_YZ,
                                          NOTP_ZX,
@@ -325,11 +339,24 @@ is
     -- - ASPECT_MARKER: aspect for marker primitives;
     -- - ASPECT_FILL_AREA: aspect for face primitives.
 
+    enumeration RenderingMode is
+      RM_RASTERIZATION, RM_RAYTRACING
+    end RenderingMode;
+    ---Purpose: Describes rendering modes.
+    -- - RM_RASTERIZATION: enables OpenGL rasterization mode;
+    -- - RM_RAYTRACING: enables GPU ray-tracing mode.
+
     ---------------------------
     -- Category: Imported types
     ---------------------------
 
-    imported PrimitiveArray;
+    imported Buffer;
+    imported Buffer_Handle;
+    imported BoundBuffer;
+    imported BoundBuffer_Handle;
+    imported IndexBuffer;
+    imported IndexBuffer_Handle;
+
     imported BufferType;
 
     imported CBitFields20;
@@ -348,14 +375,19 @@ is
     ---Purpose: Defines the C structure
     ---Category: Imported types
 
-    imported CGroup;
-    ---Purpose: Defines the C structure <agroup>
-    ---Category: Imported types
+    imported CAspectFillArea;
+    imported CAspectMarker;
+    imported CAspectLine;
+    imported CAspectText;
 
     imported CStructure;
     ---Purpose: Defines the C structure <astructure>
     ---Category: Imported types
 
+    pointer CStructurePtr to CStructure from Graphic3d;
+
+    imported CStructure_Handle;
+
     imported CLight;
     ---Purpose: Defines the C structure <alight>
     ---Category: Imported types
@@ -379,28 +411,46 @@ is
     imported CView;
     ---Purpose: Defines the C structure <aview>
     ---Category: Imported types
+    
+    imported RenderingParams;
+    ---Purpose: Describes rendering parameters and effects.
+    ---Category: Imported types
 
     imported CGraduatedTrihedron;
     ---Purpose: Defines the C structure of a graduated trihedron.
     ---Category: Imported types
 
-    imported CInitTexture;
+    imported ClipPlane;
+    ---Purpose: Describes geometrical and auxiliary properties of clipping
+    -- planes applied on rendering by graphical driver.
+    ---Category: Imported types
+
+    imported ClipPlane_Handle;
+    ---Purpose: CDL-compatibility handle type definition for
+    -- clip plane objects.
+
     imported CTexture;
 
---   ABD 29/10/04  Transform Persistence of Presentation( pan, zoom, rotate )
-        imported CTransPersStruct;
-        imported TransModeFlags;
---   ABD 29/10/04  Transform Persistence of Presentation( pan, zoom, rotate )
+    imported CTransPersStruct;
+    imported TransModeFlags;
+    
+    imported MarkerImage;
+    imported MarkerImage_Handle;
+    imported Camera_Handle;
 
     primitive PtrFrameBuffer;
+    primitive Vec2;
+    primitive Vec3;
+    primitive Vec4;
+    imported  Mat4;
+    imported  Mat4d;
+
+    imported ZLayerSettings;
 
     --------------------
     -- Category: Classes
     --------------------
 
-    class Strips;
-    ---Purpose: Contains some static functions to strips treatment
-
     deferred class ArrayOfPrimitives;
     ---Purpose: Contains basic methods for array allocation and filling
 
@@ -447,19 +497,10 @@ is
     ---Purpose: Grouping text attributes.
     ---Category: Classes
 
-    class Group;
+    deferred class Group;
     ---Purpose: For grouping together primitives in a structure
     ---Category: Classes
 
-    class GraphicDevice;
-    ---Purpose: Defines a physical graphic device allowing to
-    --          shares graphical ressources.
-    ---Category: Classes
-
-    class WNTGraphicDevice;
-    ---Purpose:  Defines a physical graphic device for Windows NT
-    ---Category: Classes
-
     class MaterialAspect;
     ---Purpose: Aspect attributes of a 3d face.
     ---Category: Classes
@@ -468,6 +509,8 @@ is
     ---Purpose: Graphic object.
     ---Category: Classes
 
+    pointer StructurePtr to Structure from Graphic3d;
+
     deferred class GraphicDriver;
     ---Purpose: Defines a graphic driver for 3d interface
 
@@ -475,6 +518,8 @@ is
     ---Purpose: Visualiser with which the graphic objects are associated.
     ---Category: Classes
 
+    pointer StructureManagerPtr to StructureManager from Graphic3d;
+
     deferred class DataStructureManager;
     ---Purpose: Visualiser with which the graphic objects are associated.
     ---Category: Classes
@@ -487,65 +532,18 @@ is
     ---Purpose: 3d vector
     ---Category: Classes
 
-    class Vertex;
+    imported Vertex;
     ---Purpose: 3d vertex
     ---Category: Classes
 
-    class VertexN;
-    ---Purpose: 3d vertex with a normal vector
-    ---Category: Classes
-
-    class VertexNT;
-    ---Purpose: 3d vertex with a normal vector and texture coordinate
-    ---Category: Classes
-
-    class VertexC;
-    ---Purpose: 3d vertex with a colour
-    ---Category: Classes
-
-    class VertexNC;
-    ---Purpose: 3d vertex with a normal and a colour
-    ---Category: Classes
-
-    ---------------------
-    -- Category: Pointers
-    ---------------------
-
-    pointer StructPtr to Structure from Graphic3d;
-    ---Category: Pointers
-
     ---------------------------------
     -- Category: Instantiated classes
     ---------------------------------
 
-    class ListOfPArray instantiates
-        List from TCollection (ArrayOfPrimitives from Graphic3d);
-        ---Category: Instantiated classes
-
-    class SequenceOfAddress instantiates
-            Sequence from TCollection
-            (Address from Standard);
-    ---Category: Instantiated classes
-
-    class SetOfGroup instantiates
-            Set from TCollection (Group from Graphic3d);
-    ---Category: Instantiated classes
-
-    class HSetOfGroup instantiates
-            HSet from TCollection
-            (Group from Graphic3d, SetOfGroup);
-    ---Category: Instantiated classes
-
-    class SequenceOfGroup instantiates
-                Sequence from TCollection (Group from Graphic3d);
+    imported SequenceOfGroup;
 
     ---Category: Instantiated classes
 
-    class HSequenceOfGroup instantiates
-            HSequence from TCollection
-        (Group from Graphic3d, SequenceOfGroup from Graphic3d);
-    ---Category: Instantiated classes
-
     class MapOfStructure instantiates
             Map from TCollection (Structure from Graphic3d,MapTransientHasher from TColStd);
 
@@ -574,38 +572,6 @@ is
             Array2 from TCollection (Vertex from Graphic3d);
     ---Category: Instantiated classes
 
-    class Array1OfVertexC instantiates
-            Array1 from TCollection (VertexC from Graphic3d);
-    ---Category: Instantiated classes
-
-    class Array2OfVertexC instantiates
-            Array2 from TCollection (VertexC from Graphic3d);
-    ---Category: Instantiated classes
-
-    class Array1OfVertexN instantiates
-            Array1 from TCollection (VertexN from Graphic3d);
-    ---Category: Instantiated classes
-
-    class Array2OfVertexN instantiates
-            Array2 from TCollection (VertexN from Graphic3d);
-    ---Category: Instantiated classes
-
-    class Array1OfVertexNT instantiates
-            Array1 from TCollection (VertexNT from Graphic3d);
-    ---Category: Instantiated classes
-
-    class Array2OfVertexNT instantiates
-            Array2 from TCollection (VertexNT from Graphic3d);
-    ---Category: Instantiated classes
-
-    class Array1OfVertexNC instantiates
-            Array1 from TCollection (VertexNC from Graphic3d);
-    ---Category: Instantiated classes
-
-    class Array2OfVertexNC instantiates
-            Array2 from TCollection (VertexNC from Graphic3d);
-    ---Category: Instantiated classes
-
     class ListOfShortReal instantiates
             List from TCollection (ShortReal from Standard);
     ---Category: Instantiated classes
@@ -614,12 +580,19 @@ is
     imported NListOfHAsciiString;
     ---Category: Instantiated classes
 
+    imported ShaderProgram_Handle;
+    ---Category: Instantiated classes
+
+    imported SequenceOfHClipPlane;
+    ---Category: Instantiated classes
+    -- Sequence of handles on clip planes
 
-        deferred  class  TextureRoot  from  Graphic3d;
+    deferred  class  TextureRoot  from  Graphic3d;
     deferred  class  TextureMap   from  Graphic3d;
     deferred  class  Texture1D    from  Graphic3d;
     deferred  class  Texture2D    from  Graphic3d;
 
+    class  TextureParams    from  Graphic3d;
     class  TextureEnv       from  Graphic3d;
     class  Texture1Dmanual  from  Graphic3d;
     class  Texture1Dsegment from  Graphic3d;
@@ -647,4 +620,15 @@ is
 
         end SortType;
 
+    ----------------------------
+    -- Category: Package methods
+    ----------------------------
+
+    InitGraphicDriver (theDisplayConnection: DisplayConnection_Handle from Aspect)
+       returns GraphicDriver from Graphic3d
+       raises  DriverDefinitionError from Aspect;
+    ---Purpose: Initialize graphic driver and returns Handle to it.
+
+    
+
 end Graphic3d;