Skip to content

Commit 9aeb012

Browse files
committed
Fixes for group display
1 parent fa68b5b commit 9aeb012

File tree

9 files changed

+34
-34
lines changed

9 files changed

+34
-34
lines changed

Polyhedron/demo/Polyhedron/MainWindow.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,7 @@ void MainWindow::setupViewer(Viewer* viewer, SubViewer* subviewer=NULL)
22202220
connect(ui->actionL_ighting, SIGNAL(triggered()),
22212221
viewer, SLOT(setLighting_clicked()));
22222222
connect(ui->actionSet_Transparency_Pass_Number, SIGNAL(triggered()),
2223-
viewer, SLOT());
2223+
viewer, SLOT(setTotalPass_clicked()));
22242224
}
22252225
else
22262226
{
@@ -2267,6 +2267,9 @@ void MainWindow::setupViewer(Viewer* viewer, SubViewer* subviewer=NULL)
22672267
action= subviewer->findChild<QAction*>("actionLight");
22682268
connect(action, &QAction::triggered,
22692269
viewer, &Viewer::setLighting_clicked);
2270+
action= subviewer->findChild<QAction*>("actionTotalPass");
2271+
connect(action, &QAction::triggered,
2272+
viewer, &Viewer::setTotalPass_clicked);
22702273

22712274
}
22722275

@@ -2395,6 +2398,9 @@ SubViewer::SubViewer(MainWindow* mw, Viewer* viewer)
23952398
QAction* actionLight = new QAction("L&ighting...",this);
23962399
actionLight->setObjectName("actionLight");
23972400
viewMenu->addAction(actionLight);
2401+
QAction* actionTotalPass = new QAction("Set Transparency Pass &Number...",this);
2402+
actionTotalPass->setObjectName("actionTotalPass");
2403+
viewMenu->addAction(actionTotalPass);
23982404

23992405
}
24002406
SubViewer::~SubViewer()

