Eliminate newly appeared warnings
[occt.git] / src / Graphic3d / Graphic3d_ShaderObject.cxx
1 // Created on: 2013-09-20
2 // Created by: Denis BOGOLEPOV
3 // Copyright (c) 2013 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
9 //
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 //
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
19
20 #include <OSD_File.hxx>
21 #include <OSD_Protection.hxx>
22 #include <Standard_Atomic.hxx>
23 #include <Graphic3d_ShaderObject.hxx>
24 #include <Graphic3d_GraphicDriver.hxx>
25
26 namespace
27 {
28   static volatile Standard_Integer THE_SHADER_OBJECT_COUNTER = 0;
29 };
30
31 IMPLEMENT_STANDARD_HANDLE (Graphic3d_ShaderObject, Standard_Transient)
32 IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_ShaderObject, Standard_Transient)
33
34 // =======================================================================
35 // function : Graphic3d_ShaderObject
36 // purpose  : Creates a shader object from specified file
37 // =======================================================================
38 Graphic3d_ShaderObject::Graphic3d_ShaderObject (const Graphic3d_TypeOfShaderObject theType)
39 : myType (theType)
40 {
41   myID = TCollection_AsciiString ("Graphic3d_ShaderObject_")
42        + TCollection_AsciiString (Standard_Atomic_Increment (&THE_SHADER_OBJECT_COUNTER));
43 }
44
45 // =======================================================================
46 // function : CreatFromFile
47 // purpose  : Creates new shader object from specified file
48 // =======================================================================
49 Handle(Graphic3d_ShaderObject) Graphic3d_ShaderObject::CreateFromFile (const Graphic3d_TypeOfShaderObject theType,
50                                                                        const TCollection_AsciiString&     thePath)
51 {
52   Handle(Graphic3d_ShaderObject) aShader = new Graphic3d_ShaderObject (theType);
53   aShader->myPath = thePath;
54
55   OSD_File aFile (thePath);
56   if (!aFile.Exists())
57   {
58     return NULL;
59   }
60
61   aFile.Open (OSD_ReadOnly, OSD_Protection());
62   aFile.Read (aShader->mySource, (int)aFile.Size());
63   aFile.Close();
64
65   return aShader;
66 }
67
68 // =======================================================================
69 // function : CreatFromSource
70 // purpose  : Creates new shader object from specified source
71 // =======================================================================
72 Handle(Graphic3d_ShaderObject) Graphic3d_ShaderObject::CreateFromSource (const Graphic3d_TypeOfShaderObject theType,
73                                                                          const TCollection_AsciiString&     theSource)
74 {
75   Handle(Graphic3d_ShaderObject) aShader = new Graphic3d_ShaderObject (theType);
76   aShader->mySource = theSource;
77   return aShader;
78 }
79
80 // =======================================================================
81 // function : ~Graphic3d_ShaderObject
82 // purpose  : Releases resources of shader object
83 // =======================================================================
84 Graphic3d_ShaderObject::~Graphic3d_ShaderObject()
85 {
86   //
87 }
88
89 // =======================================================================
90 // function : IsDone
91 // purpose  : Checks if the shader object is valid or not
92 // =======================================================================
93 Standard_Boolean Graphic3d_ShaderObject::IsDone() const
94 {
95   return !mySource.IsEmpty();
96 }