Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CAMP
campvis-public
Commits
75d4690b
Commit
75d4690b
authored
Oct 11, 2013
by
Christian Schulte zu Berge
Browse files
Merge branch 'metaproperty' of /mnt/bigone/git/repositories/berge/campvis into development
parents
25b57767
549d6b31
Changes
29
Hide whitespace changes
Inline
Side-by-side
application/CMakeLists.txt
View file @
75d4690b
...
...
@@ -51,6 +51,7 @@ SET(CampvisApplicationToBeMocced
gui/properties/floatpropertywidget.h
gui/properties/geometry1dtransferfunctioneditor.h
gui/properties/geometry2dtransferfunctioneditor.h
gui/properties/metapropertywidget.h
gui/properties/optionpropertywidget.h
gui/properties/propertycollectionwidget.h
gui/properties/simpletransferfunctioneditor.h
...
...
application/gui/properties/abstractpropertywidget.cpp
View file @
75d4690b
...
...
@@ -46,14 +46,19 @@ namespace campvis {
QBoxLayout
*
outerLayout
=
new
QBoxLayout
(
QBoxLayout
::
LeftToRight
,
this
);
QGroupBox
*
groupBox
=
new
QGroupBox
(
QString
::
fromStdString
(
_property
->
getTitle
()));
outerLayout
->
setMargin
(
4
);
outerLayout
->
addWidget
(
groupBox
);
_layout
=
new
QBoxLayout
(
QBoxLayout
::
TopToBottom
,
groupBox
);
_layout
->
setSpacing
(
1
);
_layout
->
setMargin
(
3
);
}
else
{
_titleLabel
=
new
QLabel
(
QString
::
fromStdString
(
_property
->
getTitle
()
+
":"
),
this
);
_layout
=
new
QBoxLayout
(
QBoxLayout
::
LeftToRight
,
this
);
_layout
->
setSpacing
(
8
);
_layout
->
setMargin
(
4
);
_layout
->
addWidget
(
_titleLabel
,
0
);
}
...
...
application/gui/properties/camerapropertywidget.cpp
View file @
75d4690b
...
...
@@ -35,7 +35,7 @@
namespace
campvis
{
CameraPropertyWidget
::
CameraPropertyWidget
(
CameraProperty
*
property
,
QWidget
*
parent
/*= 0*/
)
:
AbstractPropertyWidget
(
property
,
fals
e
,
parent
)
:
AbstractPropertyWidget
(
property
,
tru
e
,
parent
)
,
_lblCameraPosition
(
0
)
,
_lblLookDirection
(
0
)
,
_lblUpVector
(
0
)
...
...
application/gui/properties/intpropertywidget.cpp
View file @
75d4690b
...
...
@@ -32,6 +32,7 @@
#include
<QCheckBox>
#include
<QTimer>
#include
<QGridLayout>
#include
<QPushButton>
#include
<QWidget>
namespace
campvis
{
...
...
@@ -45,6 +46,8 @@ namespace campvis {
QWidget
*
widget
=
new
QWidget
(
this
);
QGridLayout
*
layout
=
new
QGridLayout
(
widget
);
layout
->
setSpacing
(
2
);
layout
->
setMargin
(
0
);
widget
->
setLayout
(
layout
);
_adjuster
=
new
IntAdjusterWidget
;
...
...
@@ -54,14 +57,20 @@ namespace campvis {
_adjuster
->
setValue
(
property
->
getValue
());
layout
->
addWidget
(
_adjuster
,
0
,
0
,
1
,
2
);
_btnShowHideTimer
=
new
QPushButton
(
tr
(
"S"
));
_btnShowHideTimer
->
setFixedWidth
(
16
);
layout
->
addWidget
(
_btnShowHideTimer
,
0
,
2
);
_cbEnableTimer
=
new
QCheckBox
(
"Enable Timer"
,
widget
);
_cbEnableTimer
->
setVisible
(
false
);
layout
->
addWidget
(
_cbEnableTimer
,
1
,
0
);
_sbInterval
=
new
QSpinBox
(
widget
);
_sbInterval
->
setMinimum
(
1
);
_sbInterval
->
setMaximum
(
2000
);
_sbInterval
->
setValue
(
50
);
layout
->
addWidget
(
_sbInterval
,
1
,
1
);
_sbInterval
->
setVisible
(
false
);
layout
->
addWidget
(
_sbInterval
,
1
,
1
,
1
,
2
);
addWidget
(
widget
);
...
...
@@ -69,6 +78,7 @@ namespace campvis {
connect
(
_adjuster
,
SIGNAL
(
valueChanged
(
int
)),
this
,
SLOT
(
onValueChanged
(
int
)));
connect
(
_cbEnableTimer
,
SIGNAL
(
stateChanged
(
int
)),
this
,
SLOT
(
onEnableTimerChanged
(
int
)));
connect
(
_sbInterval
,
SIGNAL
(
valueChanged
(
int
)),
this
,
SLOT
(
onIntervalValueChanged
(
int
)));
connect
(
_btnShowHideTimer
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
onBtnSHTClicked
()));
property
->
s_minMaxChanged
.
connect
(
this
,
&
IntPropertyWidget
::
onPropertyMinMaxChanged
);
property
->
s_stepChanged
.
connect
(
this
,
&
IntPropertyWidget
::
onPropertyStepChanged
);
}
...
...
@@ -129,4 +139,10 @@ namespace campvis {
prop
->
setValue
(
prop
->
getMinValue
());
}
void
IntPropertyWidget
::
onBtnSHTClicked
()
{
_cbEnableTimer
->
setVisible
(
!
_cbEnableTimer
->
isVisible
());
_sbInterval
->
setVisible
(
!
_sbInterval
->
isVisible
());
_btnShowHideTimer
->
setText
(
_sbInterval
->
isVisible
()
?
tr
(
"H"
)
:
tr
(
"S"
));
}
}
\ No newline at end of file
application/gui/properties/intpropertywidget.h
View file @
75d4690b
...
...
@@ -35,6 +35,7 @@
#include
"core/properties/numericproperty.h"
class
QCheckBox
;
class
QPushButton
;
class
QTimer
;
namespace
campvis
{
...
...
@@ -68,6 +69,7 @@ namespace campvis {
void
onIntervalValueChanged
(
int
value
);
void
onEnableTimerChanged
(
int
state
);
void
onTimer
();
void
onBtnSHTClicked
();
private:
/// Slot getting called when the property's min or max value has changed, so that the widget can be updated.
...
...
@@ -78,6 +80,7 @@ namespace campvis {
IntAdjusterWidget
*
_adjuster
;
QPushButton
*
_btnShowHideTimer
;
QTimer
*
_timer
;
QCheckBox
*
_cbEnableTimer
;
QSpinBox
*
_sbInterval
;
...
...
application/gui/properties/metapropertywidget.cpp
0 → 100644
View file @
75d4690b
// ================================================================================================
//
// This file is part of the CAMPVis Software Framework.
//
// If not explicitly stated otherwise: Copyright (C) 2012, all rights reserved,
// Christian Schulte zu Berge <christian.szb@in.tum.de>
// Chair for Computer Aided Medical Procedures
// Technische Universität München
// Boltzmannstr. 3, 85748 Garching b. München, Germany
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
//
// The licensing of this softare is not yet resolved. Until then, redistribution in source or
// binary forms outside the CAMP chair is not permitted, unless explicitly stated in legal form.
// However, the names of the original authors and the above copyright notice must retain in its
// original state in any case.
//
// Legal disclaimer provided by the BSD license:
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// ================================================================================================
#include
"tgt/assert.h"
#include
"metapropertywidget.h"
namespace
campvis
{
MetaPropertyWidget
::
MetaPropertyWidget
(
MetaProperty
*
property
,
DataContainer
*
dc
,
QWidget
*
parent
/*= 0*/
)
:
AbstractPropertyWidget
(
property
,
true
,
parent
)
,
_pcw
(
0
)
,
_dc
(
dc
)
{
tgtAssert
(
_dc
!=
0
,
"Pointer to DataContainer must not be 0."
);
_pcw
=
new
PropertyCollectionWidget
(
this
);
_pcw
->
updatePropCollection
(
property
,
_dc
);
addWidget
(
_pcw
);
}
MetaPropertyWidget
::~
MetaPropertyWidget
()
{
}
void
MetaPropertyWidget
::
updateWidgetFromProperty
()
{
}
}
\ No newline at end of file
application/gui/properties/metapropertywidget.h
0 → 100644
View file @
75d4690b
// ================================================================================================
//
// This file is part of the CAMPVis Software Framework.
//
// If not explicitly stated otherwise: Copyright (C) 2012, all rights reserved,
// Christian Schulte zu Berge <christian.szb@in.tum.de>
// Chair for Computer Aided Medical Procedures
// Technische Universität München
// Boltzmannstr. 3, 85748 Garching b. München, Germany
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
//
// The licensing of this softare is not yet resolved. Until then, redistribution in source or
// binary forms outside the CAMP chair is not permitted, unless explicitly stated in legal form.
// However, the names of the original authors and the above copyright notice must retain in its
// original state in any case.
//
// Legal disclaimer provided by the BSD license:
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// ================================================================================================
#ifndef METAPROPERTYWIDGET_H__
#define METAPROPERTYWIDGET_H__
#include
"application/gui/properties/propertycollectionwidget.h"
#include
"application/gui/properties/abstractpropertywidget.h"
#include
"core/properties/metaproperty.h"
namespace
campvis
{
class
DataContainer
;
/**
* Widget for a Camera.
* For now just offering read-access.
*/
class
MetaPropertyWidget
:
public
AbstractPropertyWidget
{
Q_OBJECT
;
public:
/**
* Creates a new MetaPropertyWidget for the property \a property.
* \param property The property the widget shall handle
* \param parent Parent Qt widget
*/
MetaPropertyWidget
(
MetaProperty
*
property
,
DataContainer
*
dc
,
QWidget
*
parent
=
0
);
/**
* Destructor
*/
virtual
~
MetaPropertyWidget
();
protected:
/**
* Gets called when the property has changed, so that widget can update its state.
*/
virtual
void
updateWidgetFromProperty
();
private:
PropertyCollectionWidget
*
_pcw
;
DataContainer
*
_dc
;
};
}
#endif // METAPROPERTYWIDGET_H__
application/gui/properties/propertycollectionwidget.cpp
View file @
75d4690b
...
...
@@ -73,7 +73,8 @@ namespace campvis {
void
PropertyCollectionWidget
::
setupWidget
()
{
_layout
=
new
QVBoxLayout
();
_layout
->
setSpacing
(
0
);
_layout
->
setSpacing
(
8
);
_layout
->
setMargin
(
0
);
setLayout
(
_layout
);
}
...
...
application/gui/properties/propertywidgetfactory.cpp
View file @
75d4690b
...
...
@@ -36,6 +36,7 @@
#include
"application/gui/properties/datanamepropertywidget.h"
#include
"application/gui/properties/intpropertywidget.h"
#include
"application/gui/properties/floatpropertywidget.h"
#include
"application/gui/properties/metapropertywidget.h"
#include
"application/gui/properties/optionpropertywidget.h"
#include
"application/gui/properties/stringpropertywidget.h"
#include
"application/gui/properties/transferfunctionpropertywidget.h"
...
...
@@ -108,6 +109,10 @@ namespace campvis {
return
new
TransferFunctionPropertyWidget
(
tester
);
}
if
(
MetaProperty
*
tester
=
dynamic_cast
<
MetaProperty
*>
(
property
))
{
return
new
MetaPropertyWidget
(
tester
,
dc
);
}
return
0
;
}
...
...
application/gui/properties/transferfunctionpropertywidget.cpp
View file @
75d4690b
...
...
@@ -42,7 +42,7 @@
namespace
campvis
{
TransferFunctionPropertyWidget
::
TransferFunctionPropertyWidget
(
TransferFunctionProperty
*
property
,
QWidget
*
parent
/*= 0*/
)
:
AbstractPropertyWidget
(
property
,
fals
e
,
parent
)
:
AbstractPropertyWidget
(
property
,
tru
e
,
parent
)
,
_widget
(
0
)
,
_gridLayout
(
0
)
,
_lblDomain
(
0
)
...
...
@@ -72,11 +72,11 @@ namespace campvis {
_spinDomainRight
->
setSingleStep
(
0.01
);
_gridLayout
->
addWidget
(
_spinDomainRight
,
0
,
2
);
_btnFitDomainToImage
=
new
QPushButton
(
"Fit
Intensity Domain to Image
"
,
_widget
);
_gridLayout
->
addWidget
(
_btnFitDomainToImage
,
1
,
0
,
1
,
3
);
_btnFitDomainToImage
=
new
QPushButton
(
"Fit"
,
_widget
);
_gridLayout
->
addWidget
(
_btnFitDomainToImage
,
0
,
3
);
_btnEditTF
=
new
QPushButton
(
"Edit Transfer Function"
,
_widget
);
_gridLayout
->
addWidget
(
_btnEditTF
,
2
,
0
,
1
,
3
);
_gridLayout
->
addWidget
(
_btnEditTF
,
1
,
1
,
1
,
3
);
addWidget
(
_widget
);
...
...
core/pipeline/processordecoratormasking.cpp
View file @
75d4690b
...
...
@@ -42,9 +42,13 @@ namespace campvis {
,
_texUnit
(
0
)
,
_maskImage
(
0
)
{
_applyMask
.
s_changed
.
connect
(
this
,
&
ProcessorDecoratorMasking
::
onPropertyChanged
);
_maskID
.
setVisible
(
false
);
_maskColor
.
setVisible
(
false
);
}
ProcessorDecoratorMasking
::~
ProcessorDecoratorMasking
()
{
_applyMask
.
s_changed
.
disconnect
(
this
);
delete
_texUnit
;
delete
_maskImage
;
}
...
...
@@ -85,4 +89,11 @@ namespace campvis {
return
""
;
}
void
ProcessorDecoratorMasking
::
onPropertyChanged
(
const
AbstractProperty
*
p
)
{
if
(
p
==
&
_applyMask
)
{
_maskID
.
setVisible
(
_applyMask
.
getValue
());
_maskColor
.
setVisible
(
_applyMask
.
getValue
());
}
}
}
core/pipeline/processordecoratormasking.h
View file @
75d4690b
...
...
@@ -40,7 +40,7 @@
namespace
campvis
{
class
ProcessorDecoratorMasking
:
public
AbstractProcessorDecorator
{
class
ProcessorDecoratorMasking
:
public
AbstractProcessorDecorator
,
public
sigslot
::
has_slots
<>
{
public:
ProcessorDecoratorMasking
();
virtual
~
ProcessorDecoratorMasking
();
...
...
@@ -60,6 +60,10 @@ namespace campvis {
tgt
::
TextureUnit
*
_texUnit
;
ScopedTypedData
<
RenderData
>*
_maskImage
;
private:
void
onPropertyChanged
(
const
AbstractProperty
*
p
);
};
}
...
...
core/pipeline/processordecoratorshading.cpp
View file @
75d4690b
...
...
@@ -38,11 +38,11 @@ namespace campvis {
:
AbstractProcessorDecorator
()
,
_enableShading
(
"EnableShading"
,
"Enable Shading"
,
true
,
AbstractProcessor
::
INVALID_SHADER
|
AbstractProcessor
::
INVALID_RESULT
)
,
_centralDifferences
(
"CentralDifferences"
,
"Use Central instead of Forward Differences"
,
false
,
AbstractProcessor
::
INVALID_SHADER
|
AbstractProcessor
::
INVALID_RESULT
)
,
_lightPosition
(
"LightPosition"
,
"Light Position"
,
tgt
::
vec3
(
-
8
.
f
),
tgt
::
vec3
(
-
500.
f
),
tgt
::
vec3
(
500.
f
),
tgt
::
vec3
(
0.
1
f
))
,
_ambientColor
(
"AmbientColor"
,
"Ambient Light Color"
,
tgt
::
vec3
(
0.
5
f
),
tgt
::
vec3
(
0.
f
),
tgt
::
vec3
(
1.
f
))
,
_lightPosition
(
"LightPosition"
,
"Light Position"
,
tgt
::
vec3
(
-
100
.
f
),
tgt
::
vec3
(
-
500.
f
),
tgt
::
vec3
(
500.
f
),
tgt
::
vec3
(
1
.
f
))
,
_ambientColor
(
"AmbientColor"
,
"Ambient Light Color"
,
tgt
::
vec3
(
0.
4
f
),
tgt
::
vec3
(
0.
f
),
tgt
::
vec3
(
1.
f
))
,
_diffuseColor
(
"DiffuseColor"
,
"Diffuse Light Color"
,
tgt
::
vec3
(
0.75
f
),
tgt
::
vec3
(
0.
f
),
tgt
::
vec3
(
1.
f
))
,
_specularColor
(
"SpecularColor"
,
"Specular Light Color"
,
tgt
::
vec3
(
0.
5
f
),
tgt
::
vec3
(
0.
f
),
tgt
::
vec3
(
1.
f
))
,
_shininess
(
"Shininess"
,
"Specular Shininess"
,
4.
f
,
0.
f
,
64.
f
,
0.5
f
)
,
_specularColor
(
"SpecularColor"
,
"Specular Light Color"
,
tgt
::
vec3
(
0.
6
f
),
tgt
::
vec3
(
0.
f
),
tgt
::
vec3
(
1.
f
))
,
_shininess
(
"Shininess"
,
"Specular Shininess"
,
2
4.
f
,
0.
f
,
64.
f
,
0.5
f
)
,
_attenuation
(
"Attenuation"
,
"Attenuation Factors"
,
tgt
::
vec3
(
0.
f
),
tgt
::
vec3
(
0.
f
),
tgt
::
vec3
(
1.
f
))
,
_lightUniformName
(
lightUniformName
)
{
...
...
core/pipeline/raycastingprocessor.cpp
View file @
75d4690b
...
...
@@ -48,9 +48,8 @@ namespace campvis {
,
p_exitImageID
(
"exitImageID"
,
"Input Exit Points Image"
,
""
,
DataNameProperty
::
READ
)
,
p_camera
(
"camera"
,
"Camera"
)
,
p_transferFunction
(
"TransferFunction"
,
"Transfer Function"
,
new
SimpleTransferFunction
(
256
))
,
p_samplingRate
(
"SamplingRate"
,
"Sampling Rate"
,
2.
f
,
0.1
f
,
10.
f
,
0.1
f
)
,
p_jitterEntryPoints
(
"jitterEntryPoints"
,
"Jitter Entry Points"
,
true
)
,
p_jitterStepSizeMultiplier
(
"jitterStepSizeMultiplier"
,
"Jitter Step Size Multiplier"
,
.5
f
,
.1
f
,
1.
f
)
,
p_samplingRate
(
"SamplingRate"
,
"Sampling Rate"
,
2.
f
,
0.1
f
,
10.
f
,
0.1
f
)
,
_fragmentShaderFilename
(
fragmentShaderFileName
)
,
_shader
(
0
)
,
_bindEntryExitDepthTextures
(
bindEntryExitDepthTextures
)
...
...
@@ -61,9 +60,8 @@ namespace campvis {
addProperty
(
&
p_exitImageID
);
addProperty
(
&
p_camera
);
addProperty
(
&
p_transferFunction
);
addProperty
(
&
p_samplingRate
);
addProperty
(
&
p_jitterEntryPoints
);
addProperty
(
&
p_jitterStepSizeMultiplier
);
addProperty
(
&
p_samplingRate
);
}
RaycastingProcessor
::~
RaycastingProcessor
()
{
...
...
@@ -107,7 +105,6 @@ namespace campvis {
_shader
->
setIgnoreUniformLocationError
(
true
);
decorateRenderProlog
(
data
,
_shader
);
_shader
->
setUniform
(
"_viewportSizeRCP"
,
1.
f
/
tgt
::
vec2
(
getEffectiveViewportSize
()));
_shader
->
setUniform
(
"_jitterEntryPoints"
,
p_jitterEntryPoints
.
getValue
());
_shader
->
setUniform
(
"_jitterStepSizeMultiplier"
,
p_jitterStepSizeMultiplier
.
getValue
());
float
samplingStepSize
=
1.
f
/
(
p_samplingRate
.
getValue
()
*
tgt
::
max
(
img
->
getSize
()));
...
...
core/pipeline/raycastingprocessor.h
View file @
75d4690b
...
...
@@ -106,9 +106,8 @@ namespace campvis {
CameraProperty
p_camera
;
///< Camera used for ray casting
TransferFunctionProperty
p_transferFunction
;
///< Transfer function
FloatProperty
p_samplingRate
;
///< Ray casting sampling rate
BoolProperty
p_jitterEntryPoints
;
///< Flag whether to jitter the entry points
FloatProperty
p_jitterStepSizeMultiplier
;
///< Step size multiplier for entry points jitter
FloatProperty
p_samplingRate
;
///< Ray casting sampling rate
protected:
/**
...
...
core/properties/metaproperty.cpp
0 → 100644
View file @
75d4690b
// ================================================================================================
//
// This file is part of the CAMPVis Software Framework.
//
// If not explicitly stated otherwise: Copyright (C) 2012, all rights reserved,
// Christian Schulte zu Berge <christian.szb@in.tum.de>
// Chair for Computer Aided Medical Procedures
// Technische Universität München
// Boltzmannstr. 3, 85748 Garching b. München, Germany
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
//
// The licensing of this softare is not yet resolved. Until then, redistribution in source or
// binary forms outside the CAMP chair is not permitted, unless explicitly stated in legal form.
// However, the names of the original authors and the above copyright notice must retain in its
// original state in any case.
//
// Legal disclaimer provided by the BSD license:
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// ================================================================================================
#include
"metaproperty.h"
namespace
campvis
{
const
std
::
string
MetaProperty
::
loggerCat_
=
"CAMPVis.core.datastructures.MetaProperty"
;
MetaProperty
::
MetaProperty
(
const
std
::
string
&
name
,
const
std
::
string
&
title
,
int
invalidationLevel
/*= AbstractProcessor::INVALID_RESULT*/
)
:
AbstractProperty
(
name
,
title
,
invalidationLevel
)
{
}
MetaProperty
::~
MetaProperty
()
{
}
void
MetaProperty
::
onPropertyChanged
(
const
AbstractProperty
*
prop
)
{
s_changed
(
prop
);
}
void
MetaProperty
::
addPropertyCollection
(
HasPropertyCollection
&
pc
)
{
PropertyCollection
&
c
=
pc
.
getProperties
();
for
(
std
::
vector
<
AbstractProperty
*>::
const_iterator
it
=
c
.
begin
();
it
!=
c
.
end
();
++
it
)
{
addProperty
(
*
it
);
}
}
}
core/properties/metaproperty.h
0 → 100644
View file @
75d4690b
// ================================================================================================
//
// This file is part of the CAMPVis Software Framework.
//
// If not explicitly stated otherwise: Copyright (C) 2012, all rights reserved,
// Christian Schulte zu Berge <christian.szb@in.tum.de>
// Chair for Computer Aided Medical Procedures
// Technische Universität München
// Boltzmannstr. 3, 85748 Garching b. München, Germany
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
//
// The licensing of this softare is not yet resolved. Until then, redistribution in source or
// binary forms outside the CAMP chair is not permitted, unless explicitly stated in legal form.
// However, the names of the original authors and the above copyright notice must retain in its
// original state in any case.
//
// Legal disclaimer provided by the BSD license:
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// ================================================================================================
#ifndef METAPROPERTY_H__
#define METAPROPERTY_H__
#include
"core/properties/abstractproperty.h"
#include
"core/properties/propertycollection.h"
namespace
campvis
{
/**
* Property wrapping around a bunch of other properties.
* Useful either for grouping properties or for wrapping around entire property collections.
*
* \note ATTENTION: Even though MetaProperty derives from HasPropertyCollection, it does
* neither take ownership of its wrapped properties, nor does is (de)initialize
* or (un)lock them. This has to be done by the owners of the wrapped
* properties.
*/
class
MetaProperty
:
public
AbstractProperty
,
public
HasPropertyCollection
{
public:
/**
* Creates a new MetaProperty
* \param name Property name (unchangable!)
* \param title Property title (e.g. used for GUI)
* \param invalidationLevel Invalidation level that this property triggers
*/
MetaProperty
(
const
std
::
string
&
name
,
const
std
::
string
&
title
,
int
invalidationLevel
=
AbstractProcessor
::
INVALID_RESULT
);
/**
* Virtual Destructor
**/
virtual
~
MetaProperty
();
/// \see HasPropertyCollection::onPropertyChanged
virtual
void
onPropertyChanged
(
const
AbstractProperty
*
prop
);
/**
* Adds all properties in \a pc to this meta property.
* \param pc PropertyCollection to add
*/
void
addPropertyCollection
(
HasPropertyCollection
&
pc
);
protected:
static
const
std
::
string
loggerCat_
;
};
}
#endif // METAPROPERTY_H__
modules/vis/glsl/drrraycaster.frag
View file @
75d4690b
...
...
@@ -35,7 +35,6 @@ out vec4 out_Color; ///< outgoing fragment color
#include
"tools/transferfunction.frag"
uniform
vec2
_viewportSizeRCP
;
uniform
bool
_jitterEntryPoints
;
uniform
float
_jitterStepSizeMultiplier
;
// ray entry points
...
...
@@ -73,8 +72,7 @@ vec4 raycastDRR(in vec3 entryPoint, in vec3 exitPoint) {
float
tend
=
length
(
direction
);
direction
=
normalize
(
direction
);
if
(
_jitterEntryPoints
)
jitterEntryPoint
(
entryPoint
,
direction
,
_samplingStepSize
*
_jitterStepSizeMultiplier
);
jitterEntryPoint
(
entryPoint
,
direction
,
_samplingStepSize
*
_jitterStepSizeMultiplier
);
while
(
t
<
tend
)
{
// compute sample position
...
...
modules/vis/glsl/simpleraycaster.frag
View file @
75d4690b
...
...
@@ -39,7 +39,6 @@ layout(location = 2) out vec4 out_FHN; ///< outgoing fragment first hit no
#include
"tools/transferfunction.frag"
uniform
vec2
_viewportSizeRCP
;
uniform
bool
_jitterEntryPoints
;
uniform
float
_jitterStepSizeMultiplier
;
...
...
@@ -92,8 +91,7 @@ vec4 performRaycasting(in vec3 entryPoint, in vec3 exitPoint, in vec2 texCoords)
float
tend
=
length
(
direction
);
direction
=
normalize
(
direction
);
if
(
_jitterEntryPoints
)
jitterEntryPoint
(
entryPoint
,
direction
,
_samplingStepSize
*
_jitterStepSizeMultiplier
);
jitterEntryPoint
(
entryPoint
,
direction
,
_samplingStepSize
*
_jitterStepSizeMultiplier
);
while
(
t
<
tend
)
{
// compute sample position
...
...
modules/vis/pipelines/volumeexplorerdemo.cpp
View file @
75d4690b
...
...
@@ -39,12 +39,9 @@ namespace campvis {
VolumeExplorerDemo
::
VolumeExplorerDemo
(
DataContainer
*
dc
)
:
AutoEvaluationPipeline
(
dc
)
,
_camera
(
"camera"
,
"Camera"
)
,
_imageReader
()
,
_ve
(
&
_canvasSize
)
{
addProperty
(
&
_camera
);
addProcessor
(
&
_imageReader
);
addProcessor
(
&
_ve
);
...
...
@@ -59,7 +56,6 @@ namespace campvis {
_imageReader
.
s_validated
.
connect
(
this
,
&
VolumeExplorerDemo
::
onProcessorValidated
);
_camera
.
addSharedProperty
(
&
_ve
.
p_camera
);