Developer Documentation

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
PolyLinePlugin.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 // CLASS PolyLinePlugin
45 //
46 // Author: David Bommes <bommes@cs.rwth-aachen.de>
47 //
48 // Version: $Revision: 1$
49 // Date: $Author$
50 // $Date: 03-10-2007$
51 //
52 //
53 //=============================================================================
54
55 #ifndef POLYLINEPLUGIN_HH
56 #define POLYLINEPLUGIN_HH
57
58 #define CGAL_NO_AUTOLINK_MPFR
59 #define CGAL_NO_AUTOLINK_GMP
60
61 //== INCLUDES =================================================================
62
63 #include <QObject>
64 #include <QMenuBar>
65 #include <QTimer>
66
67 #include <OpenFlipper/BasePlugin/BaseInterface.hh>
68 #include <OpenFlipper/BasePlugin/MouseInterface.hh>
69 #include <OpenFlipper/BasePlugin/PickingInterface.hh>
70 #include <OpenFlipper/BasePlugin/ToolboxInterface.hh>
71 #include <OpenFlipper/BasePlugin/BackupInterface.hh>
72 #include <OpenFlipper/BasePlugin/LoggingInterface.hh>
73 #include <OpenFlipper/BasePlugin/ToolbarInterface.hh>
74 #include <OpenFlipper/BasePlugin/LoadSaveInterface.hh>
75 #include <OpenFlipper/BasePlugin/KeyInterface.hh>
76 #include <OpenFlipper/BasePlugin/StatusbarInterface.hh>
77 #include <OpenFlipper/BasePlugin/ScriptInterface.hh>
78 #include <OpenFlipper/BasePlugin/ContextMenuInterface.hh>
79 #include <OpenFlipper/common/Types.hh>
80 #include <ObjectTypes/PolyLine/PolyLine.hh>
81 #include <ObjectTypes/PolyMesh/PolyMesh.hh>
82 #include <ObjectTypes/TriangleMesh/TriangleMesh.hh>
83
84 #include "PolyLineToolbarWidget.hh"
85
86 #include <ObjectTypes/Plane/QtPlaneSelect.hh>
87
88 #include <ACG/Scenegraph/GlutPrimitiveNode.hh>
89
90 #include <ObjectTypes/PolyLine/PolyLineCircleData.hh>
91 #include <ObjectTypes/PolyLine/PolyLineBezierSplineData.hh>
92
93 #define CREATE_CUT_POLYLINE "Create Polyline"
94 #define CREATE_CUT_POLYLINES "Create Polylines"
95
96 //== CLASS DEFINITION =========================================================
97
98
101 class PolyLinePlugin: public QObject,
102 BaseInterface,
103 MouseInterface,
104 PickingInterface,
105 ToolboxInterface,
106 LoggingInterface,
107 LoadSaveInterface,
108 ToolbarInterface,
109 StatusbarInterface,
110 KeyInterface,
111 ScriptInterface,
112 ContextMenuInterface {
113 Q_OBJECT
114 Q_INTERFACES(BaseInterface)
115 Q_INTERFACES(MouseInterface)
116 Q_INTERFACES(PickingInterface)
117 Q_INTERFACES(ToolboxInterface)
118 Q_INTERFACES(LoggingInterface)
119 Q_INTERFACES(LoadSaveInterface)
120 Q_INTERFACES(ToolbarInterface)
121 Q_INTERFACES(StatusbarInterface)
122 Q_INTERFACES(KeyInterface)
123 Q_INTERFACES(ScriptInterface)
124 Q_INTERFACES(ContextMenuInterface)
125
126 #if QT_VERSION >= 0x050000
127 Q_PLUGIN_METADATA(IID "org.OpenFlipper.Plugins.Plugin-PolyLine")
128 #endif
129
130 signals:
131
132 // BaseInterface
133 void updateView();
134 void updatedObject(int _identifier, const UpdateType& _type);
135 void nodeVisibilityChanged(int _id);
136
137 // PickingInterface
138 void addPickMode( const std::string& _mode );
139 void addHiddenPickMode( const std::string& _mode );
140 void setPickModeToolbar (const std::string& _mode, QToolBar * _toolbar);
141 void setPickModeMouseTracking(const std::string& _mode , bool _mouseTracking);
142
143 // LoggingInterface
144 void log(Logtype _type, QString _message);
145 void log(QString _message);
146
147 // ToolbarInterface
148 void addToolbar(QToolBar* _toolbar);
149 void getToolBar( QString _name, QToolBar*& _toolbar);
150
151 // ScriptInterface
152 void scriptInfo( QString _functionName );
153
154 // ToolboxInterface
155 void addToolbox( QString _name , QWidget* _widget, QIcon* _icon);
156
157 void deleteObject( int _id );
158 void addEmptyObject( DataType _type, int& _id);
159
160 void registerKey(int _key, Qt::KeyboardModifiers _modifiers, QString _description, bool _multiUse = false);
161 void showStatusMessage(QString _message, int _timeout = 0);
162 void clearStatusMessage();
163
164 //ContextMenuInterface
165 void addContextMenuItem(QAction* _action ,DataType _objectType , ContextMenuType _type );
166
167 private slots :
168 // BaseInterface
169 void initializePlugin();
170
171 void slotEditModeChanged();
172
173 void slotMouseEvent( QMouseEvent* _event );
174 void slotKeyEvent(QKeyEvent* _event);
175
176 void slotPickModeChanged( const std::string& _mode);
177
178 void pluginsInitialized();
179
180 bool pick_triangle_mesh( QPoint mPos,
181 TriMeshObject*& _mesh_object_, TriMesh::FaceHandle& _fh, TriMesh::VertexHandle& _vh, ACG::Vec3d& _hitPoint);
182
183 void slotUpdateContextMenu(int objectId);
184 public slots :
185
186 void slotEnablePickMode(QString _name);
187
188 public :
189
191 enum EditMode { PL_NONE =0,
192 PL_INSERT=1,
193 PL_INSERTCIRCLE,
194 PL_INSERTSPLINE,
195 PL_DELETE,
196 PL_MOVE,
197 PL_SPLIT,
198 PL_MERGE,
199 PL_SMART_MOVE,
200 PL_COPY_PASTE };
201
203 PolyLinePlugin();
204
206 ~PolyLinePlugin() {};
207
209 QString name(){ return (QString("PolyLine")); };
210
212 QString description() { return (QString("Handling of PolyLines (Insertion/Deletion/Modeling/...")); };
213
214 public slots:
215
216 #ifdef EXTENDED_POLY_LINE
217 void slot_resample_on_edges();
218 #endif
219
220 private slots:
221
222 void slot_subdivide();
223 void slot_subdivide_percent(bool _checked);
224 void slot_decimate();
225 void slot_decimate_percent(bool _checked);
226
227 void slot_smooth();
228 void slot_smooth( PolyLineObject*& _pol);
229 void slot_project();
230 void slot_project( PolyLineObject*& _pol);
231 void slot_smooth_project();
232 void slot_smooth_project( PolyLineObject*& _pol);
233
234 void slot_smart_move_timer();
235
236 void slot_setCirclePointNum(int i);
237 void slot_setSplinePointNum(int i);
238
239 virtual void slotObjectUpdated( int _identifier, const UpdateType &_type );
240
241 void slot_duplicate();
242 void slot_instanciate();
243 void finishSpline();
244 private :
245
246 EditMode mode();
247
248 // mouse events
249 void me_insert ( QMouseEvent* _event );
250 void me_insertCircle( QMouseEvent* _event );
251 void me_insertSpline( QMouseEvent* _event );
252 void me_delete ( QMouseEvent* _event );
253 void me_move ( QMouseEvent* _event );
254 void me_split ( QMouseEvent* _event );
255 void me_merge ( QMouseEvent* _event );
256 void me_smart_move ( QMouseEvent* _event );
257
258 //===========================================================================
261 //===========================================================================
262
263 private :
264
266 PolyLineToolbarWidget* tool_;
267
270 //===========================================================================
273 //===========================================================================
274
275 private :
276 QAction* polyLineAction_;
277 QActionGroup* toolBarActions_;
278
279 QToolBar* toolbar_;
280
281 private slots:
282
284 void slotSetPolyLineMode(QAction* _action);
285
288 //===========================================================================
291 //===========================================================================
292
293 private :
294 QToolBar* pickToolbar_;
295 QActionGroup* pickToolBarActions_;
296
297 QAction* insertAction_;
298 QAction* insertCircleAction_;
299 QAction* insertSplineAction_;
300 QAction* deleteAction_;
301 QAction* moveAction_;
302 QAction* smartMoveAction_;
303 QAction* mergeAction_;
304 QAction* splitAction_;
305 QAction* cutAction_;
306 QAction* cutMultipleAction_;
307
308 private slots:
309
311 void slotPickToolbarAction(QAction* _action);
312
315 //===========================================================================
318 //===========================================================================
319
320 private:
321
323 template< class MeshT > std::vector< ACG::Vec3d >
324 getIntersectionPoints ( MeshT* _mesh, uint _fh, ACG::Vec3d _planeNormal ,
325 ACG::Vec3d _planePoint, bool& _closed );
326
328 template< class MeshT > std::vector< std::vector< ACG::Vec3d > >
329 getMultipleIntersectionPoints( MeshT* _mesh, ACG::Vec3d _planeNormal , ACG::Vec3d _planePoint );
330
332 template< class MeshT >
333 typename MeshT::EdgeHandle
334 getCuttedEdge(MeshT& _mesh, ACG::Vec3d& _planeNormal, ACG::Vec3d& _planePoint);
335
338 public slots:
339
340 QString version() { return QString("1.02"); };
341
342 //============================================
343
345 int generatePolyLineFromCut( int _objectId, Vector _planePoint, Vector _planeNormal, int _polyLineId = -1 );
346
348 IdList generatePolyLinesFromCut( int _objectId, Vector _planePoint, Vector _planeNormal );
349
350 private slots:
351
353 void slotScissorButton();
354
356 void slotScissorLinesButton();
357
359 void slotTriggerCutPlaneSelect();
360
361 private:
362 int cur_insert_id_;
363 PolyLineObject *cur_polyline_obj_;
364
365 int cur_move_id_;
366 PolyLine::Point* move_point_ref_;
367 PolyLine::Point* create_point_ref_;
368 PolyLine::Point move_point_orig_;
369
371 int createCircle_CurrSelIndex_;
373 int createCircle_LastSelIndex_;
375 ACG::SceneGraph::GlutPrimitiveNode* moveCircle_SelNode_;
377 ACG::Vec3d moveCircle_LastHitPos_;
378 ACG::Vec3d moveCircle_LastHitNor_;
379 bool moveCircle_IsLocked;
380 bool moveCircle_IsFloating;
381
382 QAction* copyPaste_Action_;
383 int copyPaste_ObjectId_;
384 int copyPaste_ActionType_;
385 int copyPaste_NewObjectId_;
386 std::vector<ACG::Vec3d> copyPaste_RelativePoints_;
387 QPoint copyPaste_LastMouse;
388
389 /*
390 * \brief Handles the mouse event during a copy paste event
391 *
392 * Determines wether duplicate or instanciate is happening and performs the
393 * action, ending the mode.
394 */
395 void me_copyPasteMouse(QMouseEvent* _event);
396
409 bool createCircle_getPointOnMesh(TriMeshObject* _triMeshObject,
410 ACG::Vec3d _center,
411 ACG::Vec3d _pOnPlane,
412 ACG::Vec3d _n,
413 ACG::Vec3d* _pOut);
414
425 bool createCircle_getHitInfo(PolyLineCircleData* _circleData,
426 ACG::Vec3d _hit_Point,
427 ACG::Vec3d* _pOut = 0,
428 double* _r = 0,
429 ACG::Vec3d* _onPlane = 0);
430
440 ACG::Vec3d createCircle_getHit(PolyLineCircleData* _circleData, ACG::Vec3d _hit_point);
441
442 public slots:
443 /* \brief Creates the UI elements for the poly line(asserting it has circle data)
444 *
445 */
446 void createCircle_createUI(int _polyLineObjectID);
447
448 /* \brief Creates the UI elements for the poly line(asserting it has spline data)
449 *
450 */
451 void createSpline_createUI(int _polyLineObjectID);
452
453 private:
460 void updatePolyEllipse(PolyLineObject* _lineObject, unsigned int _pointCount);
461
466 void updateHandles(PolyLineObject* _lineObject);
467
474 void updatePolyBezierSpline(PolyLineObject* _lineObject, unsigned int _pointsPerSegment);
475
480 void updatePolyBezierHandles(PolyLineObject* _lineObject, ACG::SceneGraph::LineNode* _line);
481
489 ACG::Vec3d getPointOnMesh(PolyLineBezierSplineData* _SplineData, ACG::Vec3d _point, ACG::Vec3d* _nor = 0);
490
492 int createSpline_CurrSelIndex_;
494 int createSpline_LastSelIndex_;
495
497 ACG::SceneGraph::GlutPrimitiveNode* moveBezSpline_SelNode_;
499 int moveBezSpline_SelIndex_;
501 int moveBezSpline_SelSubIndex_;
502
503 int cur_merge_id_;
504
505 QTimer* smart_move_timer_;
506
507 PolyLineObject* cur_smart_move_obj_;
508
510 QtPlaneSelect* planeSelect_;
511
512 };
513
514 #if defined(INCLUDE_TEMPLATES) && !defined(POLYLINEPLUGIN_CC)
515 #define POLYLINEPLUGIN_TEMPLATES
516 #include "PolyLinePluginT.cc"
517 #endif
518
519 #endif //MOVEPLUGIN_HH
PolyLinePlugin::createSpline_CurrSelIndex_
int createSpline_CurrSelIndex_
The index of the currently created spline.
Definition: PolyLinePlugin.hh:492
PolyLinePlugin::deleteAction_
QAction * deleteAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:300
PolyLinePlugin::PolyLinePlugin
PolyLinePlugin()
default constructor
Definition: PolyLinePlugin.cc:104
PolyLine.hh
PolyLinePlugin::slotSetPolyLineMode
void slotSetPolyLineMode(QAction *_action)
Called by Toolbar to enable pick mode.
Definition: PolyLinePlugin.cc:2112
BaseInterface
Interface class from which all plugins have to be created.
Definition: BaseInterface.hh:76
PolyLinePlugin::slotScissorLinesButton
void slotScissorLinesButton()
Scissor Button for multiple polylines was hit.
Definition: PolyLinePlugin.cc:467
PolyLinePlugin::getMultipleIntersectionPoints
std::vector< std::vector< ACG::Vec3d > > getMultipleIntersectionPoints(MeshT *_mesh, ACG::Vec3d _planeNormal, ACG::Vec3d _planePoint)
get all points from the intersection between mesh and plane
Definition: PolyLinePluginT.cc:287
PolyLinePlugin::createCircle_LastSelIndex_
int createCircle_LastSelIndex_
Use this one to mark the last index to update the number of points.
Definition: PolyLinePlugin.hh:373
KeyInterface
Keyboard Event Interface.
Definition: KeyInterface.hh:76
PolyLinePlugin::generatePolyLineFromCut
int generatePolyLineFromCut(int _objectId, Vector _planePoint, Vector _planeNormal, int _polyLineId=-1)
Generates a polyLine of a plane intersection.
Definition: PolyLineScripting.cc:55
Logtype
Logtype
Log types for Message Window.
Definition: LoggingInterface.hh:103
ToolbarInterface.hh
BackupInterface.hh
TriangleMesh.hh
UpdateType
Update type class.
Definition: UpdateType.hh:70
PolyLinePlugin::getCuttedEdge
MeshT::EdgeHandle getCuttedEdge(MeshT &_mesh, ACG::Vec3d &_planeNormal, ACG::Vec3d &_planePoint)
get an edge of the mesh that is cut by the plane
Definition: PolyLinePluginT.cc:234
TriMeshObject
Type for a MeshObject containing a triangle mesh.
Definition: TriangleMesh.hh:73
PolyLinePlugin::updatePolyEllipse
void updatePolyEllipse(PolyLineObject *_lineObject, unsigned int _pointCount)
Generates points for the ellipse.
Definition: PolyLinePlugin_Circle.cc:138
PolyLinePlugin::polyLineAction_
QAction * polyLineAction_
Called by Toolbar to enable pick mode.
Definition: PolyLinePlugin.hh:276
PolyLinePlugin::updatePolyBezierHandles
void updatePolyBezierHandles(PolyLineObject *_lineObject, ACG::SceneGraph::LineNode *_line)
Updates all the handles on the PolyBezier.
Definition: PolyLinePlugin_BezierSpline.cc:82
LoggingInterface.hh
PolyLinePlugin::cutMultipleAction_
QAction * cutMultipleAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:306
KeyInterface.hh
LoggingInterface
Interface for all Plugins which do logging to the logging window of the framework.
Definition: LoggingInterface.hh:123
PolyLinePlugin::splitAction_
QAction * splitAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:304
PolyLinePlugin::toolBarActions_
QActionGroup * toolBarActions_
Called by Toolbar to enable pick mode.
Definition: PolyLinePlugin.hh:277
PolyLinePlugin::createCircle_getHitInfo
bool createCircle_getHitInfo(PolyLineCircleData *_circleData, ACG::Vec3d _hit_Point, ACG::Vec3d *_pOut=0, double *_r=0, ACG::Vec3d *_onPlane=0)
Calculates common info.
Definition: PolyLinePlugin_Circle.cc:109
PolyLineObject
Definition: PolyLineObject.hh:82
PolyLinePlugin::slotPickToolbarAction
void slotPickToolbarAction(QAction *_action)
Called by pick Toolbar.
Definition: PolyLinePlugin.cc:2090
PolyLinePlugin::EditMode
EditMode
Edit Mode of PolyLinePlugin.
Definition: PolyLinePlugin.hh:191
PolyLineCircleData
Definition: PolyLineCircleData.hh:58
MouseInterface.hh
PolyLinePlugin::pickToolbar_
QToolBar * pickToolbar_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:294
PolyLinePlugin::insertCircleAction_
QAction * insertCircleAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:298
PolyLinePlugin::mergeAction_
QAction * mergeAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:303
PolyLinePlugin::updateHandles
void updateHandles(PolyLineObject *_lineObject)
Updates the center, forward and side handle of the Poly ellipse.
Definition: PolyLinePlugin.cc:2047
PolyLinePlugin::description
QString description()
Description of the Plugin.
Definition: PolyLinePlugin.hh:212
PolyLinePlugin::insertAction_
QAction * insertAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:297
PolyLinePlugin::getIntersectionPoints
std::vector< ACG::Vec3d > getIntersectionPoints(MeshT *_mesh, uint _fh, ACG::Vec3d _planeNormal, ACG::Vec3d _planePoint, bool &_closed)
get the points from the closest connected intersection between mesh and plane
Definition: PolyLinePluginT.cc:204
LoadSaveInterface.hh
IdList
std::vector< int > IdList
Standard Type for id Lists used for scripting.
Definition: DataTypes.hh:192
PolyLinePlugin::createCircle_getPointOnMesh
bool createCircle_getPointOnMesh(TriMeshObject *_triMeshObject, ACG::Vec3d _center, ACG::Vec3d _pOnPlane, ACG::Vec3d _n, ACG::Vec3d *_pOut)
Calculates a point on the mesh.
Definition: PolyLinePlugin_Circle.cc:82
ContextMenuType
ContextMenuType
Definition: ContextMenuInterface.hh:72
PolyLineBezierSplineData
Definition: PolyLineBezierSplineData.hh:59
OpenMesh::VectorT
Definition: Vector11T.hh:83
PolyLinePlugin::updatePolyBezierSpline
void updatePolyBezierSpline(PolyLineObject *_lineObject, unsigned int _pointsPerSegment)
Generates points for the spline, updates handles.
Definition: PolyLinePlugin_BezierSpline.cc:105
ScriptInterface
Interface for all Plugins which provide scriptable Functions.
Definition: ScriptInterface.hh:67
ToolbarInterface
Add a toolbox to OpenFlipper.
Definition: ToolbarInterface.hh:79
PolyLinePlugin::slotTriggerCutPlaneSelect
void slotTriggerCutPlaneSelect()
Generate PolyLine after the cutPlane has been drawn.
Definition: PolyLinePlugin.cc:478
ContextMenuInterface.hh
PolyLinePlugin::moveAction_
QAction * moveAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:301
PolyLinePlugin::moveBezSpline_SelNode_
ACG::SceneGraph::GlutPrimitiveNode * moveBezSpline_SelNode_
The handle which is being dragged.
Definition: PolyLinePlugin.hh:497
PolyLinePlugin::~PolyLinePlugin
~PolyLinePlugin()
default destructor
Definition: PolyLinePlugin.hh:206
LoadSaveInterface
Interface for all plugins which want to Load or Save files and create Objects.
Definition: LoadSaveInterface.hh:68
PolyLinePlugin::generatePolyLinesFromCut
IdList generatePolyLinesFromCut(int _objectId, Vector _planePoint, Vector _planeNormal)
Generates a polyLine of a plane intersection.
Definition: PolyLineScripting.cc:163
PolyLinePlugin::createCircle_getHit
ACG::Vec3d createCircle_getHit(PolyLineCircleData *_circleData, ACG::Vec3d _hit_point)
Returns point on mesh or point on the normal plane.
Definition: PolyLinePlugin_Circle.cc:127
PolyLinePlugin::moveCircle_SelNode_
ACG::SceneGraph::GlutPrimitiveNode * moveCircle_SelNode_
The handle which is being dragged.
Definition: PolyLinePlugin.hh:375
PolyLinePlugin::insertSplineAction_
QAction * insertSplineAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:299
PolyMesh.hh
PolyLinePlugin::planeSelect_
QtPlaneSelect * planeSelect_
Plane selection tool.
Definition: PolyLinePlugin.hh:510
PolyLinePlugin::createCircle_CurrSelIndex_
int createCircle_CurrSelIndex_
The object which is being modified(created, dragged)
Definition: PolyLinePlugin.hh:371
QtPlaneSelect
Definition: QtPlaneSelect.hh:67
PolyLinePlugin::moveBezSpline_SelIndex_
int moveBezSpline_SelIndex_
The object which is being moved.
Definition: PolyLinePlugin.hh:499
PolyLinePlugin
Definition: PolyLinePlugin.hh:101
PickingInterface
Allow access to picking functions.
Definition: PickingInterface.hh:81
ACG::SceneGraph::LineNode
Definition: LineNode.hh:90
StatusbarInterface
Control OpenFlippers status bar.
Definition: StatusbarInterface.hh:96
PickingInterface.hh
ScriptInterface.hh
BaseInterface.hh
PolyLinePlugin::slotScissorButton
void slotScissorButton()
Scissor Button was hit.
Definition: PolyLinePlugin.cc:456
ContextMenuInterface
Interface class for creating custom context menus.
Definition: ContextMenuInterface.hh:101
MouseInterface
Interface class for receiving mouse events.
Definition: MouseInterface.hh:75
PolyLinePlugin::cutAction_
QAction * cutAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:305
PolyLineToolbarWidget
Definition: PolyLineToolbarWidget.hh:51
ToolboxInterface
Plugins can add its own toolbox to the main widget's toolbox area by using this interface.
Definition: ToolboxInterface.hh:85
DataType
Predefined datatypes.
Definition: DataTypes.hh:96
PolyLinePlugin::tool_
PolyLineToolbarWidget * tool_
Widget for Toolbox.
Definition: PolyLinePlugin.hh:266
Types.hh
StatusbarInterface.hh
PolyLinePlugin::pickToolBarActions_
QActionGroup * pickToolBarActions_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:295
PolyLinePlugin::createSpline_LastSelIndex_
int createSpline_LastSelIndex_
Use this one to mark the last index to update the number of points.
Definition: PolyLinePlugin.hh:494
PolyLinePlugin::toolbar_
QToolBar * toolbar_
Called by Toolbar to enable pick mode.
Definition: PolyLinePlugin.hh:279
PolyLinePlugin::getPointOnMesh
ACG::Vec3d getPointOnMesh(PolyLineBezierSplineData *_SplineData, ACG::Vec3d _point, ACG::Vec3d *_nor=0)
Returns the nearest point on the mesh or if none could be found the input.
Definition: PolyLinePlugin_BezierSpline.cc:63
ToolboxInterface.hh
PolyLinePlugin::moveCircle_LastHitPos_
ACG::Vec3d moveCircle_LastHitPos_
The last valid hit on the mesh.
Definition: PolyLinePlugin.hh:377
PolyLinePlugin::name
QString name()
Name of the Plugin.
Definition: PolyLinePlugin.hh:209
PolyLinePlugin::moveBezSpline_SelSubIndex_
int moveBezSpline_SelSubIndex_
The index of the control or handle being moved.
Definition: PolyLinePlugin.hh:501
ACG::SceneGraph::GlutPrimitiveNode
Definition: GlutPrimitiveNode.hh:88
PolyLinePlugin::smartMoveAction_
QAction * smartMoveAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:302