Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:19:39

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 double          theAmbientIntensity = -1.,
0041                                     const double          theShininess        = -1.,
0042                                     const double          theTransparency     = -1.);
0043 
0044   /**
0045    * Query the Ambient Intensity value
0046    */
0047   inline double AmbientIntensity() const { return myAmbientIntensity; }
0048 
0049   /**
0050    * Query the Shininess value
0051    */
0052   inline double Shininess() const { return myShininess; }
0053 
0054   /**
0055    * Query the Transparency value
0056    */
0057   inline double 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 double theAmbientIntensity)
0083   {
0084     myAmbientIntensity = theAmbientIntensity;
0085   }
0086 
0087   /**
0088    * Set the Shininess value
0089    */
0090   inline void SetShininess(const double theShininess) { myShininess = theShininess; }
0091 
0092   /**
0093    * Set the Transparency value
0094    */
0095   inline void SetTransparency(const double theTransparency) { myTransparency = theTransparency; }
0096 
0097   /**
0098    * Query the Ambient color
0099    */
0100   inline void SetAmbientColor(const Quantity_Color& theColor) { myAmbientColor = theColor; }
0101 
0102   /**
0103    * Query the Diffuse color
0104    */
0105   inline void SetDiffuseColor(const Quantity_Color& theColor) { myDiffuseColor = theColor; }
0106 
0107   /**
0108    * Query the Emissive color
0109    */
0110   inline void SetEmissiveColor(const Quantity_Color& theColor) { myEmissiveColor = theColor; }
0111 
0112   /**
0113    * Query the Specular color
0114    */
0115   inline void SetSpecularColor(const Quantity_Color& theColor) { mySpecularColor = theColor; }
0116 
0117   /**
0118    * Create a copy of this node.
0119    * If the parameter is null, a new copied node is created. Otherwise new node
0120    * is not created, but rather the given one is modified.
0121    */
0122   Standard_EXPORT occ::handle<VrmlData_Node> Clone(
0123     const occ::handle<VrmlData_Node>& theOther) const override;
0124 
0125   /**
0126    * Read the Node from input stream.
0127    */
0128   Standard_EXPORT VrmlData_ErrorStatus Read(VrmlData_InBuffer& theBuffer) override;
0129 
0130   /**
0131    * Write the Node to the Scene output.
0132    */
0133   Standard_EXPORT VrmlData_ErrorStatus Write(const char* thePrefix) const override;
0134 
0135   /**
0136    * Returns True if the node is default, so that it should not be written.
0137    */
0138   Standard_EXPORT bool IsDefault() const override;
0139 
0140 private:
0141   // ---------- PRIVATE FIELDS ----------
0142 
0143   double         myAmbientIntensity;
0144   double         myShininess;
0145   double         myTransparency;
0146   Quantity_Color myAmbientColor;
0147   Quantity_Color myDiffuseColor;
0148   Quantity_Color myEmissiveColor;
0149   Quantity_Color mySpecularColor;
0150 
0151 public:
0152   // Declaration of CASCADE RTTI
0153   DEFINE_STANDARD_RTTIEXT(VrmlData_Material, VrmlData_Node)
0154 };
0155 
0156 // Definition of HANDLE object using Standard_DefineHandle.hxx
0157 #endif