// 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 _AIS_Drawer_HeaderFile #define _AIS_Drawer_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_DefineHandle_HeaderFile #include #endif #ifndef _Handle_AIS_Drawer_HeaderFile #include #endif #ifndef _Handle_Prs3d_Drawer_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Prs3d_Drawer_HeaderFile #include #endif #ifndef _Aspect_TypeOfDeflection_HeaderFile #include #endif #ifndef _Quantity_Length_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _Handle_Prs3d_IsoAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_LineAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_TextAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_ArrowAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_PointAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_ShadingAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_PlaneAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_DatumAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_LengthAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_AngleAspect_HeaderFile #include #endif #ifndef _Handle_Prs3d_RadiusAspect_HeaderFile #include #endif class Prs3d_Drawer; class Prs3d_IsoAspect; class Prs3d_LineAspect; class Prs3d_TextAspect; class Prs3d_ArrowAspect; class Prs3d_PointAspect; class Prs3d_ShadingAspect; class Prs3d_PlaneAspect; class Prs3d_DatumAspect; class Prs3d_LengthAspect; class Prs3d_AngleAspect; class Prs3d_RadiusAspect; //! A framework to manage display attributes of interactive objects.
//! An interactive object can have a certain number of
//! display attributes specific to it. These include
//! visualization mode, color, material
//! and so on. To deal with this information, the
//! interactive context has a Drawer attribute manager
//! which is valid by default for the objects it
//! controls. When an interactive object is visualized, the
//! required graphic display attributes are first taken from
//! its own Drawer if it has the ones required, or from the
//! context drawer for those it does not have them.
//! The set of display attributes of an interactive object is
//! stocked in an AIS_Drawer, which is, in fact, a
//! Prs3d_Drawer with the possibility of a link to another
//! display attribute manager. This drawer then manages
//! the stocked graphic display attributes by specifying
//! how the presentation algorithms compute the
//! presentation of a specific kind of object. These
//! factors involved include color, width and type of line,
//! and maximal chordal deviation. The Drawer includes
//! instances of the aspect classes providing the default
//! values for them.
//! Prs3d_Drawer completes AIS_Drawer by adding
//! functions for setting deviation angle and deviation
//! coefficient in presentations using hidden line removal.
class AIS_Drawer : public Prs3d_Drawer { public: //! Constructs an empty attribute management framework.
Standard_EXPORT AIS_Drawer(); //! Returns the type of chordal deflection: relative to the
//! size of the object or absolute.
Standard_EXPORT Aspect_TypeOfDeflection TypeOfDeflection() const; //! Returns the maximal chordal deviation. The default
//! value is 0.1. Drawings of curves or patches are
//! made with respect to an absolute maximal chordal deviation.
Standard_EXPORT Quantity_Length MaximalChordialDeviation() const; //! Sets the hasOwnDeviationCoefficient flag to Standard_False
void SetDeviationCoefficient() ; //! Sets the deviation coefficient aCoefficient for
//! removal of hidden lines created by different
//! viewpoints in different presentations. The Default value is 0.02.
void SetHLRDeviationCoefficient() ; //! Sets the hasOwnDeviationAngle flag to Standard_False
void SetDeviationAngle() ; //! Sets the angle of maximum chordal deviation for
//! removal of hidden lines created by different viewpoints
//! in different presentations. The default value is 20*PI/180.
void SetHLRAngle() ; //! Sets the hasOwnDeviationCoefficient flag to Standard_True,
//! sets myOwnDeviationCoefficient and myPreviousDeviationCoefficient
Standard_EXPORT void SetDeviationCoefficient(const Standard_Real aCoefficient) ; //! Sets the hasOwnHLRDeviationCoefficient flag to Standard_True,
//! sets myOwnHLRDeviationCoefficient and myPreviousHLRDeviationCoefficient
Standard_EXPORT void SetHLRDeviationCoefficient(const Standard_Real aCoefficient) ; //! Sets the hasOwnDeviationAngle flag to Standard_True,
//! sets myOwnDeviationAngle and myPreviousDeviationAngle
Standard_EXPORT virtual void SetDeviationAngle(const Standard_Real anAngle) ; //! Sets the hasOwnHLRDeviationAngle flag to Standard_True,
//! sets myOwnHLRDeviationAngle and myPreviousHLRDeviationAngle
Standard_EXPORT void SetHLRAngle(const Standard_Real anAngle) ; //! Drawings of curves or patches are made with respect
//! to a maximal chordal deviation. A Deviation coefficient
//! is used in the shading display mode. The shape is
//! seen decomposed into triangles. These are used to
//! calculate reflection of light from the surface of the
//! object. The triangles are formed from chords of the
//! curves in the shape. The deviation coefficient gives
//! the highest value of the angle with which a chord can
//! deviate from a tangent to a curve. If this limit is
//! reached, a new triangle is begun.
//! This deviation is absolute and is set through the
//! method: SetMaximalChordialDeviation. The default value is 0.001.
//! In drawing shapes, however, you are allowed to ask
//! for a relative deviation. This deviation will be:
//! SizeOfObject * DeviationCoefficient.
Standard_EXPORT Standard_Real DeviationCoefficient() const; //! Returns the real number value of the HLR deviation
//! coefficient in this framework, if the flag
//! hasOwnHLRDeviationCoefficient is true.
//! If hasOwnHLRDeviationCoefficient is false, the
//! shape's HLR deviation coefficient is used.
//! A Deviation coefficient is used in the shading display
//! mode. The shape is seen decomposed into triangles.
//! These are used to calculate reflection of light from the
//! surface of the object.
//! The triangles are formed from chords of the curves in
//! the shape. The deviation coefficient give the highest
//! value of the angle with which a chord can deviate
//! from a tangent to a curve. If this limit is reached, a
//! new triangle is begun.
//! To find the hidden lines, hidden line display mode
//! entails recalculation of the view at each different
//! projector perspective.
//! Since hidden lines entail calculations of more than
//! usual complexity to decompose them into these
//! triangles, a deviation coefficient allowing greater
//! tolerance is used. This increases efficiency in calculation.
//! The Default value is 0.02.
Standard_EXPORT Standard_Real HLRDeviationCoefficient() const; //! Returns myOwnDeviationAngle if hasOwnDeviationAngle is True
//! else gets myDeviationAngle field from Prs3d_Drawer
Standard_EXPORT virtual Standard_Real DeviationAngle() const; //! Returns the real number value of the deviation angle
//! in hidden line removal views. The default value is 20*PI/180.
Standard_EXPORT Standard_Real HLRAngle() const; //! Saves the previous value used for the chordal
//! deviation coefficient. The default value is 0.1.
Standard_Real PreviousDeviationCoefficient() const; //! returns myPreviousHLRDeviationCoefficient
Standard_Real PreviousHLRDeviationCoefficient() const; //! returns myPreviousDeviationAngle
Standard_Real PreviousDeviationAngle() const; //! returns myPreviousHLRDeviationAngle
Standard_Real PreviousHLRDeviationAngle() const; //! Returns true if the there is a local setting for deviation
//! coefficient in this framework for a specific interactive object.
Standard_Boolean IsOwnDeviationCoefficient() const; //! Returns true if the there is a setting for HLR deviation
//! coefficient in this framework for a specific interactive object.
Standard_Boolean IsOwnHLRDeviationCoefficient() const; //! Returns true if the there is a local setting for deviation
//! angle in this framework for a specific interactive object.
Standard_Boolean IsOwnDeviationAngle() const; //! Returns true if the there is a setting for HLR deviation
//! angle in this framework for a specific interactive object.
Standard_Boolean IsOwnHLRDeviationAngle() const; //! Draws algorithms using discretisation, a default
//! number of points has been set to 17. You can use the
//! method Prs3d_Drawer_SetDiscretisation to change this value.
Standard_EXPORT Standard_Integer Discretisation() const; //! Sets the maximum value allowed for the first and last
//! parameters of an infinite curve. By default, this value is 500000.
Standard_EXPORT Standard_Real MaximalParameterValue() const; //! returns True if the drawing of isos on planes is enabled.
Standard_EXPORT Standard_Boolean IsoOnPlane() const; //! Defines the attributes which are used when drawing an
//! U isoparametric curve of a face. Defines the number
//! of U isoparametric curves to be drawn for a single face.
//! The LineAspect for U isoparametric lines can be edited
//! (methods SetColor, SetTypeOfLine, SetWidth, SetNumber)
//! The default values are:
//! COLOR : Quantity_NOC_GRAY75
//! TYPE OF LINE: Aspect_TOL_SOLID
//! WIDTH : 0.5
//! These attributes are used by the following algorithms:
//! Prs3d_WFDeflectionSurface
//! Prs3d_WFDeflectionRestrictedFace
Standard_EXPORT Handle_Prs3d_IsoAspect UIsoAspect() ; //! Defines the attributes which are used when drawing an
//! V isoparametric curve of a face. Defines the number
//! of V isoparametric curves to be drawn for a single face.
//! The LineAspect for V isoparametric lines can be edited
//! (methods SetColor, SetTypeOfLine, SetWidth, SetNumber)
//! The default values are:
//! COLOR : Quantity_NOC_GRAY82
//! TYPE OF LINE: Aspect_TOL_SOLID
//! WIDTH : 0.5
//! These attributes are used by the following algorithms:
//! Prs3d_WFDeflectionSurface
//! Prs3d_WFDeflectionRestrictedFace
Standard_EXPORT Handle_Prs3d_IsoAspect VIsoAspect() ; //! Returns a link with
//! Prs3d_Drawer_FreeBoundaryAspect. Stores the
//! values for presentation of free boundaries, in other
//! words, boundaries which are not shared . The
//! LineAspect for the free boundaries can be edited. The
//! default values are: Color: Quantity_NOC_GREEN
//! Type of line: Aspect_TOL_SOLID Width: 1.
//! These attributes are used by Prs3d_WFShape.
Standard_EXPORT Handle_Prs3d_LineAspect FreeBoundaryAspect() ; //! returns True if the drawing of the free boundaries is enabled.
Standard_EXPORT Standard_Boolean FreeBoundaryDraw() const; //! Returns a link with Prs3d_Drawer_WireAspect.
//! This method provides wire aspect settings.
//! The LineAspect for wires can be edited. The default values are:
//! Color: Quantity_NOC_RED
//! Type of line: Aspect_TOL_SOLID
//! Width: 1.
//! These attributes are used by the following algorithms:
//! Prs3d_WFShape
Standard_EXPORT Handle_Prs3d_LineAspect WireAspect() ; //! Returns true if the Interactive Object has a line
//! visualization aspect.
Standard_Boolean HasLineAspect() const; //! Returns true if the Drawer has a wire aspect setting active.
Standard_Boolean HasWireAspect() const; //! Returns a link with Prs3d_Drawer_WireDraw. This
//! method returns true if drawing of wires is enabled.
//! The default setting is true.
Standard_EXPORT Standard_Boolean WireDraw() const; //! Returns a link with
//! Prs3d_Drawer_UnFreeBoundaryAspect, which
//! provides settings for shared boundary line aspects.
//! The LineAspect for shared boundaries can be edited.
//! The default values are:
//! Color: Quantity_NOC_YELLOW
//! Type of line: Aspect_TOL_SOLID
//! Width: 1.
//! These attributes are used by the following algorithms:
//! Prs3d_WFShape
Standard_EXPORT Handle_Prs3d_LineAspect UnFreeBoundaryAspect() ; //! Returns True if the drawing of the shared boundaries
//! is enabled. True is the default setting.
Standard_EXPORT Standard_Boolean UnFreeBoundaryDraw() const; //! Returns a link with Prs3d_Drawer_LineAspect,
//! which provides settings for line aspects. These
//! settings can be edited. The default values are:
//! Color: Quantity_NOC_YELLOW
//! Type of line: Aspect_TOL_SOLID
//! Width: 1.
//! These attributes are used by the following algorithms:
//! Prs3d_Curve
//! Prs3d_Line
//! Prs3d_HLRShape
Standard_EXPORT Handle_Prs3d_LineAspect LineAspect() ; Standard_Boolean HasTextAspect() const; Standard_EXPORT Handle_Prs3d_TextAspect TextAspect() ; //! Returns True if the drawing of an arrow at the end of
//! each line is enabled. The default setting is False.
Standard_EXPORT Standard_Boolean LineArrowDraw() const; Standard_EXPORT Handle_Prs3d_ArrowAspect ArrowAspect() ; //! Returns the point aspect setting. The default values
//! are: Color: Quantity_NOC_YELLOW
//! Type of marker: Aspect_TOM_PLUS
//! Scale: 1.
//! These attributes are used by the following algorithms:
//! Prs3d_Point
Standard_EXPORT Handle_Prs3d_PointAspect PointAspect() ; //! Returns true if the Drawer has a point aspect setting active.
Standard_Boolean HasPointAspect() const; //! Returns a link with Prs3d_Drawer_ShadingAspect,
//! which provides settings for shading aspects.
//! These settings can be edited. The default values are:
//! Color: Quantity_NOC_YELLOW
//! Material: Graphic3d_NOM_BRASS
//! hading aspect is obtained through decomposition of
//! 3D faces into triangles, each side of each triangle
//! being a chord of the corresponding curved edge in
//! the face. Reflection of light in each projector
//! perspective is then calculated for each of the
//! resultant triangular planes.
Standard_EXPORT Handle_Prs3d_ShadingAspect ShadingAspect() ; //! Returns True if the Drawer has shading aspect active.
Standard_Boolean HasShadingAspect() const; //! Provides the attributes for hidden line removal.
Standard_EXPORT Standard_Boolean ShadingAspectGlobal() const; //! Returns Standard_True if the hidden lines are to be drawn.
//! By default the hidden lines are not drawn.
Standard_EXPORT Standard_Boolean DrawHiddenLine() const; //! Returns a link with
//! Prs3d_Drawer_HiddenLineAspect, which provides
//! settings for hidden line aspects.
//! These settings can be edited. The default values are:
//! Color: Quantity_NOC_YELLOW
//! Type of line: Aspect_TOL_DASH
//! Width: 1.
Standard_EXPORT Handle_Prs3d_LineAspect HiddenLineAspect() ; //! Returns a link with
//! Prs3d_Drawer_SeenLineAspect, which provides
//! settings for seen line aspects.
//! These settings can be edited. The default values are:
//! Color: Quantity_NOC_YELLOW
//! Type of line: Aspect_TOL_SOLID
//! Width: 1.
Standard_EXPORT Handle_Prs3d_LineAspect SeenLineAspect() ; Standard_Boolean HasPlaneAspect() const; //! Returns a link with Prs3d_Drawer_PlaneAspect.
//! This method provides settings for the appearance of planes.
Standard_EXPORT Handle_Prs3d_PlaneAspect PlaneAspect() ; //! Returns a link with Prs3d_Drawer_VectorAspect,
//! which provides settings for the appearance of vectors.
//! These settings can be edited. The default values are:
//! Color: Quantity_NOC_SKYBLUE
//! Type of line: Aspect_TOL_SOLID Width: 1.
Standard_EXPORT Handle_Prs3d_LineAspect VectorAspect() ; Standard_Boolean HasDatumAspect() const; //! Returns a link with Prs3d_Drawer_DatumAspect,
//! which provides settings for the appearance of datums.
//! These settings can be edited. The default values for
//! the three axes are:
//! Color: Quantity_NOC_PEACHPUFF
//! Type of line: Aspect_TOL_SOLID Width: 1.
Standard_EXPORT Handle_Prs3d_DatumAspect DatumAspect() ; //! Returns a link with Prs3d_Drawer_LengthAspect,
//! which provides settings for the appearance of lengths.
Standard_EXPORT Handle_Prs3d_LengthAspect LengthAspect() ; //! Returns true if the Drawer has a length aspect setting active.
Standard_Boolean HasLengthAspect() const; //! Returns a link with Prs3d_Drawer_AngleAspect,
//! which provides settings for lines used to display angles.
Standard_EXPORT Handle_Prs3d_AngleAspect AngleAspect() ; //! Returns true if the Drawer has an angle aspect
//! setting active.
Standard_Boolean HasAngleAspect() const; //! Returns a link with Prs3d_Drawer_RadiusAspect,
//! which provides settings for lines which serve to display radii.
Standard_EXPORT Handle_Prs3d_RadiusAspect RadiusAspect() const; //! Returns a link with Prs3d_Drawer_SectionAspect,
//! which provides settings for wires which highlight sections.
//! The LineAspect for the wire can be edited.
//! The default values are:
//! Color: Quantity_NOC_ORANGE
//! Type of line: Aspect_TOL_SOLID
//! Width: 1.
//! These attributes are used by the following algorithms:
//! Prs3d_WFShape
Standard_EXPORT Handle_Prs3d_LineAspect SectionAspect() ; Standard_EXPORT const Handle_Prs3d_Drawer& Link() ; Standard_Boolean HasLink() const; void Link(const Handle(Prs3d_Drawer)& aDrawer) ; //! Removes attributes stored in a Local Context.
Standard_EXPORT virtual void ClearLocalAttributes() ; //! Returns true if the last called attribute was local; false if it was global.
Standard_Boolean WasLastLocal() const; //! Returns true if a Local Context has stored attributes
//! for Interactive Objects.
Standard_Boolean HasLocalAttributes() const; DEFINE_STANDARD_RTTI(AIS_Drawer) protected: private: Handle_Prs3d_Drawer myLink; Standard_Boolean hasLocalAttributes; Standard_Boolean myhasOwnDeviationCoefficient; Standard_Real myOwnDeviationCoefficient; Standard_Real myPreviousDeviationCoefficient; Standard_Boolean myhasOwnHLRDeviationCoefficient; Standard_Real myOwnHLRDeviationCoefficient; Standard_Real myPreviousHLRDeviationCoefficient; Standard_Boolean myhasOwnDeviationAngle; Standard_Real myOwnDeviationAngle; Standard_Real myPreviousDeviationAngle; Standard_Boolean myhasOwnHLRDeviationAngle; Standard_Real myOwnHLRDeviationAngle; Standard_Real myPreviousHLRDeviationAngle; }; #include // other Inline functions and methods (like "C++: function call" methods) #endif