summaryrefslogtreecommitdiff
path: root/inc/VrmlData_Material.hxx
blob: adb210b60330d1e5b0c62f25dbb1d39e2c6d54c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// File:      VrmlData_Material.hxx
// Created:   25.05.06 15:39:22
// Author:    Alexander GRIGORIEV
// Copyright: Open Cascade 2006


#ifndef VrmlData_Material_HeaderFile
#define VrmlData_Material_HeaderFile

#include <VrmlData_Node.hxx>
#include <Quantity_Color.hxx>

/**
 *  Implementation of the Material node
 */
class VrmlData_Material : public VrmlData_Node
{
 public:
  // ---------- PUBLIC METHODS ----------

  /**
   * Empty constructor
   */
  Standard_EXPORT VrmlData_Material ();

  /**
   * Constructor
   */
  Standard_EXPORT VrmlData_Material
                                (const VrmlData_Scene&  theScene,
                                 const char             * theName,
                                 const Standard_Real theAmbientIntensity = -1.,
                                 const Standard_Real theShininess        = -1.,
                                 const Standard_Real theTransparency     = -1.);

  /**
   * Query the Ambient Intensity value
   */
  inline Standard_Real
                AmbientIntensity() const        { return myAmbientIntensity; }

  /**
   * Query the Shininess value
   */
  inline Standard_Real
                Shininess       () const        { return myShininess; }

  /**
   * Query the Transparency value
   */
  inline Standard_Real
                Transparency    () const        { return myTransparency; }

  /**
   * Query the Diffuse color
   */
  inline const Quantity_Color&
                DiffuseColor    () const        { return myDiffuseColor; }

  /**
   * Query the Emissive color
   */
  inline const Quantity_Color&
                EmissiveColor   () const        { return myEmissiveColor; }

  /**
   * Query the Specular color
   */
  inline const Quantity_Color&
                SpecularColor   () const        { return mySpecularColor; }

  /**
   * Set the Ambient Intensity value
   */
  inline void   SetAmbientIntensity
                                (const Standard_Real theAmbientIntensity)
  { myAmbientIntensity = theAmbientIntensity; }

  /**
   * Set the Shininess value
   */
  inline void   SetShininess    (const Standard_Real theShininess)
  { myShininess = theShininess; }

  /**
   * Set the Transparency value
   */
  inline void   SetTransparency (const Standard_Real theTransparency)
  { myTransparency = theTransparency; }

  /**
   * Query the Diffuse color
   */
  inline void   SetDiffuseColor (const Quantity_Color& theColor)
  { myDiffuseColor = theColor; }

  /**
   * Query the Emissive color
   */
  inline void   SetEmissiveColor (const Quantity_Color& theColor)
  { myEmissiveColor = theColor; }

  /**
   * Query the Specular color
   */
  inline void   SetSpecularColor (const Quantity_Color& theColor)
  { mySpecularColor = theColor; }

  /**
   * Create a copy of this node.
   * If the parameter is null, a new copied node is created. Otherwise new node
   * is not created, but rather the given one is modified.
   */
  Standard_EXPORT virtual Handle(VrmlData_Node)
                Clone           (const Handle(VrmlData_Node)& theOther)const;

  /**
   * Read the Node from input stream.
   */
  Standard_EXPORT virtual VrmlData_ErrorStatus
                Read            (VrmlData_InBuffer& theBuffer);

  /**
   * Write the Node to the Scene output.
   */
  Standard_EXPORT virtual VrmlData_ErrorStatus
                Write           (const char * thePrefix) const;

  /**
   * Returns True if the node is default, so that it should not be written.
   */
  Standard_EXPORT virtual Standard_Boolean
                IsDefault       () const;

 protected:
  // ---------- PROTECTED METHODS ----------

 private:
  // ---------- PRIVATE FIELDS ----------

  Standard_Real         myAmbientIntensity;
  Standard_Real         myShininess;
  Standard_Real         myTransparency;
  Quantity_Color        myDiffuseColor;
  Quantity_Color        myEmissiveColor;
  Quantity_Color        mySpecularColor;

 public:
// Declaration of CASCADE RTTI
DEFINE_STANDARD_RTTI (VrmlData_Material)
};

// Definition of HANDLE object using Standard_DefineHandle.hxx
DEFINE_STANDARD_HANDLE (VrmlData_Material, VrmlData_Node)


#endif