Initial Version of LayerManagementService added.
[profile/ivi/layer-management.git] / LayerManagerService / include / ShaderProgramFactory.h
1 /***************************************************************************
2 *
3 * Copyright 2010 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 <string>
24 #include <ShaderProgram.h>
25
26 /// pointer to shader program creator function
27 typedef ShaderProgram* (*PfnShaderProgramCreator)(const std::string&, const std::string&);
28
29 /**
30  * Factory for creating platform specific shader programs.
31  */
32 class ShaderProgramFactory
33 {
34 public:
35         /**
36          * Create a new shader program.
37          *
38          * @param vertName   File name of vertex shader.
39          * @param fragName   File name of fragment shader.
40          * @return new Program instance, NULL if program could not be created.
41          */
42         static ShaderProgram* createProgram(const std::string& vertName, const std::string& fragName);
43
44         /**
45          * Set shader program creator function
46          *
47          * @param creatorFunc   Pointer to shader program creator function
48          */
49         static void setCreatorFunc(PfnShaderProgramCreator creatorFunc);
50
51 private:
52         /**
53          * Dummy private constructor. Prevents creation of instances of this class.
54          */
55         ShaderProgramFactory(void);
56
57 private:
58         /// pointer to shader program creator function
59         static PfnShaderProgramCreator _creator;
60 };
61
62 #endif /* _SHADERPROGRAMFACTORY_H_ */
63