Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
OpenWalnut Core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
44
Issues
44
List
Boards
Labels
Service Desk
Milestones
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
OpenWalnut
OpenWalnut Core
Commits
ba1eb5a7
Commit
ba1eb5a7
authored
Oct 07, 2010
by
Sebastian Eichelbaum
Browse files
Options
Browse Files
Download
Plain Diff
[MERGE]
parents
0aafa7da
2081ad51
Changes
26
Show whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
250 additions
and
218 deletions
+250
-218
doc/user/walnut.cfg.mpi
doc/user/walnut.cfg.mpi
+1
-1
src/graphicsEngine/WFiberDrawable.cpp
src/graphicsEngine/WFiberDrawable.cpp
+22
-55
src/graphicsEngine/WFiberDrawable.h
src/graphicsEngine/WFiberDrawable.h
+40
-48
src/kernel/WFiberSelector.cpp
src/kernel/WFiberSelector.cpp
+16
-11
src/kernel/WFiberSelector.h
src/kernel/WFiberSelector.h
+1
-15
src/kernel/WKdTree.cpp
src/kernel/WKdTree.cpp
+2
-2
src/kernel/WKdTree.h
src/kernel/WKdTree.h
+1
-1
src/kernel/WRMBranch.cpp
src/kernel/WRMBranch.cpp
+3
-0
src/kernel/WSelectorBranch.cpp
src/kernel/WSelectorBranch.cpp
+0
-0
src/kernel/WSelectorBranch.h
src/kernel/WSelectorBranch.h
+1
-1
src/kernel/WSelectorRoi.cpp
src/kernel/WSelectorRoi.cpp
+2
-2
src/kernel/WSelectorRoi.h
src/kernel/WSelectorRoi.h
+2
-2
src/modules/clusterDisplay/WDendrogramGeode.cpp
src/modules/clusterDisplay/WDendrogramGeode.cpp
+9
-7
src/modules/clusterDisplay/WDendrogramGeode.h
src/modules/clusterDisplay/WDendrogramGeode.h
+6
-6
src/modules/clusterDisplay/WHierarchicalTree.cpp
src/modules/clusterDisplay/WHierarchicalTree.cpp
+2
-3
src/modules/clusterDisplay/WHierarchicalTree.h
src/modules/clusterDisplay/WHierarchicalTree.h
+15
-0
src/modules/clusterDisplay/WMClusterDisplay.cpp
src/modules/clusterDisplay/WMClusterDisplay.cpp
+57
-29
src/modules/clusterDisplay/WMClusterDisplay.h
src/modules/clusterDisplay/WMClusterDisplay.h
+19
-2
src/modules/fiberDisplay/WMFiberDisplay.cpp
src/modules/fiberDisplay/WMFiberDisplay.cpp
+23
-4
src/modules/fiberDisplay/WMFiberDisplay.h
src/modules/fiberDisplay/WMFiberDisplay.h
+3
-3
src/modules/modules-io.toolbox
src/modules/modules-io.toolbox
+1
-1
src/modules/readMesh/CMakeLists.txt
src/modules/readMesh/CMakeLists.txt
+0
-0
src/modules/readMesh/WMReadMesh.cpp
src/modules/readMesh/WMReadMesh.cpp
+17
-18
src/modules/readMesh/WMReadMesh.h
src/modules/readMesh/WMReadMesh.h
+6
-6
src/modules/readMesh/WMReadMesh.xpm
src/modules/readMesh/WMReadMesh.xpm
+1
-1
src/modules/readMesh/readMesh.png
src/modules/readMesh/readMesh.png
+0
-0
No files found.
doc/user/walnut.cfg.mpi
View file @
ba1eb5a7
...
...
@@ -12,7 +12,7 @@ allowOnlyOneFiberDataSet = yes # This will prevent you from accidently loading m
# default=HUD
## A list of modules that will be provided through the GUI.
## If the list is empty all available modules are provided.
whiteList = Arbitrary Plane,Coordinate System,Image Extractor,Paint Texture,Arbitrary Rois,Bounding Box,Distance Map Isosurface,Gauss Filtering,HUD,Isosurface,Isosurface Raytracer,LIC,
Mesh Reader
,Voxelizer,Superquadric Glyphs,Triangle Mesh Renderer,Vector Plot,Write NIfTI
whiteList = Arbitrary Plane,Coordinate System,Image Extractor,Paint Texture,Arbitrary Rois,Bounding Box,Distance Map Isosurface,Gauss Filtering,HUD,Isosurface,Isosurface Raytracer,LIC,
Read Mesh
,Voxelizer,Superquadric Glyphs,Triangle Mesh Renderer,Vector Plot,Write NIfTI
## Specify a ";" separated list of additional paths for modules. The order of appearance is the order of loading. The following additional rules apply here:
## 1. if the directory contains one or more libOWmodule_XYZ it/they get loaded
...
...
src/
modules/fiberDisplay
/WFiberDrawable.cpp
→
src/
graphicsEngine
/WFiberDrawable.cpp
View file @
ba1eb5a7
...
...
@@ -24,8 +24,8 @@
#include <vector>
#include "../
../dataHandler/WDataSetFibers
.h"
#include "../../kernel/WKernel.h"
#include "../
kernel/WKernel
.h"
#include "WFiberDrawable.h"
// The constructor here does nothing. One thing that may be necessary is
...
...
@@ -35,9 +35,7 @@
// time (that is, the vertices drawn change from time to time).
WFiberDrawable
::
WFiberDrawable
()
:
osg
::
Drawable
(),
m_useTubes
(
false
),
m_globalColoring
(
true
),
m_customColoring
(
false
)
m_useTubes
(
false
)
{
setSupportsDisplayList
(
false
);
// This contructor intentionally left blank. Duh.
...
...
@@ -85,35 +83,17 @@ void WFiberDrawable::drawImplementation( osg::RenderInfo& renderInfo ) const //N
void
WFiberDrawable
::
drawFibers
(
osg
::
RenderInfo
&
renderInfo
)
const
//NOLINT
{
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
startIndexes
=
m_dataset
->
getLineStartIndexes
();
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
pointsPerLine
=
m_dataset
->
getLineLengths
();
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
verts
=
m_dataset
->
getVertices
();
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
tangents
=
m_dataset
->
getTangents
();
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
colors
;
if
(
m_customColoring
)
{
colors
=
colors
=
m_dataset
->
getColorScheme
(
"Custom Color"
)
->
getColor
();
}
else
{
colors
=
(
m_globalColoring
?
m_dataset
->
getGlobalColors
()
:
m_dataset
->
getLocalColors
()
);
}
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
active
=
m_fiberSelector
->
getBitfield
();
osg
::
State
&
state
=
*
renderInfo
.
getState
();
state
.
disableAllVertexArrays
();
state
.
setVertexPointer
(
3
,
GL_FLOAT
,
0
,
&
(
*
verts
)[
0
]
);
state
.
setColorPointer
(
3
,
GL_FLOAT
,
0
,
&
(
*
colors
)[
0
]
);
state
.
setNormalPointer
(
GL_FLOAT
,
0
,
&
(
*
tangents
)[
0
]
);
for
(
size_t
i
=
0
;
i
<
active
->
size
();
++
i
)
state
.
setVertexPointer
(
3
,
GL_FLOAT
,
0
,
&
(
*
m_
verts
)[
0
]
);
state
.
setColorPointer
(
3
,
GL_FLOAT
,
0
,
&
(
*
m_
colors
)[
0
]
);
//state.setNormalPointer( GL_FLOAT , 0, &( *m_
tangents )[0] );
for
(
size_t
i
=
0
;
i
<
m_
active
->
size
();
++
i
)
{
if
(
(
*
active
)[
i
]
)
if
(
(
*
m_
active
)[
i
]
)
{
state
.
glDrawArraysInstanced
(
GL_LINE_STRIP
,
(
*
startIndexes
)[
i
],
(
*
pointsPerLine
)[
i
],
1
);
state
.
glDrawArraysInstanced
(
GL_LINE_STRIP
,
(
*
m_startIndexes
)[
i
],
(
*
m_
pointsPerLine
)[
i
],
1
);
}
}
...
...
@@ -123,38 +103,20 @@ void WFiberDrawable::drawFibers( osg::RenderInfo& renderInfo ) const //NOLINT
void
WFiberDrawable
::
drawTubes
()
const
{
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
startIndexes
=
m_dataset
->
getLineStartIndexes
();
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
pointsPerLine
=
m_dataset
->
getLineLengths
();
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
verts
=
m_dataset
->
getVertices
();
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
tangents
=
m_dataset
->
getTangents
();
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
colors
;
if
(
m_customColoring
)
for
(
size_t
i
=
0
;
i
<
m_active
->
size
();
++
i
)
{
colors
=
m_dataset
->
getColorScheme
(
"Custom Color"
)
->
getColor
();
}
else
{
colors
=
(
m_globalColoring
?
m_dataset
->
getGlobalColors
()
:
m_dataset
->
getLocalColors
()
);
}
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
active
=
m_fiberSelector
->
getBitfield
();
for
(
size_t
i
=
0
;
i
<
active
->
size
();
++
i
)
{
if
(
active
->
at
(
i
)
)
if
(
(
*
m_active
)[
i
]
)
{
glBegin
(
GL_QUAD_STRIP
);
int
idx
=
startIndexes
->
at
(
i
)
*
3
;
for
(
size_t
k
=
0
;
k
<
pointsPerLine
->
at
(
i
);
++
k
)
int
idx
=
m_
startIndexes
->
at
(
i
)
*
3
;
for
(
size_t
k
=
0
;
k
<
m_
pointsPerLine
->
at
(
i
);
++
k
)
{
glNormal3f
(
tangents
->
at
(
idx
),
tangents
->
at
(
idx
+
1
),
tangents
->
at
(
idx
+
2
)
);
glColor3f
(
colors
->
at
(
idx
),
colors
->
at
(
idx
+
1
),
colors
->
at
(
idx
+
2
)
);
glNormal3f
(
m_tangents
->
at
(
idx
),
m_tangents
->
at
(
idx
+
1
),
m_
tangents
->
at
(
idx
+
2
)
);
glColor3f
(
m_colors
->
at
(
idx
),
m_colors
->
at
(
idx
+
1
),
m_
colors
->
at
(
idx
+
2
)
);
glTexCoord1f
(
-
1.0
f
);
glVertex3f
(
verts
->
at
(
idx
),
verts
->
at
(
idx
+
1
),
verts
->
at
(
idx
+
2
)
);
glVertex3f
(
m_verts
->
at
(
idx
),
m_verts
->
at
(
idx
+
1
),
m_
verts
->
at
(
idx
+
2
)
);
glTexCoord1f
(
1.0
f
);
glVertex3f
(
verts
->
at
(
idx
),
verts
->
at
(
idx
+
1
),
verts
->
at
(
idx
+
2
)
);
glVertex3f
(
m_verts
->
at
(
idx
),
m_verts
->
at
(
idx
+
1
),
m_
verts
->
at
(
idx
+
2
)
);
idx
+=
3
;
//
}
...
...
@@ -162,3 +124,8 @@ void WFiberDrawable::drawTubes() const
}
}
}
void
WFiberDrawable
::
setDataset
(
boost
::
shared_ptr
<
const
WDataSetFibers
>
dataset
)
{
m_dataset
=
dataset
;
}
src/
modules/fiberDisplay
/WFiberDrawable.h
→
src/
graphicsEngine
/WFiberDrawable.h
View file @
ba1eb5a7
...
...
@@ -35,12 +35,8 @@
#include <osg/ShapeDrawable>
#include <osg/Group>
#include "WFiberSelector.h"
class
WDataSetFibers
;
/**
*
TODO(schurade): Document this!
*
Class implements an osg::Drawable that paints fiber representations either using lines or tubes
*/
class
WFiberDrawable
:
public
osg
::
Drawable
{
...
...
@@ -108,49 +104,46 @@ public:
void
setUseTubes
(
bool
flag
);
/**
* Set the coloring modes of the fibers.
*
* \param globalColoring If true is given global coloring is applied ( default ), else local coloring
* Set the bounding box of all fibers.
* \param bb The new bounding box.
*/
void
set
ColoringMode
(
bool
globalColoring
);
void
set
BoundingBox
(
const
osg
::
BoundingBox
&
bb
);
/**
* Set the use of custom colors
*
* \param custom
* setter
* \param bitField selected fibers to draw
*/
void
set
CustomColoring
(
bool
custom
);
void
set
Bitfield
(
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
bitField
);
/**
* In which mode coloring for the fibers is applied.
*
* \return True for global, false for local coloring
* setter
* \param idx
*/
bool
getColoringMode
()
const
;
void
setStartIndexes
(
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
idx
)
;
/**
*
Set the bounding box of all fibers.
* \param
bb The new bounding box.
*
setter
* \param
ppl
*/
void
set
BoundingBox
(
const
osg
::
BoundingBox
&
bb
);
void
set
PointsPerLine
(
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
ppl
);
/**
* setter
* \param
bitField selected fibers to draw
* \param
verts
*/
void
set
Bitfield
(
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
bitField
);
void
set
Verts
(
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
verts
);
/**
* setter
* \param
selector the selector object which provides the bitfield for fiber selection
* \param
tangents
*/
void
set
Selector
(
boost
::
shared_ptr
<
WFiberSelector
>
selector
);
void
set
Tangents
(
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
tangents
);
/**
* setter
* \param color
s
* \param color
*/
void
setC
ustomColors
(
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
colors
);
void
setC
olor
(
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
color
);
protected:
private:
...
...
@@ -172,54 +165,53 @@ private:
bool
m_useTubes
;
//!< flag
bool
m_globalColoring
;
//!< True indicates global, false local coloring
bool
m_customColoring
;
//!< True indicates use of custom colors
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
m_active
;
//!< pointer to the bitfield of active fibers
boost
::
shared_ptr
<
WFiberSelector
>
m_fiberSelector
;
//!< the selector object which provides the bitfield for fiber selection
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
m_startIndexes
;
//!< pointer to the field of line start indexes
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
m_pointsPerLine
;
//!< pointer to the field of points per line
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
m_verts
;
//!< pointer to the field of vertexes
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
m_tangents
;
//!< pointer to the field of line tangents
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
m_colors
;
//!< pointer to the field of colors per vertex
};
inline
void
WFiberDrawable
::
set
Dataset
(
boost
::
shared_ptr
<
const
WDataSetFibers
>
dataset
)
inline
void
WFiberDrawable
::
set
UseTubes
(
bool
flag
)
{
m_
dataset
=
dataset
;
m_
useTubes
=
flag
;
}
inline
void
WFiberDrawable
::
set
UseTubes
(
bool
flag
)
inline
void
WFiberDrawable
::
set
BoundingBox
(
const
osg
::
BoundingBox
&
bb
)
{
m_useTubes
=
flag
;
setBound
(
bb
)
;
}
inline
void
WFiberDrawable
::
set
ColoringMode
(
bool
globalColoring
)
inline
void
WFiberDrawable
::
set
Bitfield
(
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
bitField
)
{
m_
globalColoring
=
globalColoring
;
m_
active
=
bitField
;
}
inline
bool
WFiberDrawable
::
getColoringMode
()
const
inline
void
WFiberDrawable
::
setStartIndexes
(
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
idx
)
{
return
m_globalColoring
;
m_startIndexes
=
idx
;
}
inline
void
WFiberDrawable
::
set
CustomColoring
(
bool
custom
)
inline
void
WFiberDrawable
::
set
PointsPerLine
(
boost
::
shared_ptr
<
std
::
vector
<
size_t
>
>
ppl
)
{
m_
customColoring
=
custom
;
m_
pointsPerLine
=
ppl
;
}
inline
void
WFiberDrawable
::
set
BoundingBox
(
const
osg
::
BoundingBox
&
bb
)
inline
void
WFiberDrawable
::
set
Verts
(
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
verts
)
{
setBound
(
bb
)
;
m_verts
=
verts
;
}
inline
void
WFiberDrawable
::
set
Bitfield
(
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
bitField
)
inline
void
WFiberDrawable
::
set
Tangents
(
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
tangents
)
{
m_
active
=
bitField
;
m_
tangents
=
tangents
;
}
inline
void
WFiberDrawable
::
set
Selector
(
boost
::
shared_ptr
<
WFiberSelector
>
select
or
)
inline
void
WFiberDrawable
::
set
Color
(
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
col
or
)
{
m_
fiberSelector
=
select
or
;
m_
colors
=
col
or
;
}
#endif // WFIBERDRAWABLE_H
src/
modules/fiberDisplay
/WFiberSelector.cpp
→
src/
kernel
/WFiberSelector.cpp
View file @
ba1eb5a7
...
...
@@ -24,7 +24,7 @@
#include <iostream>
#include "../
../
kernel/WKernel.h"
#include "../kernel/WKernel.h"
#include "WFiberSelector.h"
...
...
@@ -136,13 +136,11 @@ void WFiberSelector::recalculate()
{
if
(
m_branches
.
empty
()
)
{
m_outputBitfield
=
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
(
new
std
::
vector
<
bool
>
(
m_size
,
true
)
);
return
;
m_workerBitfield
=
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
(
new
std
::
vector
<
bool
>
(
m_size
,
true
)
);
}
else
{
m_workerBitfield
=
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
(
new
std
::
vector
<
bool
>
(
m_size
,
false
)
);
}
for
(
std
::
list
<
boost
::
shared_ptr
<
WSelectorBranch
>
>::
iterator
iter
=
m_branches
.
begin
();
iter
!=
m_branches
.
end
();
++
iter
)
{
...
...
@@ -153,11 +151,18 @@ void WFiberSelector::recalculate()
(
*
m_workerBitfield
)[
i
]
=
(
*
m_workerBitfield
)[
i
]
|
(
*
bf
)[
i
];
}
}
}
for
(
size_t
i
=
0
;
i
<
m_size
;
++
i
)
{
(
*
m_outputBitfield
)[
i
]
=
(
*
m_workerBitfield
)[
i
];
}
m_dirty
=
false
;
m_outputBitfield
=
m_workerBitfield
;
//
m_outputBitfield = m_workerBitfield;
}
void
WFiberSelector
::
setDirty
()
{
recalculate
();
m_dirty
=
true
;
}
src/
modules/fiberDisplay
/WFiberSelector.h
→
src/
kernel
/WFiberSelector.h
View file @
ba1eb5a7
...
...
@@ -28,7 +28,7 @@
#include <list>
#include <vector>
#include "../
../
dataHandler/WDataSetFibers.h"
#include "../dataHandler/WDataSetFibers.h"
#include "WSelectorRoi.h"
#include "WSelectorBranch.h"
...
...
@@ -102,20 +102,6 @@ protected:
*/
void
slotRemoveBranch
(
boost
::
shared_ptr
<
WRMBranch
>
branch
);
/**
* setter
* \param colors
*/
void
setCustomColors
(
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
colors
);
/**
* getter
* \return colors
*/
boost
::
shared_ptr
<
std
::
vector
<
float
>
>
getCustomColors
();
private:
/**
* update the bitfield when there was a change in the roi structure
...
...
src/
modules/fiberDisplay
/WKdTree.cpp
→
src/
kernel
/WKdTree.cpp
View file @
ba1eb5a7
...
...
@@ -25,8 +25,8 @@
#include <algorithm>
#include <vector>
#include "../
../
common/WAssert.h"
#include "../
../
common/WLogger.h"
#include "../common/WAssert.h"
#include "../common/WLogger.h"
#include "WKdTree.h"
...
...
src/
modules/fiberDisplay
/WKdTree.h
→
src/
kernel
/WKdTree.h
View file @
ba1eb5a7
...
...
@@ -28,7 +28,7 @@
#include <algorithm>
#include <vector>
#include "../
../
common/WThreadedRunner.h"
#include "../common/WThreadedRunner.h"
/**
* implements the compare function for std::nth_element on a point array
...
...
src/kernel/WRMBranch.cpp
View file @
ba1eb5a7
...
...
@@ -61,6 +61,9 @@ void WRMBranch::propertyChanged()
void
WRMBranch
::
addRoi
(
osg
::
ref_ptr
<
WROI
>
roi
)
{
m_rois
.
push_back
(
roi
);
boost
::
function
<
void
()
>
changeRoiSignal
=
boost
::
bind
(
&
WRMBranch
::
setDirty
,
this
);
roi
->
addChangeNotifier
(
changeRoiSignal
);
setDirty
();
}
...
...
src/
modules/fiberDisplay
/WSelectorBranch.cpp
→
src/
kernel
/WSelectorBranch.cpp
View file @
ba1eb5a7
File moved
src/
modules/fiberDisplay
/WSelectorBranch.h
→
src/
kernel
/WSelectorBranch.h
View file @
ba1eb5a7
...
...
@@ -29,7 +29,7 @@
#include <vector>
#include "WSelectorRoi.h"
#include "../
../
kernel/WRMBranch.h"
#include "../kernel/WRMBranch.h"
/**
* TODO(schurade): Document this!
...
...
src/
modules/fiberDisplay
/WSelectorRoi.cpp
→
src/
kernel
/WSelectorRoi.cpp
View file @
ba1eb5a7
...
...
@@ -23,8 +23,8 @@
//---------------------------------------------------------------------------
//#include "../../../graphicsEngine/WGraphicsEngine.h"
#include "../
../
graphicsEngine/WROIBox.h"
#include "../
../
graphicsEngine/WROIArbitrary.h"
#include "../graphicsEngine/WROIBox.h"
#include "../graphicsEngine/WROIArbitrary.h"
#include "WSelectorRoi.h"
...
...
src/
modules/fiberDisplay
/WSelectorRoi.h
→
src/
kernel
/WSelectorRoi.h
View file @
ba1eb5a7
...
...
@@ -27,9 +27,9 @@
#include <vector>
#include "../
../
dataHandler/WDataSetFibers.h"
#include "../dataHandler/WDataSetFibers.h"
#include "../
../
graphicsEngine/WROI.h"
#include "../graphicsEngine/WROI.h"
#include "WKdTree.h"
/**
...
...
src/modules/clusterDisplay/WDendrogram.cpp
→
src/modules/clusterDisplay/WDendrogram
Geode
.cpp
View file @
ba1eb5a7
...
...
@@ -25,12 +25,13 @@
#include <iostream>
#include "../../graphicsEngine/WGEUtils.h"
#include "WDendrogram.h"
#include "WDendrogram
Geode
.h"
/**
* Class implements a dendrogram as an osg geode
*/
WDendrogram
::
WDendrogram
(
WHierarchicalTree
*
tree
,
size_t
cluster
,
size_t
minClusterSize
,
float
xSize
,
float
ySize
,
float
xOffset
,
float
yOffset
)
:
WDendrogramGeode
::
WDendrogramGeode
(
WHierarchicalTree
*
tree
,
size_t
cluster
,
size_t
minClusterSize
,
float
xSize
,
float
ySize
,
float
xOffset
,
float
yOffset
)
:
osg
::
Geode
(),
m_tree
(
tree
),
m_rootCluster
(
cluster
),
...
...
@@ -43,11 +44,11 @@ WDendrogram::WDendrogram( WHierarchicalTree* tree, size_t cluster, size_t minClu
create
();
}
WDendrogram
::~
WDendrogram
()
WDendrogram
Geode
::~
WDendrogramGeode
()
{
}
void
WDendrogram
::
create
()
void
WDendrogram
Geode
::
create
()
{
m_colors
=
osg
::
ref_ptr
<
osg
::
Vec4Array
>
(
new
osg
::
Vec4Array
);
...
...
@@ -80,10 +81,11 @@ void WDendrogram::create()
osg
::
StateSet
*
state
=
geometry
->
getOrCreateStateSet
();
state
->
setMode
(
GL_LIGHTING
,
osg
::
StateAttribute
::
OFF
|
osg
::
StateAttribute
::
PROTECTED
);
addDrawable
(
geometry
);
}
void
WDendrogram
::
layout
(
size_t
cluster
,
float
left
,
float
right
)
void
WDendrogram
Geode
::
layout
(
size_t
cluster
,
float
left
,
float
right
)
{
float
height
=
m_tree
->
getLevel
(
cluster
);
...
...
@@ -159,7 +161,7 @@ void WDendrogram::layout( size_t cluster, float left, float right )
}
}
size_t
WDendrogram
::
getClickedCluster
(
int
xClick
,
int
yClick
)
size_t
WDendrogram
Geode
::
getClickedCluster
(
int
xClick
,
int
yClick
)
{
m_xClicked
=
(
xClick
-
m_xOff
)
/
m_xSize
*
(
m_tree
->
size
(
m_rootCluster
)
-
1
);
m_yClicked
=
(
yClick
-
m_yOff
)
/
m_ySize
*
(
m_tree
->
getLevel
(
m_rootCluster
)
-
1
);
...
...
@@ -171,7 +173,7 @@ size_t WDendrogram::getClickedCluster( int xClick, int yClick )
return
m_clickedCluster
;
}
void
WDendrogram
::
getClickClusterRecursive
(
size_t
cluster
,
float
left
,
float
right
)
void
WDendrogram
Geode
::
getClickClusterRecursive
(
size_t
cluster
,
float
left
,
float
right
)
{
int
height
=
m_tree
->
getLevel
(
cluster
);
...
...
src/modules/clusterDisplay/WDendrogram.h
→
src/modules/clusterDisplay/WDendrogram
Geode
.h
View file @
ba1eb5a7
...
...
@@ -22,8 +22,8 @@
//
//---------------------------------------------------------------------------
#ifndef WDENDROGRAM_H
#define WDENDROGRAM_H
#ifndef WDENDROGRAM
GEODE
_H
#define WDENDROGRAM
GEODE
_H
#include <osg/Geode>
#include <osg/Vec3>
...
...
@@ -36,7 +36,7 @@
/**
* Class creates a dendrogram from a hierarchical clustering
*/
class
WDendrogram
:
public
osg
::
Geode
class
WDendrogram
Geode
:
public
osg
::
Geode
{
public:
/**
...
...
@@ -51,13 +51,13 @@ public:
* \param yOffset translation alogn the y axis
*
*/
WDendrogram
(
WHierarchicalTree
*
tree
,
size_t
cluster
,
size_t
minClusterSize
=
1
,
float
xSize
=
1000.
f
,
WDendrogram
Geode
(
WHierarchicalTree
*
tree
,
size_t
cluster
,
size_t
minClusterSize
=
1
,
float
xSize
=
1000.
f
,
float
ySize
=
500.
f
,
float
xOffset
=
0.0
f
,
float
yOffset
=
0.0
f
);
/**
* destructor
*/
~
WDendrogram
();
~
WDendrogram
Geode
();
/**
* calculate which cluster was clicked from given pixel coordinates
...
...
@@ -116,4 +116,4 @@ private:
size_t
m_clickedCluster
;
//!< the clicked cluster
};
#endif // WDENDROGRAM_H
#endif // WDENDROGRAM
GEODE
_H
src/modules/clusterDisplay/WHierarchicalTree.cpp
View file @
ba1eb5a7
...
...
@@ -87,7 +87,7 @@ void WHierarchicalTree::addCluster( size_t cluster1, size_t cluster2, size_t lev
++
m_clusterCount
;
}
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
WHierarchicalTree
::
getOutputBitfield
(
size_t
cluster
)
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
WHierarchicalTree
::
getOutputBitfield
(
size_t
cluster
)
{
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
bf
;
// only a single fiber selected
...
...
@@ -311,7 +311,6 @@ std::vector<size_t> WHierarchicalTree::getBestClustersFittingRoi( float ratio, s
float
WHierarchicalTree
::
getRatio
(
size_t
cluster
)
{
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
roiSelection
=
WKernel
::
getRunningKernel
()
->
getRoiManager
()
->
getRoiBitfield
();
std
::
vector
<
size_t
>
fibersInCluster
=
getLeafesForCluster
(
cluster
);
size_t
countFibersInCluster
=
fibersInCluster
.
size
();
...
...
@@ -319,7 +318,7 @@ float WHierarchicalTree::getRatio( size_t cluster )
for
(
size_t
i
=
0
;
i
<
countFibersInCluster
;
++
i
)
{
if
(
(
*
roiSelection
)[
fibersInCluster
[
i
]]
)
if
(
(
*
m_
roiSelection
)[
fibersInCluster
[
i
]]
)
{
++
fibersFromClusterActive
;
}
...
...
src/modules/clusterDisplay/WHierarchicalTree.h
View file @
ba1eb5a7
...
...
@@ -187,6 +187,12 @@ public:
*/
size_t
size
(
size_t
cluster
);
/**
* setter
* \param bitfield
*/
void
setRoiBitField
(
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
bitfield
);
protected:
private:
/**
...
...
@@ -247,6 +253,11 @@ private:
* a color value for each cluster
*/
std
::
vector
<
WColor
>
m_colors
;
/**
* stores a pointer to the bitfield by the current roi setting
*/
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
m_roiSelection
;
};
inline
size_t
WHierarchicalTree
::
getLeafCount
()
...
...
@@ -320,5 +331,9 @@ inline WColor WHierarchicalTree::getColor( size_t cluster )
return
m_colors
[
cluster
];
}
inline
void
WHierarchicalTree
::
setRoiBitField
(
boost
::
shared_ptr
<
std
::
vector
<
bool
>
>
bitfield
)
{
m_roiSelection
=
bitfield
;
}
#endif // WHIERARCHICALTREE_H
src/modules/clusterDisplay/WMClusterDisplay.cpp
View file @
ba1eb5a7
...
...
@@ -211,6 +211,7 @@ bool WMClusterDisplay::loadTreeAscii( std::string fileName )
{
return
true
;
}
debugLog
()
<<
"something is wrong with the tree file"
;
return
false
;
}
...
...
@@ -416,6 +417,9 @@ void WMClusterDisplay::moduleMain()
}
}
m_fiberSelector
=
boost
::
shared_ptr
<
WFiberSelector
>
(
new
WFiberSelector
(
m_dataSet
)
);
m_tree
.
setRoiBitField
(
m_fiberSelector
->
getBitfield
()
);
m_propTreeFile
->
setHidden
(
true
);
m_readTriggerProp
->
setHidden
(
true
);
...
...
@@ -430,18 +434,17 @@ void WMClusterDisplay::moduleMain()
m_propSelectedClusterOffset
->
setMin
(
0
-
m_tree
.
getLevel
(
m_propSelectedCluster
->
get
()
)
);
initWidgets
();
WKernel
::
getRunningKernel
()
->
getRoiManager
()
->
setExternalBitfield
(
m_tree
.
getOutputBitfield
(
m_propSelectedCluster
->
get
(
true
)
)
);
WKernel
::
getRunningKernel
()
->
getRoiManager
()
->
setUseExternalBitfield
(
m_active
->
get
(
true
)
);
createFiberGeode
(
);
m_widgetDirty
=
true
;
updateWidgets
();