mirror of https://github.com/CGAL/cgal
Merge pull request #2405 from maxGimeno/Subdivisions_iteration-GF
Polyhedron demo: Subdivisions_plugin
This commit is contained in:
commit
73a8cdc898
|
|
@ -2,6 +2,7 @@
|
|||
#include <QApplication>
|
||||
#include <QMainWindow>
|
||||
#include <QAction>
|
||||
#include <QInputDialog>
|
||||
|
||||
#include <CGAL/Three/Polyhedron_demo_plugin_helper.h>
|
||||
#include <CGAL/Three/Polyhedron_demo_plugin_interface.h>
|
||||
|
|
@ -30,6 +31,7 @@ public:
|
|||
Scene_interface* scene_interface,
|
||||
Messages_interface* m)
|
||||
{
|
||||
this->mw = mw;
|
||||
messages = m;
|
||||
scene = scene_interface;
|
||||
QAction *actionLoop = new QAction("Loop", mw);
|
||||
|
|
@ -64,25 +66,25 @@ private :
|
|||
Messages_interface* messages;
|
||||
QList<QAction*> _actions;
|
||||
template<class FaceGraphItem>
|
||||
void apply_loop(FaceGraphItem* item);
|
||||
void apply_loop(FaceGraphItem* item, int nb_steps);
|
||||
template<class FaceGraphItem>
|
||||
void apply_catmullclark(FaceGraphItem* item);
|
||||
void apply_catmullclark(FaceGraphItem* item, int nb_steps);
|
||||
template<class FaceGraphItem>
|
||||
void apply_sqrt3(FaceGraphItem* item);
|
||||
void apply_sqrt3(FaceGraphItem* item, int nb_steps);
|
||||
template<class FaceGraphItem>
|
||||
void apply_doosabin(FaceGraphItem* item);
|
||||
void apply_doosabin(FaceGraphItem* item, int nb_steps);
|
||||
}; // end Polyhedron_demo_subdivision_methods_plugin
|
||||
|
||||
|
||||
template<class FaceGraphItem>
|
||||
void Polyhedron_demo_subdivision_methods_plugin::apply_loop(FaceGraphItem* item)
|
||||
void Polyhedron_demo_subdivision_methods_plugin::apply_loop(FaceGraphItem* item, int nb_steps)
|
||||
{
|
||||
typename FaceGraphItem::Face_graph* graph = item->face_graph();
|
||||
QTime time;
|
||||
time.start();
|
||||
messages->information("Loop subdivision...");
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
CGAL::Subdivision_method_3::Loop_subdivision(*graph, 1);
|
||||
CGAL::Subdivision_method_3::Loop_subdivision(*graph, nb_steps);
|
||||
messages->information(QString("ok (%1 ms)").arg(time.elapsed()));
|
||||
QApplication::restoreOverrideCursor();
|
||||
item->invalidateOpenGLBuffers();
|
||||
|
|
@ -102,14 +104,26 @@ void Polyhedron_demo_subdivision_methods_plugin::on_actionLoop_triggered()
|
|||
qobject_cast<Scene_surface_mesh_item*>(scene->item(index));
|
||||
if(!sm_item)
|
||||
return;
|
||||
apply_loop(sm_item);
|
||||
int nb_steps = QInputDialog::getInt(mw,
|
||||
QString("Number of Iterations"),
|
||||
QString("Choose number of iterations"),
|
||||
1,
|
||||
1);
|
||||
apply_loop(sm_item, nb_steps);
|
||||
}
|
||||
else
|
||||
apply_loop(item);
|
||||
{
|
||||
int nb_steps = QInputDialog::getInt(mw,
|
||||
QString("Number of Iterations"),
|
||||
QString("Choose number of iterations"),
|
||||
1,
|
||||
1);
|
||||
apply_loop(item, nb_steps);
|
||||
}
|
||||
}
|
||||
|
||||
template<class FaceGraphItem>
|
||||
void Polyhedron_demo_subdivision_methods_plugin::apply_catmullclark(FaceGraphItem* item)
|
||||
void Polyhedron_demo_subdivision_methods_plugin::apply_catmullclark(FaceGraphItem* item, int nb_steps)
|
||||
{
|
||||
typename FaceGraphItem::Face_graph* graph = item->face_graph();
|
||||
if(!graph) return;
|
||||
|
|
@ -117,7 +131,7 @@ void Polyhedron_demo_subdivision_methods_plugin::apply_catmullclark(FaceGraphIte
|
|||
time.start();
|
||||
messages->information("Catmull-Clark subdivision...");
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
CGAL::Subdivision_method_3::CatmullClark_subdivision(*graph, 1);
|
||||
CGAL::Subdivision_method_3::CatmullClark_subdivision(*graph, nb_steps);
|
||||
messages->information(QString("ok (%1 ms)").arg(time.elapsed()));
|
||||
QApplication::restoreOverrideCursor();
|
||||
item->invalidateOpenGLBuffers();
|
||||
|
|
@ -136,15 +150,26 @@ void Polyhedron_demo_subdivision_methods_plugin::on_actionCatmullClark_triggered
|
|||
qobject_cast<Scene_surface_mesh_item*>(scene->item(index));
|
||||
if(!sm_item)
|
||||
return;
|
||||
apply_catmullclark(sm_item);
|
||||
int nb_steps = QInputDialog::getInt(mw,
|
||||
QString("Number of Iterations"),
|
||||
QString("Choose number of iterations"),
|
||||
1,
|
||||
1);
|
||||
apply_catmullclark(sm_item, nb_steps);
|
||||
}
|
||||
else{
|
||||
int nb_steps = QInputDialog::getInt(mw,
|
||||
QString("Number of Iterations"),
|
||||
QString("Choose number of iterations"),
|
||||
1,
|
||||
1);
|
||||
apply_catmullclark(item, nb_steps);
|
||||
}
|
||||
else
|
||||
apply_catmullclark(item);
|
||||
|
||||
}
|
||||
|
||||
template<class FaceGraphItem>
|
||||
void Polyhedron_demo_subdivision_methods_plugin::apply_sqrt3(FaceGraphItem* item)
|
||||
void Polyhedron_demo_subdivision_methods_plugin::apply_sqrt3(FaceGraphItem* item, int nb_steps)
|
||||
{
|
||||
typename FaceGraphItem::Face_graph* graph = item->face_graph();
|
||||
if(!graph) return;
|
||||
|
|
@ -152,7 +177,7 @@ void Polyhedron_demo_subdivision_methods_plugin::apply_sqrt3(FaceGraphItem* item
|
|||
time.start();
|
||||
messages->information("Sqrt-3 subdivision...");
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
CGAL::Subdivision_method_3::Sqrt3_subdivision(*graph, 1);
|
||||
CGAL::Subdivision_method_3::Sqrt3_subdivision(*graph, nb_steps);
|
||||
messages->information(QString("ok (%1 ms)").arg(time.elapsed()));
|
||||
QApplication::restoreOverrideCursor();
|
||||
item->invalidateOpenGLBuffers();
|
||||
|
|
@ -172,15 +197,26 @@ void Polyhedron_demo_subdivision_methods_plugin::on_actionSqrt3_triggered()
|
|||
qobject_cast<Scene_surface_mesh_item*>(scene->item(index));
|
||||
if(!sm_item)
|
||||
return;
|
||||
apply_sqrt3(sm_item);
|
||||
int nb_steps = QInputDialog::getInt(mw,
|
||||
QString("Number of Iterations"),
|
||||
QString("Choose number of iterations"),
|
||||
1,
|
||||
1);
|
||||
apply_sqrt3(sm_item, nb_steps);
|
||||
}
|
||||
else{
|
||||
int nb_steps = QInputDialog::getInt(mw,
|
||||
QString("Number of Iterations"),
|
||||
QString("Choose number of iterations"),
|
||||
1,
|
||||
1);
|
||||
apply_sqrt3(item, nb_steps);
|
||||
}
|
||||
else
|
||||
apply_sqrt3(item);
|
||||
|
||||
}
|
||||
|
||||
template<class FaceGraphItem>
|
||||
void Polyhedron_demo_subdivision_methods_plugin::apply_doosabin(FaceGraphItem* item)
|
||||
void Polyhedron_demo_subdivision_methods_plugin::apply_doosabin(FaceGraphItem* item, int nb_steps)
|
||||
{
|
||||
typename FaceGraphItem::Face_graph* graph = item->face_graph();
|
||||
if(!graph) return;
|
||||
|
|
@ -188,7 +224,7 @@ void Polyhedron_demo_subdivision_methods_plugin::apply_doosabin(FaceGraphItem* i
|
|||
time.start();
|
||||
messages->information("Doo-Sabin subdivision...");
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
CGAL::Subdivision_method_3::DooSabin_subdivision(*graph, 1);
|
||||
CGAL::Subdivision_method_3::DooSabin_subdivision(*graph, nb_steps);
|
||||
messages->information(QString("ok (%1 ms)").arg(time.elapsed()));
|
||||
QApplication::restoreOverrideCursor();
|
||||
item->invalidateOpenGLBuffers();
|
||||
|
|
@ -208,10 +244,21 @@ void Polyhedron_demo_subdivision_methods_plugin::on_actionDooSabin_triggered()
|
|||
qobject_cast<Scene_surface_mesh_item*>(scene->item(index));
|
||||
if(!sm_item)
|
||||
return;
|
||||
apply_doosabin(sm_item);
|
||||
int nb_steps = QInputDialog::getInt(mw,
|
||||
QString("Number of Iterations"),
|
||||
QString("Choose number of iterations"),
|
||||
1,
|
||||
1);
|
||||
apply_doosabin(sm_item, nb_steps);
|
||||
}
|
||||
else{
|
||||
int nb_steps = QInputDialog::getInt(mw,
|
||||
QString("Number of Iterations"),
|
||||
QString("Choose number of iterations"),
|
||||
1,
|
||||
1);
|
||||
apply_doosabin(item, nb_steps);
|
||||
}
|
||||
else
|
||||
apply_doosabin(item);
|
||||
}
|
||||
|
||||
#include "Subdivision_methods_plugin.moc"
|
||||
|
|
|
|||
Loading…
Reference in New Issue