// 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 _TPrsStd_AISPresentation_HeaderFile
#define _TPrsStd_AISPresentation_HeaderFile

#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_TPrsStd_AISPresentation.hxx>

#include <Standard_GUID.hxx>
#include <Standard_Real.hxx>
#include <Quantity_NameOfColor.hxx>
#include <Graphic3d_NameOfMaterial.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Boolean.hxx>
#include <Handle_AIS_InteractiveObject.hxx>
#include <TDF_Attribute.hxx>
#include <Handle_TDF_Attribute.hxx>
#include <Handle_TDF_RelocationTable.hxx>
#include <Handle_TDF_AttributeDelta.hxx>
class AIS_InteractiveObject;
class Standard_GUID;
class TDF_Label;
class TDF_Attribute;
class TDF_RelocationTable;
class TDF_AttributeDelta;


//! An attribute to associate an
//! AIS_InteractiveObject to a label in an AIS viewer.
//! This attribute works in collaboration with TPrsStd_AISViewer.
//! Note that all the Set... and Unset... attribute
//! methods as well as the query methods for
//! visualization attributes and the HasOwn... test
//! methods are shortcuts to the respective
//! AIS_InteractiveObject settings.
class TPrsStd_AISPresentation : public TDF_Attribute
{

public:

  
  //! Returns the GUID for TPrsStd_AISPresentation attributes.
  Standard_EXPORT static  const  Standard_GUID& GetID() ;
  
  //! Creates or retrieves the presentation attribute on
  //! the label L, and sets the GUID driver.
  Standard_EXPORT static   Handle(TPrsStd_AISPresentation) Set (const TDF_Label& L, const Standard_GUID& driver) ;
  
  //! Delete (if exist) the presentation attribute associated to the label <L>.
  Standard_EXPORT static   void Unset (const TDF_Label& L) ;
  
  //! Creates or retrieves the AISPresentation
  //! attribute attached to master.
  //! The GUID of the driver will be the GUID of master.
  //! master is the attribute you want to display.
  Standard_EXPORT static   Handle(TPrsStd_AISPresentation) Set (const Handle(TDF_Attribute)& master) ;
  
  Standard_EXPORT TPrsStd_AISPresentation();
  
  Standard_EXPORT   void SetDisplayed (const Standard_Boolean B) ;
  
  //! Display presentation of object in AIS viewer.
  //! If <update> = True then AISObject is recomputed and all
  //! the visualization settings are applied
  Standard_EXPORT   void Display (const Standard_Boolean update = Standard_False) ;
  
  //! Removes the presentation of this AIS
  //! presentation attribute from the TPrsStd_AISViewer.
  //! If remove is true, this AIS presentation attribute
  //! is removed from the interactive context.
  Standard_EXPORT   void Erase (const Standard_Boolean remove = Standard_False) ;
  
  //! Recompute presentation of object and apply the visualization settings
  Standard_EXPORT   void Update() ;
  
  Standard_EXPORT   Standard_GUID GetDriverGUID()  const;
  
  Standard_EXPORT   void SetDriverGUID (const Standard_GUID& guid) ;
  

  //! Returns true if this AIS presentation attribute is displayed.
  Standard_EXPORT   Standard_Boolean IsDisplayed()  const;
  
  //! Returns AIS_InteractiveObject stored in the presentation attribute
  Standard_EXPORT   Handle(AIS_InteractiveObject) GetAIS()  const;
  

  //! Returns the material setting for this presentation attribute.
  Standard_EXPORT   Graphic3d_NameOfMaterial Material()  const;
  
  //! Sets the material aName for this presentation  attribute.
  Standard_EXPORT   void SetMaterial (const Graphic3d_NameOfMaterial aName) ;
  
  //! Returns true if this presentation attribute already has a material setting.
  Standard_EXPORT   Standard_Boolean HasOwnMaterial()  const;
  
  //! Removes the material setting from this presentation attribute.
  Standard_EXPORT   void UnsetMaterial() ;
  

  //! Sets the transparency value aValue for this
  //! presentation attribute.
  //! This value is 0.6 by default.
  Standard_EXPORT   void SetTransparency (const Standard_Real aValue = 0.6) ;
  
  Standard_EXPORT   Standard_Real Transparency()  const;
  
  //! Returns true if this presentation attribute already has a transparency setting.
  Standard_EXPORT   Standard_Boolean HasOwnTransparency()  const;
  
