1 // Created on: 2006-05-25
2 // Created by: Alexander GRIGORIEV
3 // Copyright (c) 2006-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15 
16 #ifndef VrmlData_Appearance_HeaderFile
17 #define VrmlData_Appearance_HeaderFile
18 
19 #include <VrmlData_Material.hxx>
20 #include <VrmlData_Texture.hxx>
21 #include <VrmlData_TextureTransform.hxx>
22 
23 /**
24  *  Implementation of the Appearance node type
25  */
26 class VrmlData_Appearance : public VrmlData_Node
27 {
28  public:
29   // ---------- PUBLIC METHODS ----------
30 
31   /**
32    * Empty constructor
33    */
VrmlData_Appearance()34   inline VrmlData_Appearance () {}
35 
36   /**
37    * Constructor
38    */
VrmlData_Appearance(const VrmlData_Scene & theScene,const char * theName)39   inline VrmlData_Appearance (const VrmlData_Scene& theScene,
40                               const char * theName)
41     : VrmlData_Node (theScene, theName) {}
42 
43   /**
44    * Query the Material
45    */
Handle(VrmlData_Material)46   inline const Handle(VrmlData_Material)&
47                 Material        () const        { return myMaterial; }
48 
49   /**
50    * Query the Texture
51    */
Handle(VrmlData_Texture)52   inline const Handle(VrmlData_Texture)&
53                 Texture         () const        { return myTexture; }
54 
55   /**
56    * Query the TextureTransform
57    */
Handle(VrmlData_TextureTransform)58   inline const Handle(VrmlData_TextureTransform)&
59                 TextureTransform () const       { return myTTransform; }
60 
61   /**
62    * Set the Material
63    */
SetMaterial(const Handle (VrmlData_Material)& theMat)64   inline void   SetMaterial     (const Handle(VrmlData_Material)& theMat)
65   { myMaterial = theMat; }
66 
67   /**
68    * Set the Texture
69    */
SetTexture(const Handle (VrmlData_Texture)& theTexture)70   inline void   SetTexture      (const Handle(VrmlData_Texture)& theTexture)
71   { myTexture = theTexture; }
72 
73   /**
74    * Set the Texture Transform
75    */
SetTextureTransform(const Handle (VrmlData_TextureTransform)& theTT)76   inline void   SetTextureTransform
77                                 (const Handle(VrmlData_TextureTransform)& theTT)
78   { myTTransform = theTT; }
79 
80   /**
81    * Create a copy of this node.
82    * If the parameter is null, a new copied node is created. Otherwise new node
83    * is not created, but rather the given one is modified.<p>
84    */
85   Standard_EXPORT virtual Handle(VrmlData_Node)
86                                 Clone       (const Handle(VrmlData_Node)&)const Standard_OVERRIDE;
87   /**
88    * Read the node from input stream.
89    */
90   Standard_EXPORT virtual VrmlData_ErrorStatus
91                                 Read        (VrmlData_InBuffer& theBuffer) Standard_OVERRIDE;
92 
93   /**
94    * Write the Node from input stream.
95    */
96   Standard_EXPORT virtual VrmlData_ErrorStatus
97                                 Write       (const char * thePrefix) const Standard_OVERRIDE;
98 
99   /**
100    * Returns True if the node is default, so that it should not be written.
101    */
102   Standard_EXPORT virtual Standard_Boolean
103                                 IsDefault       () const Standard_OVERRIDE;
104 
105  protected:
106   // ---------- PROTECTED METHODS ----------
107 
108 
109 
110  private:
111   // ---------- PRIVATE FIELDS ----------
112 
113   Handle(VrmlData_Material)             myMaterial;
114   Handle(VrmlData_Texture)              myTexture;
115   Handle(VrmlData_TextureTransform)     myTTransform;
116 
117  public:
118 // Declaration of CASCADE RTTI
119 DEFINE_STANDARD_RTTI_INLINE(VrmlData_Appearance,VrmlData_Node)
120 };
121 
122 // Definition of HANDLE object using Standard_DefineHandle.hxx
123 DEFINE_STANDARD_HANDLE (VrmlData_Appearance, VrmlData_Node)
124 
125 #endif
126