Notice to GitKraken users: A vulnerability has been found in the SSH key generation of GitKraken versions 7.6.0 to 8.0.0 (https://www.gitkraken.com/blog/weak-ssh-key-fix). If you use GitKraken and have generated a SSH key using one of these versions, please remove it both from your local workstation and from your LRZ GitLab profile.

21.10.2021, 9:00 - 11:00: Due to updates GitLab may be unavailable for some minutes between 09:00 and 11:00.

Commit 54537480 authored by Christian Schulte zu Berge's avatar Christian Schulte zu Berge
Browse files

Introducing campcom module

parent 3f841777
# - Find CAMPCOM
# Find the native CAMPCOM includes and library.
# Once done this will define
#
# CAMPCOM_INCLUDE_DIRS - where to find the CAMPCom header files etc.
# CAMPCOM_LIBRARIES - List of libraries when using CAMPCOM.
# CAMPCOM_FOUND - True if CAMPCOM found.
#
# CAMPCOM_VERSION_STRING - The version of CAMPCOM found (x.y.z)
# CAMPCOM_VERSION_MAJOR - The major version of CAMPCOM
# CAMPCOM_VERSION_MINOR - The minor version of CAMPCOM
# CAMPCOM_VERSION_PATCH - The patch version of CAMPCOM
# CAMPCOM_VERSION_TWEAK - The tweak version of CAMPCOM
#
# The following variable are provided for backward compatibility
#
# CAMPCOM_MAJOR_VERSION - The major version of CAMPCOM
# CAMPCOM_MINOR_VERSION - The minor version of CAMPCOM
# CAMPCOM_PATCH_VERSION - The patch version of CAMPCOM
#
# An includer may set CAMPCOM_ROOT to a CAMPCOM installation root to tell
# this module where to look.
set(_CAMPCOM_SEARCHES)
# Search CAMPCOM_ROOT first if it is set.
if(CAMPCOM_ROOT)
set(_CAMPCOM_SEARCH_ROOT PATHS ${CAMPCOM_ROOT} NO_DEFAULT_PATH)
list(APPEND _CAMPCOM_SEARCHES _CAMPCOM_SEARCH_ROOT)
endif()
# Normal search.
set(_CAMPCOM_SEARCH_NORMAL
PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\CAMPCOM;InstallPath]"
"$ENV{PROGRAMFILES}/CAMPCOM"
"$ENV{CAMPCOM_DIR}"
"$ENV{CAMPCOM_ROOT}"
"${CAMPCOM_BUILD}/bin"
"${CAMPCOM_BUILD}/bin/Debug"
"${CAMPCOM_BUILD}/bin/Release"
)
list(APPEND _CAMPCOM_SEARCHES _CAMPCOM_SEARCH_NORMAL)
set(CAMPCOM_NAMES CCClientLib CCCCommonLib CCServerLib)
# Try each search configuration.
foreach(search ${_CAMPCOM_SEARCHES})
find_path(CAMPCOM_INCLUDE_DIR NAMES CommonLib/Main/CAMPComDefinitions.h ${${search}} PATH_SUFFIXES include)
find_library(CAMPCOM_LIBRARY NAMES ${CAMPCOM_NAMES} ${${search}} PATH_SUFFIXES lib)
endforeach()
mark_as_advanced(CAMPCOM_LIBRARY CAMPCOM_INCLUDE_DIR)
if(CAMPCOM_INCLUDE_DIR AND EXISTS "${CAMPCOM_INCLUDE_DIR}/CommonLib/Main/CAMPComDefinitions.h")
file(STRINGS "${CAMPCOM_INCLUDE_DIR}/CommonLib/Main/CAMPComDefinitions.h" CAMPCOM_H REGEX "^#define CAMPCOM_VERSION \"[^\"]*\"$")
string(REGEX REPLACE "^.*CAMPCOM_VERSION \"([0-9]+).*$" "\\1" CAMPCOM_VERSION_MAJOR "${CAMPCOM_H}")
string(REGEX REPLACE "^.*CAMPCOM_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" CAMPCOM_VERSION_MINOR "${CAMPCOM_H}")
string(REGEX REPLACE "^.*CAMPCOM_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" CAMPCOM_VERSION_PATCH "${CAMPCOM_H}")
set(CAMPCOM_VERSION_STRING "${CAMPCOM_VERSION_MAJOR}.${CAMPCOM_VERSION_MINOR}.${CAMPCOM_VERSION_PATCH}")
# only append a TWEAK version if it exists:
set(CAMPCOM_VERSION_TWEAK "")
if( "${CAMPCOM_H}" MATCHES "^.*CAMPCOM_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+).*$")
set(CAMPCOM_VERSION_TWEAK "${CMAKE_MATCH_1}")
set(CAMPCOM_VERSION_STRING "${CAMPCOM_VERSION_STRING}.${CAMPCOM_VERSION_TWEAK}")
endif()
set(CAMPCOM_MAJOR_VERSION "${CAMPCOM_VERSION_MAJOR}")
set(CAMPCOM_MINOR_VERSION "${CAMPCOM_VERSION_MINOR}")
set(CAMPCOM_PATCH_VERSION "${CAMPCOM_VERSION_PATCH}")
endif()
# handle the QUIETLY and REQUIRED arguments and set CAMPCOM_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CAMPCOM REQUIRED_VARS CAMPCOM_LIBRARY CAMPCOM_INCLUDE_DIR
VERSION_VAR CAMPCOM_VERSION_STRING)
if(CAMPCOM_FOUND)
set(CAMPCOM_INCLUDE_DIRS ${CAMPCOM_INCLUDE_DIR})
set(CAMPCOM_LIBRARIES ${CAMPCOM_LIBRARY})
endif()
LIST(APPEND CAMPCOM_INCLUDE_DIRS
${CAMPCOM_INCLUDE_DIR}/CommonLib/MathLib
${CAMPCOM_INCLUDE_DIR}/CommonLib/MathLib/GL
${CAMPCOM_INCLUDE_DIR}/CommonLib/Messages
${CAMPCOM_INCLUDE_DIR}/CommonLib/Util
${CAMPCOM_INCLUDE_DIR}/CommonLib/Main
${CAMPCOM_INCLUDE_DIR}/CommonLib/Ext
${CAMPCOM_INCLUDE_DIR}/CommonLib/DataTypes
${CAMPCOM_INCLUDE_DIR}/TrackingLib/src
${CAMPCOM_INCLUDE_DIR}/TrackingLib/NDI
${CAMPCOM_INCLUDE_DIR}/TrackingLib/Ascension
${CAMPCOM_INCLUDE_DIR}/ClientLib/src
${CAMPCOM_INCLUDE_DIR}/ServerLib/src)
\ No newline at end of file
# CMake file for campcom module
LIST(APPEND CMAKE_MODULE_PATH "${ModulesDir}/campcom")
FIND_PACKAGE(CAMPCom REQUIRED)
IF(CAMPCOM_FOUND)
LIST(APPEND ThisModIncludeDirs ${CAMPCOM_INCLUDE_DIRS})
LIST(APPEND ThisModExternalLibs ${CAMPCOM_LIBRARIES})
ELSE()
MESSAGE(FATAL_ERROR "Could not find CAMPCom. Please specify CAMPCOM_ROOT.")
ENDIF()
# Source files:
FILE(GLOB ThisModSources RELATIVE ${ModulesDir}
modules/campcom/pipelines/*.cpp
modules/campcom/processors/*.cpp
)
# Header files (including GLSL files so that they'll appear in VS projects)
FILE(GLOB ThisModHeaders RELATIVE ${ModulesDir}
modules/campcom/pipelines/*.h
modules/campcom/processors/*.h
)
// ================================================================================================
//
// 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 Universitt Mnchen
// Boltzmannstr. 3, 85748 Garching b. Mnchen, 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 "streamingmhddemo.h"
#include "tgt/event/keyevent.h"
#include "core/datastructures/imagedata.h"
#include "core/classification/geometry1dtransferfunction.h"
#include "core/classification/tfgeometry1d.h"
namespace campvis {
StreamingMhdDemo::StreamingMhdDemo(DataContainer* dc)
: AutoEvaluationPipeline(dc)
, _imageReader()
, _ve(&_canvasSize)
{
addProcessor(&_imageReader);
addProcessor(&_ve);
addEventListenerToBack(&_ve);
}
StreamingMhdDemo::~StreamingMhdDemo() {
}
void StreamingMhdDemo::init() {
AutoEvaluationPipeline::init();
_imageReader.s_validated.connect(this, &StreamingMhdDemo::onProcessorValidated);
_ve.p_outputImage.setValue("combine");
_renderTargetID.setValue("combine");
_imageReader.p_address.setValue("127.0.0.1");
_imageReader.p_targetImageID.setValue("reader.output");
_imageReader.p_targetImageID.addSharedProperty(&_ve.p_inputVolume);
Geometry1DTransferFunction* dvrTF = new Geometry1DTransferFunction(128, tgt::vec2(0.f, 1.f));
dvrTF->addGeometry(TFGeometry1D::createQuad(tgt::vec2(.1f, .125f), tgt::col4(255, 0, 0, 32), tgt::col4(255, 0, 0, 32)));
dvrTF->addGeometry(TFGeometry1D::createQuad(tgt::vec2(.4f, .5f), tgt::col4(0, 255, 0, 128), tgt::col4(0, 255, 0, 128)));
static_cast<TransferFunctionProperty*>(_ve.getProperty("TransferFunction"))->replaceTF(dvrTF);
_canvasSize.s_changed.connect<StreamingMhdDemo>(this, &StreamingMhdDemo::onRenderTargetSizeChanged);
}
void StreamingMhdDemo::deinit() {
_canvasSize.s_changed.disconnect(this);
AutoEvaluationPipeline::deinit();
}
void StreamingMhdDemo::onRenderTargetSizeChanged(const AbstractProperty* prop) {
}
void StreamingMhdDemo::onProcessorValidated(AbstractProcessor* processor) {
}
}
\ No newline at end of file
// ================================================================================================
//
// 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 STREAMINGMHDDEMO_H__
#define STREAMINGMHDDEMO_H__
#include "modules/campcom/processors/campcommhdreceiver.h"
#include "core/pipeline/autoevaluationpipeline.h"
#include "core/properties/cameraproperty.h"
#include "modules/vis/processors/volumeexplorer.h"
namespace campvis {
class StreamingMhdDemo : public AutoEvaluationPipeline {
public:
/**
* Creates a AutoEvaluationPipeline.
*/
StreamingMhdDemo(DataContainer* dc);
/**
* Virtual Destructor
**/
virtual ~StreamingMhdDemo();
/// \see AutoEvaluationPipeline::init()
virtual void init();
/// \see AutoEvaluationPipeline::deinit()
virtual void deinit();
/// \see AbstractPipeline::getName()
virtual const std::string getName() const { return getId(); };
static const std::string getId() { return "StreamingMhdDemo"; };
void onRenderTargetSizeChanged(const AbstractProperty* prop);
protected:
/**
* Slot getting called when one of the observed processors got validated.
* Updates the camera properties, when the input image has changed.
* \param processor The processor that emitted the signal
*/
virtual void onProcessorValidated(AbstractProcessor* processor);
CampcomMhdReceiver _imageReader;
VolumeExplorer _ve;
};
}
#endif // STREAMINGMHDDEMO_H__
// ================================================================================================
//
// 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 Universitt Mnchen
// Boltzmannstr. 3, 85748 Garching b. Mnchen, 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 "campcommhdreceiver.h"
#include "core/datastructures/imagedata.h"
#include "core/datastructures/genericimagerepresentationlocal.h"
namespace campvis {
const std::string CampcomMhdReceiver::loggerCat_ = "CAMPVis.modules.io.CampcomMhdReceiver";
CampcomMhdReceiver::CampcomMhdReceiver()
: AbstractProcessor()
, p_address("ServerAddress", "Server Address", "127.0.0.1")
, p_connect("Connect", "Connect to Server", AbstractProcessor::VALID)
, p_targetImageID("targetImageName", "Target Image ID", "CampcomMhdReceiver.output", DataNameProperty::WRITE)
, p_imageOffset("ImageOffset", "Image Offset in mm", tgt::vec3(0.f), tgt::vec3(-10000.f), tgt::vec3(10000.f), tgt::vec3(0.1f))
, p_voxelSize("VoxelSize", "Voxel Size in mm", tgt::vec3(1.f), tgt::vec3(-100.f), tgt::vec3(100.f), tgt::vec3(0.1f))
, _ccclient(0)
{
addProperty(&p_address);
addProperty(&p_targetImageID);
addProperty(&p_connect);
addProperty(&p_imageOffset);
addProperty(&p_voxelSize);
}
CampcomMhdReceiver::~CampcomMhdReceiver() {
}
void CampcomMhdReceiver::init() {
p_connect.s_clicked.connect(this, &CampcomMhdReceiver::onBtnConnectClicked);
}
void CampcomMhdReceiver::deinit() {
p_connect.s_clicked.disconnect(this);
_ccclient->disconnect();
delete _ccclient;
_ccclient = 0;
}
void CampcomMhdReceiver::process(DataContainer& data) {
// all parsing done - lets create the image:
// ImageData* image = new ImageData(dimensionality, size, numChannels);
// ImageRepresentationDisk::create(image, url, pt, offset, e);
// image->setMappingInformation(ImageMappingInformation(size, imageOffset + p_imageOffset.getValue(), voxelSize * p_voxelSize.getValue()));
// data.addData(p_targetImageID.getValue(), image);
validate(INVALID_RESULT);
}
void CampcomMhdReceiver::onBtnConnectClicked() {
if (_ccclient) {
_ccclient->disconnect();
delete _ccclient;
_ccclient = 0;
}
_ccclient = new campcom::CAMPComClient("Campvis", campcom::Device_CAMPVis, p_address.getValue());
_ccclient->connect();
if (_ccclient->isConnected()) {
campcom::DataCallback dc;
dc = boost::bind(&CampcomMhdReceiver::ccReceiveImage, this, _1);
campcom::SuccessCallback sc = std::bind1st(std::mem_fun(&CampcomMhdReceiver::ccSuccessCalback), this);
_ccclient->subscribe(campcom::Type_Image, dc, sc);
}
else {
LWARNING("Could not connect to CAMPCom server.");
delete _ccclient;
_ccclient = 0;
}
}
void CampcomMhdReceiver::ccReceiveImage(std::vector<campcom::Byte>& msg) {
}
void CampcomMhdReceiver::ccSuccessCalback(bool b) {
LINFO("CAMPCom subscribe callback: " << b);
}
}
\ No newline at end of file
// ================================================================================================
//
// 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 Universitt Mnchen
// Boltzmannstr. 3, 85748 Garching b. Mnchen, 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 CAMPCOMMHDRECEIVER_H__
#define CAMPCOMMHDRECEIVER_H__
#include <string>
#include <CommonLib/Main/CAMPComDefinitions.h>
#include <CommonLib/DataTypes/MHDImageData.hpp>
#include <ClientLib/src/CAMPComClient.hpp>
#include "core/pipeline/abstractprocessor.h"
#include "core/properties/buttonproperty.h"
#include "core/properties/datanameproperty.h"
#include "core/properties/floatingpointproperty.h"
namespace campvis {
/**
* Reads a MHD image file into the pipeline.
*
* \note Full format specification at http://www.itk.org/Wiki/MetaIO/Documentation
*/
class CampcomMhdReceiver : public AbstractProcessor {
public:
/**
* Constructs a new CampcomMhdReceiver Processor
**/
CampcomMhdReceiver();
/**
* Destructor
**/
virtual ~CampcomMhdReceiver();
/// \see AbstractProcessor::init()
virtual void init();
/// \see AbstractProcessor::deinit()
virtual void deinit();
/**
* Reads the MHD file into an ImageRepresentationDisk representation
* \param data DataContainer to work on
*/
virtual void process(DataContainer& data);
/// \see AbstractProcessor::getName()
virtual const std::string getName() const { return "CampcomMhdReceiver"; };
/// \see AbstractProcessor::getDescription()
virtual const std::string getDescription() const { return "Reads an MHD image into the pipeline."; };
/// \see AbstractProcessor::getAuthor()
virtual const std::string getAuthor() const { return "Christian Schulte zu Berge <christian.szb@in.tum.de>"; };
/// \see AbstractProcessor::getProcessorState()
virtual const ProcessorState getProcessorState() const { return AbstractProcessor::TESTING; };
StringProperty p_address; ///< URL for file to read
ButtonProperty p_connect; ///<
DataNameProperty p_targetImageID; ///< image ID for read image
Vec3Property p_imageOffset; ///< Image Offset in mm
Vec3Property p_voxelSize; ///< Voxel Size in mm
protected:
void onBtnConnectClicked();
void ccReceiveImage(std::vector<campcom::Byte>& msg);
void ccSuccessCalback(bool b);
campcom::CAMPComClient* _ccclient;
static const std::string loggerCat_;
};
}
#endif // CAMPCOMMHDRECEIVER_H__
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