bioformats  5.1.3
GLLineShader2D.h
1 /*
2  * #%L
3  * OME-QTWIDGETS C++ library for display of Bio-Formats 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_GLLINESHADER2D_H
40 #define OME_QTWIDGETS_GLSL_V110_GLLINESHADER2D_H
41 
42 #include <QOpenGLShader>
43 #include <QOpenGLBuffer>
44 #include <QtGui/QOpenGLFunctions>
45 
46 #include <glm/glm.hpp>
47 
48 namespace ome
49 {
50  namespace qtwidgets
51  {
52  namespace glsl
53  {
54  namespace v110
55  {
56 
60  class GLLineShader2D : public QOpenGLShaderProgram, protected QOpenGLFunctions
61  {
62  Q_OBJECT
63 
64  public:
70  explicit GLLineShader2D(QObject *parent = 0);
71 
74 
76  void
77  enableCoords();
78 
80  void
81  disableCoords();
82 
84  void
85  setCoords(const GLfloat *offset,
86  int tupleSize,
87  int stride = 0);
88 
90  void
91  setCoords(QOpenGLBuffer& coords,
92  const GLfloat *offset,
93  int tupleSize,
94  int stride = 0);
95 
97  void
98  enableColour();
99 
101  void
102  disableColour();
103 
112  void
113  setColour(const GLfloat *offset,
114  int tupleSize,
115  int stride = 0);
116 
126  void
127  setColour(QOpenGLBuffer& colours,
128  const GLfloat *offset,
129  int tupleSize,
130  int stride = 0);
131 
133  void
134  setModelViewProjection(const glm::mat4& mvp);
135 
141  void
142  setZoom(float zoom);
143 
144  private:
146  QOpenGLShader *vshader;
148  QOpenGLShader *fshader;
149 
158  };
159 
160  }
161  }
162  }
163 }
164 
165 #endif // OME_QTWIDGETS_GLSL_V110_GLLINESHADER2D_H
166 
167 /*
168  * Local Variables:
169  * mode:C++
170  * End:
171  */
int uniform_mvp
Model view projection uniform.
Definition: GLLineShader2D.h:155
QOpenGLShader * vshader
The vertex shader.
Definition: GLLineShader2D.h:146
void setColour(const GLfloat *offset, int tupleSize, int stride=0)
Set colours from array.
Definition: GLLineShader2D.cpp:179
int attr_colour
Vertex colour attribute.
Definition: GLLineShader2D.h:153
~GLLineShader2D()
Destructor.
Definition: GLLineShader2D.cpp:131
int uniform_zoom
Zoom uniform.
Definition: GLLineShader2D.h:157
2D line shader program.
Definition: GLLineShader2D.h:60
void disableCoords()
Enable vertex coordinates.
Definition: GLLineShader2D.cpp:142
void enableCoords()
Enable vertex coordinates.
Definition: GLLineShader2D.cpp:136
void setCoords(const GLfloat *offset, int tupleSize, int stride=0)
Set vertex coordinates from array.
Definition: GLLineShader2D.cpp:148
int attr_coords
Vertex coordinates attribute.
Definition: GLLineShader2D.h:151
Open Microscopy Environment C++ implementation.
Definition: CoreMetadata.cpp:40
void setModelViewProjection(const glm::mat4 &mvp)
Set model view projection matrix.
Definition: GLLineShader2D.cpp:198
GLLineShader2D(QObject *parent=0)
Constructor.
Definition: GLLineShader2D.cpp:57
QOpenGLShader * fshader
The fragment shader.
Definition: GLLineShader2D.h:148
void enableColour()
Enable colour array.
Definition: GLLineShader2D.cpp:167
void disableColour()
Disable colour array.
Definition: GLLineShader2D.cpp:173
void setZoom(float zoom)
Set zoom level.
Definition: GLLineShader2D.cpp:205