diff --git a/SCHNApps/Plugins/render/src/render.cpp b/SCHNApps/Plugins/render/src/render.cpp
index 7815040e6031d40e0f5ce209e8385de7d4c492af..67784c2a9c17b6aba7ccf99f13df244265dc87bb 100644
--- a/SCHNApps/Plugins/render/src/render.cpp
+++ b/SCHNApps/Plugins/render/src/render.cpp
@@ -250,7 +250,6 @@ void RenderPlugin::changeSelectedMap(View* view, MapHandlerGen* map, bool fromUI
if(!fromUI)
m_dockTab->refreshUI(params);
- view->updateGL();
}
}
diff --git a/SCHNApps/Plugins/renderTopoSurface/forms/renderTopoSurface.ui b/SCHNApps/Plugins/renderTopoSurface/forms/renderTopoSurface.ui
index db0935f60614eaf0c3beb6fad814ac2b8e79eaa0..6eae3cc5fe41516461b1addca425c93ae9287567 100644
--- a/SCHNApps/Plugins/renderTopoSurface/forms/renderTopoSurface.ui
+++ b/SCHNApps/Plugins/renderTopoSurface/forms/renderTopoSurface.ui
@@ -13,11 +13,11 @@
Form
-
- -
+
+
-
- -
+
-
QLayout::SetDefaultConstraint
@@ -41,10 +41,40 @@
- -
+
-
- -
+
-
+
+
+ draw darts
+
+
+ true
+
+
+
+ -
+
+
+ draw phi1
+
+
+ true
+
+
+
+ -
+
+
+ draw phi2
+
+
+ true
+
+
+
+ -
-
@@ -82,7 +112,7 @@
- -
+
-
Qt::Vertical
diff --git a/SCHNApps/Plugins/renderTopoSurface/include/renderTopoSurface.h b/SCHNApps/Plugins/renderTopoSurface/include/renderTopoSurface.h
index 1a76866a4cda8996cd506d3488c49671d00f8169..636c0c72ed1bef02b7071e00009f2f00d6cf6351 100644
--- a/SCHNApps/Plugins/renderTopoSurface/include/renderTopoSurface.h
+++ b/SCHNApps/Plugins/renderTopoSurface/include/renderTopoSurface.h
@@ -19,10 +19,13 @@ struct PerMapParameterSet
void updateRender();
- Algo::Render::GL2::TopoRender* m_renderTopo;
MapHandlerGen* mh;
+ Algo::Render::GL2::TopoRender* m_renderTopo;
VertexAttribute positionAttribute;
+ bool drawDarts;
+ bool drawPhi1;
+ bool drawPhi2;
float edgesScaleFactor;
float facesScaleFactor;
};
@@ -63,7 +66,6 @@ public:
virtual void mouseMove(View* view, QMouseEvent* event) {}
virtual void wheelEvent(View* view, QWheelEvent* event) {}
-
protected:
RenderTopoSurfaceDockTab* m_dockTab;
QHash h_viewParams;
@@ -77,9 +79,10 @@ public slots:
void mapUnlinked(MapHandlerGen* m);
void changeSelectedMap(View* view, MapHandlerGen* map, bool fromUI = false);
-
void changePositionAttribute(View* view, MapHandlerGen* map, VertexAttribute attribute, bool fromUI = false);
-
+ void changeDrawDarts(View* view, MapHandlerGen* map, bool b, bool fromUI = false);
+ void changeDrawPhi1(View* view, MapHandlerGen* map, bool b, bool fromUI = false);
+ void changeDrawPhi2(View* view, MapHandlerGen* map, bool b, bool fromUI = false);
void changeEdgesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false);
void changeFacesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI = false);
diff --git a/SCHNApps/Plugins/renderTopoSurface/include/renderTopoSurfaceDockTab.h b/SCHNApps/Plugins/renderTopoSurface/include/renderTopoSurfaceDockTab.h
index 22cc081a9bde0d223b4fc21ff222263f8dc4cb76..030f0313fe0f760491db73b75a824f38dbf8f961 100644
--- a/SCHNApps/Plugins/renderTopoSurface/include/renderTopoSurfaceDockTab.h
+++ b/SCHNApps/Plugins/renderTopoSurface/include/renderTopoSurfaceDockTab.h
@@ -1,5 +1,5 @@
-#ifndef _RENDER_TOPO_DOCK_TAB_H_
-#define _RENDER_TOPO_DOCK_TAB_H_
+#ifndef _RENDER_TOPO_SURFACE_DOCK_TAB_H_
+#define _RENDER_TOPO_SURFACE_DOCK_TAB_H_
#include "ui_renderTopoSurface.h"
@@ -31,8 +31,12 @@ public slots:
void selectedMapChanged();
void positionAttributeChanged(int index);
+ void drawDartsChanged(bool b);
+ void drawPhi1Changed(bool b);
+ void drawPhi2Changed(bool b);
void edgesScaleFactorChanged(int i);
void facesScaleFactorChanged(int i);
+ void addAttributeToList(unsigned int orbit, const QString& nameAttr);
};
} // namespace SCHNApps
diff --git a/SCHNApps/Plugins/renderTopoSurface/src/renderTopoSurface.cpp b/SCHNApps/Plugins/renderTopoSurface/src/renderTopoSurface.cpp
index 9c9d00237c2c44fa3e5dd4658336439c578da221..f488705d57878c9f9c1829a29c7b1dc13c1db51e 100644
--- a/SCHNApps/Plugins/renderTopoSurface/src/renderTopoSurface.cpp
+++ b/SCHNApps/Plugins/renderTopoSurface/src/renderTopoSurface.cpp
@@ -10,13 +10,14 @@ namespace SCHNApps
PerMapParameterSet::PerMapParameterSet(MapHandlerGen* m) :
mh(m),
+ drawDarts(true),
+ drawPhi1(true),
+ drawPhi2(true),
edgesScaleFactor(1.0f),
facesScaleFactor(1.0f)
{
m_renderTopo = new Algo::Render::GL2::TopoRender();
- std::cout << "plop" << std::endl;
-
QString positionName;
QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3()));
@@ -35,7 +36,6 @@ PerMapParameterSet::PerMapParameterSet(MapHandlerGen* m) :
updateRender();
}
-
PerMapParameterSet::~PerMapParameterSet()
{
delete m_renderTopo;
@@ -43,17 +43,11 @@ PerMapParameterSet::~PerMapParameterSet()
void PerMapParameterSet::updateRender()
{
- MapHandler* mh2 = static_cast*>(mh);
- if(mh2 == NULL)
- return;
-
- PFP2::MAP* m = mh2->getMap();
-
- m_renderTopo->updateData(*m,positionAttribute,edgesScaleFactor,facesScaleFactor);
-
- std::cout << "update render " << std::endl;
+ PFP2::MAP* m = static_cast*>(mh)->getMap();
+ m_renderTopo->updateData(*m, positionAttribute, edgesScaleFactor, facesScaleFactor);
}
+
bool RenderTopoSurfacePlugin::enable()
{
m_dockTab = new RenderTopoSurfaceDockTab(m_window, this);
@@ -80,12 +74,12 @@ void RenderTopoSurfacePlugin::redraw(View* view)
{
PerMapParameterSet* p = params->perMap[m->getName()];
- if(p != NULL)
- p->m_renderTopo->drawTopo();
-
-// if (p->m_selectedDart != NIL)
-// p->m_renderTopo->overdrawDart(m_selectedDart, 4.0f, 1.0f, 0.0f, 0.0f) ;
-
+ if(p->drawDarts)
+ p->m_renderTopo->drawDarts();
+ if(p->drawPhi1)
+ p->m_renderTopo->drawRelation1();
+ if(p->drawPhi2)
+ p->m_renderTopo->drawRelation2();
}
}
@@ -103,7 +97,7 @@ void RenderTopoSurfacePlugin::viewLinked(View* view, Plugin* plugin)
registerShader(p->m_renderTopo->shader2());
params->perMap.insert(mh->getName(), p);
}
- if (!maps.empty())
+ if(!maps.empty())
changeSelectedMap(view, maps[0]);
connect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*)));
@@ -118,6 +112,15 @@ void RenderTopoSurfacePlugin::viewUnlinked(View* view, Plugin* plugin)
{
if(plugin == this)
{
+ ParameterSet* params = h_viewParams[view];
+ QHash::const_iterator i = params->perMap.constBegin();
+ while (i != params->perMap.constEnd())
+ {
+ unregisterShader(i.value()->m_renderTopo->shader1());
+ unregisterShader(i.value()->m_renderTopo->shader2());
+ delete i.value();
+ ++i;
+ }
h_viewParams.remove(view);
disconnect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*)));
@@ -128,11 +131,7 @@ void RenderTopoSurfacePlugin::viewUnlinked(View* view, Plugin* plugin)
void RenderTopoSurfacePlugin::currentViewChanged(View* view)
{
if(isLinkedToView(view))
- {
-// ParameterSet* params = h_viewParams[view];
-// changeSelectedMap(view, params->selectedMap);
m_dockTab->refreshUI(h_viewParams[view]);
- }
}
void RenderTopoSurfacePlugin::mapLinked(MapHandlerGen* m)
@@ -144,14 +143,10 @@ void RenderTopoSurfacePlugin::mapLinked(MapHandlerGen* m)
connect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified()));
ParameterSet* params = h_viewParams[view];
-
PerMapParameterSet* p = new PerMapParameterSet(m);
-
registerShader(p->m_renderTopo->shader1());
registerShader(p->m_renderTopo->shader2());
-
params->perMap.insert(m->getName(), p);
-
if(params->selectedMap == NULL || params->perMap.count() == 1)
changeSelectedMap(view, m);
else
@@ -167,6 +162,7 @@ void RenderTopoSurfacePlugin::mapUnlinked(MapHandlerGen* m)
disconnect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified()));
ParameterSet* params = h_viewParams[view];
+ delete params->perMap[m->getName()];
params->perMap.remove(m->getName());
if(params->selectedMap == m)
@@ -189,9 +185,13 @@ void RenderTopoSurfacePlugin::changeSelectedMap(View* view, MapHandlerGen* map,
if(view->isCurrentView())
{
+ if(prev)
+ disconnect(prev, SIGNAL(attributeAdded(unsigned int, const QString&)), m_dockTab, SLOT(addAttributeToList(unsigned int, const QString&)));
+ if(map)
+ connect(map, SIGNAL(attributeAdded(unsigned int, const QString&)), m_dockTab, SLOT(addAttributeToList(unsigned int, const QString&)));
+
if(!fromUI)
m_dockTab->refreshUI(params);
- view->updateGL();
}
}
@@ -210,6 +210,44 @@ void RenderTopoSurfacePlugin::changePositionAttribute(View* view, MapHandlerGen*
}
}
+void RenderTopoSurfacePlugin::changeDrawDarts(View* view, MapHandlerGen* map, bool b, bool fromUI)
+{
+ ParameterSet* params = h_viewParams[view];
+ params->perMap[map->getName()]->drawDarts = b;
+
+ if(view->isCurrentView())
+ {
+ if(!fromUI)
+ m_dockTab->refreshUI(params);
+ view->updateGL();
+ }
+}
+
+void RenderTopoSurfacePlugin::changeDrawPhi1(View* view, MapHandlerGen* map, bool b, bool fromUI)
+{
+ ParameterSet* params = h_viewParams[view];
+ params->perMap[map->getName()]->drawPhi1 = b;
+
+ if(view->isCurrentView())
+ {
+ if(!fromUI)
+ m_dockTab->refreshUI(params);
+ view->updateGL();
+ }
+}
+
+void RenderTopoSurfacePlugin::changeDrawPhi2(View* view, MapHandlerGen* map, bool b, bool fromUI)
+{
+ ParameterSet* params = h_viewParams[view];
+ params->perMap[map->getName()]->drawPhi2 = b;
+
+ if(view->isCurrentView())
+ {
+ if(!fromUI)
+ m_dockTab->refreshUI(params);
+ view->updateGL();
+ }
+}
void RenderTopoSurfacePlugin::changeEdgesScaleFactor(View* view, MapHandlerGen* map, int i, bool fromUI)
{
@@ -243,7 +281,20 @@ void RenderTopoSurfacePlugin::changeFacesScaleFactor(View* view, MapHandlerGen*
void RenderTopoSurfacePlugin::attributeModified(unsigned int orbit, QString nameAttr)
{
-
+ if(orbit == VERTEX)
+ {
+ MapHandlerGen* map = static_cast(QObject::sender());
+ foreach(View* view, l_views)
+ {
+ ParameterSet* params = h_viewParams[view];
+ if(params->perMap.contains(map->getName()))
+ {
+ PerMapParameterSet* perMap = params->perMap[map->getName()];
+ if(nameAttr == QString::fromStdString(perMap->positionAttribute.name()))
+ perMap->updateRender();
+ }
+ }
+ }
}
void RenderTopoSurfacePlugin::connectivityModified()
diff --git a/SCHNApps/Plugins/renderTopoSurface/src/renderTopoSurfaceDockTab.cpp b/SCHNApps/Plugins/renderTopoSurface/src/renderTopoSurfaceDockTab.cpp
index dd98c265f81f262be348cda64a1a5b5c332d27ae..4f28b7f64bd57f7abf6027098f9fe32030193ec8 100644
--- a/SCHNApps/Plugins/renderTopoSurface/src/renderTopoSurfaceDockTab.cpp
+++ b/SCHNApps/Plugins/renderTopoSurface/src/renderTopoSurfaceDockTab.cpp
@@ -11,16 +11,17 @@ namespace SCHNApps
{
RenderTopoSurfaceDockTab::RenderTopoSurfaceDockTab(Window* w, RenderTopoSurfacePlugin* p) :
- m_window(w),
- m_plugin(p),
- b_refreshingUI(false)
+ m_window(w),
+ m_plugin(p),
+ b_refreshingUI(false)
{
setupUi(this);
connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(selectedMapChanged()));
-
connect(combo_positionAttribute, SIGNAL(currentIndexChanged(int)), this, SLOT(positionAttributeChanged(int)));
-
+ connect(check_drawDarts, SIGNAL(toggled(bool)), this, SLOT(drawDartsChanged(bool)));
+ connect(check_drawPhi1, SIGNAL(toggled(bool)), this, SLOT(drawPhi1Changed(bool)));
+ connect(check_drawPhi2, SIGNAL(toggled(bool)), this, SLOT(drawPhi2Changed(bool)));
connect(slider_edgesScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(edgesScaleFactorChanged(int)));
connect(slider_facesScaleFactor, SIGNAL(valueChanged(int)), this, SLOT(facesScaleFactorChanged(int)));
}
@@ -63,6 +64,9 @@ void RenderTopoSurfaceDockTab::refreshUI(ParameterSet* params)
}
}
+ check_drawDarts->setChecked(p->drawDarts);
+ check_drawPhi1->setChecked(p->drawPhi1);
+ check_drawPhi2->setChecked(p->drawPhi2);
slider_edgesScaleFactor->setSliderPosition(p->edgesScaleFactor * 50.0);
slider_facesScaleFactor->setSliderPosition(p->facesScaleFactor * 50.0);
}
@@ -92,6 +96,36 @@ void RenderTopoSurfaceDockTab::positionAttributeChanged(int index)
}
}
+void RenderTopoSurfaceDockTab::drawDartsChanged(bool b)
+{
+ if(!b_refreshingUI)
+ {
+ View* view = m_window->getCurrentView();
+ MapHandlerGen* map = m_currentParams->selectedMap;
+ m_plugin->changeDrawDarts(view, map, b, true);
+ }
+}
+
+void RenderTopoSurfaceDockTab::drawPhi1Changed(bool b)
+{
+ if(!b_refreshingUI)
+ {
+ View* view = m_window->getCurrentView();
+ MapHandlerGen* map = m_currentParams->selectedMap;
+ m_plugin->changeDrawPhi1(view, map, b, true);
+ }
+}
+
+void RenderTopoSurfaceDockTab::drawPhi2Changed(bool b)
+{
+ if(!b_refreshingUI)
+ {
+ View* view = m_window->getCurrentView();
+ MapHandlerGen* map = m_currentParams->selectedMap;
+ m_plugin->changeDrawPhi2(view, map, b, true);
+ }
+}
+
void RenderTopoSurfaceDockTab::facesScaleFactorChanged(int i)
{
if(!b_refreshingUI)
@@ -112,6 +146,18 @@ void RenderTopoSurfaceDockTab::edgesScaleFactorChanged(int i)
}
}
+void RenderTopoSurfaceDockTab::addAttributeToList(unsigned int orbit, const QString& nameAttr)
+{
+ QString vec3TypeName = QString::fromStdString(nameOfType(PFP2::VEC3()));
+
+ const QString& typeAttr = m_currentParams->selectedMap->getAttributeTypeName(orbit, nameAttr);
+
+ if(typeAttr == vec3TypeName)
+ {
+ combo_positionAttribute->addItem(nameAttr);
+ }
+}
+
} // namespace SCHNApps
} // namespace CGoGN
diff --git a/SCHNApps/Plugins/renderVector/src/renderVector.cpp b/SCHNApps/Plugins/renderVector/src/renderVector.cpp
index c45f4041ba0343938591e5593d6f0da5a94b7e7a..7088948bdee8610f501f22e17e2866515ffdfd08 100644
--- a/SCHNApps/Plugins/renderVector/src/renderVector.cpp
+++ b/SCHNApps/Plugins/renderVector/src/renderVector.cpp
@@ -86,7 +86,7 @@ void RenderVectorPlugin::viewLinked(View* view, Plugin* plugin)
PerMapParameterSet p(map);
params->perMap.insert(map->getName(), p);
}
- if (!maps.empty())
+ if(!maps.empty())
changeSelectedMap(view, maps[0]);
connect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*)));
@@ -182,7 +182,6 @@ void RenderVectorPlugin::changeSelectedMap(View* view, MapHandlerGen* map, bool
if(!fromUI)
m_dockTab->refreshUI(params);
- view->updateGL();
}
}
diff --git a/SCHNApps/Plugins/surfaceDeformation/src/surfaceDeformation.cpp b/SCHNApps/Plugins/surfaceDeformation/src/surfaceDeformation.cpp
index e086091cb937312435c97a976b152abe349602a2..cdff5f483fa84536707a7f6735f939e6527be1ba 100644
--- a/SCHNApps/Plugins/surfaceDeformation/src/surfaceDeformation.cpp
+++ b/SCHNApps/Plugins/surfaceDeformation/src/surfaceDeformation.cpp
@@ -70,6 +70,13 @@ PerMapParameterSet::PerMapParameterSet(MapHandlerGen* m) :
initParameters();
}
+PerMapParameterSet::~PerMapParameterSet()
+{
+ delete lockingMarker;
+ delete handleMarker;
+ nlDeleteContext(nlContext);
+}
+
void PerMapParameterSet::initParameters()
{
if(positionAttribute.isValid())
@@ -97,13 +104,6 @@ void PerMapParameterSet::initParameters()
}
}
-PerMapParameterSet::~PerMapParameterSet()
-{
- delete lockingMarker;
- delete handleMarker;
- nlDeleteContext(nlContext);
-}
-
bool SurfaceDeformationPlugin::enable()
{
@@ -459,7 +459,6 @@ void SurfaceDeformationPlugin::changeSelectedMap(View* view, MapHandlerGen* map)
}
m_dockTab->refreshUI(params);
- view->updateGL();
}
}
diff --git a/SCHNApps/bin/init.py b/SCHNApps/bin/init.py
index f0a9dc7adc4a2fe3a053fd46f228d17011f5bc70..e4151c983cc47d96451b8b797f42001fe2eeef2e 100644
--- a/SCHNApps/bin/init.py
+++ b/SCHNApps/bin/init.py
@@ -1,6 +1,7 @@
importPlugin = schnapps.loadPlugin("ImportSurface");
-renderPlugin = schnapps.loadPlugin("RenderD");
-renderVectorPlugin = schnapps.loadPlugin("RenderVectorD");
+renderPlugin = schnapps.loadPlugin("Render");
+renderVectorPlugin = schnapps.loadPlugin("RenderVector");
+renderTopoSurfacePlugin = schnapps.loadPlugin("RenderTopoSurfaceD");
differentialPropertiesPlugin = schnapps.loadPlugin("DifferentialProperties");
subdivisionPlugin = schnapps.loadPlugin("SubdivideSurface");
surfaceDeformationPlugin = schnapps.loadPlugin("SurfaceDeformation");
@@ -11,6 +12,7 @@ v = schnapps.getView("view_0");
schnapps.linkViewAndPlugin(v.getName(), renderPlugin.getName());
schnapps.linkViewAndPlugin(v.getName(), renderVectorPlugin.getName());
+schnapps.linkViewAndPlugin(v.getName(), renderTopoSurfacePlugin.getName());
schnapps.linkViewAndPlugin(v.getName(), surfaceDeformationPlugin.getName());
schnapps.linkViewAndMap(v.getName(), obj.getName());
diff --git a/include/Algo/Render/GL2/topoRender.h b/include/Algo/Render/GL2/topoRender.h
index e52edbceb645aa42c55e7a6385cad9869c15646d..6cebd84816fc8e1eb5ca657916dcfad05d430f4f 100644
--- a/include/Algo/Render/GL2/topoRender.h
+++ b/include/Algo/Render/GL2/topoRender.h
@@ -196,6 +196,12 @@ public:
*/
void drawTopo();
+ /**
+ * get shader objects
+ */
+ Utils::GLSLShader* shader1() { return static_cast(m_shader1); }
+ Utils::GLSLShader* shader2() { return static_cast(m_shader2); }
+
/**
* change dart drawing color
* @param d the dart
@@ -286,9 +292,6 @@ public:
* @param ns distance shift
*/
void setBoundaryShift(float bs);
-
- Utils::GLSLShader* shader1() { return static_cast(m_shader1); }
- Utils::GLSLShader* shader2() { return static_cast(m_shader2); }
};
// just for compatibility with old code