Developer Documentation

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 Q_PLUGIN_METADATA(IID "org.OpenFlipper.Plugins.Plugin-PolyLine")
127
128 signals:
129
130 // BaseInterface
131 void updateView();
132 void updatedObject(int _identifier, const UpdateType& _type);
133 void nodeVisibilityChanged(int _id);
134
135 // PickingInterface
136 void addPickMode( const std::string& _mode );
137 void addHiddenPickMode( const std::string& _mode );
138 void setPickModeToolbar (const std::string& _mode, QToolBar * _toolbar);
139 void setPickModeMouseTracking(const std::string& _mode , bool _mouseTracking);
140
141 // LoggingInterface
142 void log(Logtype _type, QString _message);
143 void log(QString _message);
144
145 // ToolbarInterface
146 void addToolbar(QToolBar* _toolbar);
147 void getToolBar( QString _name, QToolBar*& _toolbar);
148
149 // ScriptInterface
150 void scriptInfo( QString _functionName );
151
152 // ToolboxInterface
153 void addToolbox( QString _name , QWidget* _widget, QIcon* _icon);
154
155 void deleteObject( int _id );
156 void addEmptyObject( DataType _type, int& _id);
157
158 void registerKey(int _key, Qt::KeyboardModifiers _modifiers, QString _description, bool _multiUse = false);
159 void showStatusMessage(QString _message, int _timeout = 0);
160 void clearStatusMessage();
161
162 //ContextMenuInterface
163 void addContextMenuItem(QAction* _action ,DataType _objectType , ContextMenuType _type );
164
165 private slots :
166 // BaseInterface
167 void initializePlugin();
168
169 void slotEditModeChanged();
170
171 void slotMouseEvent( QMouseEvent* _event );
172 void slotKeyEvent(QKeyEvent* _event);
173
174 void slotPickModeChanged( const std::string& _mode);
175
176 void pluginsInitialized();
177
178 bool pick_triangle_mesh( QPoint mPos,
179 TriMeshObject*& _mesh_object_, TriMesh::FaceHandle& _fh, TriMesh::VertexHandle& _vh, ACG::Vec3d& _hitPoint);
180
181 void slotUpdateContextMenu(int objectId);
182 public slots :
183
184 void slotEnablePickMode(QString _name);
185
186 public :
187
189 enum EditMode { PL_NONE =0,
190 PL_INSERT=1,
191 PL_INSERTCIRCLE,
192 PL_INSERTSPLINE,
193 PL_DELETE,
194 PL_MOVE,
195 PL_SPLIT,
196 PL_MERGE,
197 PL_SMART_MOVE,
198 PL_COPY_PASTE };
199
201 PolyLinePlugin();
202
204 ~PolyLinePlugin() {};
205
207 QString name(){ return (QString("PolyLine")); };
208
210 QString description() { return (QString("Handling of PolyLines (Insertion/Deletion/Modeling/...")); };
211
212 public slots:
213
214 #ifdef EXTENDED_POLY_LINE
215 void slot_resample_on_edges();
216 #endif
217
218 private slots:
219
220 void slot_subdivide();
221 void slot_subdivide_percent(bool _checked);
222 void slot_decimate();
223 void slot_decimate_percent(bool _checked);
224
225 void slot_smooth();
226 void slot_smooth( PolyLineObject*& _pol);
227 void slot_project();
228 void slot_project( PolyLineObject*& _pol);
229 void slot_smooth_project();
230 void slot_smooth_project( PolyLineObject*& _pol);
231
232 void slot_smart_move_timer();
233
234 void slot_setCirclePointNum(int i);
235 void slot_setSplinePointNum(int i);
236
237 virtual void slotObjectUpdated( int _identifier, const UpdateType &_type );
238
239 void slot_duplicate();
240 void slot_instanciate();
241 void finishSpline();
242 private :
243
244 EditMode mode();
245
246 // mouse events
247 void me_insert ( QMouseEvent* _event );
248 void me_insertCircle( QMouseEvent* _event );
249 void me_insertSpline( QMouseEvent* _event );
250 void me_delete ( QMouseEvent* _event );
251 void me_move ( QMouseEvent* _event );
252 void me_split ( QMouseEvent* _event );
253 void me_merge ( QMouseEvent* _event );
254 void me_smart_move ( QMouseEvent* _event );
255
256 //===========================================================================
259 //===========================================================================
260
261 private :
262
264 PolyLineToolbarWidget* tool_;
265
268 //===========================================================================
271 //===========================================================================
272
273 private :
274 QAction* polyLineAction_;
275 QActionGroup* toolBarActions_;
276
277 QToolBar* toolbar_;
278
279 private slots:
280
282 void slotSetPolyLineMode(QAction* _action);
283
286 //===========================================================================
289 //===========================================================================
290
291 private :
292 QToolBar* pickToolbar_;
293 QActionGroup* pickToolBarActions_;
294
295 QAction* insertAction_;
296 QAction* insertCircleAction_;
297 QAction* insertSplineAction_;
298 QAction* deleteAction_;
299 QAction* moveAction_;
300 QAction* smartMoveAction_;
301 QAction* mergeAction_;
302 QAction* splitAction_;
303 QAction* cutAction_;
304 QAction* cutMultipleAction_;
305
306 private slots:
307
309 void slotPickToolbarAction(QAction* _action);
310
313 //===========================================================================
316 //===========================================================================
317
318 private:
319
321 template< class MeshT > std::vector< ACG::Vec3d >
322 getIntersectionPoints ( MeshT* _mesh, uint _fh, ACG::Vec3d _planeNormal ,
323 ACG::Vec3d _planePoint, bool& _closed );
324
326 template< class MeshT > std::vector< std::vector< ACG::Vec3d > >
327 getMultipleIntersectionPoints( MeshT* _mesh, ACG::Vec3d _planeNormal , ACG::Vec3d _planePoint );
328
330 template< class MeshT >
331 typename MeshT::EdgeHandle
332 getCuttedEdge(MeshT& _mesh, ACG::Vec3d& _planeNormal, ACG::Vec3d& _planePoint);
333
336 public slots:
337
338 QString version() { return QString("1.02"); };
339
340 //============================================
341
343 int generatePolyLineFromCut( int _objectId, Vector _planePoint, Vector _planeNormal, int _polyLineId = -1 );
344
346 IdList generatePolyLinesFromCut( int _objectId, Vector _planePoint, Vector _planeNormal );
347
348 private slots:
349
351 void slotScissorButton();
352
354 void slotScissorLinesButton();
355
357 void slotTriggerCutPlaneSelect();
358
359 private:
360 int cur_insert_id_;
361 PolyLineObject *cur_polyline_obj_;
362
363 int cur_move_id_;
364 PolyLine::Point* move_point_ref_;
365 PolyLine::Point* create_point_ref_;
366 PolyLine::Point move_point_orig_;
367
369 int createCircle_CurrSelIndex_;
371 int createCircle_LastSelIndex_;
373 ACG::SceneGraph::GlutPrimitiveNode* moveCircle_SelNode_;
375 ACG::Vec3d moveCircle_LastHitPos_;
376 ACG::Vec3d moveCircle_LastHitNor_;
377 bool moveCircle_IsLocked;
378 bool moveCircle_IsFloating;
379
380 QAction* copyPaste_Action_;
381 int copyPaste_ObjectId_;
382 int copyPaste_ActionType_;
383 int copyPaste_NewObjectId_;
384 std::vector<ACG::Vec3d> copyPaste_RelativePoints_;
385 QPoint copyPaste_LastMouse;
386
387 /*
388 * \brief Handles the mouse event during a copy paste event
389 *
390 * Determines wether duplicate or instanciate is happening and performs the
391 * action, ending the mode.
392 */
393 void me_copyPasteMouse(QMouseEvent* _event);
394
407 bool createCircle_getPointOnMesh(TriMeshObject* _triMeshObject,
408 ACG::Vec3d _center,
409 ACG::Vec3d _pOnPlane,
410 ACG::Vec3d _n,
411 ACG::Vec3d* _pOut);
412
423 bool createCircle_getHitInfo(PolyLineCircleData* _circleData,
424 ACG::Vec3d _hit_Point,
425 ACG::Vec3d* _pOut = 0,
426 double* _r = 0,
427 ACG::Vec3d* _onPlane = 0);
428
438 ACG::Vec3d createCircle_getHit(PolyLineCircleData* _circleData, ACG::Vec3d _hit_point);
439
440 public slots:
441 /* \brief Creates the UI elements for the poly line(asserting it has circle data)
442 *
443 */
444 void createCircle_createUI(int _polyLineObjectID);
445
446 /* \brief Creates the UI elements for the poly line(asserting it has spline data)
447 *
448 */
449 void createSpline_createUI(int _polyLineObjectID);
450
451 private:
458 void updatePolyEllipse(PolyLineObject* _lineObject, unsigned int _pointCount);
459
464 void updateHandles(PolyLineObject* _lineObject);
465
472 void updatePolyBezierSpline(PolyLineObject* _lineObject, unsigned int _pointsPerSegment);
473
478 void updatePolyBezierHandles(PolyLineObject* _lineObject, ACG::SceneGraph::LineNode* _line);
479
487 ACG::Vec3d getPointOnMesh(PolyLineBezierSplineData* _SplineData, ACG::Vec3d _point, ACG::Vec3d* _nor = 0);
488
490 int createSpline_CurrSelIndex_;
492 int createSpline_LastSelIndex_;
493
495 ACG::SceneGraph::GlutPrimitiveNode* moveBezSpline_SelNode_;
497 int moveBezSpline_SelIndex_;
499 int moveBezSpline_SelSubIndex_;
500
501 int cur_merge_id_;
502
503 QTimer* smart_move_timer_;
504
505 PolyLineObject* cur_smart_move_obj_;
506
508 QtPlaneSelect* planeSelect_;
509
510 };
511
512 #if defined(INCLUDE_TEMPLATES) && !defined(POLYLINEPLUGIN_CC)
513 #define POLYLINEPLUGIN_TEMPLATES
514 #include "PolyLinePluginT_impl.hh"
515 #endif
516
517 #endif //MOVEPLUGIN_HH
PolyLinePlugin::planeSelect_
QtPlaneSelect * planeSelect_
Plane selection tool.
Definition: PolyLinePlugin.hh:508
PolyLinePlugin::slotSetPolyLineMode
void slotSetPolyLineMode(QAction *_action)
Called by Toolbar to enable pick mode.
Definition: PolyLinePlugin.cc:2111
ScriptInterface.hh
PolyLinePlugin::mergeAction_
QAction * mergeAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:301
PolyLinePlugin::PolyLinePlugin
PolyLinePlugin()
default constructor
Definition: PolyLinePlugin.cc:102
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::moveBezSpline_SelIndex_
int moveBezSpline_SelIndex_
The object which is being moved.
Definition: PolyLinePlugin.hh:497
PolyLinePlugin::toolBarActions_
QActionGroup * toolBarActions_
Called by Toolbar to enable pick mode.
Definition: PolyLinePlugin.hh:275
PolyLinePlugin::updatePolyEllipse
void updatePolyEllipse(PolyLineObject *_lineObject, unsigned int _pointCount)
Generates points for the ellipse.
Definition: PolyLinePlugin_Circle.cc:138
PolyLinePlugin::pickToolbar_
QToolBar * pickToolbar_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:292
PolyLinePlugin::updateHandles
void updateHandles(PolyLineObject *_lineObject)
Updates the center, forward and side handle of the Poly ellipse.
Definition: PolyLinePlugin.cc:2046
ACG::SceneGraph::GlutPrimitiveNode
Definition: GlutPrimitiveNode.hh:82
LoadSaveInterface.hh
ToolbarInterface
Add a toolbox to OpenFlipper.
Definition: ToolbarInterface.hh:62
MouseInterface
Interface class for receiving mouse events.
Definition: MouseInterface.hh:61
ToolboxInterface
Plugins can add its own toolbox to the main widget&#39;s toolbox area by using this interface.
Definition: ToolboxInterface.hh:68
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
PolyLinePlugin::updatePolyBezierSpline
void updatePolyBezierSpline(PolyLineObject *_lineObject, unsigned int _pointsPerSegment)
Generates points for the spline, updates handles.
Definition: PolyLinePlugin_BezierSpline.cc:105
PolyLinePlugin::toolbar_
QToolBar * toolbar_
Called by Toolbar to enable pick mode.
Definition: PolyLinePlugin.hh:277
PolyLinePlugin::insertAction_
QAction * insertAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:295
PolyLinePlugin::moveBezSpline_SelNode_
ACG::SceneGraph::GlutPrimitiveNode * moveBezSpline_SelNode_
The handle which is being dragged.
Definition: PolyLinePlugin.hh:495
PolyLinePlugin::~PolyLinePlugin
~PolyLinePlugin()
default destructor
Definition: PolyLinePlugin.hh:204
Logtype
Logtype
Log types for Message Window.
Definition: LoggingInterface.hh:92
MouseInterface.hh
PolyLinePlugin::tool_
PolyLineToolbarWidget * tool_
Widget for Toolbox.
Definition: PolyLinePlugin.hh:264
OpenMesh::VectorT
Definition: Vector11T.hh:83
PolyLinePlugin::createCircle_LastSelIndex_
int createCircle_LastSelIndex_
Use this one to mark the last index to update the number of points.
Definition: PolyLinePlugin.hh:371
PolyLinePlugin::moveCircle_LastHitPos_
ACG::Vec3d moveCircle_LastHitPos_
The last valid hit on the mesh.
Definition: PolyLinePlugin.hh:375
PolyLinePlugin::pickToolBarActions_
QActionGroup * pickToolBarActions_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:293
ACG::SceneGraph::LineNode
Definition: LineNode.hh:84
PolyLinePlugin::insertCircleAction_
QAction * insertCircleAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:296
DataType
Predefined datatypes.
Definition: DataTypes.hh:83
PickingInterface.hh
LoggingInterface
Interface for all Plugins which do logging to the logging window of the framework.
Definition: LoggingInterface.hh:112
PolyLineObject
Definition: PolyLineObject.hh:76
PolyLineCircleData
Definition: PolyLineCircleData.hh:52
PolyLinePlugin::createCircle_CurrSelIndex_
int createCircle_CurrSelIndex_
The object which is being modified(created, dragged)
Definition: PolyLinePlugin.hh:369
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_impl.hh:234
PolyLinePlugin::EditMode
EditMode
Edit Mode of PolyLinePlugin.
Definition: PolyLinePlugin.hh:189
LoggingInterface.hh
IdList
std::vector< int > IdList
Standard Type for id Lists used for scripting.
Definition: DataTypes.hh:179
PolyLinePlugin::moveBezSpline_SelSubIndex_
int moveBezSpline_SelSubIndex_
The index of the control or handle being moved.
Definition: PolyLinePlugin.hh:499
PolyLinePlugin::deleteAction_
QAction * deleteAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:298
PolyLinePlugin::slotScissorButton
void slotScissorButton()
Scissor Button was hit.
Definition: PolyLinePlugin.cc:454
PolyLine.hh
PolyLinePlugin::moveAction_
QAction * moveAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:299
ToolbarInterface.hh
TriangleMesh.hh
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_impl.hh:287
PolyLinePlugin::slotTriggerCutPlaneSelect
void slotTriggerCutPlaneSelect()
Generate PolyLine after the cutPlane has been drawn.
Definition: PolyLinePlugin.cc:476
PolyLinePlugin::polyLineAction_
QAction * polyLineAction_
Called by Toolbar to enable pick mode.
Definition: PolyLinePlugin.hh:274
PolyLinePlugin::generatePolyLineFromCut
int generatePolyLineFromCut(int _objectId, Vector _planePoint, Vector _planeNormal, int _polyLineId=-1)
Generates a polyLine of a plane intersection.
Definition: PolyLineScripting.cc:55
ContextMenuType
ContextMenuType
Definition: ContextMenuInterface.hh:56
QtPlaneSelect
Definition: QtPlaneSelect.hh:62
PolyLinePlugin::splitAction_
QAction * splitAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:302
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_impl.hh:204
PolyLinePlugin::smartMoveAction_
QAction * smartMoveAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:300
TriMeshObject
Type for a MeshObject containing a triangle mesh.
Definition: TriangleMesh.hh:67
UpdateType
Update type class.
Definition: UpdateType.hh:60
StatusbarInterface
Control OpenFlippers status bar.
Definition: StatusbarInterface.hh:81
PolyMesh.hh
PolyLineToolbarWidget
Definition: PolyLineToolbarWidget.hh:49
PolyLinePlugin::createSpline_CurrSelIndex_
int createSpline_CurrSelIndex_
The index of the currently created spline.
Definition: PolyLinePlugin.hh:490
PolyLinePlugin::updatePolyBezierHandles
void updatePolyBezierHandles(PolyLineObject *_lineObject, ACG::SceneGraph::LineNode *_line)
Updates all the handles on the PolyBezier.
Definition: PolyLinePlugin_BezierSpline.cc:82
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::name
QString name()
Name of the Plugin.
Definition: PolyLinePlugin.hh:207
KeyInterface
Keyboard Event Interface.
Definition: KeyInterface.hh:59
PolyLinePlugin::cutMultipleAction_
QAction * cutMultipleAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:304
PolyLinePlugin::slotScissorLinesButton
void slotScissorLinesButton()
Scissor Button for multiple polylines was hit.
Definition: PolyLinePlugin.cc:465
PolyLinePlugin::createSpline_LastSelIndex_
int createSpline_LastSelIndex_
Use this one to mark the last index to update the number of points.
Definition: PolyLinePlugin.hh:492
PolyLinePlugin::cutAction_
QAction * cutAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:303
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
PolyLinePlugin::insertSplineAction_
QAction * insertSplineAction_
Called by pick Toolbar.
Definition: PolyLinePlugin.hh:297
ScriptInterface
Interface for all Plugins which provide scriptable Functions.
Definition: ScriptInterface.hh:58
PolyLinePlugin
Definition: PolyLinePlugin.hh:101
Types.hh
PolyLinePlugin::slotPickToolbarAction
void slotPickToolbarAction(QAction *_action)
Called by pick Toolbar.
Definition: PolyLinePlugin.cc:2089
PolyLinePlugin::moveCircle_SelNode_
ACG::SceneGraph::GlutPrimitiveNode * moveCircle_SelNode_
The handle which is being dragged.
Definition: PolyLinePlugin.hh:373
StatusbarInterface.hh
ContextMenuInterface.hh
ContextMenuInterface
Interface class for creating custom context menus.
Definition: ContextMenuInterface.hh:85
PolyLinePlugin::generatePolyLinesFromCut
IdList generatePolyLinesFromCut(int _objectId, Vector _planePoint, Vector _planeNormal)
Generates a polyLine of a plane intersection.
Definition: PolyLineScripting.cc:163
BaseInterface
Interface class from which all plugins have to be created.
Definition: BaseInterface.hh:65
BaseInterface.hh
PickingInterface
Allow access to picking functions.
Definition: PickingInterface.hh:62
BackupInterface.hh
PolyLineBezierSplineData
Definition: PolyLineBezierSplineData.hh:53
LoadSaveInterface
Interface for all plugins which want to Load or Save files and create Objects.
Definition: LoadSaveInterface.hh:59
PolyLinePlugin::description
QString description()
Description of the Plugin.
Definition: PolyLinePlugin.hh:210
KeyInterface.hh