Developer Documentation
Loading...
Searching...
No Matches
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#ifndef TOPOLOGYPLUGIN_HH
45#define TOPOLOGYPLUGIN_HH
46
57
59{
60 Q_OBJECT
61 Q_INTERFACES(BaseInterface)
62 Q_INTERFACES(MouseInterface)
63 Q_INTERFACES(KeyInterface)
64 Q_INTERFACES(PickingInterface)
65 Q_INTERFACES(BackupInterface)
66 Q_INTERFACES(LoggingInterface)
67 Q_INTERFACES(ToolbarInterface)
68
69 Q_PLUGIN_METADATA(IID "org.OpenFlipper.Plugins.Plugin-Topology")
70
71 signals:
72 // BaseInterface
73 void updateView();
74 void updatedObject(int _id, const UpdateType& _type);
75
76 // PickingInterface
77 void addHiddenPickMode( const std::string& _mode );
78
79 // BackupInterface
80 void createBackup( int _objectid, QString _name, UpdateType _type = UPDATE_ALL);
81
82 // LoggingInterface
83 void log(Logtype _type, QString _message);
84 void log(QString _message);
85
86 // ToolbarInterface
87 void addToolbar(QToolBar* _toolbar);
88
89 private slots:
90
91 // BaseInterface
92 void pluginsInitialized();
93
94 //PickingInterface
95 void slotPickModeChanged( const std::string& _mode);
96
97 // MouseInterface
98 void slotMouseEvent( QMouseEvent* _event );
99
100 private slots:
101
103 void toolBarTriggered(QAction* _action);
104
105 public :
106
109
112
113
114 QString name() { return (QString("Topology")); };
115 QString description( ) { return (QString("Allows to control Mesh topology (Edge Flips,...)")); };
116
117 private :
118
121
123 void add_face(QMouseEvent* _event);
124
126 void split_face(QMouseEvent* _event);
127
129 void delete_face(QMouseEvent* _event);
130
132 void flip_edge(QMouseEvent* _event);
133
135 void collapse_edge(QMouseEvent* _event);
136
138 void split_edge(QMouseEvent* _event);
139
140 private:
141
142 std::vector< std::pair<int,int> > addFaceVertices_;
143
144 QToolBar* toolbar_;
145
146 QAction* edgeFlipAction_;
147 QAction* edgeSplitAction_;
148 QAction* edgeCollapseAction_;
149
150 QAction* faceAddAction_;
151 QAction* faceDeleteAction_;
152 QAction* faceSplitAction_;
153
154
155 public slots:
156 QString version() { return QString("1.0"); };
157};
158
159#endif //TOPOLOGYPLUGIN_HH
Logtype
Log types for Message Window.
Interface class for backup handling.
Interface class from which all plugins have to be created.
Keyboard Event Interface.
Interface for all Plugins which do logging to the logging window of the framework.
Interface class for receiving mouse events.
Allow access to picking functions.
Add a toolbox to OpenFlipper.
void flip_edge(QMouseEvent *_event)
Flip edge.
void slotMouseEvent(QMouseEvent *_event)
this is called when a mouse event occurred
void collapse_edge(QMouseEvent *_event)
Collapse edge.
void split_edge(QMouseEvent *_event)
Split Edge.
TopologyPlugin()
Constructor.
QString name()
Return a name for the plugin.
void slotPickModeChanged(const std::string &_mode)
Toggle actions when the PickMode changes.
void split_face(QMouseEvent *_event)
Split a face at the current hit point.
void toolBarTriggered(QAction *_action)
called when an action on the toolbar was triggered
void clearAddFaceVertices()
clear the add face vector
void pluginsInitialized()
initialize the Plugin
void delete_face(QMouseEvent *_event)
Delete a face at the current hit point.
QString description()
Return a description of what the plugin is doing.
void add_face(QMouseEvent *_event)
Add a face.
~TopologyPlugin()
Destructor.
Update type class.
Definition UpdateType.hh:59
const UpdateType UPDATE_ALL(UpdateTypeSet(1))
Identifier for all updates.