Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-29 09:16:54

0001 // Created on: 2006-05-25
0002 // Created by: Alexander GRIGORIEV
0003 // Copyright (c) 2006-2014 OPEN CASCADE SAS
0004 //
0005 // This file is part of Open CASCADE Technology software library.
0006 //
0007 // This library is free software; you can redistribute it and/or modify it under
0008 // the terms of the GNU Lesser General Public License version 2.1 as published
0009 // by the Free Software Foundation, with special exception defined in the file
0010 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0011 // distribution for complete text of the license and disclaimer of any warranty.
0012 //
0013 // Alternatively, this file may be used under the terms of Open CASCADE
0014 // commercial license or contractual agreement.
0015 
0016 #ifndef VrmlData_Material_HeaderFile
0017 #define VrmlData_Material_HeaderFile
0018 
0019 #include <VrmlData_Node.hxx>
0020 #include <Quantity_Color.hxx>
0021 
0022 /**
0023  *  Implementation of the Material node
0024  */
0025 class VrmlData_Material : public VrmlData_Node
0026 {
0027 public:
0028   // ---------- PUBLIC METHODS ----------
0029 
0030   /**
0031    * Empty constructor
0032    */
0033   Standard_EXPORT VrmlData_Material();
0034 
0035   /**
0036    * Constructor
0037    */
0038   Standard_EXPORT VrmlData_Material(const VrmlData_Scene& theScene,
0039                                     const char*           theName,
0040                                     const Standard_Real   theAmbientIntensity = -1.,
0041                                     const Standard_Real   theShininess        = -1.,
0042                                     const Standard_Real   theTransparency     = -1.);
0043 
0044   /**
0045    * Query the Ambient Intensity value
0046    */
0047   inline Standard_Real AmbientIntensity() const { return myAmbientIntensity; }
0048 
0049   /**
0050    * Query the Shininess value
0051    */
0052   inline Standard_Real Shininess() const { return myShininess; }
0053 
0054   /**
0055    * Query the Transparency value
0056    */
0057   inline Standard_Real Transparency() const { return myTransparency; }
0058 
0059   /**
0060    * Query the Ambient color
0061    */
0062   inline const Quantity_Color& AmbientColor() const { return myAmbientColor; }
0063 
0064   /**
0065    * Query the Diffuse color
0066    */
0067   inline const Quantity_Color& DiffuseColor() const { return myDiffuseColor; }
0068 
0069   /**
0070    * Query the Emissive color
0071    */
0072   inline const Quantity_Color& EmissiveColor() const { return myEmissiveColor; }
0073 
0074   /**
0075    * Query the Specular color
0076    */
0077   inline const Quantity_Color& SpecularColor() const { return mySpecularColor; }
0078 
0079   /**
0080    * Set the Ambient Intensity value
0081    */
0082   inline void SetAmbientIntensity(const Standard_Real theAmbientIntensity)
0083   {
0084     myAmbientIntensity = theAmbientIntensity;
0085   }
0086 
0087   /**
0088    * Set the Shininess value
0089    */
0090   inline void SetShininess(const Standard_Real theShininess) { myShininess = theShininess; }
0091 
0092   /**
0093    * Set the Transparency value
0094    */
0095   inline void SetTransparency(const Standard_Real theTransparency)
0096   {
0097     myTransparency = theTransparency;
0098   }
0099 
0100   /**
0101    * Query the Ambient color
0102    */
0103   inline void SetAmbientColor(const Quantity_Color& theColor) { myAmbientColor = theColor; }
0104 
0105   /**
0106    * Query the Diffuse color
0107    */
0108   inline void SetDiffuseColor(const Quantity_Color& theColor) { myDiffuseColor = theColor; }
0109 
0110   /**
0111    * Query the Emissive color
0112    */
0113   inline void SetEmissiveColor(const Quantity_Color& theColor) { myEmissiveColor = theColor; }
0114 
0115   /**
0116    * Query the Specular color
0117    */
0118   inline void SetSpecularColor(const Quantity_Color& theColor) { mySpecularColor = theColor; }
0119 
0120   /**
0121    * Create a copy of this node.
0122    * If the parameter is null, a new copied node is created. Otherwise new node
0123    * is not created, but rather the given one is modified.
0124    */
0125   Standard_EXPORT virtual Handle(VrmlData_Node) Clone(const Handle(VrmlData_Node)& theOther) const
0126     Standard_OVERRIDE;
0127 
0128   /**
0129    * Read the Node from input stream.
0130    */
0131   Standard_EXPORT virtual VrmlData_ErrorStatus Read(VrmlData_InBuffer& theBuffer) Standard_OVERRIDE;
0132 
0133   /**
0134    * Write the Node to the Scene output.
0135    */
0136   Standard_EXPORT virtual VrmlData_ErrorStatus Write(const char* thePrefix) const Standard_OVERRIDE;
0137 
0138   /**
0139    * Returns True if the node is default, so that it should not be written.
0140    */
0141   Standard_EXPORT virtual Standard_Boolean IsDefault() const Standard_OVERRIDE;
0142 
0143 protected:
0144   // ---------- PROTECTED METHODS ----------
0145 
0146 private:
0147   // ---------- PRIVATE FIELDS ----------
0148 
0149   Standard_Real  myAmbientIntensity;
0150   Standard_Real  myShininess;
0151   Standard_Real  myTransparency;
0152   Quantity_Color myAmbientColor;
0153   Quantity_Color myDiffuseColor;
0154   Quantity_Color myEmissiveColor;
0155   Quantity_Color mySpecularColor;
0156 
0157 public:
0158   // Declaration of CASCADE RTTI
0159   DEFINE_STANDARD_RTTIEXT(VrmlData_Material, VrmlData_Node)
0160 };
0161 
0162 // Definition of HANDLE object using Standard_DefineHandle.hxx
0163 DEFINE_STANDARD_HANDLE(VrmlData_Material, VrmlData_Node)
0164 
0165 #endif