// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _Graphic3d_ArrayOfPrimitives_HeaderFile #define _Graphic3d_ArrayOfPrimitives_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_DefineHandle_HeaderFile #include #endif #ifndef _Handle_Graphic3d_ArrayOfPrimitives_HeaderFile #include #endif #ifndef _Graphic3d_PrimitiveArray_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _MMgt_TShared_HeaderFile #include #endif #ifndef _Graphic3d_TypeOfPrimitiveArray_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Standard_CString_HeaderFile #include #endif class Standard_OutOfRange; class Graphic3d_InitialisationError; class Graphic3d_Group; class gp_Pnt; class Quantity_Color; class gp_Dir; class gp_Pnt2d; //! This class furnish services to defined and fill an
//! array of primitives compatible with the use of
//! the OPENGl glDrawArrays() or glDrawElements() functions.
//! NOTE that the main goal of this kind of primitive
//! is to avoid multiple copies of datas between
//! each layer of the software.
//! So the array datas exist only one time and the use
//! of SetXxxxxx() methods enable to change dynamically
//! the aspect of this primitive.
class Graphic3d_ArrayOfPrimitives : public MMgt_TShared { public: Standard_EXPORT void Destroy() ; ~Graphic3d_ArrayOfPrimitives() { Destroy(); } //! Adds a vertice in the array.
//! returns the actual vertex number.
Standard_EXPORT Standard_Integer AddVertex(const gp_Pnt& aVertice) ; //! Adds a vertice in the array.
//! returns the actual vertex number.
Standard_EXPORT Standard_Integer AddVertex(const Standard_Real X,const Standard_Real Y,const Standard_Real Z) ; //! Adds a vertice and vertex color in the vertex array.
//! returns the actual vertex number.
//! Warning: is ignored when the
//! constructor parameter is FALSE
Standard_EXPORT Standard_Integer AddVertex(const gp_Pnt& aVertice,const Quantity_Color& aColor) ; //! Adds a vertice and vertex color in the vertex array.
//! returns the actual vertex number.
//! Warning: is ignored when the
//! constructor parameter is FALSE
//! aColor = Alpha << 24 + Blue << 16 + Green << 8 + Red
//! On all architecture proccers type (x86 or SPARC) you can
//! use this byte order.
Standard_EXPORT Standard_Integer AddVertex(const gp_Pnt& aVertice,const Standard_Integer aColor) ; //! Adds a vertice and vertex normal in the vertex array.
//! returns the actual vertex number.
//! Warning: is ignored when the
//! constructor parameter is FALSE.
Standard_EXPORT Standard_Integer AddVertex(const gp_Pnt& aVertice,const gp_Dir& aNormal) ; //! Adds a vertice and vertex normal in the vertex array.
//! returns the actual vertex number.
//! Warning: is ignored when the
//! constructor parameter is FALSE.
Standard_EXPORT Standard_Integer AddVertex(const Standard_Real X,const Standard_Real Y,const Standard_Real Z,const Standard_Real NX,const Standard_Real NY,const Standard_Real NZ) ; //! Adds a vertice,vertex normal and color in the vertex array.
//! returns the actual vertex number.
//! Warning: is ignored when the
//! constructor parameter is FALSE.
//! is ignored when the
//! constructor parameter is FALSE
Standard_EXPORT Standard_Integer AddVertex(const gp_Pnt& aVertice,const gp_Dir& aNormal,const Quantity_Color& aColor) ; //! Adds a vertice,vertex normal and color in the vertex array.
//! returns the actual vertex number.
//! Warning: is ignored when the
//! constructor parameter is FALSE.
//! is ignored when the
//! constructor parameter is FALSE
//! aColor = Alpha << 24 + Blue << 16 + Green << 8 + Red
//! On all architecture proccers type (x86 or SPARC) you can
//! use this byte order.
Standard_EXPORT Standard_Integer AddVertex(const gp_Pnt& aVertice,const gp_Dir& aNormal,const Standard_Integer aColor) ; //! Adds a vertice and vertex texture in the vertex array.
//! returns the actual vertex number.
//! is ignored when the
//! constructor parameter is FALSE.
Standard_EXPORT Standard_Integer AddVertex(const gp_Pnt& aVertice,const gp_Pnt2d& aTexel) ; //! Adds a vertice and vertex texture coordinates in the vertex array.
//! returns the actual vertex number.
//! is ignored when the
//! constructor parameter is FALSE.
Standard_EXPORT Standard_Integer AddVertex(const Standard_Real X,const Standard_Real Y,const Standard_Real Z,const Standard_Real TX,const Standard_Real TY) ; //! Adds a vertice,vertex normal and texture in the vertex array.
//! returns the actual vertex number.
//! Warning: is ignored when the
//! constructor parameter is FALSE.
//! is ignored when the
//! constructor parameter is FALSE.
Standard_EXPORT Standard_Integer AddVertex(const gp_Pnt& aVertice,const gp_Dir& aNormal,const gp_Pnt2d& aTexel) ; //! Adds a vertice,vertex normal and texture in the vertex array.
//! returns the actual vertex number.
//! Warning: is ignored when the
//! constructor parameter is FALSE.
//! is ignored when the
//! constructor parameter is FALSE.
Standard_EXPORT Standard_Integer AddVertex(const Standard_Real X,const Standard_Real Y,const Standard_Real Z,const Standard_Real NX,const Standard_Real NY,const Standard_Real NZ,const Standard_Real TX,const Standard_Real TY) ; //! Adds a bound of length in the bound array
//! returns the actual bounds number.
Standard_EXPORT Standard_Integer AddBound(const Standard_Integer edgeNumber) ; //! Adds a bound of length and bound color
//! in the bound array.
//! returns the actual bounds number.
//! Warning: is ignored when the
//! constructor parameter is FALSE
Standard_EXPORT Standard_Integer AddBound(const Standard_Integer edgeNumber,const Quantity_Color& aBColor) ; //! Adds a bound of length and bound color
//! coordinates in the bound array.
//! returns the actual bounds number.
//! Warning: are ignored when the
//! constructor parameter is FALSE
Standard_EXPORT Standard_Integer AddBound(const Standard_Integer edgeNumber,const Standard_Real R,const Standard_Real G,const Standard_Real B) ; //! Adds an edge in the range [1,VertexNumber()] in the array,
//! if is FALSE the edge between and
//! the next edge will not be visible even if the SetEdgeOn() method
//! is activated in Graphic3d_AspectFillArea3d class.
//! returns the actual edges number.
//! Warning: is ignored when the
//! constructor parameter is FALSE.
Standard_EXPORT Standard_Integer AddEdge(const Standard_Integer vertexIndex,const Standard_Boolean isVisible = Standard_True) ; //! Orientate correctly all vertexs & normals of this array
//! according to the parameter and
//! returns TRUE when something has change in the array.
//! Warning: When the array has edges this method is apply
//! on edge sub array instead on vertex sub array.
Standard_EXPORT Standard_Boolean Orientate(const gp_Dir& aNormal) ; //! Orientate correctly all vertexs & normal of the bound
//! according to the parameter and
//! returns TRUE when something has change in the array.
//! Warning: When the array has edges this method is apply
//! on edge sub array instead on vertex sub array.
//! When this array has no bound, design the item number
Standard_EXPORT Standard_Boolean Orientate(const Standard_Integer aBoundIndex,const gp_Dir& aNormal) ; //! Change the vertice of rank in the array.
Standard_EXPORT void SetVertice(const Standard_Integer anIndex,const gp_Pnt& aVertice) ; //! Change the vertice of rank in the array.
void SetVertice(const Standard_Integer anIndex,const Standard_Real X,const Standard_Real Y,const Standard_Real Z) ; //! Change the vertex color of rank in the array.
Standard_EXPORT void SetVertexColor(const Standard_Integer anIndex,const Quantity_Color& aColor) ; //! Change the vertex color of rank in the array.
void SetVertexColor(const Standard_Integer anIndex,const Standard_Real R,const Standard_Real G,const Standard_Real B) ; //! Change the vertex color of rank in the array.
//! aColor = Alpha << 24 + Blue << 16 + Green << 8 + Red
//! On all architecture proccers type (x86 or SPARC) you can
//! use this byte order.
Standard_EXPORT void SetVertexColor(const Standard_Integer anIndex,const Standard_Integer aColor) ; //! Change the vertex normal of rank in the array.
Standard_EXPORT void SetVertexNormal(const Standard_Integer anIndex,const gp_Dir& aNormal) ; //! Change the vertex normal of rank in the array.
void SetVertexNormal(const Standard_Integer anIndex,const Standard_Real NX,const Standard_Real NY,const Standard_Real NZ) ; //! Change the vertex texel of rank in the array.
Standard_EXPORT void SetVertexTexel(const Standard_Integer anIndex,const gp_Pnt2d& aTexel) ; //! Change the vertex texel of rank in the array.
void SetVertexTexel(const Standard_Integer anIndex,const Standard_Real TX,const Standard_Real TY) ; //! Change the bound color of rank in the array.
Standard_EXPORT void SetBoundColor(const Standard_Integer anIndex,const Quantity_Color& aColor) ; //! Change the bound color of rank in the array.
void SetBoundColor(const Standard_Integer anIndex,const Standard_Real R,const Standard_Real G,const Standard_Real B) ; //! Returns the array address.
Graphic3d_PrimitiveArray Array() const; //! Returns the type of this primitive
Graphic3d_TypeOfPrimitiveArray Type() const; //! Returns the string type of this primitive
Standard_EXPORT Standard_CString StringType() const; //! Returns TRUE when vertex normals array is defined.
Standard_Boolean HasVertexNormals() const; //! Returns TRUE when vertex colors array is defined.
Standard_Boolean HasVertexColors() const; //! Returns TRUE when vertex texels array is defined.
Standard_Boolean HasVertexTexels() const; //! Returns the number of defined vertex
Standard_Integer VertexNumber() const; //! Returns the vertice at rank
//! from the vertex table if defined.
Standard_EXPORT gp_Pnt Vertice(const Standard_Integer aRank) const; //! Returns the vertice coordinates at rank
//! from the vertex table if defined.
void Vertice(const Standard_Integer aRank,Standard_Real& X,Standard_Real& Y,Standard_Real& Z) const; //! Returns the vertex color at rank
//! from the vertex table if defined.
Standard_EXPORT Quantity_Color VertexColor(const Standard_Integer aRank) const; //! Returns the vertex color values at rank
//! from the vertex table if defined.
void VertexColor(const Standard_Integer aRank,Standard_Real& R,Standard_Real& G,Standard_Real& B) const; //! Returns the vertex color values at rank
//! from the vertex table if defined.
void VertexColor(const Standard_Integer aRank,Standard_Integer& aColor) const; //! Returns the vertex normal at rank
//! from the vertex table if defined.
Standard_EXPORT gp_Dir VertexNormal(const Standard_Integer aRank) const; //! Returns the vertex normal coordinates at rank
//! from the vertex table if defined.
void VertexNormal(const Standard_Integer aRank,Standard_Real& NX,Standard_Real& NY,Standard_Real& NZ) const; //! Returns the vertex texture at rank
//! from the vertex table if defined.
Standard_EXPORT gp_Pnt2d VertexTexel(const Standard_Integer aRank) const; //! Returns the vertex texture coordinates at rank
//! from the vertex table if defined.
void VertexTexel(const Standard_Integer aRank,Standard_Real& TX,Standard_Real& TY) const; //! Returns TRUE when edge visibillity array is defined.
Standard_Boolean HasEdgeInfos() const; //! Returns the number of defined edges
Standard_Integer EdgeNumber() const; //! Returns the vertex index at rank
//! in the range [1,VertexNumber()]
Standard_Integer Edge(const Standard_Integer aRank) const; //! Returns TRUE when the edge at rank
//! is visible.
Standard_Boolean EdgeIsVisible(const Standard_Integer aRank) const; //! Returns TRUE when bound colors array is defined.
Standard_Boolean HasBoundColors() const; //! Returns the number of defined bounds
Standard_Integer BoundNumber() const; //! Returns the edge number at rank .
Standard_Integer Bound(const Standard_Integer aRank) const; //! Returns the bound color at rank
//! from the bound table if defined.
Standard_EXPORT Quantity_Color BoundColor(const Standard_Integer aRank) const; //! Returns the bound color values at rank
//! from the bound table if defined.
Standard_EXPORT void BoundColor(const Standard_Integer aRank,Standard_Real& R,Standard_Real& G,Standard_Real& B) const; //! Returns the number of total items according to
//! the array type.
Standard_EXPORT Standard_Integer ItemNumber() const; //! Enable to use the arrays of primitives
//! Warning: Updates the current value of the environment symbol
//! CSF_USE_ARRAY_OF_PRIMITIVES
Standard_EXPORT static void Enable() ; //! Disable to use the arrays of primitives
//! Warning: Updates the current value of the environment symbol
//! CSF_USE_ARRAY_OF_PRIMITIVES
Standard_EXPORT static void Disable() ; //! Returns TRUE when the arrays are enable to use.
//! Warning: The initial value can be defined seting the symbol
//! CSF_USE_ARRAY_OF_PRIMITIVES to "Yes" or "No"
Standard_EXPORT static Standard_Boolean IsEnable() ; //! Returns TRUE only when the contains of this array is
//! available.
Standard_EXPORT Standard_Boolean IsValid() ; friend class Graphic3d_Group; DEFINE_STANDARD_RTTI(Graphic3d_ArrayOfPrimitives) protected: //! Warning
//! You must use a coherent set of AddVertex() methods according to the
//! ,,,
//! User is responsible of confuse vertex and bad normal orientation.
//! You must use AddBound() method only if the
//! constructor parameter is > 0.
//! You must use AddEdge() method only if the
//! constructor parameter is > 0.
//! You must use a coherent set of AddEdge() methods according to the
//! constructor parameter.
Standard_EXPORT Graphic3d_ArrayOfPrimitives(const Graphic3d_TypeOfPrimitiveArray aType,const Standard_Integer maxVertexs,const Standard_Integer maxBounds,const Standard_Integer maxEdges,const Standard_Boolean hasVNormals,const Standard_Boolean hasVColors,const Standard_Boolean hasBColors,const Standard_Boolean hasTexels,const Standard_Boolean hasEdgeInfos); private: //! Orientate correctly a set of vertexs & normal
//! from to +-1
//! according to the parameter and
//! returns TRUE when something has change in the array.
//! Warning: When the array has edges this method is apply
//! on edge sub array instead on vertex sub array.
Standard_EXPORT Standard_Boolean Orientate(const Standard_Integer aVertexIndex,const Standard_Integer aVertexNumber,const gp_Dir& aNormal) ; Standard_EXPORT void ComputeVNormals(const Standard_Integer fromIndex,const Standard_Integer toIndex) ; Graphic3d_PrimitiveArray myPrimitiveArray; Standard_Integer myMaxBounds; Standard_Integer myMaxVertexs; Standard_Integer myMaxEdges; }; #include // other Inline functions and methods (like "C++: function call" methods) #endif