after presentation at Inria

This commit is contained in:
Andreas Fabri 2008-06-25 19:54:33 +00:00
parent 132153d513
commit 2d3816ec73
7 changed files with 189 additions and 115 deletions

View File

@ -27,7 +27,7 @@ link_directories(../../src/CGALQt4)
qt4_wrap_ui( UI_FILES MainWindow.ui ) qt4_wrap_ui( UI_FILES MainWindow.ui )
# qrc files (resources files, that contain icons, at least) # qrc files (resources files, that contain icons, at least)
qt4_add_resources ( RESOURCE_FILES ./MainWindow.qrc ) qt4_add_resources ( RESOURCE_FILES ./MainWindow.qrc ../icons/Input.qrc ../icons/File.qrc ../icons/Triangulation_2.qrc )
# use the Qt MOC preprocessor on classes that derives from QObject # use the Qt MOC preprocessor on classes that derives from QObject
qt4_automoc( MainWindow.cpp ) qt4_automoc( MainWindow.cpp )
@ -39,8 +39,9 @@ add_executable ( delaunay main.cpp MainWindow.cpp ${UI_FILES} ${RESOURCE_FILES}
target_link_libraries( delaunay ${QT_LIBRARIES} ) target_link_libraries( delaunay ${QT_LIBRARIES} )
if ( NOT AUTO_LINK_ENABLED ) if ( NOT AUTO_LINK_ENABLED )
# If auto-link is not enabled (on Linux for example), link with libCGAL explicitly. # If auto-link is not enabled (on Linux for example), link with libCGAL explicitly.
target_link_libraries( delaunay CGAL CGAL-Qt4 ) target_link_libraries( delaunay CGAL )
endif() endif()
target_link_libraries( delaunay CGAL-Qt4 )
#---------------------------------------- #----------------------------------------
# minimal graphics view executable: min # minimal graphics view executable: min

View File

@ -12,13 +12,13 @@
#include <CGAL/Constrained_Delaunay_triangulation_2.h> #include <CGAL/Constrained_Delaunay_triangulation_2.h>
#include <CGAL/point_generators_2.h> #include <CGAL/point_generators_2.h>
#include "QTriangulationCircumcenter_2.h" #include "TriangulationCircumcircle.h"
#include "QTriangulationMovingPoint_2.h" #include "TriangulationMovingPoint_2.h"
#include <CGAL/IO/QtPolylineInput.h> #include <CGAL/Qt/GraphicsViewPolylineInput.h>
#include <CGAL/IO/QtTriangulationGraphicsItem.h> #include <CGAL/Qt/TriangulationGraphicsItem.h>
#include <CGAL/IO/QtConstrainedTriangulationGraphicsItem.h> #include <CGAL/Qt/ConstrainedTriangulationGraphicsItem.h>
#include <CGAL/IO/QtNavigation.h> #include <CGAL/Qt/GraphicsViewNavigation.h>
#include <QGLWidget> #include <QGLWidget>
@ -30,7 +30,7 @@ MainWindow::MainWindow()
setupStatusBar(); setupStatusBar();
// Add a GraphicItem for the Delaunay triangulation // Add a GraphicItem for the Delaunay triangulation
dgi = new CGAL::QtConstrainedTriangulationGraphicsItem<Delaunay>(&dt); dgi = new CGAL::Qt::ConstrainedTriangulationGraphicsItem<Delaunay>(&dt);
QObject::connect(this, SIGNAL(changed()), QObject::connect(this, SIGNAL(changed()),
dgi, SLOT(modelChanged())); dgi, SLOT(modelChanged()));
@ -41,19 +41,19 @@ MainWindow::MainWindow()
// Setup input handlers. They get events before the scene gets them // Setup input handlers. They get events before the scene gets them
// and the input they generate is passed to the triangulation with // and the input they generate is passed to the triangulation with
// the signal/slot mechanism // the signal/slot mechanism
pi = new CGAL::QtPolylineInput<K>(this, &scene, 0, false); // inputs polylines which are not closed pi = new CGAL::Qt::GraphicsViewPolylineInput<K>(this, &scene, 0, false); // inputs polylines which are not closed
QObject::connect(pi, SIGNAL(generate(CGAL::Object)), QObject::connect(pi, SIGNAL(generate(CGAL::Object)),
this, SLOT(process(CGAL::Object))); this, SLOT(processInput(CGAL::Object)));
mp = new CGAL::QTriangulationMovingPoint_2<Delaunay>(&dt, this); mp = new CGAL::Qt::TriangulationMovingPoint<Delaunay>(&dt, this);
// QTriangulationMovingPoint_2<Delaunay> generates an empty Object() each // TriangulationMovingPoint<Delaunay> generates an empty Object() each
// time the moving point moves. // time the moving point moves.
// The following connection is for the purpose of emitting changed(). // The following connection is for the purpose of emitting changed().
QObject::connect(mp, SIGNAL(generate(CGAL::Object)), QObject::connect(mp, SIGNAL(generate(CGAL::Object)),
this, SLOT(process(CGAL::Object))); this, SLOT(processInput(CGAL::Object)));
tcc = new CGAL::QTriangulationCircumcenter_2<Delaunay>(&scene, &dt, this); tcc = new CGAL::Qt::TriangulationCircumcircle<Delaunay>(&scene, &dt, this);
tcc->setPen(QPen(Qt::red, 0, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); tcc->setPen(QPen(Qt::red, 0, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
@ -85,7 +85,7 @@ MainWindow::MainWindow()
// The navigation adds zooming and translation functionality to the // The navigation adds zooming and translation functionality to the
// QGraphicsView // QGraphicsView
navigation = new CGAL::QtNavigation(this->graphicsView); navigation = new CGAL::Qt::GraphicsViewNavigation(this->graphicsView);
this->graphicsView->viewport()->installEventFilter(navigation); this->graphicsView->viewport()->installEventFilter(navigation);
this->graphicsView->installEventFilter(navigation); this->graphicsView->installEventFilter(navigation);
@ -94,7 +94,7 @@ MainWindow::MainWindow()
} }
void void
MainWindow::process(CGAL::Object o) MainWindow::processInput(CGAL::Object o)
{ {
std::list<Point_2> points; std::list<Point_2> points;
if(CGAL::assign(points, o)){ if(CGAL::assign(points, o)){

View File

@ -12,13 +12,15 @@
#include "ui_MainWindow.h" #include "ui_MainWindow.h"
namespace CGAL { namespace CGAL {
class QtNavigation; namespace Qt {
template <class Delaunay> class QtTriangulationGraphicsItem; class GraphicsViewNavigation;
template <class Delaunay> class QtConstrainedTriangulationGraphicsItem; template <class Delaunay> class TriangulationGraphicsItem;
template <class Delaunay> class QTriangulationMovingPoint_2; template <class Delaunay> class ConstrainedTriangulationGraphicsItem;
template <class Delaunay> class QTriangulationCircumcenter_2; template <class Delaunay> class TriangulationMovingPoint;
template <class K> class QtPolylineInput; template <class Delaunay> class TriangulationCircumcircle;
} // end namespace CGAL template <class K> class GraphicsItemPolylineInput;
} // namespace Qt
} // namespace CGAL
class QLabel; class QLabel;
class QWidget; class QWidget;
@ -42,15 +44,15 @@ private:
Delaunay dt; Delaunay dt;
QGraphicsScene scene; QGraphicsScene scene;
CGAL::QtNavigation* navigation; CGAL::Qt::GraphicsViewNavigation* navigation;
CGAL::QtConstrainedTriangulationGraphicsItem<Delaunay> * dgi; CGAL::Qt::ConstrainedTriangulationGraphicsItem<Delaunay> * dgi;
QLabel* xycoord ; QLabel* xycoord ;
CGAL::QTriangulationMovingPoint_2<Delaunay> * mp; CGAL::Qt::TriangulationMovingPoint<Delaunay> * mp;
CGAL::QtPolylineInput<K> * pi; CGAL::Qt::GraphicsViewPolylineInput<K> * pi;
CGAL::QTriangulationCircumcenter_2<Delaunay> *tcc; CGAL::Qt::TriangulationCircumcircle<Delaunay> *tcc;
public: public:
MainWindow(); MainWindow();
@ -82,7 +84,7 @@ private:
public slots: public slots:
void process(CGAL::Object o); void processInput(CGAL::Object o);
void on_actionUse_OpenGL_toggled(bool checked); void on_actionUse_OpenGL_toggled(bool checked);

View File

@ -13,18 +13,9 @@
<string>CGAL Constrained Delaunay Triangulation</string> <string>CGAL Constrained Delaunay Triangulation</string>
</property> </property>
<property name="windowIcon" > <property name="windowIcon" >
<iconset resource="../icons/Logos.qrc" > <iconset resource="../icons/Logos.qrc" >:/cgal/logos/cgal_logo.xpm</iconset>
<normaloff>:/cgal/logos/cgal_logo.xpm</normaloff>:/cgal/logos/cgal_logo.xpm</iconset>
</property> </property>
<widget class="QWidget" name="centralwidget" > <widget class="QWidget" name="centralwidget" >
<property name="geometry" >
<rect>
<x>0</x>
<y>66</y>
<width>400</width>
<height>209</height>
</rect>
</property>
<layout class="QGridLayout" > <layout class="QGridLayout" >
<item row="0" column="0" > <item row="0" column="0" >
<widget class="QGraphicsView" name="graphicsView" > <widget class="QGraphicsView" name="graphicsView" >
@ -50,7 +41,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>400</width> <width>400</width>
<height>29</height> <height>19</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuFile" > <widget class="QMenu" name="menuFile" >
@ -63,12 +54,14 @@
<addaction name="actionSaveConstraints" /> <addaction name="actionSaveConstraints" />
<addaction name="separator" /> <addaction name="separator" />
<addaction name="actionExit" /> <addaction name="actionExit" />
<addaction name="actionToto" />
</widget> </widget>
<widget class="QMenu" name="menuEdit" > <widget class="QMenu" name="menuEdit" >
<property name="title" > <property name="title" >
<string>&amp;Edit</string> <string>&amp;Edit</string>
</property> </property>
<addaction name="actionInsertRandomPoints" /> <addaction name="actionInsertRandomPoints" />
<addaction name="actionDisplay_Nearest_Neighbor" />
</widget> </widget>
<widget class="QMenu" name="menuTools" > <widget class="QMenu" name="menuTools" >
<property name="title" > <property name="title" >
@ -101,25 +94,8 @@
<addaction name="menuOptions" /> <addaction name="menuOptions" />
<addaction name="menuHelp" /> <addaction name="menuHelp" />
</widget> </widget>
<widget class="QStatusBar" name="statusbar" > <widget class="QStatusBar" name="statusbar" />
<property name="geometry" >
<rect>
<x>0</x>
<y>275</y>
<width>400</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="fileToolBar" > <widget class="QToolBar" name="fileToolBar" >
<property name="geometry" >
<rect>
<x>0</x>
<y>29</y>
<width>116</width>
<height>37</height>
</rect>
</property>
<property name="windowTitle" > <property name="windowTitle" >
<string>File Tools</string> <string>File Tools</string>
</property> </property>
@ -134,14 +110,6 @@
<addaction name="actionSaveConstraints" /> <addaction name="actionSaveConstraints" />
</widget> </widget>
<widget class="QToolBar" name="toolBar" > <widget class="QToolBar" name="toolBar" >
<property name="geometry" >
<rect>
<x>116</x>
<y>29</y>
<width>284</width>
<height>37</height>
</rect>
</property>
<property name="windowTitle" > <property name="windowTitle" >
<string>Visualization Tools</string> <string>Visualization Tools</string>
</property> </property>
@ -158,6 +126,18 @@
<addaction name="actionCircumcenter" /> <addaction name="actionCircumcenter" />
<addaction name="actionRecenter" /> <addaction name="actionRecenter" />
</widget> </widget>
<widget class="QToolBar" name="toolBar_2" >
<property name="windowTitle" >
<string>toolBar_2</string>
</property>
<attribute name="toolBarArea" >
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak" >
<bool>false</bool>
</attribute>
<addaction name="actionDisplay_Nearest_Neighbor" />
</widget>
<action name="actionAbout" > <action name="actionAbout" >
<property name="text" > <property name="text" >
<string>&amp;About</string> <string>&amp;About</string>
@ -189,8 +169,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="icon" > <property name="icon" >
<iconset resource="MainWindow.qrc" > <iconset resource="MainWindow.qrc" >:/cgal/Actions/icons/movingPoint.png</iconset>
<normaloff>:/cgal/Actions/icons/movingPoint.png</normaloff>:/cgal/Actions/icons/movingPoint.png</iconset>
</property> </property>
<property name="text" > <property name="text" >
<string>&amp;Moving Point</string> <string>&amp;Moving Point</string>
@ -213,8 +192,7 @@
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="icon" > <property name="icon" >
<iconset resource="../icons/Input.qrc" > <iconset resource="../icons/Input.qrc" >:/cgal/Input/inputPolyline.png</iconset>
<normaloff>:/cgal/Input/inputPolyline.png</normaloff>:/cgal/Input/inputPolyline.png</iconset>
</property> </property>
<property name="text" > <property name="text" >
<string>&amp;Insert Polyline</string> <string>&amp;Insert Polyline</string>
@ -228,8 +206,7 @@
</action> </action>
<action name="actionClear" > <action name="actionClear" >
<property name="icon" > <property name="icon" >
<iconset resource="../icons/File.qrc" > <iconset resource="../icons/File.qrc" >:/cgal/fileToolbar/fileNew.png</iconset>
<normaloff>:/cgal/fileToolbar/fileNew.png</normaloff>:/cgal/fileToolbar/fileNew.png</iconset>
</property> </property>
<property name="text" > <property name="text" >
<string>&amp;Clear</string> <string>&amp;Clear</string>
@ -246,8 +223,7 @@
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="icon" > <property name="icon" >
<iconset resource="../icons/Triangulation_2.qrc" > <iconset resource="../icons/Triangulation_2.qrc" >:/cgal/Triangulation_2/Voronoi_diagram_2.png</iconset>
<normaloff>:/cgal/Triangulation_2/Voronoi_diagram_2.png</normaloff>:/cgal/Triangulation_2/Voronoi_diagram_2.png</iconset>
</property> </property>
<property name="text" > <property name="text" >
<string>Show &amp;Voronoi Diagram</string> <string>Show &amp;Voronoi Diagram</string>
@ -264,8 +240,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="icon" > <property name="icon" >
<iconset resource="../icons/Triangulation_2.qrc" > <iconset resource="../icons/Triangulation_2.qrc" >:/cgal/Triangulation_2/Delaunay_triangulation_2.png</iconset>
<normaloff>:/cgal/Triangulation_2/Delaunay_triangulation_2.png</normaloff>:/cgal/Triangulation_2/Delaunay_triangulation_2.png</iconset>
</property> </property>
<property name="text" > <property name="text" >
<string>Show &amp;Delaunay Triangulation</string> <string>Show &amp;Delaunay Triangulation</string>
@ -276,8 +251,7 @@
</action> </action>
<action name="actionLoadConstraints" > <action name="actionLoadConstraints" >
<property name="icon" > <property name="icon" >
<iconset resource="../icons/File.qrc" > <iconset resource="../icons/File.qrc" >:/cgal/fileToolbar/fileOpen.png</iconset>
<normaloff>:/cgal/fileToolbar/fileOpen.png</normaloff>:/cgal/fileToolbar/fileOpen.png</iconset>
</property> </property>
<property name="text" > <property name="text" >
<string>&amp;Load Constraints</string> <string>&amp;Load Constraints</string>
@ -288,8 +262,7 @@
</action> </action>
<action name="actionSaveConstraints" > <action name="actionSaveConstraints" >
<property name="icon" > <property name="icon" >
<iconset resource="../icons/File.qrc" > <iconset resource="../icons/File.qrc" >:/cgal/fileToolbar/fileSave.png</iconset>
<normaloff>:/cgal/fileToolbar/fileSave.png</normaloff>:/cgal/fileToolbar/fileSave.png</iconset>
</property> </property>
<property name="text" > <property name="text" >
<string>&amp;Save Constraints</string> <string>&amp;Save Constraints</string>
@ -303,8 +276,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="icon" > <property name="icon" >
<iconset resource="MainWindow.qrc" > <iconset resource="MainWindow.qrc" >:/cgal/Actions/icons/circumcenter.png</iconset>
<normaloff>:/cgal/Actions/icons/circumcenter.png</normaloff>:/cgal/Actions/icons/circumcenter.png</iconset>
</property> </property>
<property name="text" > <property name="text" >
<string>&amp;Circumcenter</string> <string>&amp;Circumcenter</string>
@ -329,8 +301,7 @@
</action> </action>
<action name="actionRecenter" > <action name="actionRecenter" >
<property name="icon" > <property name="icon" >
<iconset resource="../icons/Input.qrc" > <iconset resource="../icons/Input.qrc" >:/cgal/Input/zoom-best-fit.svg</iconset>
<normaloff>:/cgal/Input/zoom-best-fit.svg</normaloff>:/cgal/Input/zoom-best-fit.svg</iconset>
</property> </property>
<property name="text" > <property name="text" >
<string>Re&amp;center the viewport</string> <string>Re&amp;center the viewport</string>
@ -350,6 +321,22 @@
<string>Ctrl+A</string> <string>Ctrl+A</string>
</property> </property>
</action> </action>
<action name="actionToto" >
<property name="text" >
<string>toto</string>
</property>
</action>
<action name="actionDisplay_Nearest_Neighbor" >
<property name="checkable" >
<bool>true</bool>
</property>
<property name="icon" >
<iconset resource="MainWindow.qrc" >:/cgal/Actions/icons/circumcenter.png</iconset>
</property>
<property name="text" >
<string>Display Nearest Neighbor</string>
</property>
</action>
</widget> </widget>
<resources> <resources>
<include location="MainWindow.qrc" /> <include location="MainWindow.qrc" />

View File

@ -1,7 +1,6 @@
#ifndef CGAL_Q_TRIANGULATION_CIRCUMCENTER_2 #ifndef CGAL_QT_TRIANGULATION_CIRCUMCIRCLE_H
#define CGAL_Q_TRIANGULATION_CIRCUMCENTER_2 #define CGAL_QT_TRIANGULATION_CIRCUMCIRCLE_H
#include <CGAL/IO/QtInput.h>
#include <QGraphicsSceneMouseEvent> #include <QGraphicsSceneMouseEvent>
#include <QGraphicsScene> #include <QGraphicsScene>
#include <QGraphicsEllipseItem> #include <QGraphicsEllipseItem>
@ -9,16 +8,17 @@
#include <QPen> #include <QPen>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Qt/GraphicsViewInput.h>
namespace CGAL { namespace CGAL {
namespace Qt {
template <typename DT> template <typename DT>
class QTriangulationCircumcenter_2 : public QtInput class TriangulationCircumcircle_2 : public GraphicsViewInput
{ {
public: public:
QTriangulationCircumcenter_2(QGraphicsScene* s, DT * dt_, QObject* parent); QTriangulationCircumcircle_2(QGraphicsScene* s, DT * dt_, QObject* parent);
~QTriangulationCircumcenter_2(); ~QTriangulationCircumcircle_2();
void setPen(const QPen& pen); void setPen(const QPen& pen);
@ -40,7 +40,7 @@ private:
template <typename T> template <typename T>
QTriangulationCircumcenter_2<T>::QTriangulationCircumcenter_2(QGraphicsScene* s, QTriangulationCircumcircle_2<T>::QTriangulationCircumcircle_2(QGraphicsScene* s,
T * dt_, T * dt_,
QObject* parent) QObject* parent)
: QtInput(parent), dt(dt_), scene_(s) : QtInput(parent), dt(dt_), scene_(s)
@ -50,28 +50,32 @@ QTriangulationCircumcenter_2<T>::QTriangulationCircumcenter_2(QGraphicsScene* s,
scene_->addItem(circle); scene_->addItem(circle);
} }
template <typename T> template <typename T>
QTriangulationCircumcenter_2<T>::~QTriangulationCircumcenter_2() QTriangulationCircumcircle_2<T>::~QTriangulationCircumcircle_2()
{ {
} }
template <typename T> template <typename T>
void void
QTriangulationCircumcenter_2<T>::setPen(const QPen& pen) QTriangulationCircumcircle_2<T>::setPen(const QPen& pen)
{ {
circle->setPen(pen); circle->setPen(pen);
} }
template <typename T> template <typename T>
void void
QTriangulationCircumcenter_2<T>::show() QTriangulationCircumcircle_2<T>::show()
{ {
circle->show(); circle->show();
} }
template <typename T> template <typename T>
void void
QTriangulationCircumcenter_2<T>::hide() QTriangulationCircumcircle_2<T>::hide()
{ {
circle->hide(); circle->hide();
} }
@ -79,7 +83,7 @@ QTriangulationCircumcenter_2<T>::hide()
template <typename T> template <typename T>
void void
QTriangulationCircumcenter_2<T>::mouseMoveEvent(QGraphicsSceneMouseEvent *event) QTriangulationCircumcircle_2<T>::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{ {
if(dt->dimension() != 2){ if(dt->dimension() != 2){
circle->hide(); circle->hide();
@ -102,7 +106,7 @@ QTriangulationCircumcenter_2<T>::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
template <typename T> template <typename T>
bool bool
QTriangulationCircumcenter_2<T>::eventFilter(QObject *obj, QEvent *event) QTriangulationCircumcircle_2<T>::eventFilter(QObject *obj, QEvent *event)
{ {
if (event->type() == QEvent::GraphicsSceneMouseMove) { if (event->type() == QEvent::GraphicsSceneMouseMove) {
QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent *>(event); QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent *>(event);
@ -114,7 +118,7 @@ QTriangulationCircumcenter_2<T>::eventFilter(QObject *obj, QEvent *event)
} }
} }
} // namespace Qt
} // namespace CGAL } // namespace CGAL
#endif // CGAL_Q_TRIANGULATION_CIRCUMCENTER_2 #endif // CGAL_QT_TRIANGULATION_CIRCUMCIRCLE_H

View File

@ -1,6 +1,6 @@
#ifndef CGAL_Q_TRIANGULATION_MOVING_POINT_2 #ifndef CGAL_QT_TRIANGULATION_MOVING_POINT
#define CGAL_Q_TRIANGULATION_MOVING_POINT_2 #define CGAL_QT_TRIANGULATION_MOVING_POINT
#include <CGAL/IO/QtInput.h> #include <CGAL/IO/QtInput.h>
#include <QGraphicsSceneMouseEvent> #include <QGraphicsSceneMouseEvent>
@ -10,16 +10,17 @@
namespace CGAL { namespace CGAL {
namespace Qt {
template <typename DT> template <typename DT>
class QTriangulationMovingPoint_2 : public QtInput class TriangulationMovingPoint : public GraphicsViewInput
{ {
public: public:
typedef typename DT::Face_handle Face_handle; typedef typename DT::Face_handle Face_handle;
typedef typename DT::Vertex_handle Vertex_handle; typedef typename DT::Vertex_handle Vertex_handle;
typedef typename DT::Point Point; typedef typename DT::Point Point;
QTriangulationMovingPoint_2(DT * dt_, QObject* parent); TriangulationMovingPoint(DT * dt_, QObject* parent);
protected: protected:
void localize_and_insert_point(QPointF qt_point); void localize_and_insert_point(QPointF qt_point);
@ -36,15 +37,15 @@ protected:
template <typename T> template <typename T>
QTriangulationMovingPoint_2<T>::QTriangulationMovingPoint_2(T * dt_, TriangulationMovingPoint_2<T>::TriangulationMovingPoint_2(T * dt_,
QObject* parent) QObject* parent)
: QtInput(parent), dt(dt_), movePointToInsert(false), vh() : GraphicsViewInput(parent), dt(dt_), movePointToInsert(false), vh()
{} {}
template <typename T> template <typename T>
void void
QTriangulationMovingPoint_2<T>::localize_and_insert_point(QPointF qt_point) TriangulationMovingPoint_2<T>::localize_and_insert_point(QPointF qt_point)
{ {
Point p(qt_point.x(), qt_point.y()); Point p(qt_point.x(), qt_point.y());
typename T::Locate_type lt; typename T::Locate_type lt;
@ -59,7 +60,7 @@ QTriangulationMovingPoint_2<T>::localize_and_insert_point(QPointF qt_point)
template <typename T> template <typename T>
void void
QTriangulationMovingPoint_2<T>::mousePressEvent(QGraphicsSceneMouseEvent *event) TriangulationMovingPoint_2<T>::mousePressEvent(QGraphicsSceneMouseEvent *event)
{ {
if(dt->number_of_vertices() == 0 || if(dt->number_of_vertices() == 0 ||
event->modifiers() != 0 || event->modifiers() != 0 ||
@ -73,7 +74,7 @@ QTriangulationMovingPoint_2<T>::mousePressEvent(QGraphicsSceneMouseEvent *event)
template <typename T> template <typename T>
void void
QTriangulationMovingPoint_2<T>::mouseMoveEvent(QGraphicsSceneMouseEvent *event) TriangulationMovingPoint_2<T>::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{ {
if(! movePointToInsert) return; if(! movePointToInsert) return;
@ -90,7 +91,7 @@ QTriangulationMovingPoint_2<T>::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
template <typename T> template <typename T>
void void
QTriangulationMovingPoint_2<T>::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) TriangulationMovingPoint_2<T>::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
if(! movePointToInsert || if(! movePointToInsert ||
event->button() != Qt::LeftButton) { event->button() != Qt::LeftButton) {
@ -109,7 +110,7 @@ QTriangulationMovingPoint_2<T>::mouseReleaseEvent(QGraphicsSceneMouseEvent *even
template <typename T> template <typename T>
bool bool
QTriangulationMovingPoint_2<T>::eventFilter(QObject *obj, QEvent *event) TriangulationMovingPoint_2<T>::eventFilter(QObject *obj, QEvent *event)
{ {
if (event->type() == QEvent::GraphicsSceneMousePress) { if (event->type() == QEvent::GraphicsSceneMousePress) {
QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent *>(event); QGraphicsSceneMouseEvent *mouseEvent = static_cast<QGraphicsSceneMouseEvent *>(event);
@ -130,7 +131,7 @@ QTriangulationMovingPoint_2<T>::eventFilter(QObject *obj, QEvent *event)
} }
} // namespace Qt
} // namespace CGAL } // namespace CGAL
#endif // CGAL_Q_TRIANGULATION_MOVING_POINT_2 #endif // CGAL_QT_TRIANGULATION_MOVING_POINT

View File

@ -1,3 +1,80 @@
#include <iostream> // for cout
#include <stdlib.h> // for exit
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Triangle_3.h>
#include <CGAL/Polyhedron_incremental_builder_3.h>
#include <CGAL/Polyhedron_3.h>
template <class HDS>
class Build_Surface : public CGAL::Modifier_base<HDS>
{
public:
Build_Surface() { }
void operator()( HDS& hds );
};
template <class HDS>
void Build_Surface< HDS >::operator()( HDS &hds )
{
/// Build a simple surface made of two triangles.
CGAL::Polyhedron_incremental_builder_3<HDS> pB(hds, true);
pB.begin_surface( 6, 2, 0);
typedef typename HDS::Vertex::Point Point;
pB.add_vertex( Point( 0.0, 0.0, 0.0));
pB.add_vertex( Point( 1.0, 0.0, 0.0));
pB.add_vertex( Point( 0.0, 1.0, 0.0));
pB.add_vertex( Point( 0.0, 0.0, 1.0));
pB.add_vertex( Point( 1.0, 1.0, 1.0));
pB.add_vertex( Point( 1.0, 0.0, 1.0));
// First triangle:
pB.begin_facet();
pB.add_vertex_to_facet(2);
pB.add_vertex_to_facet(4);
pB.add_vertex_to_facet(0);
pB.end_facet();
// Second triangle:
std::vector< std::size_t> t;
t.push_back(0); t.push_back(5); t.push_back(4);
if( pB.test_facet(t.begin(), t.end()) == true )
std::cout << "Test passed." << std::endl;
else
{
std::cout << "Test failed." << std::endl;
exit( 0 ) ;
}
pB.begin_facet();
pB.add_vertex_to_facet(t[0]);
pB.add_vertex_to_facet(t[1]);
pB.add_vertex_to_facet(t[2]);
pB.end_facet();
std::cout << "before end_surface()" << std::endl;
pB.end_surface();
std::cout << "after end_surface()" << std::endl;
}
int main()
{
typedef CGAL::Simple_cartesian<double> Kernel;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
typedef Polyhedron::HalfedgeDS HalfedgeDS;
Polyhedron P;
Build_Surface<HalfedgeDS> surface;
P.delegate(surface);
std::cout << "Done with surface building." << std::endl;
return 0;
}
#if 0
#include <iostream> #include <iostream>
#include <boost/format.hpp> #include <boost/format.hpp>
#include <QtGui> #include <QtGui>
@ -288,3 +365,5 @@ int main(int argc, char **argv)
} }
#include "min.moc" #include "min.moc"
#endif