Merge "Build and package Layer Management service binaries." into tizen
[profile/ivi/layer-management.git] / LayerManagerBase / include / ShaderProgramFactory.h
1 /***************************************************************************
2 *
3 * Copyright 2010,2011 BMW Car IT GmbH
4 *
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *        http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 ****************************************************************************/
19
20 #ifndef _SHADERPROGRAMFACTORY_H_
21 #define _SHADERPROGRAMFACTORY_H_
22
23 #include <ShaderProgram.h>
24 #include <string>
25 using std::string;
26
27 /**
28  * Factory for creating platform specific shader programs.
29  */
30 class ShaderProgramFactory
31 {
32 public:
33     /**
34      * Create a new shader program.
35      *
36      * @param vertFileName   File name of vertex shader.
37      * @param fragFileName   File name of fragment shader.
38      * @return new Program instance, NULL if program could not be created.
39      */
40     static ShaderProgram* createProgram(const string& vertFileName, const string& fragFileName);
41
42     /**
43      * Set shader program creator function
44      *
45      * @param creatorFunc   Pointer to shader program creator function
46      */
47     static void setCreatorFunc(PfnShaderProgramCreator creatorFunc);
48
49 private:
50     /**
51      * Dummy private constructor, copy-constructor, assignment operator.
52      * Prevents creation of instances of this class.
53      */
54     ShaderProgramFactory(void);
55     ShaderProgramFactory(const ShaderProgramFactory&);
56     const ShaderProgramFactory& operator=(const ShaderProgramFactory&);
57
58 private:
59     /// pointer to shader program creator function
60     static PfnShaderProgramCreator m_creatorFunctionPointer;
61 };
62
63 #endif /* _SHADERPROGRAMFACTORY_H_ */
64