  //! Removes the transparency setting from this presentation attribute.
  Standard_EXPORT   void UnsetTransparency() ;
  
  Standard_EXPORT   Quantity_NameOfColor Color()  const;
  
  //! Sets the color aColor for this presentation attribute.
  Standard_EXPORT   void SetColor (const Quantity_NameOfColor aColor) ;
  
  //! Returns true if this presentation attribute already has a color setting.
  Standard_EXPORT   Standard_Boolean HasOwnColor()  const;
  
  //! Removes the color setting from this presentation attribute.
  Standard_EXPORT   void UnsetColor() ;
  
  Standard_EXPORT   Standard_Real Width()  const;
  
  //! Sets the width aWidth for this presentation attribute.
  Standard_EXPORT   void SetWidth (const Standard_Real aWidth) ;
  
  //! Returns true if this presentation attribute already has a width setting.
  Standard_EXPORT   Standard_Boolean HasOwnWidth()  const;
  
  //! Removes the width setting from this presentation attribute.
  Standard_EXPORT   void UnsetWidth() ;
  
  Standard_EXPORT   Standard_Integer Mode()  const;
  
  Standard_EXPORT   void SetMode (const Standard_Integer theMode) ;
  
  Standard_EXPORT   Standard_Boolean HasOwnMode()  const;
  
  Standard_EXPORT   void UnsetMode() ;
  
  Standard_EXPORT   Standard_Integer SelectionMode()  const;
  
  Standard_EXPORT   void SetSelectionMode (const Standard_Integer theSelectionMode) ;
  
  Standard_EXPORT   Standard_Boolean HasOwnSelectionMode()  const;
  
  Standard_EXPORT   void UnsetSelectionMode() ;
  
  Standard_EXPORT  const  Standard_GUID& ID()  const;
  
  Standard_EXPORT   Handle(TDF_Attribute) NewEmpty()  const;
  
  Standard_EXPORT   void Restore (const Handle(TDF_Attribute)& with) ;
  
  Standard_EXPORT   void Paste (const Handle(TDF_Attribute)& into, const Handle(TDF_RelocationTable)& RT)  const;
  
  Standard_EXPORT virtual   Handle(TDF_Attribute) BackupCopy()  const;
  
  Standard_EXPORT virtual   void AfterAddition() ;
  
  Standard_EXPORT virtual   void BeforeRemoval() ;
  
  Standard_EXPORT virtual   void BeforeForget() ;
  
  Standard_EXPORT virtual   void AfterResume() ;
  
  Standard_EXPORT virtual   Standard_Boolean BeforeUndo (const Handle(TDF_AttributeDelta)& anAttDelta, const Standard_Boolean forceIt = Standard_False) ;
  
  //! update AIS viewer according to delta
  Standard_EXPORT virtual   Standard_Boolean AfterUndo (const Handle(TDF_AttributeDelta)& anAttDelta, const Standard_Boolean forceIt = Standard_False) ;




  DEFINE_STANDARD_RTTI(TPrsStd_AISPresentation)

protected:




private: 

  
  //! Updates AIS_InteractiveObject stored in the attribute
  //! and applies the visualization settings
  Standard_EXPORT   void AISUpdate() ;
  
  //! Displays AIS_InteractiveObject stored in the attribute
  Standard_EXPORT   void AISDisplay() ;
  
  //! Erases AIS_InteractiveObject stored in the attribute in
  //! the viewer; If <remove> = True then AISObject is removed
  //! from AIS_InteractiveContext instead of simple erasing in the viewer
  Standard_EXPORT   void AISErase (const Standard_Boolean remove = Standard_False) ;

  Standard_GUID myDriverGUID;
  Standard_Real myTransparency;
  Quantity_NameOfColor myColor;
  Graphic3d_NameOfMaterial myMaterial;
  Standard_Real myWidth;
  Standard_Integer myMode;
  Standard_Integer mySelectionMode;
  Standard_Boolean isDisplayed;
  Standard_Boolean hasOwnColor;
  Standard_Boolean hasOwnMaterial;
  Standard_Boolean hasOwnTransparency;
  Standard_Boolean hasOwnWidth;
  Standard_Boolean hasOwnMode;
  Standard_Boolean hasOwnSelectionMode;
  Handle(AIS_InteractiveObject) myAIS;


};







#endif // _TPrsStd_AISPresentation_HeaderFile
