ome-qtwidgets  5.3.0
V330GLLineShader2D.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_V330_V330GLLINESHADER2D_H
40 #define OME_QTWIDGETS_GLSL_V330_V330GLLINESHADER2D_H
41 
42 #include <QOpenGLShader>
43 #include <QOpenGLBuffer>
44 #include <QtGui/QOpenGLFunctions_3_3_Core>
45 
46 #include <ome/qtwidgets/glm.h>
47 
48 namespace ome
49 {
50  namespace qtwidgets
51  {
52  namespace glsl
53  {
54  namespace v330
55  {
56 
60  class GLLineShader2D : public QOpenGLShaderProgram,
61  protected QOpenGLFunctions_3_3_Core
62  {
63  Q_OBJECT
64 
65  public:
71  explicit GLLineShader2D(QObject *parent = 0);
72 
75 
77  void
78  enableCoords();
79 
81  void
82  disableCoords();
83 
85  void
86  setCoords(const GLfloat *offset,
87  int tupleSize,
88  int stride = 0);
89 
91  void
92  setCoords(QOpenGLBuffer& coords,
93  const GLfloat *offset,
94  int tupleSize,
95  int stride = 0);
96 
98  void
99  enableColour();
100 
102  void
103  disableColour();
104 
113  void
114  setColour(const GLfloat *offset,
115  int tupleSize,
116  int stride = 0);
117 
127  void
128  setColour(QOpenGLBuffer& colours,
129  const GLfloat *offset,
130  int tupleSize,
131  int stride = 0);
132 
134  void
135  setModelViewProjection(const glm::mat4& mvp);
136 
142  void
143  setZoom(float zoom);
144 
145  private:
147  QOpenGLShader *vshader;
149  QOpenGLShader *fshader;
150 
159  };
160 
161  }
162  }
163  }
164 }
165 
166 #endif // OME_QTWIDGETS_GLSL_V330_V330GLLINESHADER2D_H
167 
168 /*
169  * Local Variables:
170  * mode:C++
171  * End:
172  */
int uniform_mvp
Model view projection uniform.
Definition: V330GLLineShader2D.h:156
void setModelViewProjection(const glm::mat4 &mvp)
Set model view projection matrix.
Definition: V330GLLineShader2D.cpp:206
QOpenGLShader * vshader
The vertex shader.
Definition: V330GLLineShader2D.h:147
QOpenGLShader * fshader
The fragment shader.
Definition: V330GLLineShader2D.h:149
void setCoords(const GLfloat *offset, int tupleSize, int stride=0)
Set vertex coordinates from array.
Definition: V330GLLineShader2D.cpp:156
void disableCoords()
Enable vertex coordinates.
Definition: V330GLLineShader2D.cpp:150
int uniform_zoom
Zoom uniform.
Definition: V330GLLineShader2D.h:158
void enableCoords()
Enable vertex coordinates.
Definition: V330GLLineShader2D.cpp:144
2D line shader program.
Definition: V330GLLineShader2D.h:60
int attr_coords
Vertex coordinates attribute.
Definition: V330GLLineShader2D.h:152
void disableColour()
Disable colour array.
Definition: V330GLLineShader2D.cpp:181
int attr_colour
Vertex colour attribute.
Definition: V330GLLineShader2D.h:154
void setColour(const GLfloat *offset, int tupleSize, int stride=0)
Set colours from array.
Definition: V330GLLineShader2D.cpp:187
void enableColour()
Enable colour array.
Definition: V330GLLineShader2D.cpp:175
GLLineShader2D(QObject *parent=0)
Constructor.
Definition: V330GLLineShader2D.cpp:56
~GLLineShader2D()
Destructor.
Definition: V330GLLineShader2D.cpp:139
void setZoom(float zoom)
Set zoom level.
Definition: V330GLLineShader2D.cpp:213