summaryrefslogtreecommitdiffstats
path: root/include/astra/Float32Data2D.h
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <WillemJan.Palenstijn@uantwerpen.be>2014-04-22 14:15:59 +0000
committerwpalenst <WillemJan.Palenstijn@uantwerpen.be>2014-04-22 14:15:59 +0000
commitb4324c3d3ee5e27c271a4965680d3bf1fee81827 (patch)
tree3feea7c5f844bd4430174c3bd574a7d295ab0caa /include/astra/Float32Data2D.h
parent3cc3de7f681c2d8c4c604dac40e92d3e7356d5c7 (diff)
downloadastra-b4324c3d3ee5e27c271a4965680d3bf1fee81827.tar.gz
astra-b4324c3d3ee5e27c271a4965680d3bf1fee81827.tar.bz2
astra-b4324c3d3ee5e27c271a4965680d3bf1fee81827.tar.xz
astra-b4324c3d3ee5e27c271a4965680d3bf1fee81827.zip
Add CustomMemory interface to Float32Data2D
Diffstat (limited to 'include/astra/Float32Data2D.h')
-rw-r--r--include/astra/Float32Data2D.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/include/astra/Float32Data2D.h b/include/astra/Float32Data2D.h
index 062feb5..c5d2c70 100644
--- a/include/astra/Float32Data2D.h
+++ b/include/astra/Float32Data2D.h
@@ -34,6 +34,13 @@ $Id$
namespace astra {
+
+class _AstraExport CFloat32CustomMemory {
+public:
+ virtual ~CFloat32CustomMemory()=0;
+ float32* m_fPtr;
+};
+
/**
* This class represents a two-dimensional block of float32ing point data.
* It contains member functions for accessing this data and for performing
@@ -141,6 +148,23 @@ protected:
*/
bool _initialize(int _iWidth, int _iHeight, float32 _fScalar);
+ /** Initialization. Initializes an instance of the CFloat32Data2D class with pre-allocated memory.
+ * Can only be called by derived classes.
+ *
+ * Initializes an instance of the CFloat32Data2D class. Memory
+ * is pre-allocated and passed via the abstract CFloat32CustomMemory handle
+ * class. The handle will be deleted when the memory can be freed.
+ * You should override the destructor to provide custom behaviour on free.
+ * If the object has been initialized before, the
+ * object is reinitialized and memory is freed and reallocated if necessary.
+ * This function does not set m_bInitialized to true if everything is ok.
+ *
+ * @param _iWidth width of the 2D data (x-axis), must be > 0
+ * @param _iHeight height of the 2D data (y-axis), must be > 0
+ * @param _pfData pointer to a one-dimensional float32 data block
+ */
+ bool _initialize(int _iWidth, int _iHeight, CFloat32CustomMemory* _pCustomMemory);
+
/** Constructor. Create an instance of the CFloat32Data2D class without initializing the data block.
* Can only be called by derived classes.
*
@@ -180,6 +204,21 @@ protected:
*/
CFloat32Data2D(int _iWidth, int _iHeight, float32 _fScalar);
+ /** Constructor. Create an instance of the CFloat32Data2D class with pre-allocated memory.
+
+ * Can only be called by derived classes.
+ *
+ * Creates an instance of the CFloat32Data2D class. Memory
+ * is pre-allocated and passed via the abstract CFloat32CustomMemory handle
+ * class. The handle will be deleted when the memory can be freed.
+ * You should override the destructor to provide custom behaviour on free.
+ *
+ * @param _iWidth width of the 2D data (x-axis), must be > 0
+ * @param _iHeight height of the 2D data (y-axis), must be > 0
+ * @param _pfData pointer to a one-dimensional float32 data block
+ */
+ CFloat32Data2D(int _iWidth, int _iHeight, CFloat32CustomMemory* _pCustomMemory);
+
/** Copy constructor.
*/
CFloat32Data2D(const CFloat32Data2D&);
@@ -418,6 +457,9 @@ public:
float32& getData(int _index);
+
+private:
+ CFloat32CustomMemory* m_pCustomMemory;
};