Developer Documentation
Loading...
Searching...
No Matches
BSplineCurveSelectionPlugin.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 * $Author$ *
46 * $Date$ *
47 * *
48\*===========================================================================*/
49
50#ifndef BSPLINECURVESELECTIONPLUGIN_HH
51#define BSPLINECURVESELECTIONPLUGIN_HH
52
53#include <QObject>
54
62#include <OpenFlipper/BasePlugin/INIInterface.hh>
67#include <OpenFlipper/INIFile/INIFile.hh>
68
70
73{
74 Q_OBJECT
75 Q_INTERFACES(BaseInterface)
76 Q_INTERFACES(KeyInterface)
77 Q_INTERFACES(INIInterface)
78 Q_INTERFACES(BackupInterface)
79 Q_INTERFACES(LoggingInterface)
80 Q_INTERFACES(ScriptInterface)
81 Q_INTERFACES(SelectionInterface)
82
83 Q_PLUGIN_METADATA(IID "org.OpenFlipper.Plugins.Plugin-SelectionBSplineCurve")
84
85public:
86
89
92
93signals:
94
95 // BaseInterface
96 void updateView();
97 void updatedObject(int, const UpdateType&);
98 void nodeVisibilityChanged(int _identifier);
99 void setSlotDescription(QString _slotName, QString _slotDescription,
100 QStringList _parameters, QStringList _descriptions);
101
102 // BackupInterface
103 void createBackup( int _objectid, QString _name, UpdateType _type = UPDATE_ALL);
104
105 // LoggingInterface
106 void log(Logtype _type, QString _message);
107 void log(QString _message);
108
109 // ScriptInterface
110 void scriptInfo(QString _functionName);
111
112 // SelectionInterface
113 void addSelectionEnvironment(QString _modeName, QString _description, QString _icon, QString& _handleName);
114 void registerType(QString _handleName, DataType _type);
115 void addPrimitiveType(QString _handleName, QString _name, QString _icon, SelectionInterface::PrimitiveType& _typeHandle);
116 void addSelectionOperations(QString _handleName, QStringList _operationsList, QString _category, SelectionInterface::PrimitiveType _type = 0u);
117 void showToggleSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
118 void showVolumeLassoSelectionMode(QString _handleName, bool _show, SelectionInterface::PrimitiveType _associatedTypes);
119
120 void getActiveDataTypes(SelectionInterface::TypeList& _types);
121 void getActivePrimitiveType(SelectionInterface::PrimitiveType& _type);
122 void targetObjectsOnly(bool& _targetsOnly);
123
124 void registerKeyShortcut(int _key, Qt::KeyboardModifiers _modifiers = Qt::NoModifier);
125
126private slots:
127
128 // INIInterface
129 void loadIniFile(INIFile& _ini, int _id);
130 void saveIniFile(INIFile& _ini, int _id);
131
132 // BaseInterface
133 void initializePlugin();
134 void pluginsInitialized();
135 void noguiSupported() {};
136
137 // SelectionInterface
138 void slotSelectionOperation(QString _operation);
139 void slotToggleSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
140 void slotVolumeLassoSelection(QMouseEvent* _event, SelectionInterface::PrimitiveType _currentType, bool _deselect);
141
142 void slotLoadSelection(const INIFile& _file);
143 void slotSaveSelection(INIFile& _file);
144
145 void slotKeyShortcutEvent(int _key, Qt::KeyboardModifiers _modifiers);
146
147public slots:
148
149 // SelectionInterface
150 void loadSelection(int _objId, const QString& _filename);
151
152public:
153
154 // BaseInterface
155 QString name() {
156 return (QString(tr("BSplineCurve Selection")));
157 };
158
159 QString description() {
160 return (QString(tr("Allows to select B-Spline curves")));
161 };
162
163 //===========================================================================
166 //===========================================================================
167private:
168
169 enum SelectionViewMode {CP, K};
170
172 void setSelectionViewMode(const SelectionViewMode _mode);
173
176
179public slots:
180
181 QString version() {
182 return QString("1.0");
183 };
184
185 //===========================================================================
188 //===========================================================================
189
190 // Control point selection:
191
193 void selectAllControlPoints(int _objectId);
194
196 void deselectAllControlPoints(int _objectId);
197
199 void invertControlPointSelection(int _objectId);
200
202 void deleteSelectedControlPoints(int _objectId);
203
205 void selectControlPoints(int _objectId, const IdList& _ids, bool _deselect = false);
206
208 IdList getControlPointSelection(int _objectId);
209
210 // Knot selection:
211
213 void selectAllKnots(int _objectId);
214
216 void deselectAllKnots(int _objectId);
217
219 void invertKnotSelection(int _objectId);
220
222 void deleteSelectedKnots(int _objectId);
223
225 void selectKnots(int _objectId, const IdList& _ids, bool _deselect = false);
226
228 IdList getKnotSelection(int _objectId);
229
232 //===========================================================================
235 //===========================================================================
236
237private:
238
241
243 unsigned int controlPointType_;
244 unsigned int knotType_;
245
246 unsigned int allSupportedTypes_;
247
249 QVector<QPoint> volumeLassoPoints_;
250
253};
254
255//=============================================================================
256#endif // BSPLINECURVESELECTIONPLUGIN_HH defined
257//=============================================================================
std::vector< int > IdList
Standard Type for id Lists used for scripting.
Definition DataTypes.hh:181
Logtype
Log types for Message Window.
void deselectAllControlPoints(int _objectId)
Deselect all control points of a curve.
void slotKeyShortcutEvent(int _key, Qt::KeyboardModifiers _modifiers)
One of the previously registered keys has been pressed.
unsigned int knotType_
Handle to selection environment.
IdList getKnotSelection(int _objectId)
Get current knot selection.
void invertKnotSelection(int _objectId)
Invert knot selection.
void selectControlPoints(int _objectId, const IdList &_ids, bool _deselect=false)
Select specific control points of a curve.
void selectAllControlPoints(int _objectId)
Select all control points of a curve.
QString environmentHandle_
Handle to selection environment.
void slotSaveSelection(INIFile &_file)
Save selection for all objects in the scene.
unsigned int controlPointType_
Primitive type handles:
~BSplineCurveSelectionPlugin()
Default destructor.
void deleteSelectedControlPoints(int _objectId)
Delete selected control points.
void invertControlPointSelection(int _objectId)
Invert control point selection.
IdList getControlPointSelection(int _objectId)
Get current control point selection.
void updateSlotDescriptions()
Set slot descriptions for scripting functions.
BSplineCurveSelectionPlugin()
Default constructor.
void deleteSelectedKnots(int _objectId)
Delete selected knots.
void slotToggleSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
Called whenever the user performs a toggle selection.
void slotVolumeLassoSelection(QMouseEvent *_event, SelectionInterface::PrimitiveType _currentType, bool _deselect)
Called whenever the user performs a volume lasso selection.
void selectAllKnots(int _objectId)
Select all knots of a curve.
QString name()
Return a name for the plugin.
void deselectAllKnots(int _objectId)
Deselect all knots of a curve.
unsigned int allSupportedTypes_
Handle to selection environment.
void slotSelectionOperation(QString _operation)
A specific operation is requested.
void selectKnots(int _objectId, const IdList &_ids, bool _deselect=false)
Select specific knots of a curve.
QString description()
Return a description of what the plugin is doing.
QVector< QPoint > volumeLassoPoints_
Keep volume lasso points.
SelectionViewMode
Change selection view mode for every B-spline curve in the scene.
void setSelectionViewMode(const SelectionViewMode _mode)
Change selection view mode for every B-spline curve in the scene.
void slotLoadSelection(const INIFile &_file)
Load selection for specific objects in the scene.
Interface class for backup handling.
Interface class from which all plugins have to be created.
Predefined datatypes.
Definition DataTypes.hh:83
Class for the handling of simple configuration files.
Definition INIFile.hh:100
Interface class for Plugins which have to store information in ini files.
Keyboard Event Interface.
Interface for all Plugins which do logging to the logging window of the framework.
Interface for all Plugins which provide scriptable Functions.
Interface for all plugins which want to use selection functions.
Update type class.
Definition UpdateType.hh:59
const UpdateType UPDATE_ALL(UpdateTypeSet(1))
Identifier for all updates.