0026936: Drawbacks of inlining in new type system in OCCT 7.0 -- automatic
[occt.git] / src / OpenGl / OpenGl_SetOfShaderPrograms.hxx
CommitLineData
256f9ac0 1// Created on: 2014-10-08
2// Created by: Kirill Gavrilov
3// Copyright (c) 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 _OpenGl_SetOfShaderPrograms_HeaderFile
17#define _OpenGl_SetOfShaderPrograms_HeaderFile
18
19#include <NCollection_DataMap.hxx>
20#include <OpenGl_ShaderProgram.hxx>
21
22//! Standard GLSL program combination bits.
23enum OpenGl_ProgramOptions
24{
ac116c22 25 OpenGl_PO_ClipPlanes = 0x01, //!< handle clipping planes
26 OpenGl_PO_Point = 0x02, //!< point marker
27 OpenGl_PO_VertColor = 0x04, //!< per-vertex color
28 OpenGl_PO_TextureRGB = 0x08, //!< handle RGB texturing
29 OpenGl_PO_TextureA = 0x10, //!< handle Alpha texturing
30 OpenGl_PO_TextureEnv = 0x20, //!< handle environment map
31 OpenGl_PO_StippleLine = 0x40, //!< stipple line
32 OpenGl_PO_NB = 0x80 //!< overall number of combinations
256f9ac0 33};
34
35//! Alias to programs array of predefined length
36class OpenGl_SetOfShaderPrograms : public Standard_Transient
37{
38
39public:
40
41 //! Empty constructor
42 OpenGl_SetOfShaderPrograms() {}
43
44 //! Access program by index
45 Handle(OpenGl_ShaderProgram)& ChangeValue (const Standard_Integer theIndex) { return myPrograms[theIndex]; }
46
47protected:
48
49 Handle(OpenGl_ShaderProgram) myPrograms[OpenGl_PO_NB]; //!< programs array
50
51public:
52
92efcf78 53 DEFINE_STANDARD_RTTI_INLINE(OpenGl_SetOfShaderPrograms,Standard_Transient)
256f9ac0 54
55};
56
57DEFINE_STANDARD_HANDLE(OpenGl_SetOfShaderPrograms, Standard_Transient)
58
59typedef NCollection_DataMap<TCollection_AsciiString, Handle(OpenGl_SetOfShaderPrograms)> OpenGl_MapOfShaderPrograms;
60
61#endif // _OpenGl_SetOfShaderPrograms_HeaderFile