Developer Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
TopologyPlugin.hh
1 /*===========================================================================*\
2 * *
3 * OpenFlipper *
4  * Copyright (c) 2001-2015, RWTH-Aachen University *
5  * Department of Computer Graphics and Multimedia *
6  * All rights reserved. *
7  * www.openflipper.org *
8  * *
9  *---------------------------------------------------------------------------*
10  * This file is part of OpenFlipper. *
11  *---------------------------------------------------------------------------*
12  * *
13  * Redistribution and use in source and binary forms, with or without *
14  * modification, are permitted provided that the following conditions *
15  * are met: *
16  * *
17  * 1. Redistributions of source code must retain the above copyright notice, *
18  * this list of conditions and the following disclaimer. *
19  * *
20  * 2. Redistributions in binary form must reproduce the above copyright *
21  * notice, this list of conditions and the following disclaimer in the *
22  * documentation and/or other materials provided with the distribution. *
23  * *
24  * 3. Neither the name of the copyright holder nor the names of its *
25  * contributors may be used to endorse or promote products derived from *
26  * this software without specific prior written permission. *
27  * *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39 * *
40 \*===========================================================================*/
41 
42 /*===========================================================================*\
43 * *
44 * $Revision$ *
45 * $LastChangedBy$ *
46 * $Date$ *
47 * *
48 \*===========================================================================*/
49 
50 #ifndef TOPOLOGYPLUGIN_HH
51 #define TOPOLOGYPLUGIN_HH
52 
63 
65 {
66  Q_OBJECT
67  Q_INTERFACES(BaseInterface)
68  Q_INTERFACES(MouseInterface)
69  Q_INTERFACES(KeyInterface)
70  Q_INTERFACES(PickingInterface)
71  Q_INTERFACES(BackupInterface)
72  Q_INTERFACES(LoggingInterface)
73  Q_INTERFACES(ToolbarInterface)
74 
75 #if QT_VERSION >= 0x050000
76  Q_PLUGIN_METADATA(IID "org.OpenFlipper.Plugins.Plugin-Topology")
77 #endif
78 
79  signals:
80  // BaseInterface
81  void updateView();
82  void updatedObject(int _id, const UpdateType& _type);
83 
84  // PickingInterface
85  void addHiddenPickMode( const std::string& _mode );
86 
87  // BackupInterface
88  void createBackup( int _objectid, QString _name, UpdateType _type = UPDATE_ALL);
89 
90  // LoggingInterface
91  void log(Logtype _type, QString _message);
92  void log(QString _message);
93 
94  // ToolbarInterface
95  void addToolbar(QToolBar* _toolbar);
96 
97  private slots:
98 
99  // BaseInterface
100  void pluginsInitialized();
101 
102  //PickingInterface
103  void slotPickModeChanged( const std::string& _mode);
104 
105  // MouseInterface
106  void slotMouseEvent( QMouseEvent* _event );
107 
108  private slots:
109 
111  void toolBarTriggered(QAction* _action);
112 
113  public :
114 
116  TopologyPlugin();
117 
120 
121 
122  QString name() { return (QString("Topology")); };
123  QString description( ) { return (QString("Allows to control Mesh topology (Edge Flips,...)")); };
124 
125  private :
126 
128  void clearAddFaceVertices();
129 
131  void add_face(QMouseEvent* _event);
132 
134  void split_face(QMouseEvent* _event);
135 
137  void delete_face(QMouseEvent* _event);
138 
140  void flip_edge(QMouseEvent* _event);
141 
143  void collapse_edge(QMouseEvent* _event);
144 
146  void split_edge(QMouseEvent* _event);
147 
148  private:
149 
150  std::vector< std::pair<int,int> > addFaceVertices_;
151 
152  QToolBar* toolbar_;
153 
154  QAction* edgeFlipAction_;
155  QAction* edgeSplitAction_;
156  QAction* edgeCollapseAction_;
157 
158  QAction* faceAddAction_;
159  QAction* faceDeleteAction_;
160  QAction* faceSplitAction_;
161 
162 
163  public slots:
164  QString version() { return QString("1.0"); };
165 };
166 
167 #endif //TOPOLOGYPLUGIN_HH
Add a toolbox to OpenFlipper.
Interface class for receiving mouse events.
void slotMouseEvent(QMouseEvent *_event)
this is called when a mouse event occurred
TopologyPlugin()
Constructor.
void collapse_edge(QMouseEvent *_event)
Collapse edge.
void add_face(QMouseEvent *_event)
Add a face.
void split_face(QMouseEvent *_event)
Split a face at the current hit point.
QString name()
Return a name for the plugin.
Interface class for backup handling.
Interface for all Plugins which do logging to the logging window of the framework.
void clearAddFaceVertices()
clear the add face vector
void pluginsInitialized()
initialize the Plugin
Update type class.
Definition: UpdateType.hh:70
void slotPickModeChanged(const std::string &_mode)
Toggle actions when the PickMode changes.
Keyboard Event Interface.
Definition: KeyInterface.hh:76
Interface class from which all plugins have to be created.
Logtype
Log types for Message Window.
void flip_edge(QMouseEvent *_event)
Flip edge.
void toolBarTriggered(QAction *_action)
called when an action on the toolbar was triggered
void split_edge(QMouseEvent *_event)
Split Edge.
QString description()
Return a description of what the plugin is doing.
const UpdateType UPDATE_ALL(UpdateTypeSet(1))
Identifier for all updates.
void delete_face(QMouseEvent *_event)
Delete a face at the current hit point.
~TopologyPlugin()
Destructor.
Allow access to picking functions.