Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
WarpGrid.h
Go to the documentation of this file.
1 /* Copyright (c) 2014-2015 "Omnidome" by cr8tr
2  * Dome Mapping Projection Software (http://omnido.me).
3  * Omnidome was created by Michael Winkelmann aka Wilston Oreo (@WilstonOreo)
4  *
5  * This file is part of Omnidome.
6  *
7  * Omnidome is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as
9  * published by the Free Software Foundation, either version 3 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU Affero General Public License for more details.
16  * You should have received a copy of the GNU Affero General Public License
17  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef OMNI_VISUAL_WARPGRID_H_
21 #define OMNI_VISUAL_WARPGRID_H_
22 
23 #include <memory>
24 #include <omni/WarpGrid.h>
25 #include <omni/geometry/Vertex2D.h>
26 #include <omni/visual/Interface.h>
27 #include <omni/visual/Circle.h>
28 #include <omni/visual/VBO.h>
29 
30 
31 namespace omni {
32  namespace visual {
33  /// Draw Handler for WarpGrid
34  class WarpGrid : public Interface {
35  public:
36  WarpGrid(omni::WarpGrid const& _warpGrid);
37  ~WarpGrid();
38 
39  /// Draw warp grid
40  void draw() const;
41 
42  /// Draw lines for warp grid
43  void drawLines();
44 
45  /// Draw handles for warp grid
46  void drawHandles(QColor const& _color,
47  QRectF const& _rect);
48 
49  /// Generate geometry
50  void update();
51 
52  /// Return number of subdivisions
53  int subdivisions() const;
54 
55  /// Set number of subdivisions
56  void setSubdivisions(int _subDiv);
57 
58  private:
59  std::unique_ptr<Circle> circle_;
60  std::vector<Vertex2D> vertices_;
61  std::vector<QVector2D> gridVertices_;
62  std::vector<GLuint> indices_;
63  std::vector<GLuint> gridIndices_;
66 
68  int subdivisions_ = 8;
69  };
70  }
71 }
72 
73 #endif /* OMNI_VISUAL_WARPGRID_H_ */
std::vector< GLuint > indices_
Definition: WarpGrid.h:62
A small Vertex Buffer Object class.
Definition: VBO.h:29
std::unique_ptr< Circle > circle_
Definition: WarpGrid.h:59
VBO gridVertexVbo_
Definition: WarpGrid.h:65
void update()
Generate geometry.
Definition: WarpGrid.cpp:122
int subdivisions_
Definition: WarpGrid.h:68
std::vector< GLuint > gridIndices_
Definition: WarpGrid.h:63
Draw Handler for WarpGrid.
Definition: WarpGrid.h:34
void drawHandles(QColor const &_color, QRectF const &_rect)
Draw handles for warp grid.
Definition: WarpGrid.cpp:87
Basic visual interface.
Definition: Interface.h:28
VBO gridIndexVbo_
Definition: WarpGrid.h:65
~WarpGrid()
Definition: WarpGrid.cpp:35
A warp grid is a 2D bezier grid with MxN points Default size 6x6 points. Selected points are also st...
Definition: WarpGrid.h:32
int subdivisions() const
Return number of subdivisions.
Definition: WarpGrid.cpp:113
void drawLines()
Draw lines for warp grid.
Definition: WarpGrid.cpp:64
std::vector< QVector2D > gridVertices_
Definition: WarpGrid.h:61
VBO vertexVbo_
Definition: WarpGrid.h:64
std::vector< Vertex2D > vertices_
Definition: WarpGrid.h:60
void setSubdivisions(int _subDiv)
Set number of subdivisions.
Definition: WarpGrid.cpp:117
WarpGrid(omni::WarpGrid const &_warpGrid)
Definition: WarpGrid.cpp:31
void draw() const
Draw warp grid.
Definition: WarpGrid.cpp:38
VBO indexVbo_
Definition: WarpGrid.h:64
omni::WarpGrid const & warpGrid_
Definition: WarpGrid.h:67