From b4324c3d3ee5e27c271a4965680d3bf1fee81827 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 22 Apr 2014 14:15:59 +0000 Subject: Add CustomMemory interface to Float32Data2D --- include/astra/Float32Data2D.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'include/astra/Float32Data2D.h') 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; }; -- cgit v1.2.3