Commit 1f55c35a authored by schultezub's avatar schultezub

fixed / improved documentation

git-svn-id: https://camplinux.in.tum.de/svn/campvis/trunk@230 bb408c1c-ae56-11e1-83d9-df6b3e0c105e
parent f1fe09b1
......@@ -34,6 +34,7 @@ namespace TUMVis {
* Return the of this item at the column \a column.
* To be overwritten by subclasses.
* \param column Column
* \param role Access role (Use Qt::DisplayRole for string representation, Qt::UserRole for the internal data)
* \return The data of this item at \a column.
*/
virtual QVariant getData(int column, int role) const = 0;
......
......@@ -5,12 +5,17 @@ namespace TUMVis {
class AbstractPropertyWidget;
class AbstractProperty;
/**
* Factory class offering the static method createWidget to create property widgets for a given
* property (depending on its type).
*/
class PropertyWidgetFactory {
public:
/**
*
* \param property
* \return
* Creates the corresponding property widget for the given property \a property.
* \note The callee has to take the ownership of the returned pointer.
* \param property Property to generate the widget for.
* \return A new property widget for the given property (depending on its type).
*/
static AbstractPropertyWidget* createWidget(AbstractProperty* property);
};
......
......@@ -5,14 +5,23 @@ namespace TUMVis {
class AbstractTransferFunction;
class AbstractTransferFunctionEditor;
/**
* Factory class offering the static method createEditor to create transfer function editors
* for a given transfer function (depending on its type).
*/
class TransferFunctionEditorFactory {
public:
/**
*
* \param property
* \return
* Creates the corresponding TransferFunctionEditor for the given transfer function \a tf.
* \note The callee has to take the ownership of the returned pointer.
* \param tf Transfer function to generate the editor for.
* \return A new transfer function editor for the given transfer function (depending on its type).
*/
static AbstractTransferFunctionEditor* createEditor(AbstractTransferFunction* tf);
private:
/// Shall not instantiate
TransferFunctionEditorFactory();
};
}
......
......@@ -13,7 +13,7 @@ using namespace TUMVis;
**/
int main(int argc, char** argv) {
TumVisApplication app(argc, argv);
app.addVisualizationPipeline("SliceVis", new SliceVis());
//app.addVisualizationPipeline("SliceVis", new SliceVis());
app.addVisualizationPipeline("DVRVis", new DVRVis());
app.init();
......
......@@ -22,12 +22,12 @@ namespace TUMVis {
* care about correctly handling all those instances.
*
* Intended usage is:
* 1) Create your TumVisApplication
* 2) Add Pipelines and Visualizations as needed
* 3) call init()
* 4) call run()
* 5) call deinit()
* 6) You can now safely destroy your TumVisApplication
* 1. Create your TumVisApplication
* 2. Add Pipelines and Visualizations as needed
* 3. call init()
* 4. call run()
* 5. call deinit()
* 6. You can now safely destroy your TumVisApplication
*/
class TumVisApplication : QApplication {
friend class MainWindow;
......@@ -71,7 +71,7 @@ namespace TUMVis {
* For each added pipeline, two OpenGL contexts will be created (one for the evaluation,
* one for the rendering).
*
* \note You do \emph not need to call addPipeline.
* \note You do \b not need to call addPipeline.
* \param name Name of the OpenGL context to create for the pipeline.
* \param vp VisualizationPipeline to add.
*/
......@@ -84,6 +84,7 @@ namespace TUMVis {
*/
int run();
/// Signal emitted when the collection of pipelines has changed.
sigslot::signal0<> s_PipelinesChanged;
private:
......
......@@ -91,7 +91,7 @@ namespace TUMVis {
c.look();
glColor3f(1.f, 0.f, 0.f);
tgt::Sphere sphere(.5f, 64, 32);
sphere.render();
//sphere.render();
/*
// render error texture
......
......@@ -143,6 +143,10 @@ namespace TUMVis {
*/
void removeData(const std::string& name);
/**
* Signal emitted when data has been added to this DataContainer (this includes also data being replaced).
* First parameter is the name of the added data, second parameter contains a DataHandle to the new data.
*/
sigslot::signal2<const std::string&, const DataHandle*> s_dataAdded;
private:
......
......@@ -27,6 +27,7 @@ namespace TUMVis {
* \param dimensionality Dimensionality of data
* \param size Size of this image (number of elements per dimension)
* \param type Base type of data
* \param numChannels Number of channels per element
* \param offset Offset of first data element in file (in bytes)
* \param endianness Endianess of data
* \param stride Number of _elemments_ _between_ adjacent elements for each dimension (\see ImageDataDisk::_stride).
......
......@@ -26,7 +26,7 @@ namespace TUMVis {
*
* \param dimensionality Dimensionality of data
* \param size Size of this image (number of elements per dimension)
* \param data Pointer to the image data, must not be 0, ImageDataGL does not take ownership of that pointer.
* \param wtp WeaklyTypedPointer to the image data, must not be 0, ImageDataGL does \b not take ownership of that pointer.
*/
ImageDataGL(size_t dimensionality, const tgt::svec3& size, const WeaklyTypedPointer& wtp);
......
......@@ -25,6 +25,8 @@ namespace TUMVis {
*
* \param dimensionality Dimensionality of data
* \param size Size of this image (number of elements per dimension)
* \param baseType Base type of the image data.
* \param numChannels Number of channels per image element.
*/
ImageDataLocal(size_t dimensionality, const tgt::svec3& size, WeaklyTypedPointer::BaseType baseType, size_t numChannels);
......@@ -55,7 +57,7 @@ namespace TUMVis {
* Simple algorithms on images might not always want to test for the actual base data type.
* For them access to the normalized element values provided here might be enough.
*
* \note This method is virtual => slow!
* \note This method is virtual => know the costs!
* \sa ImageDataLocal::setElementNormalized
* \param position Element position within the image
* \param channel Image channel
......@@ -72,7 +74,7 @@ namespace TUMVis {
* Simple algorithms on images might not always want to test for the actual base data type.
* For them access to the normalized element values provided here might be enough.
*
* \note This method is virtual => slow!
* \note This method is virtual => know the costs!
* \sa ImageDataLocal::getElementNormalized
* \param position Element position within the image
* \param channel Image channel
......@@ -81,8 +83,8 @@ namespace TUMVis {
virtual void setElementNormalized(const tgt::svec3& position, size_t channel, float value) = 0;
protected:
WeaklyTypedPointer::BaseType _baseType;
size_t _numChannels;
WeaklyTypedPointer::BaseType _baseType; ///< Base type of the image data
size_t _numChannels; ///< Number of channels per image element.
static const std::string loggerCat_;
......
......@@ -3,6 +3,6 @@
* Code adapted from: https://www.marcusbannerman.co.uk/index.php/component/content/article/42-articles/97-vol-render-optimizations.htm
*/
void jitterEntryPoint(inout vec3 position, in vec3 direction, in float stepSize) {
float random = fract(sin(gl_FragCoord.x * 12.9898 + gl_FragCoord.y * 78.233) * 43758.5453);
position = position + direction * (stepSize * random);
float random = fract(sin(gl_FragCoord.x * 12.9898 + gl_FragCoord.y * 78.233) * 43758.5453);
position = position + direction * (stepSize * random);
}
\ No newline at end of file
......@@ -72,11 +72,16 @@ namespace TUMVis {
*/
virtual const std::string getName() const = 0;
/**
* Gets the current InvalidationLevel of this pipeline.
* \return _invalidationLevel
*/
InvalidationLevel& getInvalidationLevel();
/// Signal being emitted when this pipeline has been invalidated.
sigslot::signal0<> s_PipelineInvalidated;
protected:
/**
* Slot getting called when one of the observed properties changed and notifies its observers.
* The default behaviour is just to set the invalidation level to invalid.
......@@ -91,7 +96,6 @@ namespace TUMVis {
*/
virtual void onProcessorInvalidated(const AbstractProcessor* processor);
protected:
/**
* Executes the processor \a processor on the pipeline's data and locks its properties meanwhile.
* \param processor Processor to execute.
......
......@@ -35,7 +35,7 @@ namespace TUMVis {
* (e.g. in order to setup data IDs or property sharing) and the properties in the PropertyCollection
* are not strongly typed. Hence, we declare AbstractPipeline as our friend.
*/
friend class AbstractPipeline;
friend class AbstractPipeline; // TODO: this does not work as intended...
public:
......@@ -89,10 +89,10 @@ namespace TUMVis {
virtual const std::string getDescription() const = 0;
/**
* Update the processor's invalidation level by \a nl.
* If \a nl is VALID, the processor's invalidation level will be set to VALID.
* If \a nl is one of the INVALID_X state, the processor's corresponding flag will be set.
* \param nl Invalidation level to apply.
* Update the processor's invalidation level by \a il.
* If \a il is VALID, the processor's invalidation level will be set to VALID.
* If \a il is one of the INVALID_X state, the processor's corresponding flag will be set.
* \param il Invalidation level to apply.
*/
void applyInvalidationLevel(InvalidationLevel il);
......
......@@ -15,8 +15,8 @@
namespace TUMVis {
const std::string RaycastingProcessor::loggerCat_ = "TUMVis.modules.vis.RaycastingProcessor";
RaycastingProcessor::RaycastingProcessor(GenericProperty<tgt::ivec2>& canvasSize, const std::string& fragmentShaderFileName, bool bindEntryExitDepthTextures)
: VisualizationProcessor(canvasSize)
RaycastingProcessor::RaycastingProcessor(GenericProperty<tgt::ivec2>& renderTargetSize, const std::string& fragmentShaderFileName, bool bindEntryExitDepthTextures)
: VisualizationProcessor(renderTargetSize)
, _sourceImageID("sourceImageID", "Input Image", "")
, _entryImageID("entryImageID", "Output Entry Points Image", "")
, _exitImageID("exitImageID", "Output Exit Points Image", "")
......
......@@ -34,7 +34,7 @@ namespace TUMVis {
* \param fragmentShaderFileName Filename for the fragment shader being automatically loaded.
* \param bindEntryExitDepthTextures Flag whether to also bind the depth textures of the entry-/exit points.
*/
RaycastingProcessor(GenericProperty<tgt::ivec2>& canvasSize, const std::string& fragmentShaderFileName, bool bindEntryExitDepthTextures);
RaycastingProcessor(GenericProperty<tgt::ivec2>& renderTargetSize, const std::string& fragmentShaderFileName, bool bindEntryExitDepthTextures);
/**
* Destructor
......
......@@ -91,10 +91,15 @@ namespace TUMVis {
*/
const std::string& getRenderTargetID() const;
/// Signal emitted when the pipeline's render target has changed
sigslot::signal0<> s_renderTargetChanged;
protected:
/**
* Gets called when the data collection of this pipeline has changed and thus has notified its observers.
* The default behaviour is to do nothing
* \param poa DataContainerObserverArgs ObserverArgument struct containing the emitting DataContainer and hints to its changes
* If \a name equals the name of the renderTarget, the s_renderTargetChanged signal will be emitted.
* \param name Name of the added data.
* \param dh DataHandle to the newly added data.
*/
void onDataContainerDataAdded(const std::string& name, const DataHandle* dh);
......@@ -105,10 +110,6 @@ namespace TUMVis {
*/
virtual void onPropertyChanged(const AbstractProperty* prop);
/// Signal emitted when the pipeline's render target has changed
sigslot::signal0<> s_renderTargetChanged;
protected:
/**
* Acquires and locks the OpenGL context, executes the processor \a processor on the pipeline's data
* and locks its properties meanwhile.
......
......@@ -12,6 +12,7 @@ namespace TUMVis {
* Creates a new CameraProperty
* \param name Property name (unchangable!)
* \param title Property title (e.g. used for GUI)
* \param cam Camera to initialize the property with
* \param il Invalidation level that this property triggers
*/
CameraProperty(const std::string& name, const std::string& title, tgt::Camera cam = tgt::Camera(), InvalidationLevel il = InvalidationLevel::INVALID_RESULT);
......
......@@ -13,6 +13,7 @@ namespace TUMVis {
* Creates a new TransferFunctionProperty
* \param name Property name (unchangable!)
* \param title Property title (e.g. used for GUI)
* \param tf Transfer function to initialize the property with.
* \param il Invalidation level that this property triggers
*/
TransferFunctionProperty(const std::string& name, const std::string& title, AbstractTransferFunction* tf, InvalidationLevel il = InvalidationLevel::INVALID_RESULT);
......@@ -25,13 +26,21 @@ namespace TUMVis {
/// \see AbstractProperty::deinit()
virtual void deinit();
/**
* Gets the TransferFunction of this property.
* \note This is a non-const pointer, if you mess with it be sure you know what you're doing!
* \return _transferFunction
*/
AbstractTransferFunction* getTF();
/**
* Slot being called when \a _transferFunction has changed.
*/
void onTFChanged();
protected:
AbstractTransferFunction* _transferFunction;
AbstractTransferFunction* _transferFunction; ///< Transfer function of this property
static const std::string loggerCat_;
};
......
......@@ -45,7 +45,7 @@ namespace TUMVis {
/**
* Performs the parsing of the text file into key-value pairs.
* The file will be read in text mode and split into single items using the template argument
* functor \ta T. Then, each item will be split into key-value pairs.
* functor \a T. Then, each item will be split into key-value pairs.
*
* \sa TextFileParser::ItemSeparatorLines
* \tparam T Functor for splitting the file into items, must implement std::unary_function<std::string, std::vector<std::string> >
......
......@@ -346,8 +346,8 @@ namespace {
/**
* Returns the i-th channel (0-based) of the given image element \a element.
* \param Element Image element to access
* \param Channel Channel to access, must be within [0, NUMCHANNELS).
* \param element Image element to access
* \param channel Channel to access, must be within [0, NUMCHANNELS).
* \return The i-th channel of \a element.
*/
static inline BASETYPE getChannel(const typename TypeTraitsHelperOfBasetypePerChannel<BASETYPE, NUMCHANNELS>::ElementType& element, size_t channel) {
......
......@@ -33,8 +33,9 @@ namespace TUMVis {
*
* \note There is a compiletime version in WeaklyTypedPointerTraits.
* \sa WeaklyTypedPointerTraits::numBytes()
* \param bt Data type to check.
* \returns The number of bytes occupied by one element of the type \a bt.
* \param bt Image base type
* \param numChannels Number of channels per element.
* \returns The number of bytes occupied by one image element with \a numChannels channels of the type \a bt.
*/
static size_t numBytes(BaseType bt, size_t numChannels = 1);
......
......@@ -14,7 +14,6 @@ namespace TUMVis {
public:
/**
* Creates a VisualizationPipeline.
* \param canvas Canvas hosting the OpenGL context for this pipeline.
*/
DVRVis();
......
......@@ -12,7 +12,6 @@ namespace TUMVis {
public:
/**
* Creates a VisualizationPipeline.
* \param canvas Canvas hosting the OpenGL context for this pipeline.
*/
SliceVis();
......
#ifndef SIMPLERAYCASTER_H__
#define SIMPLERAYCASTER_H__
#include <string>
#include "core/pipeline/raycastingprocessor.h"
#include "core/properties/genericproperty.h"
#include "core/properties/numericproperty.h"
#include "core/properties/transferfunctionproperty.h"
#include <string>
namespace tgt {
class Shader;
}
namespace TUMVis {
class ImageData;
/**
* Performs a simple volume ray casting.
* \todo OpenGL supports up to 4 bound FBO. We can use them to generate multiple images
* in a single pass, e.g. first hit point, normals, MIP, DVR.
* \todo Create some kind of RaycastingProcessor class to inherit from.
*/
class SimpleRaycaster : public RaycastingProcessor {
public:
......
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