Commit c23a8d0f authored by Mathias Goldau's avatar Mathias Goldau
Browse files

[ADD] Stub for the LIC module

parent dc357d02
......@@ -8,3 +8,4 @@ ADD_SUBDIRECTORY( clusterParamDisplay )
ADD_SUBDIRECTORY( clusterSlicer )
ADD_SUBDIRECTORY( contourTree )
ADD_SUBDIRECTORY( vectorPlot )
ADD_SUBDIRECTORY( lic )
//---------------------------------------------------------------------------
//
// Project: OpenWalnut ( http://www.openwalnut.org )
//
// Copyright 2009 OpenWalnut Community, BSV-Leipzig and CNCF-CBS
// For more information see http://www.openwalnut.org/copying
//
// This file is part of OpenWalnut.
//
// OpenWalnut is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// OpenWalnut 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
//
//---------------------------------------------------------------------------
#include <string>
#include "../../kernel/WKernel.h"
#include "WMLIC.h"
WMLIC::WMLIC():
WModule()
{
}
WMLIC::~WMLIC()
{
// Cleanup!
}
boost::shared_ptr< WModule > WMLIC::factory() const
{
return boost::shared_ptr< WModule >( new WMLIC() );
}
const std::string WMLIC::getName() const
{
return "LIC";
}
const std::string WMLIC::getDescription() const
{
return "Line integrate convolution on TriangleMesh with a WDataSetVector";
}
void WMLIC::connectors()
{
m_meshIC = boost::shared_ptr< WModuleInputData < WTriangleMesh2 > >(
new WModuleInputData< WTriangleMesh2 >( shared_from_this(),
"inMesh", "The triangle mesh used for painting the LIC" )
);
m_vectorIC = boost::shared_ptr< WModuleInputData < WDataSetVector > >(
new WModuleInputData< WDataSetVector >( shared_from_this(),
"inVectorDS", "The vectors used for computing the Streamlines used for the LIC" )
);
m_meshOC = boost::shared_ptr< WModuleOutputData < WTriangleMesh2 > >(
new WModuleOutputData< WTriangleMesh2 >( shared_from_this(),
"outMesh", "The LIC" )
);
addConnector( m_meshIC );
addConnector( m_vectorIC );
addConnector( m_meshOC );
WModule::connectors();
}
void WMLIC::properties()
{
}
void WMLIC::moduleMain()
{
m_moduleState.setResetable( true, true );
m_moduleState.add( m_meshIC->getDataChangedCondition() );
m_moduleState.add( m_vectorIC->getDataChangedCondition() );
ready();
while ( !m_shutdownFlag() )
{
m_moduleState.wait();
if ( m_shutdownFlag() )
{
break;
}
boost::shared_ptr< WTriangleMesh2 > newMesh = m_meshIC->getData();
boost::shared_ptr< WDataSetVector > newVector = m_vectorIC->getData();
bool dataChanged = ( m_inMesh != newMesh ) || ( m_inVector != newVector );
bool dataValid = ( newMesh.get() && newVector.get() );
if ( dataChanged && dataValid )
{
debugLog() << "Received Data.";
m_inMesh = newMesh;
m_inVector = newVector;
}
}
}
//---------------------------------------------------------------------------
//
// Project: OpenWalnut ( http://www.openwalnut.org )
//
// Copyright 2009 OpenWalnut Community, BSV-Leipzig and CNCF-CBS
// For more information see http://www.openwalnut.org/copying
//
// This file is part of OpenWalnut.
//
// OpenWalnut is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// OpenWalnut 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
//
//---------------------------------------------------------------------------
#ifndef WMLIC_H
#define WMLIC_H
#include <string>
#include <osg/Geode>
#include "../../kernel/WModule.h"
#include "../../kernel/WModuleInputData.h"
#include "../../kernel/WModuleOutputData.h"
#include "../../graphicsEngine/WTriangleMesh2.h"
#include "../../dataHandler/WDataSetVector.h"
/**
* Computes a Line Intregrated Convolution from a vector field onto a triangle mesh.
* \warning Most of the code is taken from fantom and the fibernavigator. DO NOT scatter those sources in OpenWalnut!
* \ingroup modules
*/
class WMLIC: public WModule
{
public:
/**
* Constructs a new LIC module
*/
WMLIC();
/**
* Destructs and clean up this module
*/
virtual ~WMLIC();
/**
* Gives back the name of this module.
* \return the module's name.
*/
virtual const std::string getName() const;
/**
* Gives back a description of this module.
* \return description to module.
*/
virtual const std::string getDescription() const;
/**
* Due to the prototype design pattern used to build modules, this method returns a new instance of this method. NOTE: it
* should never be initialized or modified in some other way. A simple new instance is required.
*
* \return the prototype used to create every module in OpenWalnut.
*/
virtual boost::shared_ptr< WModule > factory() const;
protected:
/**
* Entry point after loading the module. Runs in separate thread.
*/
virtual void moduleMain();
/**
* Initialize the connectors this module is using.
*/
virtual void connectors();
/**
* Initialize the properties for this module.
*/
virtual void properties();
private:
boost::shared_ptr< WModuleInputData< WTriangleMesh2 > > m_meshIC; //!< The InputConnector for the mesh on which to paint
boost::shared_ptr< WModuleInputData< WDataSetVector > > m_vectorIC; //!< The InputConnector for the vectors that are used to build the streamlines
boost::shared_ptr< WTriangleMesh2 > m_inMesh; //!< The mesh given from the input connector
boost::shared_ptr< WDataSetVector > m_inVector; //!< The vector field used to compute the LIC given from the input connector
boost::shared_ptr< WModuleOutputData< WTriangleMesh2 > > m_meshOC; //!< OutputConnector for the LIC'ed mesh
};
#endif // WMLIC_H
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment