1 #ifndef __PRC_H 2 #define __PRC_H 3 4 #ifdef _MSC_VER 5 #if _MSC_VER >= 1600 6 #include <stdint.h> 7 #else 8 typedef signed char int8_t; 9 typedef signed short int16_t; 10 typedef signed long int32_t; 11 typedef unsigned char uint8_t; 12 typedef unsigned short uint16_t; 13 typedef unsigned long uint32_t; 14 #endif // _MSC_VER >= 1600 15 #else 16 #include <inttypes.h> 17 #endif // _MSC_VER 18 19 //const uint32_t PRCVersion=7094; // For Adobe Reader 8 or later 20 const uint32_t PRCVersion=8137; // For Adobe Reader 9 or later 21 22 // from Adobe's documentation 23 24 #define PRC_TYPE_Unknown ( (uint32_t)-1 ) 25 26 #define PRC_TYPE_ROOT 0 // This type does not correspond to any entity 27 28 #define PRC_TYPE_ROOT_PRCBase ( PRC_TYPE_ROOT + 1 ) // Abstract root type for any PRC entity. 29 #define PRC_TYPE_ROOT_PRCBaseWithGraphics ( PRC_TYPE_ROOT + 2 ) // Abstract root type for any PRC entity which can bear graphics. 30 31 #define PRC_TYPE_CRV ( PRC_TYPE_ROOT + 10 ) // Types for PRC geometrical curves 32 #define PRC_TYPE_SURF ( PRC_TYPE_ROOT + 75 ) // Types for PRC geometrical surfaces 33 #define PRC_TYPE_TOPO ( PRC_TYPE_ROOT + 140 ) // Types for PRC topology 34 #define PRC_TYPE_TESS ( PRC_TYPE_ROOT + 170 ) // Types for PRC tessellation 35 #define PRC_TYPE_MISC ( PRC_TYPE_ROOT + 200 ) // Types for PRC global data 36 #define PRC_TYPE_RI ( PRC_TYPE_ROOT + 230 ) // Types for PRC representation items 37 #define PRC_TYPE_ASM ( PRC_TYPE_ROOT + 300 ) // Types for PRC assembly 38 #define PRC_TYPE_MKP ( PRC_TYPE_ROOT + 500 ) // Types for PRC markup 39 #define PRC_TYPE_GRAPH ( PRC_TYPE_ROOT + 700 ) // Types for PRC graphics 40 #define PRC_TYPE_MATH ( PRC_TYPE_ROOT + 900 ) // Types for PRC mathematical operators 41 42 #define PRC_TYPE_CRV_Base ( PRC_TYPE_CRV + 1 ) // Abstract type for all geometric curves. 43 #define PRC_TYPE_CRV_Blend02Boundary ( PRC_TYPE_CRV + 2 ) // Boundary Curve. 44 #define PRC_TYPE_CRV_NURBS ( PRC_TYPE_CRV + 3 ) // Non Uniform BSpline curve. 45 #define PRC_TYPE_CRV_Circle ( PRC_TYPE_CRV + 4 ) // Circle. 46 #define PRC_TYPE_CRV_Composite ( PRC_TYPE_CRV + 5 ) // Array of oriented curves. 47 #define PRC_TYPE_CRV_OnSurf ( PRC_TYPE_CRV + 6 ) // Curve defined by a UV curve on a surface. 48 #define PRC_TYPE_CRV_Ellipse ( PRC_TYPE_CRV + 7 ) // Ellipse. 49 #define PRC_TYPE_CRV_Equation ( PRC_TYPE_CRV + 8 ) // curve described by specific law elements 50 #define PRC_TYPE_CRV_Helix ( PRC_TYPE_CRV + 9 ) // Helix curve. 51 #define PRC_TYPE_CRV_Hyperbola ( PRC_TYPE_CRV + 10 ) // Hyperbola. 52 #define PRC_TYPE_CRV_Intersection ( PRC_TYPE_CRV + 11 ) // Intersection between 2 surfaces. 53 #define PRC_TYPE_CRV_Line ( PRC_TYPE_CRV + 12 ) // Line. 54 #define PRC_TYPE_CRV_Offset ( PRC_TYPE_CRV + 13 ) // Offset curve. 55 #define PRC_TYPE_CRV_Parabola ( PRC_TYPE_CRV + 14 ) // Parabola. 56 #define PRC_TYPE_CRV_PolyLine ( PRC_TYPE_CRV + 15 ) // Polyedric curve. 57 #define PRC_TYPE_CRV_Transform ( PRC_TYPE_CRV + 16 ) // Transformed curve. 58 59 #define PRC_TYPE_SURF_Base ( PRC_TYPE_SURF + 1 ) // Abstract type for all geometric surfaces. 60 #define PRC_TYPE_SURF_Blend01 ( PRC_TYPE_SURF + 2 ) // Blend surface. 61 #define PRC_TYPE_SURF_Blend02 ( PRC_TYPE_SURF + 3 ) // Blend Surface. 62 #define PRC_TYPE_SURF_Blend03 ( PRC_TYPE_SURF + 4 ) // Blend Surface. 63 #define PRC_TYPE_SURF_NURBS ( PRC_TYPE_SURF + 5 ) // Non Uniform BSpline surface. 64 #define PRC_TYPE_SURF_Cone ( PRC_TYPE_SURF + 6 ) // Cone. 65 #define PRC_TYPE_SURF_Cylinder ( PRC_TYPE_SURF + 7 ) // Cylinder. 66 #define PRC_TYPE_SURF_Cylindrical ( PRC_TYPE_SURF + 8 ) // Surface who is defined in cylindrical space. 67 #define PRC_TYPE_SURF_Offset ( PRC_TYPE_SURF + 9 ) // Offset surface. 68 #define PRC_TYPE_SURF_Pipe ( PRC_TYPE_SURF + 10 ) // Pipe. 69 #define PRC_TYPE_SURF_Plane ( PRC_TYPE_SURF + 11 ) // Plane. 70 #define PRC_TYPE_SURF_Ruled ( PRC_TYPE_SURF + 12 ) // Ruled surface. 71 #define PRC_TYPE_SURF_Sphere ( PRC_TYPE_SURF + 13 ) // Sphere. 72 #define PRC_TYPE_SURF_Revolution ( PRC_TYPE_SURF + 14 ) // Surface of revolution. 73 #define PRC_TYPE_SURF_Extrusion ( PRC_TYPE_SURF + 15 ) // Surface of extrusion. 74 #define PRC_TYPE_SURF_FromCurves ( PRC_TYPE_SURF + 16 ) // Surface from two curves. 75 #define PRC_TYPE_SURF_Torus ( PRC_TYPE_SURF + 17 ) // Torus. 76 #define PRC_TYPE_SURF_Transform ( PRC_TYPE_SURF + 18 ) // Transformed surface. 77 #define PRC_TYPE_SURF_Blend04 ( PRC_TYPE_SURF + 19 ) // defined for future use. 78 79 #define PRC_TYPE_TOPO_Context ( PRC_TYPE_TOPO + 1 ) // Self-containing set of topological entities. 80 #define PRC_TYPE_TOPO_Item ( PRC_TYPE_TOPO + 2 ) // Abstract root type for any topological entity (body or single item). 81 #define PRC_TYPE_TOPO_MultipleVertex ( PRC_TYPE_TOPO + 3 ) // Vertex whose position is the average of all edges' extremity positions to whom it belongs. 82 #define PRC_TYPE_TOPO_UniqueVertex ( PRC_TYPE_TOPO + 4 ) // Vertex with one set of coordinates (absolute position). 83 #define PRC_TYPE_TOPO_WireEdge ( PRC_TYPE_TOPO + 5 ) // Edge belonging to a wire body / single wire body. 84 #define PRC_TYPE_TOPO_Edge ( PRC_TYPE_TOPO + 6 ) // Edge belonging to a brep data. 85 #define PRC_TYPE_TOPO_CoEdge ( PRC_TYPE_TOPO + 7 ) // Usage of an edge in a loop. 86 #define PRC_TYPE_TOPO_Loop ( PRC_TYPE_TOPO + 8 ) // Array of co edges which delimits a face. 87 #define PRC_TYPE_TOPO_Face ( PRC_TYPE_TOPO + 9 ) // Topological face delimiting a shell. 88 #define PRC_TYPE_TOPO_Shell ( PRC_TYPE_TOPO + 10 ) // Topological shell (open or closed). 89 #define PRC_TYPE_TOPO_Connex ( PRC_TYPE_TOPO + 11 ) // Topological region delimited by one or several shells. 90 #define PRC_TYPE_TOPO_Body ( PRC_TYPE_TOPO + 12 ) // Abstract root type for any topological body. 91 #define PRC_TYPE_TOPO_SingleWireBody ( PRC_TYPE_TOPO + 13 ) // Single wire body. 92 #define PRC_TYPE_TOPO_BrepData ( PRC_TYPE_TOPO + 14 ) // Main entry to solid and surface topology (regular form). 93 #define PRC_TYPE_TOPO_SingleWireBodyCompress ( PRC_TYPE_TOPO + 15 ) // Single wire body. (ultra compressed form). 94 #define PRC_TYPE_TOPO_BrepDataCompress ( PRC_TYPE_TOPO + 16 ) // Main entry to solid and surface topology (ultra compressed form). 95 #define PRC_TYPE_TOPO_WireBody ( PRC_TYPE_TOPO + 17 ) // This type is the main entry to wire topology. 96 97 #define PRC_TYPE_TESS_Base ( PRC_TYPE_TESS + 1 ) // Abstract root type for any tessellated entity. 98 #define PRC_TYPE_TESS_3D ( PRC_TYPE_TESS + 2 ) // Tessellated faceted data; regular form. 99 #define PRC_TYPE_TESS_3D_Compressed ( PRC_TYPE_TESS + 3 ) // Tessellated faceted data; highly compressed form. 100 #define PRC_TYPE_TESS_Face ( PRC_TYPE_TESS + 4 ) // Tessellated face. 101 #define PRC_TYPE_TESS_3D_Wire ( PRC_TYPE_TESS + 5 ) // Tessellated wireframe. 102 #define PRC_TYPE_TESS_Markup ( PRC_TYPE_TESS + 6 ) // Tessellated markup. 103 104 #define PRC_TYPE_MISC_Attribute ( PRC_TYPE_MISC + 1 ) // Entity attribute. 105 #define PRC_TYPE_MISC_CartesianTransformation ( PRC_TYPE_MISC + 2 ) // Cartesian transformation. 106 #define PRC_TYPE_MISC_EntityReference ( PRC_TYPE_MISC + 3 ) // Entity reference. 107 #define PRC_TYPE_MISC_MarkupLinkedItem ( PRC_TYPE_MISC + 4 ) // Link between a markup and an entity. 108 #define PRC_TYPE_MISC_ReferenceOnPRCBase ( PRC_TYPE_MISC + 5 ) // Reference pointing on a regular entity (not topological). 109 #define PRC_TYPE_MISC_ReferenceOnTopology ( PRC_TYPE_MISC + 6 ) // Reference pointing on a topological entity. 110 #define PRC_TYPE_MISC_GeneralTransformation ( PRC_TYPE_MISC + 7 ) // General transformation. 111 112 #define PRC_TYPE_RI_RepresentationItem ( PRC_TYPE_RI + 1 ) // Basic abstract type for representation items. 113 #define PRC_TYPE_RI_BrepModel ( PRC_TYPE_RI + 2 ) // Basic type for surfaces and solids. 114 #define PRC_TYPE_RI_Curve ( PRC_TYPE_RI + 3 ) // Basic type for curves. 115 #define PRC_TYPE_RI_Direction ( PRC_TYPE_RI + 4 ) // Optional point + vector. 116 #define PRC_TYPE_RI_Plane ( PRC_TYPE_RI + 5 ) // Construction plane, as opposed to planar surface. 117 #define PRC_TYPE_RI_PointSet ( PRC_TYPE_RI + 6 ) // Set of points. 118 #define PRC_TYPE_RI_PolyBrepModel ( PRC_TYPE_RI + 7 ) // Basic type to polyhedral surfaces and solids. 119 #define PRC_TYPE_RI_PolyWire ( PRC_TYPE_RI + 8 ) // Polyedric wireframe entity. 120 #define PRC_TYPE_RI_Set ( PRC_TYPE_RI + 9 ) // Logical grouping of arbitrary number of representation items. 121 #define PRC_TYPE_RI_CoordinateSystem ( PRC_TYPE_RI + 10 ) // Coordinate system. 122 123 #define PRC_TYPE_ASM_ModelFile ( PRC_TYPE_ASM + 1 ) // Basic entry type for PRC. 124 #define PRC_TYPE_ASM_FileStructure ( PRC_TYPE_ASM + 2 ) // Basic structure for PRC files. 125 #define PRC_TYPE_ASM_FileStructureGlobals ( PRC_TYPE_ASM + 3 ) // Basic structure for PRC files : globals. 126 #define PRC_TYPE_ASM_FileStructureTree ( PRC_TYPE_ASM + 4 ) // Basic structure for PRC files : tree. 127 #define PRC_TYPE_ASM_FileStructureTessellation ( PRC_TYPE_ASM + 5 ) // Basic structure for PRC files : tessellation. 128 #define PRC_TYPE_ASM_FileStructureGeometry ( PRC_TYPE_ASM + 6 ) // Basic structure for PRC files : geometry. 129 #define PRC_TYPE_ASM_FileStructureExtraGeometry ( PRC_TYPE_ASM + 7 ) // Basic structure for PRC files : extra geometry data. 130 #define PRC_TYPE_ASM_ProductOccurence ( PRC_TYPE_ASM + 10 ) // Basic contruct for assemblies. 131 #define PRC_TYPE_ASM_PartDefinition ( PRC_TYPE_ASM + 11 ) // Basic construct for parts. 132 #define PRC_TYPE_ASM_Filter ( PRC_TYPE_ASM + 20 ) 133 134 #define PRC_TYPE_MKP_View ( PRC_TYPE_MKP + 1 ) // Grouping of markup by views. 135 #define PRC_TYPE_MKP_Markup ( PRC_TYPE_MKP + 2 ) // Basic type for simple markups. 136 #define PRC_TYPE_MKP_Leader ( PRC_TYPE_MKP + 3 ) // basic type for markup leader 137 #define PRC_TYPE_MKP_AnnotationItem ( PRC_TYPE_MKP + 4 ) // Usage of a markup. 138 #define PRC_TYPE_MKP_AnnotationSet ( PRC_TYPE_MKP + 5 ) // Group of annotations. 139 #define PRC_TYPE_MKP_AnnotationReference ( PRC_TYPE_MKP + 6 ) // Logical grouping of annotations for reference. 140 141 #define PRC_TYPE_GRAPH_Style ( PRC_TYPE_GRAPH + 1 ) // Display style. 142 #define PRC_TYPE_GRAPH_Material ( PRC_TYPE_GRAPH + 2 ) // Display material properties. 143 #define PRC_TYPE_GRAPH_Picture ( PRC_TYPE_GRAPH + 3 ) // Picture. 144 #define PRC_TYPE_GRAPH_TextureApplication ( PRC_TYPE_GRAPH + 11 ) // Texture application. 145 #define PRC_TYPE_GRAPH_TextureDefinition ( PRC_TYPE_GRAPH + 12 ) // Texture definition. 146 #define PRC_TYPE_GRAPH_TextureTransformation ( PRC_TYPE_GRAPH + 13 ) // Texture transformation. 147 #define PRC_TYPE_GRAPH_LinePattern ( PRC_TYPE_GRAPH + 21 ) // One dimensional display style. 148 #define PRC_TYPE_GRAPH_FillPattern ( PRC_TYPE_GRAPH + 22 ) // Abstract class for two-dimensional display style. 149 #define PRC_TYPE_GRAPH_DottingPattern ( PRC_TYPE_GRAPH + 23 ) // Two-dimensional filling with dots. 150 #define PRC_TYPE_GRAPH_HatchingPattern ( PRC_TYPE_GRAPH + 24 ) // Two-dimensional filling with hatches. 151 #define PRC_TYPE_GRAPH_SolidPattern ( PRC_TYPE_GRAPH + 25 ) // Two-dimensional filling with particular style (color, material, texture). 152 #define PRC_TYPE_GRAPH_VPicturePattern ( PRC_TYPE_GRAPH + 26 ) // Two-dimensional filling with vectorised picture. 153 #define PRC_TYPE_GRAPH_AmbientLight ( PRC_TYPE_GRAPH + 31 ) // Scene ambient illumination. 154 #define PRC_TYPE_GRAPH_PointLight ( PRC_TYPE_GRAPH + 32 ) // Scene point illumination. 155 #define PRC_TYPE_GRAPH_DirectionalLight ( PRC_TYPE_GRAPH + 33 ) // Scene directional illumination. 156 #define PRC_TYPE_GRAPH_SpotLight ( PRC_TYPE_GRAPH + 34 ) // Scene spot illumination. 157 #define PRC_TYPE_GRAPH_SceneDisplayParameters ( PRC_TYPE_GRAPH + 41 ) // Parameters for scene visualisation. 158 #define PRC_TYPE_GRAPH_Camera ( PRC_TYPE_GRAPH + 42 ) // 159 160 #define PRC_TYPE_MATH_FCT_1D ( PRC_TYPE_MATH + 1 ) // Basic type for one degree equation object. 161 #define PRC_TYPE_MATH_FCT_1D_Polynom ( PRC_TYPE_MATH_FCT_1D + 1 ) // Polynomial equation. 162 #define PRC_TYPE_MATH_FCT_1D_Trigonometric ( PRC_TYPE_MATH_FCT_1D + 2 ) // Cosinus based equation. 163 #define PRC_TYPE_MATH_FCT_1D_Fraction ( PRC_TYPE_MATH_FCT_1D + 3 ) // Fraction between 2 one degree equation object. 164 #define PRC_TYPE_MATH_FCT_1D_ArctanCos ( PRC_TYPE_MATH_FCT_1D + 4 ) // Specific equation. 165 #define PRC_TYPE_MATH_FCT_1D_Combination ( PRC_TYPE_MATH_FCT_1D + 5 ) // Combination of one degree equation object. 166 #define PRC_TYPE_MATH_FCT_3D ( PRC_TYPE_MATH + 10 ) // Basic type for 3rd degree equation object. 167 #define PRC_TYPE_MATH_FCT_3D_Linear ( PRC_TYPE_MATH_FCT_3D + 1 ) // Linear transformation ( with a matrix ). 168 #define PRC_TYPE_MATH_FCT_3D_NonLinear ( PRC_TYPE_MATH_FCT_3D + 2 ) // Specific transformation. 169 170 #define PRC_PRODUCT_FLAG_DEFAULT 0x0001 171 #define PRC_PRODUCT_FLAG_INTERNAL 0x0002 172 #define PRC_PRODUCT_FLAG_CONTAINER 0x0004 173 #define PRC_PRODUCT_FLAG_CONFIG 0x0008 174 #define PRC_PRODUCT_FLAG_VIEW 0x0010 175 176 #define PRC_TRANSFORMATION_Identity 0x00 177 #define PRC_TRANSFORMATION_Translate 0x01 178 #define PRC_TRANSFORMATION_Rotate 0x02 179 #define PRC_TRANSFORMATION_Mirror 0x04 180 #define PRC_TRANSFORMATION_Scale 0x08 181 #define PRC_TRANSFORMATION_NonUniformScale 0x10 182 #define PRC_TRANSFORMATION_NonOrtho 0x20 183 #define PRC_TRANSFORMATION_Homogeneous 0x40 184 185 #define PRC_FACETESSDATA_Polyface 0x0001 186 #define PRC_FACETESSDATA_Triangle 0x0002 187 #define PRC_FACETESSDATA_TriangleFan 0x0004 188 #define PRC_FACETESSDATA_TriangleStripe 0x0008 189 #define PRC_FACETESSDATA_PolyfaceOneNormal 0x0010 190 #define PRC_FACETESSDATA_TriangleOneNormal 0x0020 191 #define PRC_FACETESSDATA_TriangleFanOneNormal 0x0040 192 #define PRC_FACETESSDATA_TriangleStripeOneNormal 0x0080 193 #define PRC_FACETESSDATA_PolyfaceTextured 0x0100 194 #define PRC_FACETESSDATA_TriangleTextured 0x0200 195 #define PRC_FACETESSDATA_TriangleFanTextured 0x0400 196 #define PRC_FACETESSDATA_TriangleStripeTextured 0x0800 197 #define PRC_FACETESSDATA_PolyfaceOneNormalTextured 0x1000 198 #define PRC_FACETESSDATA_TriangleOneNormalTextured 0x2000 199 #define PRC_FACETESSDATA_TriangleFanOneNormalTextured 0x4000 200 #define PRC_FACETESSDATA_TriangleStripeOneNormalTextured 0x8000 201 #define PRC_FACETESSDATA_NORMAL_Single 0x40000000 202 #define PRC_FACETESSDATA_NORMAL_Mask 0x3FFFFFFF 203 #define PRC_FACETESSDATA_WIRE_IsNotDrawn 0x4000 // Indicates that the edge should not be drawn (its neighbor will be drawn). 204 #define PRC_FACETESSDATA_WIRE_IsClosing 0x8000 // Indicates that this is the last edge of a loop. 205 206 #define PRC_3DWIRETESSDATA_IsClosing 0x10000000 // Indicates that the first point is implicitely repeated after the last one to close the wire edge. 207 #define PRC_3DWIRETESSDATA_IsContinuous 0x20000000 // Indicates that the last point of the preceding wire should be linked with the first point of the current one. 208 209 #define PRC_TEXTURE_MAPPING_DIFFUSE 0x0001 // Diffuse texture mapping attribute. Default value. 210 #define PRC_TEXTURE_MAPPING_BUMP 0x0002 // Bump texture mapping attribute. 211 #define PRC_TEXTURE_MAPPING_OPACITY 0x0004 // Opacity texture mapping attribute. 212 #define PRC_TEXTURE_MAPPING_SPHERICAL_REFLECTION 0x0008 // Spherical reflection texture mapping attribute (used for environment mapping). 213 #define PRC_TEXTURE_MAPPING_CUBICAL_REFLECTION 0x0010 // Cubical reflection texture mapping attribute (used for environment mapping). 214 #define PRC_TEXTURE_MAPPING_REFRACTION 0x0020 // Refraction texture mapping attribute. 215 #define PRC_TEXTURE_MAPPING_SPECULAR 0x0040 // Specular texture mapping attribute. 216 #define PRC_TEXTURE_MAPPING_AMBIENT 0x0080 // Ambient texture mapping attribute. 217 #define PRC_TEXTURE_MAPPING_EMISSION 0x0100 // Emission texture mapping attribute. 218 219 #define PRC_TEXTURE_APPLYING_MODE_NONE 0x00 // let the application choose 220 #define PRC_TEXTURE_APPLYING_MODE_LIGHTING 0x01 // use lighting mode 221 #define PRC_TEXTURE_APPLYING_MODE_ALPHATEST 0x02 // use alpha test 222 #define PRC_TEXTURE_APPLYING_MODE_VERTEXCOLOR 0x04 // combine a texture with one-color-per-vertex mode 223 224 #define PRC_TEXTURE_MAPPING_COMPONENTS_RED 0x0001 // Red texture mapping component. 225 #define PRC_TEXTURE_MAPPING_COMPONENTS_GREEN 0x0002 // Green texture mapping component. 226 #define PRC_TEXTURE_MAPPING_COMPONENTS_BLUE 0x0004 // Blue texture mapping component. 227 #define PRC_TEXTURE_MAPPING_COMPONENTS_RGB 0x0007 // RGB texture mapping component. 228 #define PRC_TEXTURE_MAPPING_COMPONENTS_ALPHA 0x0008 // Alpha texture mapping component. 229 #define PRC_TEXTURE_MAPPING_COMPONENTS_RGBA 0x000F // RGBA texture mapping component. 230 231 enum EPRCModellerAttributeType { 232 KEPRCModellerAttributeTypeNull = 0, 233 KEPRCModellerAttributeTypeInt = 1, 234 KEPRCModellerAttributeTypeReal = 2, 235 KEPRCModellerAttributeTypeTime = 3, 236 KEPRCModellerAttributeTypeString = 4 237 }; 238 239 enum EPRCPictureDataFormat { 240 KEPRCPicture_PNG, 241 KEPRCPicture_JPG, 242 KEPRCPicture_BITMAP_RGB_BYTE, 243 KEPRCPicture_BITMAP_RGBA_BYTE, 244 KEPRCPicture_BITMAP_GREY_BYTE, 245 KEPRCPicture_BITMAP_GREYA_BYTE 246 }; 247 248 enum EPRCProductLoadStatus { 249 KEPRCProductLoadStatus_Unknown = 0, 250 KEPRCProductLoadStatus_Error, 251 KEPRCProductLoadStatus_NotLoaded, 252 KEPRCProductLoadStatus_NotLoadable, 253 KEPRCProductLoadStatus_Loaded 254 }; 255 256 enum EPRCExtendType { 257 KEPRCExtendTypeNone = 0, // Discontinuous position. 258 KEPRCExtendTypeExt1 = 2, // Same as EPRCExtendTypeCInfinity. 259 KEPRCExtendTypeExt2 = 4, // Same as EPRCExtendTypeG1R for surface, and EPRCExtendTypeG1 for curve. 260 KEPRCExtendTypeG1 = 6, // Continuous in direction but not magnitude of first derivative. 261 KEPRCExtendTypeG1R = 8, // Surface extended with a ruled surface that connects with G1-continuity. 262 KEPRCExtendTypeG1_G2 = 10, // Extended by reflection, yielding a G2 continuous extension. 263 KEPRCExtendTypeCInfinity = 12 // Unlimited continuity. 264 }; 265 266 enum EPRCKnotType { // Knot vector type 267 KEPRCKnotTypeUniformKnots, // Uniform knot vector. 268 KEPRCKnotTypeUnspecified, // Unspecified knot type. 269 KEPRCKnotTypeQuasiUniformKnots, // Quasi-uniform knot vector. 270 KEPRCKnotTypePiecewiseBezierKnots // Extrema with multiplicities of degree +1. 271 }; // Note : this value is currently unused and should be set to KEPRCKnotTypeUnspecified. 272 273 274 enum EPRCBSplineSurfaceForm { 275 KEPRCBSplineSurfaceFormPlane, // Planar surface. 276 KEPRCBSplineSurfaceFormCylindrical, // Cylindrical surface. 277 KEPRCBSplineSurfaceFormConical, // Conical surface. 278 KEPRCBSplineSurfaceFormSpherical, // Spherical surface. 279 KEPRCBSplineSurfaceFormRevolution, // Surface of revolution. 280 KEPRCBSplineSurfaceFormRuled, // Ruled surface. 281 KEPRCBSplineSurfaceFormGeneralizedCone, // Cone. 282 KEPRCBSplineSurfaceFormQuadric, // Quadric surface. 283 KEPRCBSplineSurfaceFormLinearExtrusion, // Surface of extrusion. 284 KEPRCBSplineSurfaceFormUnspecified, // Unspecified surface. 285 KEPRCBSplineSurfaceFormPolynomial // Polynomial surface. 286 }; 287 288 enum EPRCBSplineCurveForm { // NURBS curve form 289 KEPRCBSplineCurveFormUnspecified, // Unspecified curve form. 290 KEPRCBSplineCurveFormPolyline, // Polygon. 291 KEPRCBSplineCurveFormCircularArc, // Circle arc. 292 KEPRCBSplineCurveFormEllipticArc, // Elliptical arc. 293 KEPRCBSplineCurveFormParabolicArc, // Parabolic arc. 294 KEPRCBSplineCurveFormHyperbolicArc // Hyperbolic arc. 295 }; // Note : this value is currently unused and should be set to KEPRCBSplineCurveFormUnspecified. 296 297 enum EPRCTextureMappingType { // Defines how to retrieve mapping coordinates. 298 KEPRCTextureMappingType_Unknown, // Let the application choose. 299 KEPRCTextureMappingType_Stored, // Use the mapping coordinates that are stored on a 3D tessellation object 300 KEPRCTextureMappingType_Parametric, // Retrieve the UV coordinates on the surface as mapping coordinates 301 KEPRCTextureMappingType_Operator // Use the defined Texture mapping operator to calculate mapping coordinates 302 }; 303 304 enum EPRCTextureFunction { // Defines how to paint a texture on the surface being rendered. 305 KEPRCTextureFunction_Unknown, // Let the application choose. 306 KEPRCTextureFunction_Modulate, // Combine lighting with texturing. This is the default value. 307 KEPRCTextureFunction_Replace, // Replace the object color with texture color data. 308 KEPRCTextureFunction_Blend, // Reserved for future use. 309 KEPRCTextureFunction_Decal // Reserved for future use. 310 }; 311 312 enum EPRCTextureMappingOperator { // The operator to use when computing mapping coordinates. 313 KEPRCTextureMappingOperator_Unknown, // Default value 314 KEPRCTextureMappingOperator_Planar, // Reserved for future use 315 KEPRCTextureMappingOperator_Cylindrical, // Reserved for future use 316 KEPRCTextureMappingOperator_Spherical, // Reserved for future use 317 KEPRCTextureMappingOperator_Cubical // Reserved for future use 318 }; 319 320 enum EPRCTextureBlendParameter { // Reserved for future use. Defines how to apply blending. 321 KEPRCTextureBlendParameter_Unknown, // Default value. 322 KEPRCTextureBlendParameter_Zero, // Reserved for future use. 323 KEPRCTextureBlendParameter_One, // Reserved for future use. 324 KEPRCTextureBlendParameter_SrcColor, // Reserved for future use. 325 KEPRCTextureBlendParameter_OneMinusSrcColor, // Reserved for future use. 326 KEPRCTextureBlendParameter_DstColor, // Reserved for future use. 327 KEPRCTextureBlendParameter_OneMinusDstColor, // Reserved for future use. 328 KEPRCTextureBlendParameter_SrcAlpha, // Reserved for future use. 329 KEPRCTextureBlendParameter_OneMinusSrcAlpha, // Reserved for future use. 330 KEPRCTextureBlendParameter_DstAlpha, // Reserved for future use. 331 KEPRCTextureBlendParameter_OneMinusDstAlpha, // Reserved for future use. 332 KEPRCTextureBlendParameter_SrcAlphaSaturate // Reserved for future use. 333 }; 334 335 enum EPRCTextureWrappingMode { // Defines repeating and clamping texture modes. 336 KEPRCTextureWrappingMode_Unknown, // Let the application choose. 337 KEPRCTextureWrappingMode_Repeat, // Display the repeated texture on the surface. 338 KEPRCTextureWrappingMode_ClampToBorder, // Clamp the texture to the border. Display the surface color along the texture limits. 339 KEPRCTextureWrappingMode_Clamp, // Reserved for future use. 340 KEPRCTextureWrappingMode_ClampToEdge, // Reserved for future use. 341 KEPRCTextureWrappingMode_MirroredRepeat // Reserved for future use. 342 }; 343 344 enum EPRCTextureAlphaTest { // Reserved for future use. Defines how to use a texture alpha test. 345 KEPRCTextureAlphaTest_Unknown, // Default value. 346 KEPRCTextureAlphaTest_Never, // Reserved for future use. 347 KEPRCTextureAlphaTest_Less, // Reserved for future use. 348 KEPRCTextureAlphaTest_Equal, // Reserved for future use. 349 KEPRCTextureAlphaTest_Lequal, // Reserved for future use. 350 KEPRCTextureAlphaTest_Greater, // Reserved for future use. 351 KEPRCTextureAlphaTest_Notequal, // Reserved for future use. 352 KEPRCTextureAlphaTest_Gequal, // Reserved for future use. 353 KEPRCTextureAlphaTest_Always // Reserved for future use. 354 }; 355 356 357 // Bit field for graphics behavior 358 #define PRC_GRAPHICS_Show 0x0001 // The entity is shown. 359 #define PRC_GRAPHICS_SonHeritShow 0x0002 // Shown entity son inheritance. 360 #define PRC_GRAPHICS_FatherHeritShow 0x0004 // Shown entity father inheritance. 361 #define PRC_GRAPHICS_SonHeritColor 0x0008 // Color/material son inheritance. 362 #define PRC_GRAPHICS_FatherHeritColor 0x0010 // Color/material father inheritance. 363 #define PRC_GRAPHICS_SonHeritLayer 0x0020 // Layer son inheritance. 364 #define PRC_GRAPHICS_FatherHeritLayer 0x0040 // Layer father inheritance. 365 #define PRC_GRAPHICS_SonHeritTransparency 0x0080 // Transparency son inheritance. 366 #define PRC_GRAPHICS_FatherHeritTransparency 0x0100 // Transparency father inheritance. 367 #define PRC_GRAPHICS_SonHeritLinePattern 0x0200 // Line pattern son inheritance. 368 #define PRC_GRAPHICS_FatherHeritLinePattern 0x0400 // Line pattern father inheritance. 369 #define PRC_GRAPHICS_SonHeritLineWidth 0x0800 // Line width son inheritance. 370 #define PRC_GRAPHICS_FatherHeritLineWidth 0x1000 // Line width father inheritance. 371 #define PRC_GRAPHICS_Removed 0x2000 // The entity has been removed and no longer appears in the tree. 372 373 enum EPRCMarkupType { 374 KEPRCMarkupType_Unknown = 0, 375 KEPRCMarkupType_Text, 376 KEPRCMarkupType_Dimension, 377 KEPRCMarkupType_Arrow, 378 KEPRCMarkupType_Balloon, 379 KEPRCMarkupType_CircleCenter, 380 KEPRCMarkupType_Coordinate, 381 KEPRCMarkupType_Datum, 382 KEPRCMarkupType_Fastener, 383 KEPRCMarkupType_Gdt, 384 KEPRCMarkupType_Locator, 385 KEPRCMarkupType_MeasurementPoint, 386 KEPRCMarkupType_Roughness, 387 KEPRCMarkupType_Welding, 388 KEPRCMarkupType_Table, 389 KEPRCMarkupType_Other 390 }; 391 392 enum EPRCMarkupSubType { 393 KEPRCMarkupSubType_Unknown = 0, 394 KEPRCMarkupSubType_EnumMax, 395 396 KEPRCMarkupSubType_Datum_Ident = 1 , 397 KEPRCMarkupSubType_Datum_EnumMax, 398 399 KEPRCMarkupSubType_Dimension_Distance = 1, 400 KEPRCMarkupSubType_Dimension_Radius_Tangent, 401 KEPRCMarkupSubType_Dimension_Radius_Cylinder, 402 KEPRCMarkupSubType_Dimension_Radius_Edge, 403 KEPRCMarkupSubType_Dimension_Diameter, 404 KEPRCMarkupSubType_Dimension_Diameter_Tangent, 405 KEPRCMarkupSubType_Dimension_Diameter_Cylinder, 406 KEPRCMarkupSubType_Dimension_Diameter_Edge, 407 KEPRCMarkupSubType_Dimension_Diameter_Cone, 408 KEPRCMarkupSubType_Dimension_Length, 409 KEPRCMarkupSubType_Dimension_Length_Curvilinear, 410 KEPRCMarkupSubType_Dimension_Length_Circular, 411 KEPRCMarkupSubType_Dimension_Angle, 412 KEPRCMarkupSubType_Dimension_EnumMax, 413 414 KEPRCMarkupSubType_Gdt_Fcf = 1, 415 KEPRCMarkupSubType_Gdt_EnumMax, 416 417 KEPRCMarkupSubType_Welding_Line = 1, 418 KEPRCMarkupSubType_Welding_EnumMax, 419 420 KEPRCMarkupSubType_Other_Symbol_User = 1, 421 KEPRCMarkupSubType_Other_EnumMax 422 }; 423 424 #define PRC_MARKUP_IsHidden 0x01 // The tessellation is hidden. 425 #define PRC_MARKUP_HasFrame 0x02 // The tessellation has a frame. 426 #define PRC_MARKUP_IsNotModifiable 0x04 // The tessellation is given and should not be modified. 427 #define PRC_MARKUP_IsZoomable 0x08 // The tessellation has zoom capability. 428 #define PRC_MARKUP_IsOnTop 0x10 // The tessellation is on top of the geometry. 429 #define PRC_MARKUP_IsFlipable 0x20 // The text tessellation can be flipped to always be readable on screen. This value is currently unused. 430 431 #define PRC_RENDERING_PARAMETER_SPECIAL_CULLING 0x0001 // special culling strategy to apply 432 #define PRC_RENDERING_PARAMETER_FRONT_CULLING 0x0002 // apply front culling (ignored if no special culling strategy) 433 #define PRC_RENDERING_PARAMETER_BACK_CULLING 0x0004 // apply back culling (ignored if no special culling strategy) 434 #define PRC_RENDERING_PARAMETER_NO_LIGHT 0x0008 // if set, no light will apply on corresponding object 435 436 #define PRC_MARKUP_IsMatrix 0x08000000 // Bit to denote that the current entity is a matrix. 437 #define PRC_MARKUP_IsExtraData 0x04000000 // Bit to denote that the current entity is extra data (it is neither a matrix nor a polyline). 438 #define PRC_MARKUP_IntegerMask 0xFFFFF // Integer mask to retrieve sizes. 439 #define PRC_MARKUP_ExtraDataType 0x3E00000 // Mask to retrieve the integer type of the entity. 440 441 #define PRC_MARKUP_ExtraDataType_Pattern (( 0<<21)|PRC_MARKUP_IsExtraData) 442 #define PRC_MARKUP_ExtraDataType_Picture (( 1<<21)|PRC_MARKUP_IsExtraData) 443 #define PRC_MARKUP_ExtraDataType_Triangles (( 2<<21)|PRC_MARKUP_IsExtraData) 444 #define PRC_MARKUP_ExtraDataType_Quads (( 3<<21)|PRC_MARKUP_IsExtraData) 445 #define PRC_MARKUP_ExtraDataType_FaceViewMode (( 6<<21)|PRC_MARKUP_IsExtraData) 446 #define PRC_MARKUP_ExtraDataType_FrameDrawMode (( 7<<21)|PRC_MARKUP_IsExtraData) 447 #define PRC_MARKUP_ExtraDataType_FixedSizeMode (( 8<<21)|PRC_MARKUP_IsExtraData) 448 #define PRC_MARKUP_ExtraDataType_Symbol (( 9<<21)|PRC_MARKUP_IsExtraData) 449 #define PRC_MARKUP_ExtraDataType_Cylinder ((10<<21)|PRC_MARKUP_IsExtraData) 450 #define PRC_MARKUP_ExtraDataType_Color ((11<<21)|PRC_MARKUP_IsExtraData) 451 #define PRC_MARKUP_ExtraDataType_LineStipple ((12<<21)|PRC_MARKUP_IsExtraData) 452 #define PRC_MARKUP_ExtraDataType_Font ((13<<21)|PRC_MARKUP_IsExtraData) 453 #define PRC_MARKUP_ExtraDataType_Text ((14<<21)|PRC_MARKUP_IsExtraData) 454 #define PRC_MARKUP_ExtraDataType_Points ((15<<21)|PRC_MARKUP_IsExtraData) 455 #define PRC_MARKUP_ExtraDataType_Polygon ((16<<21)|PRC_MARKUP_IsExtraData) 456 #define PRC_MARKUP_ExtraDataType_LineWidth ((17<<21)|PRC_MARKUP_IsExtraData) 457 458 enum EPRCCharSet 459 { 460 KEPRCCharsetUnknown = -1, 461 KEPRCCharsetRoman = 0, 462 KEPRCCharsetJapanese, 463 KEPRCCharsetTraditionalChinese, 464 KEPRCCharsetKorean, 465 KEPRCCharsetArabic, 466 KEPRCCharsetHebrew, 467 KEPRCCharsetGreek, 468 KEPRCCharsetCyrillic, 469 KEPRCCharsetRightLeft, 470 KEPRCCharsetDevanagari, 471 KEPRCCharsetGurmukhi, 472 KEPRCCharsetGujarati, 473 KEPRCCharsetOriya, 474 KEPRCCharsetBengali, 475 KEPRCCharsetTamil, 476 KEPRCCharsetTelugu, 477 KEPRCCharsetKannada, 478 KEPRCCharsetMalayalam, 479 KEPRCCharsetSinhalese, 480 KEPRCCharsetBurmese, 481 KEPRCCharsetKhmer, 482 KEPRCCharsetThai, 483 KEPRCCharsetLaotian, 484 KEPRCCharsetGeorgian, 485 KEPRCCharsetArmenian, 486 KEPRCCharsetSimplifiedChinese, 487 KEPRCCharsetTibetan, 488 KEPRCCharsetMongolian, 489 KEPRCCharsetGeez, 490 KEPRCCharsetEastEuropeanRoman, 491 KEPRCCharsetVietnamese, 492 KEPRCCharsetExtendedArabic 493 }; 494 495 #define PRC_Font_Bold 0x02 /*!< Bold. */ 496 #define PRC_Font_Italic 0x04 /*!< Italic. */ 497 #define PRC_Font_Underlined 0x08 /*!< Underlined. */ 498 #define PRC_Font_StrikedOut 0x10 /*!< Striked-out. */ 499 #define PRC_Font_Overlined 0x20 /*!< Overlined. */ 500 #define PRC_Font_Streched 0x40 /*!< Streched. In case the font used is not the original font, it indicates that the text needs to be stretched to fit its bounding box. */ 501 #define PRC_Font_Wired 0x80 /*!< Wired. Indicates that the original font is a wirefame font. */ 502 #define PRC_Font_FixedWidth 0x100 /*!< Fixed width. Indicates that the original font is not proportional (each glyph has the same width). */ 503 504 #define PRC_CONTEXT_OuterLoopFirst 0x0001 // Outer loops are always first loops (specific to PRC_TYPE_TOPO_BrepData). 505 #define PRC_CONTEXT_NoClamp 0x0002 // UV curves are clamped on the surface (specific to PRC_TYPE_TOPO_BrepData). 506 #define PRC_CONTEXT_NoSplit 0x0004 // Faces are split (specific to PRC_TYPE_TOPO_BrepData). 507 508 #define PRC_BODY_BBOX_Evaluation 0x0001 // Bounding box based on geometry. 509 #define PRC_BODY_BBOX_Precise 0x0002 // Bounding box based on tessellation. 510 #define PRC_BODY_BBOX_CADData 0x0003 // Bounding box given by a CAD data file. 511 512 #endif // __PRC_H 513