Polyhedron/demo/Polyhedron/Scene.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,8 @@ void Scene::renderScene(const QList<Scene_interface::Item_id> &items,
470470
Q_FOREACH(Scene_interface::Item_id index, items)
471471
{
472472
CGAL::Three::Scene_item& item = *m_entries[index];
473+
CGAL::Three::Scene_group_item* group =
474+
qobject_cast<CGAL::Three::Scene_group_item*>(&item);
473475
if(index == selected_item || selected_items_list.contains(index))
474476
{
475477
item.selection_changed(true);
@@ -480,13 +482,10 @@ void Scene::renderScene(const QList<Scene_interface::Item_id> &items,
480482
item.selection_changed(false);
481483
}
482484

483-
if(item.visible())
485+
if(group ||item.visible())
484486
{
485-
if(item.renderingMode() == Flat || item.renderingMode() == FlatPlusEdges || item.renderingMode() == Gouraud)
487+
if( group || item.renderingMode() == Flat || item.renderingMode() == FlatPlusEdges || item.renderingMode() == Gouraud)
486488
{
487-
//viewer->glEnable(GL_LIGHTING);
488-
//viewer->glPointSize(2.f);
489-
//viewer->glLineWidth(1.0f);
490489
if(item.renderingMode() == Gouraud)
491490
viewer->glShadeModel(GL_SMOOTH);
492491
else
@@ -517,6 +516,8 @@ void Scene::renderWireScene(const QList<Scene_interface::Item_id> &items,
517516
Q_FOREACH(Scene_interface::Item_id index, items)
518517
{
519518
CGAL::Three::Scene_item& item = *m_entries[index];
519+
CGAL::Three::Scene_group_item* group =
520+
qobject_cast<CGAL::Three::Scene_group_item*>(&item);
520521
if(index == selected_item || selected_items_list.contains(index))
521522
{
522523
item.selection_changed(true);
@@ -526,9 +527,9 @@ void Scene::renderWireScene(const QList<Scene_interface::Item_id> &items,
526527
item.selection_changed(false);
527528
}
528529

529-
if(item.visible())
530+
if(group ||item.visible())
530531
{
531-
if((!with_names && item.renderingMode() == FlatPlusEdges )
532+
if( group || (!with_names && item.renderingMode() == FlatPlusEdges )
532533
|| item.renderingMode() == Wireframe
533534
|| item.renderingMode() == PointsPlusNormals)
534535
{
@@ -581,14 +582,16 @@ void Scene::renderPointScene(const QList<Scene_interface::Item_id> &items,
581582
Q_FOREACH(Scene_interface::Item_id index, items)
582583
{
583584
CGAL::Three::Scene_item& item = *m_entries[index];
584-
if(item.visible())
585+
CGAL::Three::Scene_group_item* group =
586+
qobject_cast<CGAL::Three::Scene_group_item*>(&item);
587+
if(group ||item.visible())
585588
{
586589
if(item.renderingMode() == Points && with_names) {
587590
viewer->glClearDepth(1.0);
588591
viewer->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
589592
}
590593

591-
if(item.renderingMode() == Points ||
594+
if(group || item.renderingMode() == Points ||
592595
(item.renderingMode() == PointsPlusNormals) ||
593596
(item.renderingMode() == ShadedPoints))
594597
{

Polyhedron/demo/Polyhedron/Scene_item.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,6 @@ QString modeName(RenderingMode mode) {
7676
return QObject::tr("Gouraud");
7777
case PointsPlusNormals:
7878
return QObject::tr("pts+normals");
79-
case Splatting:
80-
return QObject::tr("splats");
8179
default:
8280
Q_ASSERT(false);
8381
return QObject::tr("unknown");
@@ -101,8 +99,6 @@ const char* slotName(RenderingMode mode) {
10199
return SLOT(setGouraudMode());
102100
case PointsPlusNormals:
103101
return SLOT(setPointsPlusNormalsMode());
104-
case Splatting:
105-
return SLOT(setSplattingMode());
106102
default:
107103
Q_ASSERT(false);
108104
return "";

Polyhedron/demo/Polyhedron/Scene_polyhedron_item.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1807,7 +1807,6 @@ bool Scene_polyhedron_item::supportsRenderingMode(RenderingMode m) const
18071807
{
18081808
return (
18091809
m!=PointsPlusNormals &&
1810-
m!=Splatting &&
18111810
m!=ShadedPoints &&
18121811
!(m==Flat && d->no_flat)
18131812
);

Polyhedron/demo/Polyhedron/Scene_polyhedron_item_decorator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class SCENE_POLYHEDRON_ITEM_DECORATOR_EXPORT Scene_polyhedron_item_decorator
3636
// QMenu* contextMenu();
3737

3838
// Indicate if rendering mode is supported
39-
bool supportsRenderingMode(RenderingMode m) const { return (m!=PointsPlusNormals && m!=Splatting); }
39+
bool supportsRenderingMode(RenderingMode m) const { return (m!=PointsPlusNormals); }
4040

4141
// Get wrapped polyhedron
4242
Face_graph* polyhedron();

Polyhedron/demo/Polyhedron/Viewer.cpp

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ class Viewer_impl {
8989
bool extension_is_found;
9090
int pass;
9191
int total_pass;
92+
int current_total_pass;
9293
TextRenderer *textRenderer;
9394
/*!
9495
* \brief makeArrow creates an arrow and stores it in a struct of vectors.
@@ -128,7 +129,7 @@ class Viewer_impl {
128129
fpsString=Viewer::tr("%1Hz", "Frames per seconds, in Hertz").arg("?");
129130
distance_is_displayed = false;
130131
is_d_pressed = false;
131-
total_pass = 4;
132+
total_pass = 5;
132133
}
133134
void makeArrow(double R, int prec, qglviewer::Vec from, qglviewer::Vec to, qglviewer::Vec color, AxisData &data);
134135
//!Clears the distance display
@@ -232,7 +233,7 @@ void Viewer::setScene(CGAL::Three::Scene_draw_interface* scene)
232233

233234
bool Viewer::antiAliasing() const
234235
{
235-
return d->antialiasing;
236+
return d->antialiasing;
236237
}
237238

238239
void Viewer::setAntiAliasing(bool b)
@@ -263,7 +264,7 @@ bool Viewer::inFastDrawing() const
263264
}
264265

265266
void Viewer::draw()
266-
{
267+
{
267268
glEnable(GL_DEPTH_TEST);
268269
d->draw_aux(false, this);
269270
}
@@ -538,7 +539,7 @@ void Viewer::initializeGL()
538539
void Viewer::mousePressEvent(QMouseEvent* event)
539540
{
540541
if(event->button() == Qt::RightButton &&
541-
event->modifiers().testFlag(Qt::ShiftModifier))
542+
event->modifiers().testFlag(Qt::ShiftModifier))
542543
{
543544
select(event->pos());
544545
requestContextMenu(event->globalPos());
@@ -688,7 +689,7 @@ void Viewer_impl::draw_aux(bool with_names, Viewer* viewer)
688689
{
689690
if(scene == 0)
690691
return;
691-
total_pass = viewer->inFastDrawing() ? 3 : 6;
692+
current_total_pass = viewer->inFastDrawing() ? total_pass/2 : total_pass;
692693
viewer->glLineWidth(1.0f);
693694
viewer->glPointSize(2.f);
694695
viewer->glEnable(GL_POLYGON_OFFSET_FILL);
@@ -796,7 +797,7 @@ QString CGAL::Three::Viewer_interface::dumpFrame(const qglviewer::Frame& frame)
796797
bool Viewer::moveCameraToCoordinates(QString s, float animation_duration) {
797798
qglviewer::Frame new_frame;
798799
if(readFrame(s, new_frame)) {
799-
camera()->interpolateTo(new_frame, animation_duration);
800+
camera()->interpolateTo(new_frame, animation_duration);
800801
return true;
801802
}
802803
else
@@ -1740,12 +1741,13 @@ void Viewer::enableClippingBox(QVector4D box[6])
17401741

17411742
float Viewer::total_pass()
17421743
{
1743-
return d->total_pass * 1.0f;
1744+
return d->current_total_pass * 1.0f;
17441745
}
17451746

17461747
void Viewer::setTotalPass(int p)
17471748
{
17481749
d->total_pass = p;
1750+
update();
17491751
}
17501752
bool Viewer::isOpenGL_4_3() const { return d->is_ogl_4_3; }
17511753

@@ -1787,6 +1789,9 @@ void Viewer::setLighting_clicked()
17871789

17881790
void Viewer::setTotalPass_clicked()
17891791
{
1790-
1791-
1792+
bool ok;
1793+
int passes = QInputDialog::getInt(0, QString("Set Number of Passes"), QString("Number of Depth Peeling Passes: "), 4, 2,100, 1, &ok);
1794+
if(!ok)
1795+
return;
1796+
setTotalPass(passes);
17921797
}

Three/include/CGAL/Three/Scene_group_item.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,6 @@ public :
189189
void setPointsPlusNormalsMode(){
190190
setRenderingMode(PointsPlusNormals);
191191
}
192-
//!Sets all the children in splat rendering.
193-
void setSplattingMode(){
194-
setRenderingMode(Splatting);
195-
}
196192

197193
//!Sets the alpha value for the froup and all its children.
198194
virtual void setAlpha(int) Q_DECL_OVERRIDE;

Three/include/CGAL/Three/Scene_interface.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ enum RenderingMode
3636
{
3737
Points = 0, //! Renders only points without lighting.
3838
PointsPlusNormals, //!Renders points and normals.
39-
Splatting, //!Renders splats. Splats are oriented points that look like discs.
4039
Wireframe, //!Renders only edges.
4140
Flat, //!Renders only faces, with a lighting per face.
4241
FlatPlusEdges, //!Renders flat faces and edges.

Three/include/CGAL/Three/Scene_item.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -377,10 +377,6 @@ public Q_SLOTS:
377377
void setPointsPlusNormalsMode(){
378378
setRenderingMode(PointsPlusNormals);
379379
}
380-
//!Sets the RenderingMode to Splatting.
381-
void setSplattingMode(){
382-
setRenderingMode(Splatting);
383-
}
384380

385381
//!Emits an aboutToBeDestroyed() signal.
386382
//!Override this function to delete what needs to be deleted on destruction.

0 commit comments

Comments
 (0)