Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
OpenWalnut
OpenWalnut Core
Commits
c23a8d0f
Commit
c23a8d0f
authored
Apr 15, 2010
by
Mathias Goldau
Browse files
[ADD] Stub for the LIC module
parent
dc357d02
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
216 additions
and
0 deletions
+216
-0
src/modules/CMakeLists.txt
src/modules/CMakeLists.txt
+1
-0
src/modules/lic/WMLIC.cpp
src/modules/lic/WMLIC.cpp
+110
-0
src/modules/lic/WMLIC.h
src/modules/lic/WMLIC.h
+105
-0
No files found.
src/modules/CMakeLists.txt
View file @
c23a8d0f
...
...
@@ -8,3 +8,4 @@ ADD_SUBDIRECTORY( clusterParamDisplay )
ADD_SUBDIRECTORY
(
clusterSlicer
)
ADD_SUBDIRECTORY
(
contourTree
)
ADD_SUBDIRECTORY
(
vectorPlot
)
ADD_SUBDIRECTORY
(
lic
)
src/modules/lic/WMLIC.cpp
0 → 100644
View file @
c23a8d0f
//---------------------------------------------------------------------------
//
// 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
;
}
}
}
src/modules/lic/WMLIC.h
0 → 100644
View file @
c23a8d0f
//---------------------------------------------------------------------------
//
// 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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment