Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

Commit 1f55c35a authored by schultezub's avatar schultezub
Browse files

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) {
......
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