ome-qtwidgets  5.2.0
GLFlatShader2D.h
1 /*
2  * #%L
3  * OME-QTWIDGETS C++ library for display of OME-Files pixel data and metadata.
4  * %%
5  * Copyright © 2014 - 2015 Open Microscopy Environment:
6  * - Massachusetts Institute of Technology
7  * - National Institutes of Health
8  * - University of Dundee
9  * - Board of Regents of the University of Wisconsin-Madison
10  * - Glencoe Software, Inc.
11  * %%
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions are met:
14  *
15  * 1. Redistributions of source code must retain the above copyright notice,
16  * this list of conditions and the following disclaimer.
17  * 2. Redistributions in binary form must reproduce the above copyright notice,
18  * this list of conditions and the following disclaimer in the documentation
19  * and/or other materials provided with the distribution.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  *
33  * The views and conclusions contained in the software and documentation are
34  * those of the authors and should not be interpreted as representing official
35  * policies, either expressed or implied, of any organization.
36  * #L%
37  */
38 
39 #ifndef OME_QTWIDGETS_GLSL_V110_GLFLATSHADER2D_H
40 #define OME_QTWIDGETS_GLSL_V110_GLFLATSHADER2D_H
41 
42 #include <QOpenGLShader>
43 #include <QOpenGLBuffer>
44 #include <QtGui/QOpenGLFunctions>
45 
46 #include <ome/qtwidgets/glm.h>
47 
48 namespace ome
49 {
50  namespace qtwidgets
51  {
52  namespace glsl
53  {
54  namespace v110
55  {
56 
60  class GLFlatShader2D : public QOpenGLShaderProgram, protected QOpenGLFunctions
61  {
62  Q_OBJECT
63 
64  public:
70  explicit GLFlatShader2D(QObject *parent = 0);
71 
74 
76  void
77  enableCoords();
78 
80  void
81  disableCoords();
82 
84  void
85  setCoords(const GLfloat *offset, int tupleSize, int stride = 0);
86 
88  void
89  setCoords(QOpenGLBuffer& coords, const GLfloat *offset, int tupleSize, int stride = 0);
90 
96  void
97  setColour(const glm::vec4& colour);
98 
104  void
105  setOffset(const glm::vec2& offset);
106 
108  void
109  setModelViewProjection(const glm::mat4& mvp);
110 
111  private:
113  QOpenGLShader *vshader;
115  QOpenGLShader *fshader;
116 
125  };
126 
127  }
128  }
129  }
130 }
131 
132 #endif // OME_QTWIDGETS_GLSL_V110_GLFLATSHADER2D_H
133 
134 /*
135  * Local Variables:
136  * mode:C++
137  * End:
138  */
void setOffset(const glm::vec2 &offset)
Set xy offset in model space.
Definition: GLFlatShader2D.cpp:165
void setCoords(const GLfloat *offset, int tupleSize, int stride=0)
Set vertex coordinates from array.
Definition: GLFlatShader2D.cpp:143
QOpenGLShader * vshader
The vertex shader.
Definition: GLFlatShader2D.h:113
void setColour(const glm::vec4 &colour)
Set fill colour.
Definition: GLFlatShader2D.cpp:158
int uniform_colour
Fill colour uniform.
Definition: GLFlatShader2D.h:120
int uniform_mvp
Model view projection uniform.
Definition: GLFlatShader2D.h:124
QOpenGLShader * fshader
The fragment shader.
Definition: GLFlatShader2D.h:115
void enableCoords()
Enable vertex coordinates.
Definition: GLFlatShader2D.cpp:131
2D flat (solid fill) shader program.
Definition: GLFlatShader2D.h:60
void disableCoords()
Enable vertex coordinates.
Definition: GLFlatShader2D.cpp:137
void setModelViewProjection(const glm::mat4 &mvp)
Set model view projection matrix.
Definition: GLFlatShader2D.cpp:172
GLFlatShader2D(QObject *parent=0)
Constructor.
Definition: GLFlatShader2D.cpp:56
int attr_coords
Vertex coordinates attribute.
Definition: GLFlatShader2D.h:118
int uniform_offset
Model offset uniform.
Definition: GLFlatShader2D.h:122
~GLFlatShader2D()
Destructor.
Definition: GLFlatShader2D.cpp:126