Commit 5b63bed6 authored by Sylvain Thery's avatar Sylvain Thery

Merge cgogn:~cgogn/CGoGN

parents 34bb63de ab764478
This diff is collapsed.
......@@ -194,7 +194,12 @@ void MyQT::createMap(int n)
m_render_topo->setDartWidth(4.0f);
m_render_topo->setInitialDartsColor(0.0f,0.0f,0.0f);
m_render_topo->setInitialBoundaryDartsColor(0.0f,0.0f,0.0f);
m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f,true); // nb
#ifdef PRIMAL_TOPO
m_render_topo->updateData<PFP>(myMap, position, 0.9);
#else
m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f,true);
#endif
for (Dart d=myMap.begin(); d!=myMap.end(); myMap.next(d))
{
......@@ -213,7 +218,12 @@ void MyQT::createMap(int n)
void MyQT::updateMap()
{
m_render_topo->setInitialBoundaryDartsColor(0.0f,0.0f,0.0f);
m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f,true); // nb
#ifdef PRIMAL_TOPO
m_render_topo->updateData<PFP>(myMap, position, 0.9);
#else
m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f,true);
#endif
for (Dart d=myMap.begin(); d!=myMap.end(); myMap.next(d))
{
if (dm.isMarked(d) && (!myMap.isBoundaryMarked2(d)))
......@@ -229,7 +239,11 @@ void MyQT::updateMap()
void MyQT::cb_initGL()
{
glClearColor(1.0f,1.0f,1.0f,1.0f);
m_render_topo = new Algo::Render::GL2::TopoRender(0.01f) ;
#ifdef PRIMAL_TOPO
m_render_topo = new Algo::Render::GL2::TopoPrimalRender() ;
#else
m_render_topo = new Algo::Render::GL2::TopoRender(0.01f) ;
#endif
}
// redraw GL callback (clear and swap already done)
......
......@@ -27,6 +27,7 @@
//#define USE_GMAP
//#define PRIMAL_TOPO 1
#include "Topology/generic/parameters.h"
......@@ -36,8 +37,11 @@
#include "Topology/map/embeddedMap2.h"
#endif
#include "Algo/Render/GL2/topoRender.h"
#ifdef PRIMAL_TOPO
#include "Algo/Render/GL2/topoPrimalRender.h"
#else
#include "Algo/Render/GL2/topoRender.h"
#endif
#include "ui_tuto_oper2.h"
#include "Utils/Qt/qtui.h"
......@@ -88,7 +92,11 @@ protected:
DartAttribute<VEC3> colorDarts;
// render (for the topo)
Algo::Render::GL2::TopoRender* m_render_topo;
#ifdef PRIMAL_TOPO
Algo::Render::GL2::TopoPrimalRender* m_render_topo;
#else
Algo::Render::GL2::TopoRender* m_render_topo;
#endif
Dart m_selected;
Dart m_selected2;
DartMarker dm;
......
This diff is collapsed.
......@@ -27,6 +27,7 @@
//#define USE_GMAP
//#define PRIMAL_TOPO 1
#include "Topology/generic/parameters.h"
......@@ -36,7 +37,12 @@
#include "Topology/map/embeddedMap3.h"
#endif
#include "Algo/Render/GL2/topo3Render.h"
#ifdef PRIMAL_TOPO
#include "Algo/Render/GL2/topo3PrimalRender.h"
#else
#include "Algo/Render/GL2/topo3Render.h"
#endif
#include "Algo/Render/GL2/topoRender.h"
#include "Algo/Geometry/boundingbox.h"
......@@ -71,7 +77,7 @@ class MyQT: public Utils::QT::SimpleQT
{
Q_OBJECT
public:
MyQT():m_render_topo(NULL),m_selected(NIL),m_selected2(NIL),dm(myMap),m_shift(0.01f),m_ex1(0.9f),m_ex2(0.9f),m_ex3(0.9f), clip_volume(true) , hide_clipping(false) {}
MyQT():m_render_topo(NULL),m_selected(NIL),m_selected2(NIL),m_shift(0.01f),m_ex1(0.9f),m_ex2(0.9f),m_ex3(0.9f), clip_volume(true) , hide_clipping(false) {}
void cb_redraw();
void cb_initGL();
......@@ -95,12 +101,15 @@ protected:
Geom::BoundingBox<PFP::VEC3> bb;
// render (for the topo)
#ifdef PRIMAL_TOPO
Algo::Render::GL2::Topo3PrimalRender* m_render_topo;
#else
Algo::Render::GL2::Topo3Render* m_render_topo;
#endif
Algo::Render::GL2::TopoRender* m_render_topo_boundary;
Dart m_selected;
Dart m_selected2;
std::vector<Dart> m_selecteds;
DartMarker dm;
float m_shift;
float m_ex1, m_ex2, m_ex3;
......@@ -136,6 +145,7 @@ protected:
public:
// example of simple map creation
void createMap(int n);
void createMapTets();
void updateMap();
void importMesh(std::string& filename);
......
......@@ -150,6 +150,11 @@
<string>unsewVolumes</string>
</property>
</item>
<item>
<property name="text">
<string>deleteVolume</string>
</property>
</item>
</widget>
</item>
<item row="6" column="0">
......
......@@ -37,7 +37,6 @@ find_package(Boost COMPONENTS regex thread system REQUIRED)
find_package(ZLIB REQUIRED)
find_package(LibXml2 REQUIRED)
find_package(GLEW REQUIRED)
#find_package(SuiteSparse REQUIRED)
IF (DEFINED ASSERTON)
add_definitions(-DCGOGN_ASSERT_BOOL=${ASSERTON})
......@@ -77,7 +76,6 @@ SET (CGoGN_EXT_INCLUDES
${ZLIB_INCLUDE_DIRS}
${LIBXML2_INCLUDE_DIR}
${Boost_INCLUDE_DIRS}
# ${SUITESPARSE_INCLUDE_DIRS}
)
# define libs for external libs
......@@ -90,9 +88,22 @@ SET (CGoGN_EXT_LIBS
${Boost_SYSTEM_LIBRARY}
${Boost_REGEX_LIBRARY}
${Boost_THREAD_LIBRARY}
# ${SUITESPARSE_LIBRARIES}
)
IF(WIN32)
SET (CGoGN_EXT_INCLUDES ${CGoGN_EXT_INCLUDES} ${CGoGN_ROOT_DIR}/windows_dependencies/include/suitesparse)
SET (CGoGN_EXT_LIBS ${CGoGN_EXT_LIBS}
${CGoGN_ROOT_DIR}/windows_dependencies/lib/suitesparse.lib
${CGoGN_ROOT_DIR}/windows_dependencies/lib/metis.lib
${CGoGN_ROOT_DIR}/windows_dependencies/lib/liblapack.lib
${CGoGN_ROOT_DIR}/windows_dependencies/lib/libblas.lib )
ELSE(WIN32)
find_package(SuiteSparse REQUIRED)
SET (CGoGN_EXT_INCLUDES ${CGoGN_EXT_INCLUDES} ${SUITESPARSE_INCLUDE_DIRS})
SET (CGoGN_EXT_LIBS ${CGoGN_EXT_LIBS} ${SUITESPARSE_LIBRARIES})
ENDIF(WIN32)
#optionnal libs
IF (WITH_ASSIMP)
add_definitions(-DWITH_ASSIMP)
......
*** english version below ***
Dépendences Linux:
installer les paquets suivants:
cmake cmake-curses-gui libXi-dev libXmu-dev libglew-dev libxml2-dev libboost-all-dev zlib1g-dev qt4-designer qt4-dev-tools uuid-dev libgsl0-dev libsuitesparse-dev
cmake cmake-curses-gui libXi-dev libXmu-dev libglew-dev libxml2-dev libboost-all-dev zlib1g-dev qt4-designer qt4-dev-tools uuid-dev libgsl0-dev libsuitesparse-dev
Pour compiler CGoGN:
- aller dans ThirdParty, cd build, taper "cmake .", puis make ( avec -j x si vous avez x core sur votre machine) suivi de make install
- on compile tout d'abord les bibliothèques third-party :
On peut fixer certaines option pour ne pas tout compiler (cf le README.TXT dans ThirdParty)
cd CGoGN/ThirdParty/build
cmake ..
make (-j x si vous avez x cores)
make install
On peut fixer certaines option pour ne pas tout compiler (cf le README.TXT dans ThirdParty)
On peut aussi compiler en debug en compilant dans un répertoire dont le nom finit par Debug ("buildDebug" par exemple)
- ensuite on compile CGoGN (compile les libs dans CGoGN/lib et des exemples dans CGoGN/bin) :
cd CGoGN/build
cmake ..
make (-j x si vous avez x cores)
Certaines options (booléennes) sont ici aussi disponible:
BUILD_SHARED_LIBS (F) experimental !
WITH_ASSIMP (T)
WITH_NUMERICAL (T)
WITH_ZINRI (T)
WITH_QT (T)
afin de limiter les dépendances et le temps de compilation
FORCE_MR (2)
permet de compiler dans 3 modes: mono-resolution (0), multi-resolution (1)
ONELIB (F)
permet de forcer la compilation en une seule lib (libcgogn.a) au lieu de quatre.
-> certaines options sont disponibles :
BUILD_SHARED_LIBS (F) experimental !
WITH_ASSIMP (T)
WITH_NUMERICAL (T)
WITH_ZINRI (T)
WITH_QT (T)
-> afin de limiter les dépendances et le temps de compilation
- on peut ensuite compiler SCHNApps ainsi que les plugins fournis :
FORCE_MR (0)
-> permet de compiler dans 2 modes: mono-resolution(0), multi-resolution(1)
ONELIB (F)
-> permet de forcer la compilation en une seule lib (libcgogn.a) au lieu de quatre.
- on peut ensuite compiler SCHNApps ainsi que les plugins fournis :
cd CGoGN/SCHNApps/build
cmake ..
make (-j x si vous avez x cores)
Des exemples de données:
- fichiers trianbgz, off, etc
sont accessible à l'adresse suivante:
Des exemples de données (fichiers trianbgz, off, etc..) sont accessible à l'adresse suivante:
https://iggservis.u-strasbg.fr/Data/data.zip
=========================================================================================
ENGLISH VERSION
=========================================================================================
......@@ -49,6 +55,7 @@ install the following packages:
cmake cmake-curses-gui libXi-dev libXmu-dev libglew-dev libxml2-dev libboost-all-dev zlib1g-dev qt4-designer qt4-dev-tools uuid-dev libgsl0-dev libsuitesparse-dev
To compile CGoGN:
- first compile third-party libraries:
cd CGoGN/ThirdParty/build
......@@ -64,26 +71,27 @@ To compile CGoGN:
cmake ..
make (-j x if you have x cores)
Some options are available:
BUILD_SHARED_LIBS (F) experimental !
WITH_ASSIMP (T)
WITH_NUMERICAL (T)
WITH_ZINRI (T)
WITH_QT (T)
to minimize dependencies and compilation time
FORCE_MR (2)
allows the compilation in 3 modes: mono-resolution (0), multi-resolution (1)
ONELIB (F)
allowss to force the compilation in one lib (libcgogn.a) instead of four.
-> some options are available:.
- we can then compile SCHNApps and the provided plugins :
BUILD_SHARED_LIBS (F) experimental !
WITH_ASSIMP (T)
WITH_NUMERICAL (T)
WITH_ZINRI (T)
WITH_QT (T)
-> to minimize dependencies and compilation time
FORCE_MR (0)
-> allows the compilation in 2 modes: mono-resolution(0), multi-resolution(1)
ONELIB (F)
-> allow compilation in one lib (libcgogn.a) instead of four.
- we can then compile SCHNApps and the provided plugins :
cd CGoGN/SCHNApps/build
cmake ..
make (-j x if you have x cores)
Examples of data:
- Trianbgz files, off, etc.
are accessible at the following address:
Examples of data (trianbgz, off, etc.. files) are available at the following address:
https://iggservis.u-strasbg.fr/Data/data.zip
......@@ -3,11 +3,11 @@
Compilation sous VisualExpress C++
Prérequis:
Visual Studio ou C++ Express (au moins 2005, si possible 2010)
Visual Studio ou C++ Express (testé avec 2010 express)
CMake (au moins 2.8)
Unziper le windows_dependencies.zip (http://iggservis.u-strasbg.fr/Data/) a la racine de CGoGN
Installer boost et Qt
Installer boost et Qt (4.8.x pas de 5.0 pour le moment)
Attention installer les binaires de Qt dans une version de compilateur differente (VS2008/VS2010)
permet d'executer mais pas de debugger !
......@@ -22,6 +22,7 @@ Mettre le chemin de la racine de CGoGN + /ThirdParty pour les sources
Mettre le chemin de la racine de CGoGN + /ThirdParty/build pour le build en release
Mettre le chemin de la racine de CGoGN + /ThirdParty/buildDebug pour le build en debug
Sous windows les 2 versions sont nécessaires.
La suite vaut pour les 2 répertoires:
Cliquer sur Configure
Choisir le bon compilateur (celui de votre version de Visual C++)
......@@ -29,7 +30,8 @@ Modifier les variables en fonctions de ce que vous voulez compiler (README.TXT d
Modifier le CMAKE_PREFIX_PATH si nécessaire (cf remarque dépendances)
Recliquer sur Configure
Cliquer sur Generate
Aller compiler sous visual(en release)
Aller sous visual, charger et compiler les 2 solutions
Ne pas oublier de générer la cible INSTALL (une seule fois)
Pour CGoGN:
Relancer CMake
......@@ -41,8 +43,15 @@ Modifier les variables comme pour ThirdParty (et CMAKE_PREFIX_PATH si nécessair
Recliquer sur Configure
Cliquer sur Generate
Si il ne trouve pas Qt lui remplir la variable QT_QMAKE_EXECUTABLE
Aller dans Visual et double-cliquer sur CGoGN.sln !!
ATTENTION: Problème de link avec QGLViewer en Debug.
Si vous compiler un exemple (tuto1 & viewer) en Debug, il faut modifier
le projet: Proprietés de configuration -> Editeur de liens -> entrée -> Dépendances supplémentaires
et changer le QGLViewer2.lib en QGLViewerd2.lib
Pour que les executables fonctionnent ajouter le chemin vers les dll des dépendances dans la variable
d'environnement path (ou copier les dll dans un répertoire déjà dans le path)
......@@ -53,18 +62,7 @@ changer le CMAKE_PREFIX_PATH (voir ci dessous)
Attention pour Boost le prefix path ne marche pas (utiliser BOOST_ROOT et d'autres si nécessaire)
Compilation 64bits:
La libraries et les exemples sont compilables en 64bit sous Windows.
Testé avec Visual Express C++ 2010 + Windows SDK 7.1
Les dépendances sont accessibles sous http://iggservis.u-strasbg.fr/Data/dependencies64.zip
Attention il faut modifer les projets et choisir Windows7.1SDK sous outils de plateforme
dans configuration/Général, pour utiliser les bons compilateurs et lib associées.
Remarque: gain de performance non négligeable en 64 bits (20/25%)
(Merci à Olivier Génevaux pour son expertise en compilation sous Windows !)
Compilation 64bits: TODO
......@@ -73,7 +71,7 @@ Remarque: gain de performance non négligeable en 64 bits (20/25%)
=========================================================================================
Prerequisites:
Visual Studio and C + + Express (at least 2005, possibly 2010)
Visual Studio and C ++ Express (2010)
CMake (at least 2.8)
Unzip the windows_dependencies.zip (http://iggservis.u-strasbg.fr/Data/) is the root of CGoGN
......@@ -103,8 +101,8 @@ Change the variables in functions that you want to compile (README.TXT for Third
Edit CMAKE_PREFIX_PATH if necessary (see note dependencies)
Click again on Configure
Click on Generate
Go compile under visual (in release)
Go on visual, load and compile the 2 solutions
Do not forgot to generate the target INSTALL (once)
For CGoGN:
......@@ -118,6 +116,10 @@ Click again on Configure
Click on Generate
Go to Visual and double-click on CGoGN.sln!
WARNING: Problem of linking with QGLViewer in Debug
If you compile an example (tuto1 & viewer) in Debug you have to modifiy
the project: Configuration properties -> Linking Editor -> Entries -> Supplementary dependencies
and change QGLViewer2.lib in QGLViewerd2.lib
For running executables you have to add the path to the dll dependencies in the variable
path environment (or copy the dll in a directory already in the path)
......@@ -128,18 +130,4 @@ If you want to use your own versions of dependency (Zlib / glew / Boost / Qt)
CMAKE_PREFIX_PATH change (see below)
Attention to Boost the prefix path does not work (use BOOST_ROOT and others if necessary)
Compiling 64-bit:
The libraries and the examples are compiled in 64bit Windows.
Tested with Visual Express C + + 2010 + Windows SDK 7.1
Dependencies are accessible in http://iggservis.u-strasbg.fr/Data/dependencies64.zip
Caution must be changed and select projects in Windows7.1SDK tools platform
in Configuration / General, to use the correct compiler and lib related.
Note: significant performance gain in 64-bit (20/25%)
(Thanks to Olivier Génevaux for its expertise in compilation under Windows!)
Compiling 64-bit: TODO
......@@ -129,16 +129,15 @@ SET(SCHNApps_QOBJECT_FILES
${SCHNApps_ROOT_DIR}/include/camera.h
${SCHNApps_ROOT_DIR}/include/mapHandler.h
${SCHNApps_ROOT_DIR}/include/plugin.h
${SCHNApps_ROOT_DIR}/include/plugin_interaction.h
${SCHNApps_ROOT_DIR}/include/plugin_processing.h
${SCHNApps_ROOT_DIR}/include/view.h
${SCHNApps_ROOT_DIR}/include/window.h
${SCHNApps_ROOT_DIR}/include/schnapps.h
${SCHNApps_ROOT_DIR}/include/viewButtonArea.h
${SCHNApps_ROOT_DIR}/include/dialogs/camerasDialog.h
${SCHNApps_ROOT_DIR}/include/dialogs/pluginsDialog.h
${SCHNApps_ROOT_DIR}/include/dialogs/mapsDialog.h
${SCHNApps_ROOT_DIR}/include/dialogs/cameraViewDialog.h
${SCHNApps_ROOT_DIR}/include/dialogs/pluginsViewDialog.h
${SCHNApps_ROOT_DIR}/include/dialogs/mapsViewDialog.h
${SCHNApps_ROOT_DIR}/include/colorComboBox.h
${SCHNApps_ROOT_DIR}/include/controlDock_cameraTab.h
${SCHNApps_ROOT_DIR}/include/controlDock_pluginTab.h
${SCHNApps_ROOT_DIR}/include/controlDock_mapTab.h
# ${SCHNApps_ROOT_DIR}/include/colorComboBox.h
)
......
cmake_minimum_required(VERSION 2.8)
ADD_SUBDIRECTORY(importSurface)
ADD_SUBDIRECTORY(importVolume)
ADD_SUBDIRECTORY(differentialProperties)
ADD_SUBDIRECTORY(render)
ADD_SUBDIRECTORY(renderVector)
ADD_SUBDIRECTORY(renderScalar)
ADD_SUBDIRECTORY(renderExplod)
ADD_SUBDIRECTORY(renderTopoSurface)
ADD_SUBDIRECTORY(subdivideSurface)
#ADD_SUBDIRECTORY(surfaceDeformation)
ADD_SUBDIRECTORY(subdivideMRVolume)
ADD_SUBDIRECTORY(surface_import)
ADD_SUBDIRECTORY(surface_render)
ADD_SUBDIRECTORY(surface_renderVector)
ADD_SUBDIRECTORY(surface_differentialProperties)
ADD_SUBDIRECTORY(surface_subdivision)
cmake_minimum_required(VERSION 2.8)
SET( PLUGIN_NAME RenderVector )
SET( PLUGIN_ROOT_DIR ${SCHNApps_ROOT_DIR}/Plugins/renderVector )
INCLUDE_DIRECTORIES(
${PLUGIN_ROOT_DIR}/include
${CMAKE_CURRENT_BINARY_DIR}
)
file(
GLOB_RECURSE
PLUGIN_FILES
${PLUGIN_ROOT_DIR}/src/*.cpp
${PLUGIN_ROOT_DIR}/include/*.h
${PLUGIN_ROOT_DIR}/include/*.hpp
)
file(
GLOB_RECURSE
PLUGIN_UI_FILES
${PLUGIN_ROOT_DIR}/forms/*.ui
)
SET(
PLUGIN_QOBJECT_FILES
${PLUGIN_ROOT_DIR}/include/renderVector.h
${PLUGIN_ROOT_DIR}/include/renderVectorDockTab.h
)
include( ${SCHNApps_ROOT_DIR}/Plugins/plugins_cmake.txt )
#include "renderVector.h"
#include "mapHandler.h"
namespace CGoGN
{
namespace SCHNApps
{
PerMapParameterSet::PerMapParameterSet(MapHandlerGen* map) :
positionVBO(NULL),
vectorsScaleFactor(1.0f)
{
bool positionFound = false;
QList<Utils::VBO*> vbos = map->getVBOList();
for(int i = 0; i < vbos.count(); ++i)
{
if(vbos[i]->dataSize() == 3)
{
if(!positionFound) positionVBO = vbos[i];
if(vbos[i]->name() == "position") // try to select a VBO named "position"
{
positionVBO = vbos[i];
positionFound = true;
}
}
}
}
bool RenderVectorPlugin::enable()
{
m_dockTab = new RenderVectorDockTab(m_window, this);
addTabInDock(m_dockTab, "RenderVector");
m_vectorShader = new Utils::ShaderVectorPerVertex();
m_vectorShader->setColor(Geom::Vec4f(1.0f, 0.0f, 0.0f, 1.0f));
registerShader(m_vectorShader);
connect(m_window, SIGNAL(viewAndPluginLinked(View*, Plugin*)), this, SLOT(viewLinked(View*, Plugin*)));
connect(m_window, SIGNAL(viewAndPluginUnlinked(View*, Plugin*)), this, SLOT(viewUnlinked(View*, Plugin*)));
connect(m_window, SIGNAL(currentViewChanged(View*)), this, SLOT(currentViewChanged(View*)));
return true;
}
void RenderVectorPlugin::disable()
{
delete m_vectorShader;
}
void RenderVectorPlugin::redraw(View* view)
{
ParameterSet* params = h_viewParams[view];
const QList<MapHandlerGen*>& maps = view->getLinkedMaps();
foreach(MapHandlerGen* m, maps)
{
PerMapParameterSet* p = params->perMap[m->getName()];
m_vectorShader->setScale(m->getBBdiagSize() / 100.0f * p->vectorsScaleFactor) ;
if(p->positionVBO != NULL)
{
m_vectorShader->setAttributePosition(p->positionVBO) ;
for(std::vector<Utils::VBO*>::const_iterator it = p->vectorVBO.begin(); it != p->vectorVBO.end(); ++it)
{
m_vectorShader->setAttributeVector(*it) ;
glLineWidth(1.0f) ;
m->draw(m_vectorShader, Algo::Render::GL2::POINTS) ;
}
}
}
}
void RenderVectorPlugin::viewLinked(View* view, Plugin* plugin)
{
if(plugin == this)
{
ParameterSet* params = new ParameterSet();
h_viewParams.insert(view, params);
const QList<MapHandlerGen*>& maps = view->getLinkedMaps();
foreach(MapHandlerGen* mh, maps)
addManagedMap(view, mh);
connect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*)));
connect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*)));
if(view->isCurrentView())
m_dockTab->refreshUI(params);
}
}
void RenderVectorPlugin::viewUnlinked(View* view, Plugin* plugin)
{
if(plugin == this)
{
const QList<MapHandlerGen*>& maps = view->getLinkedMaps();
foreach(MapHandlerGen* mh, maps)
removeManagedMap(view, mh);
ParameterSet* params = h_viewParams[view];
delete params;
h_viewParams.remove(view);
disconnect(view, SIGNAL(mapLinked(MapHandlerGen*)), this, SLOT(mapLinked(MapHandlerGen*)));
disconnect(view, SIGNAL(mapUnlinked(MapHandlerGen*)), this, SLOT(mapUnlinked(MapHandlerGen*)));
}
}
void RenderVectorPlugin::currentViewChanged(View* view)
{
if(isLinkedToView(view))
m_dockTab->refreshUI(h_viewParams[view]);
}
void RenderVectorPlugin::mapLinked(MapHandlerGen* m)
{
View* view = static_cast<View*>(QObject::sender());
assert(isLinkedToView(view));
addManagedMap(view, m);
}
void RenderVectorPlugin::mapUnlinked(MapHandlerGen* m)
{
View* view = static_cast<View*>(QObject::sender());
assert(isLinkedToView(view));
removeManagedMap(view, m);
}
void RenderVectorPlugin::addManagedMap(View* v, MapHandlerGen *m)
{
// connect(m, SIGNAL(attributeModified(unsigned int, QString)), this, SLOT(attributeModified(unsigned int, QString)));
// connect(m, SIGNAL(connectivityModified()), this, SLOT(connectivityModified()));
ParameterSet* params = h_viewParams[v];
PerMapParameterSet* perMap = new PerMapParameterSet(m);
params->perMap.insert(m->getName(), perMap);