mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-15 17:14:39 +00:00
DecorateContainer
This commit is contained in:
parent
300a22176d
commit
5a2bca939c
@ -18,6 +18,7 @@ endif()
|
||||
set(HEADERS
|
||||
globals.h
|
||||
plugins/containers/generic_container_iterator.h
|
||||
plugins/containers/decorate_plugin_container.h
|
||||
plugins/containers/filter_plugin_container.h
|
||||
plugins/containers/iomesh_plugin_container.h
|
||||
plugins/containers/ioraster_plugin_container.h
|
||||
@ -66,6 +67,7 @@ set(HEADERS
|
||||
|
||||
set(SOURCES
|
||||
globals.cpp
|
||||
plugins/containers/decorate_plugin_container.cpp
|
||||
plugins/containers/filter_plugin_container.cpp
|
||||
plugins/containers/iomesh_plugin_container.cpp
|
||||
plugins/containers/ioraster_plugin_container.cpp
|
||||
|
||||
@ -37,6 +37,7 @@ message(MeshLab Version: $$MESHLAB_VERSION)
|
||||
HEADERS += \
|
||||
globals.h \
|
||||
plugins/containers/generic_container_iterator.h \
|
||||
plugins/containers/decorate_plugin_container.h \
|
||||
plugins/containers/filter_plugin_container.h \
|
||||
plugins/containers/iomesh_plugin_container.h \
|
||||
plugins/containers/ioraster_plugin_container.h \
|
||||
@ -82,6 +83,7 @@ HEADERS += \
|
||||
|
||||
SOURCES += \
|
||||
globals.cpp \
|
||||
plugins/containers/decorate_plugin_container.cpp \
|
||||
plugins/containers/filter_plugin_container.cpp \
|
||||
plugins/containers/iomesh_plugin_container.cpp \
|
||||
plugins/containers/ioraster_plugin_container.cpp \
|
||||
|
||||
61
src/common/plugins/containers/decorate_plugin_container.cpp
Normal file
61
src/common/plugins/containers/decorate_plugin_container.cpp
Normal file
@ -0,0 +1,61 @@
|
||||
/****************************************************************************
|
||||
* MeshLab o o *
|
||||
* A versatile mesh processing toolbox o o *
|
||||
* _ O _ *
|
||||
* Copyright(C) 2005-2021 \/)\/ *
|
||||
* Visual Computing Lab /\/| *
|
||||
* ISTI - Italian National Research Council | *
|
||||
* \ *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) *
|
||||
* for more details. *
|
||||
* *
|
||||
****************************************************************************/
|
||||
|
||||
#include "decorate_plugin_container.h"
|
||||
|
||||
DecoratePluginContainer::DecoratePluginContainer()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DecoratePluginContainer::clear()
|
||||
{
|
||||
decoratePlugins.clear();
|
||||
}
|
||||
|
||||
void DecoratePluginContainer::pushFilterPlugin(DecoratePluginInterface* iDecorate)
|
||||
{
|
||||
decoratePlugins.push_back(iDecorate);
|
||||
for(QAction *decoratorAction : iDecorate->actions()) {
|
||||
iDecorate->initGlobalParameterList(decoratorAction, meshlab::defaultGlobalParameterList());
|
||||
}
|
||||
}
|
||||
|
||||
void DecoratePluginContainer::eraseFilterPlugin(DecoratePluginInterface* iDecorate)
|
||||
{
|
||||
decoratePlugins.erase(std::find(decoratePlugins.begin(), decoratePlugins.end(), iDecorate));
|
||||
}
|
||||
|
||||
DecoratePluginInterface* DecoratePluginContainer::decoratePlugin(const QString& name)
|
||||
{
|
||||
for(DecoratePluginInterface *tt : decoratePlugins) {
|
||||
for( QAction *ac: tt->actions())
|
||||
if( name == tt->decorationName(ac) ) return tt;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
DecoratePluginContainer::DecoratePluginRangeIterator DecoratePluginContainer::decoratePluginIterator(bool iterateAlsoDisabledPlugins) const
|
||||
{
|
||||
return DecoratePluginRangeIterator(this, iterateAlsoDisabledPlugins);
|
||||
}
|
||||
67
src/common/plugins/containers/decorate_plugin_container.h
Normal file
67
src/common/plugins/containers/decorate_plugin_container.h
Normal file
@ -0,0 +1,67 @@
|
||||
/****************************************************************************
|
||||
* MeshLab o o *
|
||||
* A versatile mesh processing toolbox o o *
|
||||
* _ O _ *
|
||||
* Copyright(C) 2005-2021 \/)\/ *
|
||||
* Visual Computing Lab /\/| *
|
||||
* ISTI - Italian National Research Council | *
|
||||
* \ *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) *
|
||||
* for more details. *
|
||||
* *
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef MESHLAB_DECORATE_PLUGIN_CONTAINER_H
|
||||
#define MESHLAB_DECORATE_PLUGIN_CONTAINER_H
|
||||
|
||||
#include "../interfaces/decorate_plugin_interface.h"
|
||||
#include "generic_container_iterator.h"
|
||||
|
||||
/**
|
||||
* @brief The DecoratePluginContainer class allows to organize
|
||||
* all the decorate plugins contained in the PluginManager.
|
||||
*
|
||||
* Note: plugins are not owned by this container, but by the PluginManager,
|
||||
* since each plugin can inherit from more than one PluginInterface.
|
||||
*/
|
||||
class DecoratePluginContainer
|
||||
{
|
||||
public:
|
||||
class DecoratePluginRangeIterator;
|
||||
DecoratePluginContainer();
|
||||
|
||||
void clear();
|
||||
void pushFilterPlugin(DecoratePluginInterface* iDecorate);
|
||||
void eraseFilterPlugin(DecoratePluginInterface* iDecorate);
|
||||
|
||||
DecoratePluginInterface* decoratePlugin(const QString& name);
|
||||
|
||||
DecoratePluginRangeIterator decoratePluginIterator(bool iterateAlsoDisabledPlugins = false) const;
|
||||
|
||||
private:
|
||||
std::vector<DecoratePluginInterface*> decoratePlugins;
|
||||
};
|
||||
|
||||
class DecoratePluginContainer::DecoratePluginRangeIterator
|
||||
{
|
||||
friend class DecoratePluginContainer;
|
||||
public:
|
||||
ConstPluginIterator<DecoratePluginInterface> begin() {return ConstPluginIterator<DecoratePluginInterface>(pm->decoratePlugins, pm->decoratePlugins.begin(), b);}
|
||||
ConstPluginIterator<DecoratePluginInterface> end() {return ConstPluginIterator<DecoratePluginInterface>(pm->decoratePlugins, pm->decoratePlugins.end(), b);}
|
||||
private:
|
||||
DecoratePluginRangeIterator(const DecoratePluginContainer* pm, bool iterateAlsoDisabledPlugins = false) : pm(pm), b(iterateAlsoDisabledPlugins) {}
|
||||
const DecoratePluginContainer* pm;
|
||||
bool b;
|
||||
};
|
||||
|
||||
#endif // MESHLAB_DECORATE_PLUGIN_CONTAINER_H
|
||||
@ -278,12 +278,7 @@ int PluginManager::numberIOPlugins() const
|
||||
// Search among all the decorator plugins the one that contains a decoration with the given name
|
||||
DecoratePluginInterface *PluginManager::getDecoratePlugin(const QString& name)
|
||||
{
|
||||
for(DecoratePluginInterface *tt : decoratePlugins) {
|
||||
for( QAction *ac: tt->actions())
|
||||
if( name == tt->decorationName(ac) ) return tt;
|
||||
}
|
||||
assert(0);
|
||||
return 0;
|
||||
return decoratePlugins.decoratePlugin(name);
|
||||
}
|
||||
|
||||
QAction* PluginManager::filterAction(const QString& name)
|
||||
@ -381,9 +376,9 @@ PluginManager::RenderPluginRangeIterator PluginManager::renderPluginIterator(boo
|
||||
return RenderPluginRangeIterator(this, iterateAlsoDisabledPlugins);
|
||||
}
|
||||
|
||||
PluginManager::DecoratePluginRangeIterator PluginManager::decoratePluginIterator(bool iterateAlsoDisabledPlugins) const
|
||||
DecoratePluginContainer::DecoratePluginRangeIterator PluginManager::decoratePluginIterator(bool iterateAlsoDisabledPlugins) const
|
||||
{
|
||||
return DecoratePluginRangeIterator(this, iterateAlsoDisabledPlugins);
|
||||
return decoratePlugins.decoratePluginIterator(iterateAlsoDisabledPlugins);
|
||||
}
|
||||
|
||||
PluginManager::EditPluginFactoryRangeIterator PluginManager::editPluginFactoryIterator(bool iterateAlsoDisabledPlugins) const
|
||||
@ -414,10 +409,7 @@ void PluginManager::checkFilterPlugin(FilterPluginInterface* iFilter)
|
||||
|
||||
void PluginManager::loadDecoratePlugin(DecoratePluginInterface* iDecorate)
|
||||
{
|
||||
decoratePlugins.push_back(iDecorate);
|
||||
for(QAction *decoratorAction : iDecorate->actions()) {
|
||||
iDecorate->initGlobalParameterList(decoratorAction, meshlab::defaultGlobalParameterList());
|
||||
}
|
||||
decoratePlugins.pushFilterPlugin(iDecorate);
|
||||
}
|
||||
|
||||
void PluginManager::loadRenderPlugin(RenderPluginInterface* iRender)
|
||||
@ -432,7 +424,7 @@ void PluginManager::loadEditPlugin(EditPluginInterfaceFactory* iEditFactory)
|
||||
|
||||
void PluginManager::unloadDecoratePlugin(DecoratePluginInterface* iDecorate)
|
||||
{
|
||||
decoratePlugins.erase(std::find(decoratePlugins.begin(), decoratePlugins.end(), iDecorate));
|
||||
decoratePlugins.eraseFilterPlugin(iDecorate);
|
||||
}
|
||||
|
||||
void PluginManager::unloadRenderPlugin(RenderPluginInterface* iRender)
|
||||
|
||||
@ -24,13 +24,10 @@
|
||||
#ifndef MESHLAB_PLUGIN_MANAGER_H
|
||||
#define MESHLAB_PLUGIN_MANAGER_H
|
||||
|
||||
#include "interfaces/filter_plugin_interface.h"
|
||||
#include "interfaces/iomesh_plugin_interface.h"
|
||||
#include "interfaces/ioraster_plugin_interface.h"
|
||||
#include "interfaces/render_plugin_interface.h"
|
||||
#include "interfaces/decorate_plugin_interface.h"
|
||||
#include "interfaces/edit_plugin_interface.h"
|
||||
|
||||
#include "containers/decorate_plugin_container.h"
|
||||
#include "containers/filter_plugin_container.h"
|
||||
#include "containers/iomesh_plugin_container.h"
|
||||
#include "containers/ioraster_plugin_container.h"
|
||||
@ -51,7 +48,6 @@ public:
|
||||
/** Iterators (definitions can be found in plugin_manager_iterators.h) **/
|
||||
class PluginRangeIterator;
|
||||
class RenderPluginRangeIterator;
|
||||
class DecoratePluginRangeIterator;
|
||||
class EditPluginFactoryRangeIterator;
|
||||
|
||||
/** Member functions **/
|
||||
@ -95,7 +91,7 @@ public:
|
||||
IOMeshPluginContainer::IOMeshPluginRangeIterator ioMeshPluginIterator(bool iterateAlsoDisabledPlugins = false) const;
|
||||
IORasterPluginContainer::IORasterPluginRangeIterator ioRasterPluginIterator(bool iterateAlsoDisabledPlugins = false) const;
|
||||
RenderPluginRangeIterator renderPluginIterator(bool iterateAlsoDisabledPlugins = false) const;
|
||||
DecoratePluginRangeIterator decoratePluginIterator(bool iterateAlsoDisabledPlugins = false) const;
|
||||
DecoratePluginContainer::DecoratePluginRangeIterator decoratePluginIterator(bool iterateAlsoDisabledPlugins = false) const;
|
||||
EditPluginFactoryRangeIterator editPluginFactoryIterator(bool iterateAlsoDisabledPlugins = false) const;
|
||||
|
||||
private:
|
||||
@ -116,7 +112,8 @@ private:
|
||||
std::vector<RenderPluginInterface*> renderPlugins;
|
||||
|
||||
//Decorate Plugins
|
||||
std::vector<DecoratePluginInterface*> decoratePlugins;
|
||||
DecoratePluginContainer decoratePlugins;
|
||||
//std::vector<DecoratePluginInterface*> decoratePlugins;
|
||||
|
||||
//Edit Plugins
|
||||
std::vector<EditPluginInterfaceFactory*> editPlugins;
|
||||
|
||||
@ -43,20 +43,6 @@ private:
|
||||
bool b;
|
||||
};
|
||||
|
||||
class PluginManager::DecoratePluginRangeIterator
|
||||
{
|
||||
friend class PluginManager;
|
||||
public:
|
||||
ConstPluginIterator<DecoratePluginInterface> begin() {return ConstPluginIterator<DecoratePluginInterface>(pm->decoratePlugins, pm->decoratePlugins.begin(), b);}
|
||||
ConstPluginIterator<DecoratePluginInterface> end() {return ConstPluginIterator<DecoratePluginInterface>(pm->decoratePlugins, pm->decoratePlugins.end(), b);}
|
||||
//std::vector<DecoratePluginInterface*>::const_iterator begin() {return pm->decoratePlugins.begin();}
|
||||
//std::vector<DecoratePluginInterface*>::const_iterator end() {return pm->decoratePlugins.end();}
|
||||
private:
|
||||
DecoratePluginRangeIterator(const PluginManager* pm, bool iterateAlsoDisabledPlugins = false) : pm(pm), b(iterateAlsoDisabledPlugins) {}
|
||||
const PluginManager* pm;
|
||||
bool b;
|
||||
};
|
||||
|
||||
class PluginManager::EditPluginFactoryRangeIterator
|
||||
{
|
||||
friend class PluginManager;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user