diff --git a/Linear_cell_complex/demo/Linear_cell_complex/CreateMenger.ui b/Linear_cell_complex/demo/Linear_cell_complex/CreateMenger.ui
index 7a91e819438..e4c54b0b491 100644
--- a/Linear_cell_complex/demo/Linear_cell_complex/CreateMenger.ui
+++ b/Linear_cell_complex/demo/Linear_cell_complex/CreateMenger.ui
@@ -6,7 +6,7 @@
0
0
- 264
+ 288
106
@@ -32,7 +32,7 @@
- 150
+ 170
10
51
27
@@ -59,7 +59,7 @@
23
15
- 121
+ 141
17
@@ -70,9 +70,9 @@
- 20
+ 0
40
- 241
+ 291
18
@@ -80,7 +80,7 @@
Update attributes during construction
- true
+ false
diff --git a/Linear_cell_complex/demo/Linear_cell_complex/CreateSierpinskiCarpet.ui b/Linear_cell_complex/demo/Linear_cell_complex/CreateSierpinskiCarpet.ui
index 3b78e34c5cc..f55db6837b8 100644
--- a/Linear_cell_complex/demo/Linear_cell_complex/CreateSierpinskiCarpet.ui
+++ b/Linear_cell_complex/demo/Linear_cell_complex/CreateSierpinskiCarpet.ui
@@ -7,7 +7,7 @@
0
0
325
- 151
+ 119
@@ -16,8 +16,8 @@
- 150
- 120
+ 80
+ 80
171
32
@@ -34,7 +34,7 @@
20
13
- 181
+ 201
16
@@ -45,130 +45,30 @@
- 200
+ 230
10
47
24
-
-
-
- 10
- 30
- 161
- 81
-
-
-
- Update Attributes
-
-
-
-
- 10
- 20
- 97
- 18
-
-
-
- Never
-
-
-
-
-
- 10
- 40
- 141
- 18
-
-
-
- During construction
-
-
- true
-
-
-
-
-
- 10
- 60
- 141
- 18
-
-
-
- After construction
-
-
-
-
+
- false
+ true
- 180
- 30
- 91
- 61
-
-
-
- Method
-
-
- false
-
-
-
-
- 10
- 20
- 81
- 18
-
-
-
- std map
-
-
- true
-
-
-
-
-
- 10
- 40
- 81
- 18
-
-
-
- traversal
-
-
-
-
-
- false
-
-
-
- 0
- 120
- 151
- 32
+ 20
+ 50
+ 291
+ 20
- Compute geometry
+ Update attributes during construction
+
+
+ false
diff --git a/Linear_cell_complex/demo/Linear_cell_complex/CreateSierpinskiTriangle.ui b/Linear_cell_complex/demo/Linear_cell_complex/CreateSierpinskiTriangle.ui
index 2a4d77e5edd..2baca7651a1 100644
--- a/Linear_cell_complex/demo/Linear_cell_complex/CreateSierpinskiTriangle.ui
+++ b/Linear_cell_complex/demo/Linear_cell_complex/CreateSierpinskiTriangle.ui
@@ -6,7 +6,7 @@
0
0
- 265
+ 303
112
@@ -32,9 +32,9 @@
- 20
+ 10
13
- 181
+ 211
16
@@ -45,7 +45,7 @@
- 200
+ 220
10
53
24
@@ -55,17 +55,17 @@
- 20
+ 10
40
- 241
- 18
+ 291
+ 20
Update attributes during construction
- true
+ false
diff --git a/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.cpp b/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.cpp
index fdcf2ba0504..d3f1fa184f4 100644
--- a/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.cpp
+++ b/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.cpp
@@ -111,7 +111,9 @@ void MainWindow::connect_actions ()
QObject::connect(dialogsierpinskicarpet.level, SIGNAL(valueChanged(int)),
this, SLOT(onSierpinskiCarpetChangeLevel(int)));
- QObject::connect(dialogsierpinskicarpet.never, SIGNAL(clicked(bool)),
+ QObject::connect(dialogsierpinskicarpet.updateAttributes, SIGNAL(clicked(bool)),
+ this, SLOT(onSierpinskiCarpetUpdateAttributes(bool)));
+/* QObject::connect(dialogsierpinskicarpet.never, SIGNAL(clicked(bool)),
this, SLOT(onSierpinskiCarpetNeverUpdateAttributes(bool)));
QObject::connect(dialogsierpinskicarpet.during, SIGNAL(clicked(bool)),
this, SLOT(onSierpinskiCarpetDuringConstructionUpdateAttributes(bool)));
@@ -122,7 +124,7 @@ void MainWindow::connect_actions ()
QObject::connect(dialogsierpinskicarpet.traversal, SIGNAL(clicked(bool)),
this, SLOT(onSierpinskiCarpetUpdateAttributesMethodTraversal(bool)));
QObject::connect(dialogsierpinskicarpet.computeGeometry, SIGNAL(clicked(bool)),
- this, SLOT(onSierpinskiCarpetComputeGeometry(bool)));
+ this, SLOT(onSierpinskiCarpetComputeGeometry(bool)));*/
QObject::connect(&dialogsierpinskicarpet, SIGNAL(accepted()),
this, SLOT(onSierpinskiCarpetOk()));
QObject::connect(&dialogsierpinskicarpet, SIGNAL(rejected()),
@@ -157,6 +159,8 @@ void MainWindow::update_operations_entries(bool show)
void MainWindow::onSceneChanged ()
{
+ QApplication::setOverrideCursor( Qt::WaitCursor );
+
int mark = scene.lcc->get_new_mark ();
scene.lcc->negate_mark (mark);
@@ -183,9 +187,12 @@ void MainWindow::onSceneChanged ()
scene.lcc->negate_mark (mark);
scene.lcc->free_mark (mark);
+ // statusBar()->showMessage (QString ("Update OpenGL lists"), DELAY_STATUSMSG);
+
viewer->sceneChanged ();
statusMessage->setText (os.str().c_str ());
+ QApplication::restoreOverrideCursor();
}
void MainWindow::clear_all()
@@ -414,6 +421,8 @@ void MainWindow::on_actionCreate_mesh_triggered ()
void MainWindow::onCreateMeshOk()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -436,13 +445,16 @@ void MainWindow::onCreateMeshOk()
<showMessage (QString ("mesh created"),DELAY_STATUSMSG);
+ statusBar ()->showMessage (QString ("Mesh created"),DELAY_STATUSMSG);
+ QApplication::restoreOverrideCursor ();
emit (sceneChanged ());
}
void MainWindow::on_actionSubdivide_triggered ()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -456,6 +468,7 @@ void MainWindow::on_actionSubdivide_triggered ()
<showMessage (QString ("Objects were subdivided"),
DELAY_STATUSMSG);
@@ -463,6 +476,8 @@ void MainWindow::on_actionSubdivide_triggered ()
void MainWindow::on_actionSubdivide_pqq_triggered ()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -476,6 +491,7 @@ void MainWindow::on_actionSubdivide_pqq_triggered ()
<showMessage (QString ("Objects were subdivided"),
DELAY_STATUSMSG);
@@ -498,6 +514,8 @@ void MainWindow::on_actionCompute_Voronoi_3D_triggered ()
if (fileName.isEmpty ()) return;
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
this->clear_all();
#ifdef CGAL_PROFILE_LCC_DEMO
@@ -582,6 +600,7 @@ void MainWindow::on_actionCompute_Voronoi_3D_triggered ()
#endif
init_all_new_volumes();
+ QApplication::restoreOverrideCursor ();
emit (sceneChanged ());
statusBar ()->showMessage (QString ("Voronoi 3D of points in ") + fileName,
DELAY_STATUSMSG);
@@ -597,6 +616,8 @@ void MainWindow::on_actionDual_3_triggered ()
return;
}
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -618,11 +639,14 @@ void MainWindow::on_actionDual_3_triggered ()
init_all_new_volumes();
statusBar ()->showMessage (QString ("Dual_3 computed"), DELAY_STATUSMSG);
+ QApplication::restoreOverrideCursor ();
emit (sceneChanged ());
}
void MainWindow::on_actionClose_volume_triggered()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -639,6 +663,8 @@ void MainWindow::on_actionClose_volume_triggered()
statusBar ()->showMessage
(QString ("LCC already 3-closed"), DELAY_STATUSMSG);
+ QApplication::restoreOverrideCursor ();
+
#ifdef CGAL_PROFILE_LCC_DEMO
timer.stop();
std::cout<<"Time to 3-close the current lcc: "
@@ -652,6 +678,8 @@ void MainWindow::on_actionSew3_same_facets_triggered()
int mymark = scene.lcc->get_new_mark();
mark_all_filled_and_visible_volumes(mymark);
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -669,6 +697,8 @@ void MainWindow::on_actionSew3_same_facets_triggered()
scene.lcc->free_mark(mymark);
+ QApplication::restoreOverrideCursor ();
+
#ifdef CGAL_PROFILE_LCC_DEMO
timer.stop();
std::cout<<"Time to sew3 all same facets: "
@@ -679,6 +709,7 @@ void MainWindow::on_actionSew3_same_facets_triggered()
void MainWindow::on_actionUnsew3_all_triggered()
{
unsigned int nb=0;
+ QApplication::setOverrideCursor (Qt::WaitCursor);
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
@@ -700,6 +731,7 @@ void MainWindow::on_actionUnsew3_all_triggered()
std::cout<<"Time to unsew3 all filled volumes: "
< 0 )
{
@@ -714,6 +746,8 @@ void MainWindow::on_actionUnsew3_all_triggered()
void MainWindow::on_actionRemove_filled_volumes_triggered()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -739,6 +773,7 @@ void MainWindow::on_actionRemove_filled_volumes_triggered()
#endif
recreate_whole_volume_list();
+ QApplication::restoreOverrideCursor ();
emit(sceneChanged());
statusBar()->showMessage
@@ -748,6 +783,8 @@ void MainWindow::on_actionRemove_filled_volumes_triggered()
void MainWindow::on_actionTriangulate_all_facets_triggered()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -770,6 +807,7 @@ void MainWindow::on_actionTriangulate_all_facets_triggered()
<showMessage
(QString ("Facets of visible and filled volume(s) triangulated"),
@@ -778,6 +816,8 @@ void MainWindow::on_actionTriangulate_all_facets_triggered()
void MainWindow::on_actionMerge_all_volumes_triggered()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -813,9 +853,10 @@ void MainWindow::on_actionMerge_all_volumes_triggered()
recreate_whole_volume_list();
+ QApplication::restoreOverrideCursor ();
emit (sceneChanged ());
statusBar()->showMessage
- (QString ("All volume(s) merged"), DELAY_STATUSMSG);
+ (QString ("Visible and filled volume(s) merged"), DELAY_STATUSMSG);
}
bool MainWindow::is_volume_in_list(LCC::Attribute_handle<3>::type ah)
@@ -865,7 +906,8 @@ void MainWindow::update_volume_list_add(LCC::Attribute_handle<3>::type ah)
QTableWidgetItem* attribHandle = new QTableWidgetItem;
attribHandle->setData
- (Qt::UserRole, reinterpret_cast(&scene.lcc->get_attribute<3>(ah)));
+ (Qt::UserRole,
+ reinterpret_cast(&scene.lcc->get_attribute<3>(ah)));
volumeList->setItem(newRow,3,attribHandle);
@@ -1169,6 +1211,8 @@ void MainWindow::onMengerCancel()
recreate_whole_volume_list();
mengerVolumes.clear();
update_operations_entries(true);
+ statusBar()->showMessage (QString ("Menger sponge creation canceled"),
+ DELAY_STATUSMSG);
emit(sceneChanged());
}
@@ -1191,6 +1235,8 @@ void MainWindow::onMengerUpdateAttributes(bool newValue)
void MainWindow::onMengerInc()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -1292,13 +1338,21 @@ void MainWindow::onMengerInc()
#ifdef CGAL_PROFILE_LCC_DEMO
timer.stop();
- std::cout<<"Time to increase the level of menger sponge ("
- <mengerLevel-1<<" -> "<mengerLevel<<"): "
- <mengerLevel-1<<" -> "<mengerLevel<<", "
+ <<"attributes updated "
+ <<(mengerUpdateAttributes ? "DURING" : "AFTER")
+ << " construction: "
+ <is_valid() );
+ QApplication::restoreOverrideCursor ();
+ statusBar()->showMessage(QString ("Menger sponge creation %1 -> %2").
+ arg(this->mengerLevel-1).arg(this->mengerLevel),
+ DELAY_STATUSMSG);
+
emit(sceneChanged());
}
@@ -1592,6 +1646,8 @@ void MainWindow::process_inter_slice(Dart_handle init,
void MainWindow::onMengerDec()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -1714,14 +1770,21 @@ void MainWindow::onMengerDec()
#ifdef CGAL_PROFILE_LCC_DEMO
timer.stop();
- std::cout<<"Time to decrease the level of menger sponge ("
- <mengerLevel+1<<" -> "<mengerLevel<<"): "
- <mengerLevel+1<<" -> "<mengerLevel<<", "
+ <<"attributes updated "
+ <<(mengerUpdateAttributes ? "DURING" : "AFTER")
+ << " construction: "
+ <showMessage (QString ("Menger Dec"),DELAY_STATUSMSG);
+ statusBar()->showMessage(QString ("Menger sponge creation %1 -> %2").
+ arg(this->mengerLevel+1).arg(this->mengerLevel),
+ DELAY_STATUSMSG);
+
+ QApplication::restoreOverrideCursor ();
emit(sceneChanged());
}
@@ -1731,14 +1794,18 @@ void MainWindow::onMengerDec()
void MainWindow::on_actionCreate_Sierpinski_Carpet_triggered ()
{
- neverUpdateAttributes = dialogsierpinskicarpet.never->isChecked();
+ /*neverUpdateAttributes = dialogsierpinskicarpet.never->isChecked();
duringConstructionUpdateAttributes = dialogsierpinskicarpet.during->isChecked();
afterConstructionUpdateAttributes = dialogsierpinskicarpet.after->isChecked();
updateAttributesMethodStdMap = dialogsierpinskicarpet.stdmap->isChecked();
updateAttributesMethodTraversal = dialogsierpinskicarpet.traversal->isChecked();
- computeGeometry = false;
// By default, the geometry will be computed after the construction
- isComputableGeometry = true;
+ isComputableGeometry = true;*/
+
+ computeGeometry = false;
+
+ sierpinskiCarpetUpdateAttributes
+ = dialogsierpinskicarpet.updateAttributes->isChecked();
dialogsierpinskicarpet.level->disconnect(this);
@@ -1775,6 +1842,7 @@ void MainWindow::on_actionCreate_Sierpinski_Carpet_triggered ()
void MainWindow::onSierpinskiCarpetCancel()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
for(std::vector::iterator it=sierpinskiCarpetSurfaces.begin();
it!=sierpinskiCarpetSurfaces.end(); ++it)
{
@@ -1784,6 +1852,7 @@ void MainWindow::onSierpinskiCarpetCancel()
recreate_whole_volume_list();
sierpinskiCarpetSurfaces.clear();
update_operations_entries(true);
+ QApplication::restoreOverrideCursor ();
emit(sceneChanged());
}
@@ -1799,7 +1868,12 @@ void MainWindow::onSierpinskiCarpetChangeLevel(int newLevel)
while ( newLevel < sierpinskiCarpetLevel ) onSierpinskiCarpetDec();
}
-void MainWindow::onSierpinskiCarpetNeverUpdateAttributes(bool /*newValue*/)
+void MainWindow::onSierpinskiCarpetUpdateAttributes(bool newValue)
+{
+ sierpinskiCarpetUpdateAttributes = newValue;
+}
+
+/*void MainWindow::onSierpinskiCarpetNeverUpdateAttributes(bool newValue)
{
if (afterConstructionUpdateAttributes)
{
@@ -1811,7 +1885,7 @@ void MainWindow::onSierpinskiCarpetNeverUpdateAttributes(bool /*newValue*/)
afterConstructionUpdateAttributes = false;
}
-void MainWindow::onSierpinskiCarpetDuringConstructionUpdateAttributes(bool /*newValue*/)
+void MainWindow::onSierpinskiCarpetDuringConstructionUpdateAttributes(bool newValue)
{
if (afterConstructionUpdateAttributes)
{
@@ -1823,7 +1897,7 @@ void MainWindow::onSierpinskiCarpetDuringConstructionUpdateAttributes(bool /*new
afterConstructionUpdateAttributes = false;
}
-void MainWindow::onSierpinskiCarpetAfterConstructionUpdateAttributes(bool /*newValue*/)
+void MainWindow::onSierpinskiCarpetAfterConstructionUpdateAttributes(bool newValue)
{
if (!afterConstructionUpdateAttributes)
{
@@ -1835,19 +1909,19 @@ void MainWindow::onSierpinskiCarpetAfterConstructionUpdateAttributes(bool /*newV
afterConstructionUpdateAttributes = true;
}
-void MainWindow::onSierpinskiCarpetUpdateAttributesMethodStdMap(bool /*newValue*/)
+void MainWindow::onSierpinskiCarpetUpdateAttributesMethodStdMap(bool newValue)
{
updateAttributesMethodStdMap = true;
updateAttributesMethodTraversal = false;
}
-void MainWindow::onSierpinskiCarpetUpdateAttributesMethodTraversal(bool /*newValue*/)
+void MainWindow::onSierpinskiCarpetUpdateAttributesMethodTraversal(bool newValue)
{
updateAttributesMethodStdMap = false;
updateAttributesMethodTraversal = true;
}
-void MainWindow::onSierpinskiCarpetComputeGeometry(bool /*newValue*/)
+void MainWindow::onSierpinskiCarpetComputeGeometry(bool newValue)
{
sierpinski_carpet_compute_geometry();
@@ -1855,10 +1929,12 @@ void MainWindow::onSierpinskiCarpetComputeGeometry(bool /*newValue*/)
dialogsierpinskicarpet.computeGeometry->setEnabled(false);
emit(sceneChanged());
-}
+}*/
void MainWindow::onSierpinskiCarpetInc()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -1866,14 +1942,14 @@ void MainWindow::onSierpinskiCarpetInc()
this->sierpinskiCarpetLevel++;
- if (computeGeometry)
+/* if (computeGeometry)
{
// Here case where the geometry could be computed after the construction, but it was not updated.
computeGeometry = false;
dialogsierpinskicarpet.computeGeometry->setEnabled(false);
// => geometry will not be computed later.
isComputableGeometry = false;
- }
+ }*/
std::vector edges;
nbfacesinit = sierpinskiCarpetSurfaces.size();
@@ -1918,7 +1994,7 @@ void MainWindow::onSierpinskiCarpetInc()
(scene.lcc)->free_mark(markEdges);
(scene.lcc)->free_mark(markFaces);
- if (afterConstructionUpdateAttributes)
+/* if (afterConstructionUpdateAttributes)
{
if (updateAttributesMethodStdMap)
{
@@ -1935,7 +2011,7 @@ void MainWindow::onSierpinskiCarpetInc()
}
}
}
- }
+ }*/
for(std::size_t i = 0; i < edges.size(); i++)
{
@@ -1948,12 +2024,12 @@ void MainWindow::onSierpinskiCarpetInc()
sierpinski_carpet_split_face_in_nine(sierpinskiCarpetSurfaces[i]);
}
- if (afterConstructionUpdateAttributes)
+ if (!sierpinskiCarpetUpdateAttributes)
{
sierpinski_carpet_update_geometry();
}
- if (neverUpdateAttributes)
+/* if (neverUpdateAttributes)
{
scene.lcc->correct_invalid_attributes();
@@ -1963,24 +2039,33 @@ void MainWindow::onSierpinskiCarpetInc()
computeGeometry = true;
dialogsierpinskicarpet.computeGeometry->setEnabled(true);
}
- }
+ }*/
#ifdef CGAL_PROFILE_LCC_DEMO
timer.stop();
- std::cout<<"Time to increase the level of sierpinski carpet ("
- <sierpinskiCarpetLevel-1<<" -> "<sierpinskiCarpetLevel<<") "
- <<(duringConstructionUpdateAttributes ? "DURING" : "AFTER") << " construction update attributes: "
- <sierpinskiCarpetLevel-1<<" -> "
+ <sierpinskiCarpetLevel<<", "
+ <<"attributes updated "
+ <<(sierpinskiCarpetUpdateAttributes ? "DURING" : "AFTER")
+ << " construction: "
+ <is_valid() );
+ statusBar()->showMessage(QString ("Sierpinski carpet creation %1 -> %2").
+ arg(this->sierpinskiCarpetLevel-1).
+ arg(this->sierpinskiCarpetLevel),
+ DELAY_STATUSMSG);
+
+ QApplication::restoreOverrideCursor ();
emit(sceneChanged());
}
void MainWindow::sierpinski_carpet_update_geometry()
{
- if (updateAttributesMethodStdMap)
+/* if (updateAttributesMethodStdMap)
{
for(std::size_t i = 0; i < new_darts.size(); i++)
{
@@ -1991,7 +2076,7 @@ void MainWindow::sierpinski_carpet_update_geometry()
new_darts.clear();
}
- if (updateAttributesMethodTraversal)
+ if (updateAttributesMethodTraversal)*/
{
int markVertices = (scene.lcc)->get_new_mark();
@@ -2257,7 +2342,7 @@ void MainWindow::sierpinski_carpet_copy_attributes_and_embed_vertex
void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
{
- if (duringConstructionUpdateAttributes)
+ if (sierpinskiCarpetUpdateAttributes)
{
LCC::Point p1 = scene.lcc->point(dh);
LCC::Point p2 = scene.lcc->point(scene.lcc->other_extremity(dh));
@@ -2276,7 +2361,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
{
LCC::Point p3, p4;
- if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
+ /*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
{
LCC::Point p1 = dart_map[dh];
LCC::Point p2 = dart_map[scene.lcc->other_extremity(dh)];
@@ -2286,7 +2371,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
p3 = LCC::Traits::Construct_translated_point() (p1,v2);
p4 = LCC::Traits::Construct_translated_point() (p1,v3);
- }
+ }*/
Dart_handle d1=
CGAL::insert_cell_0_in_cell_1(*(scene.lcc),
@@ -2294,7 +2379,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
LCC::null_handle,
false);
- if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
+ /*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
{
dart_map.insert(std::pair(d1, p4));
if (!(scene.lcc)->is_free(d1,2))
@@ -2302,7 +2387,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
dart_map.insert(std::pair((scene.lcc)->beta(d1,2,1), p4));
}
new_darts.push_back((scene.lcc)->beta(dh,1));
- }
+ }*/
Dart_handle d2=
CGAL::insert_cell_0_in_cell_1(*(scene.lcc),
@@ -2310,7 +2395,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
LCC::null_handle,
false);
- if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
+ /*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
{
dart_map.insert(std::pair(d2, p3));
if (!(scene.lcc)->is_free(d2,2))
@@ -2318,7 +2403,7 @@ void MainWindow::sierpinski_carpet_split_edge_in_three(Dart_handle dh)
dart_map.insert(std::pair((scene.lcc)->beta(d2,2,1), p3));
}
new_darts.push_back((scene.lcc)->beta(dh,1));
- }
+ }*/
}
}
@@ -2329,16 +2414,16 @@ void MainWindow::sierpinski_carpet_split_face_in_three(Dart_handle dh,
CGAL::insert_cell_1_in_cell_2(*(scene.lcc),
scene.lcc->beta(dh,1,1,1),
scene.lcc->beta(dh,0,0),
- duringConstructionUpdateAttributes);
+ sierpinskiCarpetUpdateAttributes);
Dart_handle d2=
CGAL::insert_cell_1_in_cell_2(*(scene.lcc),
scene.lcc->beta(dh,1,1),
scene.lcc->beta(dh,0),
- duringConstructionUpdateAttributes);
+ sierpinskiCarpetUpdateAttributes);
if ( removecenter )
{
- CGAL::remove_cell(*scene.lcc,d2,duringConstructionUpdateAttributes);
+ CGAL::remove_cell(*scene.lcc,d2,sierpinskiCarpetUpdateAttributes);
}
else
{
@@ -2359,25 +2444,25 @@ void MainWindow::sierpinski_carpet_split_face_in_nine(Dart_handle dh)
CGAL::insert_cell_1_in_cell_2(*(scene.lcc),
d1,
d2,
- duringConstructionUpdateAttributes);
+ sierpinskiCarpetUpdateAttributes);
- if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
+ /*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
{
dart_map.insert(std::pair(e2, dart_map[d2]));
dart_map.insert(std::pair((scene.lcc)->beta(e2,2), dart_map[d1]));
- }
+ }*/
Dart_handle e1=
CGAL::insert_cell_1_in_cell_2(*(scene.lcc),
d3,
d4,
- duringConstructionUpdateAttributes);
+ sierpinskiCarpetUpdateAttributes);
- if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
+ /*if (afterConstructionUpdateAttributes && updateAttributesMethodStdMap)
{
dart_map.insert(std::pair(e1, dart_map[d4]));
dart_map.insert(std::pair((scene.lcc)->beta(e1,2), dart_map[d3]));
- }
+ }*/
sierpinskiCarpetSurfaces.push_back(e2);
sierpinskiCarpetSurfaces.push_back(e1);
@@ -2394,6 +2479,8 @@ void MainWindow::sierpinski_carpet_split_face_in_nine(Dart_handle dh)
void MainWindow::onSierpinskiCarpetDec()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -2412,7 +2499,8 @@ void MainWindow::onSierpinskiCarpetDec()
std::vector vertices;
// First we remove edges.
- for ( std::vector::iterator itsurfaces=sierpinskiCarpetSurfaces.begin();
+ for ( std::vector::iterator
+ itsurfaces=sierpinskiCarpetSurfaces.begin();
itsurfaces!=sierpinskiCarpetSurfaces.end(); ++itsurfaces)
{
Dart_handle dh = *itsurfaces;
@@ -2429,16 +2517,17 @@ void MainWindow::onSierpinskiCarpetDec()
for(std::size_t i = 0; i < edges.size(); i++)
{
CGAL::remove_cell(*scene.lcc, scene.lcc->beta(edges[i],0),
- duringConstructionUpdateAttributes);
+ sierpinskiCarpetUpdateAttributes);
CGAL::remove_cell(*scene.lcc, scene.lcc->beta(edges[i],1),
- duringConstructionUpdateAttributes);
+ sierpinskiCarpetUpdateAttributes);
CGAL::remove_cell(*scene.lcc, edges[i],
- duringConstructionUpdateAttributes);
+ sierpinskiCarpetUpdateAttributes);
}
edges.clear();
// Lastly we remove vertices.
- for ( std::vector::iterator itsurfaces=sierpinskiCarpetSurfaces.begin();
+ for ( std::vector::iterator
+ itsurfaces=sierpinskiCarpetSurfaces.begin();
itsurfaces!=sierpinskiCarpetSurfaces.end(); ++itsurfaces)
{
Dart_handle dh = scene.lcc->beta(*itsurfaces,1);
@@ -2461,7 +2550,8 @@ void MainWindow::onSierpinskiCarpetDec()
}
(scene.lcc)->negate_mark(markSurfaces);
- for ( std::vector::iterator itsurfaces=sierpinskiCarpetSurfaces.begin();
+ for ( std::vector::iterator
+ itsurfaces=sierpinskiCarpetSurfaces.begin();
itsurfaces!=sierpinskiCarpetSurfaces.end(); ++itsurfaces)
{
Dart_handle dh = scene.lcc->beta(*itsurfaces,1);
@@ -2482,28 +2572,37 @@ void MainWindow::onSierpinskiCarpetDec()
for(std::size_t i = 0; i < vertices.size(); i++)
{
- CGAL::remove_cell(*scene.lcc, vertices[i], duringConstructionUpdateAttributes);
+ CGAL::remove_cell(*scene.lcc, vertices[i],
+ sierpinskiCarpetUpdateAttributes);
}
vertices.clear();
(scene.lcc)->free_mark(markSurfaces);
(scene.lcc)->free_mark(markVertices);
- if (!duringConstructionUpdateAttributes)
+ if (!sierpinskiCarpetUpdateAttributes)
{
scene.lcc->correct_invalid_attributes();
}
#ifdef CGAL_PROFILE_LCC_DEMO
timer.stop();
- std::cout<<"Time to decrease the level of sierpinski carpet ("
- <sierpinskiCarpetLevel+1<<" -> "<sierpinskiCarpetLevel<<"): "
- <sierpinskiCarpetLevel+1<<" -> "
+ <sierpinskiCarpetLevel<<", "
+ <<"attributes updated "
+ <<(sierpinskiCarpetUpdateAttributes ? "DURING" : "AFTER")
+ << " construction: "
+ <showMessage (QString ("Menger Dec"),DELAY_STATUSMSG);
+ statusBar()->showMessage(QString ("Sierpinski carpet creation %1 -> %2").
+ arg(this->sierpinskiCarpetLevel+1).
+ arg(this->sierpinskiCarpetLevel),
+ DELAY_STATUSMSG);
emit(sceneChanged());
}
@@ -2581,6 +2680,8 @@ void MainWindow::onSierpinskiTriangleUpdateAttributes(bool newValue)
void MainWindow::onSierpinskiTriangleInc()
{
+ QApplication::setOverrideCursor (Qt::WaitCursor);
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -2662,13 +2763,21 @@ void MainWindow::onSierpinskiTriangleInc()
#ifdef CGAL_PROFILE_LCC_DEMO
timer.stop();
- std::cout<<"Time to increase the level of sierpinski triangle ("
- <sierpinskiTriangleLevel-1<<" -> "<sierpinskiTriangleLevel<<") "
- <<(sierpinskiTriangleUpdateAttributes ? "DURING" : "AFTER") << " construction update attributes: "
- <sierpinskiTriangleLevel-1<<" -> "
+ <sierpinskiTriangleLevel<<", "
+ <<"attributes updated "
+ <<(sierpinskiTriangleUpdateAttributes ? "DURING" : "AFTER")
+ << " construction: "
+ <is_valid() );
+ statusBar()->showMessage(QString ("Sierpinski triangle creation %1 -> %2").
+ arg(this->sierpinskiTriangleLevel-1).
+ arg(this->sierpinskiTriangleLevel),
+ DELAY_STATUSMSG);
+ QApplication::restoreOverrideCursor ();
emit(sceneChanged());
}
@@ -2739,6 +2848,8 @@ void MainWindow::sierpinski_triangle_split_face_in_four(Dart_handle dh, bool rem
void MainWindow::onSierpinskiTriangleDec()
{
+ QApplication::setOverrideCursor( Qt::WaitCursor );
+
#ifdef CGAL_PROFILE_LCC_DEMO
CGAL::Timer timer;
timer.start();
@@ -2775,7 +2886,8 @@ void MainWindow::onSierpinskiTriangleDec()
std::vector vertices;
// Now we remove edges.
- for ( std::vector::iterator itsurfaces=sierpinskiTriangleSurfaces.begin();
+ for ( std::vector::iterator
+ itsurfaces=sierpinskiTriangleSurfaces.begin();
itsurfaces!=sierpinskiTriangleSurfaces.end(); ++itsurfaces)
{
Dart_handle dh = *itsurfaces;
@@ -2789,12 +2901,14 @@ void MainWindow::onSierpinskiTriangleDec()
for(std::size_t i = 0; i < edges.size(); i++)
{
- CGAL::remove_cell(*scene.lcc, edges[i], duringConstructionUpdateAttributes);
+ CGAL::remove_cell(*scene.lcc, edges[i],
+ sierpinskiTriangleUpdateAttributes);
}
edges.clear();
// Lastly we remove vertices.
- for ( std::vector::iterator itsurfaces=sierpinskiTriangleSurfaces.begin();
+ for ( std::vector::iterator
+ itsurfaces=sierpinskiTriangleSurfaces.begin();
itsurfaces!=sierpinskiTriangleSurfaces.end(); ++itsurfaces)
{
Dart_handle dh = scene.lcc->beta(*itsurfaces,1);
@@ -2818,7 +2932,8 @@ void MainWindow::onSierpinskiTriangleDec()
}
(scene.lcc)->negate_mark(markSurfaces);
- for ( std::vector::iterator itsurfaces=sierpinskiTriangleSurfaces.begin();
+ for ( std::vector::iterator
+ itsurfaces=sierpinskiTriangleSurfaces.begin();
itsurfaces!=sierpinskiTriangleSurfaces.end(); ++itsurfaces)
{
Dart_handle dh = scene.lcc->beta(*itsurfaces,1);
@@ -2838,7 +2953,8 @@ void MainWindow::onSierpinskiTriangleDec()
for(std::size_t i = 0; i < vertices.size(); i++)
{
- CGAL::remove_cell(*scene.lcc, vertices[i], duringConstructionUpdateAttributes);
+ CGAL::remove_cell(*scene.lcc, vertices[i],
+ sierpinskiTriangleUpdateAttributes);
}
vertices.clear();
@@ -2852,14 +2968,22 @@ void MainWindow::onSierpinskiTriangleDec()
#ifdef CGAL_PROFILE_LCC_DEMO
timer.stop();
- std::cout<<"Time to decrease the level of sierpinski triangle ("
- <sierpinskiTriangleLevel+1<<" -> "<sierpinskiTriangleLevel<<"): "
- <sierpinskiTriangleLevel+1<<" -> "
+ <sierpinskiTriangleLevel<<", "
+ <<"attributes updated "
+ <<(sierpinskiTriangleUpdateAttributes ? "DURING" : "AFTER")
+ << " construction: "
+ <showMessage(QString ("Sierpinski triangle creation %1 -> %2").
+ arg(this->sierpinskiTriangleLevel+1).
+ arg(this->sierpinskiTriangleLevel),
+ DELAY_STATUSMSG);
+ QApplication::restoreOverrideCursor ();
- // statusBar ()->showMessage (QString ("Sirpinski Triangle Dec"),DELAY_STATUSMSG);
emit(sceneChanged());
}
diff --git a/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.h b/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.h
index fada9bb8cc5..aefe94b1f3b 100644
--- a/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.h
+++ b/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.h
@@ -63,7 +63,8 @@ public:
{ setupUi(this); }
};
-class DialogSierpinskiCarpet : public QDialog, public Ui::createSierpinskiCarpet
+class DialogSierpinskiCarpet : public QDialog,
+ public Ui::createSierpinskiCarpet
{
Q_OBJECT
@@ -72,7 +73,8 @@ public:
{ setupUi(this); }
};
-class DialogSierpinskiTriangle : public QDialog, public Ui::createSierpinskiTriangle
+class DialogSierpinskiTriangle : public QDialog,
+ public Ui::createSierpinskiTriangle
{
Q_OBJECT
@@ -158,12 +160,13 @@ public slots:
void onMengerUpdateAttributes(bool);
void onSierpinskiCarpetChangeLevel(int);
- void onSierpinskiCarpetNeverUpdateAttributes(bool);
+/* void onSierpinskiCarpetNeverUpdateAttributes(bool);
void onSierpinskiCarpetDuringConstructionUpdateAttributes(bool);
void onSierpinskiCarpetAfterConstructionUpdateAttributes(bool);
void onSierpinskiCarpetUpdateAttributesMethodStdMap(bool);
void onSierpinskiCarpetUpdateAttributesMethodTraversal(bool);
- void onSierpinskiCarpetComputeGeometry(bool);
+ void onSierpinskiCarpetComputeGeometry(bool);*/
+ void onSierpinskiCarpetUpdateAttributes(bool);
void onSierpinskiCarpetOk();
void onSierpinskiCarpetCancel();
void onSierpinskiCarpetInc();
@@ -211,16 +214,20 @@ protected:
std::vector& faces,
int markVols);
- void sierpinski_carpet_copy_attributes_and_embed_vertex(Dart_handle dh, LCC::Point& p);
+ void sierpinski_carpet_copy_attributes_and_embed_vertex(Dart_handle dh,
+ LCC::Point& p);
void sierpinski_carpet_update_geometry();
void sierpinski_carpet_compute_geometry();
- void sierpinski_carpet_compute_4x4_geometry_matrix(LCC::Point p[4][4], LCC::Point& p00, LCC::Point& p03, LCC::Point& p33, LCC::Point& p30);
+ void sierpinski_carpet_compute_4x4_geometry_matrix(LCC::Point p[4][4],
+ LCC::Point& p00, LCC::Point& p03, LCC::Point& p33, LCC::Point& p30);
void sierpinski_carpet_split_edge_in_three(Dart_handle dh);
- void sierpinski_carpet_split_face_in_three(Dart_handle dh, bool removecenter);
+ void sierpinski_carpet_split_face_in_three(Dart_handle dh,
+ bool removecenter);
void sierpinski_carpet_split_face_in_nine(Dart_handle dh);
void sierpinski_triangle_split_edge_in_two(Dart_handle dh);
- void sierpinski_triangle_split_face_in_four(Dart_handle dh, bool removecenter);
+ void sierpinski_triangle_split_face_in_four(Dart_handle dh,
+ bool removecenter);
Scene scene;
@@ -237,13 +244,14 @@ protected:
int sierpinskiCarpetLevel;
std::size_t nbfacesinit;
- bool neverUpdateAttributes;
+ bool sierpinskiCarpetUpdateAttributes;
+ bool computeGeometry;
+ /*bool neverUpdateAttributes;
bool duringConstructionUpdateAttributes;
bool afterConstructionUpdateAttributes;
bool updateAttributesMethodStdMap;
bool updateAttributesMethodTraversal;
- bool computeGeometry;
- bool isComputableGeometry;
+ bool isComputableGeometry;*/
std::vector sierpinskiCarpetSurfaces;
// utilisés seulement lorsque pas de mise à jour d'attributs
std::map dart_map;
diff --git a/Linear_cell_complex/demo/Linear_cell_complex/Viewer.cpp b/Linear_cell_complex/demo/Linear_cell_complex/Viewer.cpp
index 4f9454497b5..2840bb5b4f9 100644
--- a/Linear_cell_complex/demo/Linear_cell_complex/Viewer.cpp
+++ b/Linear_cell_complex/demo/Linear_cell_complex/Viewer.cpp
@@ -188,34 +188,34 @@ void Viewer::drawAllVertices()
void Viewer::initDraw()
{
//Compile drawFacet
- std::cout << "Compile Display Lists : Faces, " << std::flush;
+ // std::cout << "Compile Display Lists : Faces, " << std::flush;
m_dlFaces = ::glGenLists(1);
::glNewList(m_dlFaces, GL_COMPILE);
drawAllFaces(false);
::glEndList();
//Compile drawFacet with flat shading
- std::cout << "Faces (flat shading), " << std::flush;
+ // std::cout << "Faces (flat shading), " << std::flush;
m_dlFacesFlat = ::glGenLists(1);
::glNewList(m_dlFacesFlat, GL_COMPILE);
drawAllFaces(true);
::glEndList();
//Compile drawEdge
- std::cout << "edges, " << std::flush;
+ // std::cout << "edges, " << std::flush;
m_dlEdges = ::glGenLists(1);
::glNewList(m_dlEdges, GL_COMPILE);
drawAllEdges();
::glEndList();
//Compile drawvertices
- std::cout << "vertices" << std::flush;
+ // std::cout << "vertices" << std::flush;
m_dlVertices = ::glGenLists(1);
::glNewList(m_dlVertices, GL_COMPILE);
drawAllVertices();
::glEndList();
- std::cout << ". DONE." << std::endl;
+ // std::cout << ". DONE." << std::endl;
m_displayListCreated = true;
}