Extend CalypFrame constructors
Add copy-assignement constructor Add move and move assignement constructor
This commit is contained in:
1 parent
2181fd6add
commit
e77e0a82fa
2 files changed
+79
-4
No files matched your search
+53
-4
@@ -119,6 +119,15 @@ public:
|
||||
/** Numbers of histogram segments depending of image bytes depth*/
|
||||
unsigned int m_uiHistoSegments;
|
||||
|
||||
CalypFramePrivate()
|
||||
{
|
||||
m_bInit = false;
|
||||
m_bHasRGBPel = false;
|
||||
m_pppcInputPel = nullptr;
|
||||
m_pcARGB32 = nullptr;
|
||||
m_puiHistogram = nullptr;
|
||||
}
|
||||
|
||||
void init( unsigned int width, unsigned int height, int pel_format, unsigned bitsPixel )
|
||||
{
|
||||
init( width, height, pel_format, bitsPixel, false );
|
||||
@@ -126,10 +135,6 @@ public:
|
||||
|
||||
void init( unsigned int width, unsigned int height, int pel_format, unsigned bitsPixel, bool has_negative_values )
|
||||
{
|
||||
m_bInit = false;
|
||||
m_bHasRGBPel = false;
|
||||
m_pppcInputPel = NULL;
|
||||
m_pcARGB32 = NULL;
|
||||
m_uiWidth = width;
|
||||
m_uiHeight = height;
|
||||
m_iPixelFormat = pel_format;
|
||||
@@ -258,6 +263,11 @@ public:
|
||||
* \brief Constructors
|
||||
*/
|
||||
|
||||
CalypFrame::CalypFrame()
|
||||
: d( new CalypFramePrivate )
|
||||
{
|
||||
}
|
||||
|
||||
CalypFrame::CalypFrame( unsigned int width, unsigned int height, int pelFormat, unsigned bitsPixel )
|
||||
: d( new CalypFramePrivate )
|
||||
{
|
||||
@@ -270,6 +280,28 @@ CalypFrame::CalypFrame( unsigned int width, unsigned int height, int pelFormat,
|
||||
d->init( width, height, pelFormat, bitsPixel, has_negative_values );
|
||||
}
|
||||
|
||||
CalypFrame::CalypFrame( CalypFrame&& other ) noexcept
|
||||
: d( other.d )
|
||||
{
|
||||
other.d = nullptr; // we'll talk more about this line below
|
||||
}
|
||||
|
||||
CalypFrame& CalypFrame::operator=( CalypFrame&& other ) noexcept
|
||||
{
|
||||
// Self-assignment detection
|
||||
if( &other == this )
|
||||
return *this;
|
||||
|
||||
// Release any resource we're holding
|
||||
delete d;
|
||||
|
||||
// Transfer ownership of a.m_ptr to m_ptr
|
||||
d = other.d;
|
||||
other.d = nullptr;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
CalypFrame::CalypFrame( const CalypFrame& other )
|
||||
: d( new CalypFramePrivate )
|
||||
{
|
||||
@@ -287,6 +319,23 @@ CalypFrame::CalypFrame( const CalypFrame* other )
|
||||
}
|
||||
}
|
||||
|
||||
CalypFrame& CalypFrame::operator=( const CalypFrame& other )
|
||||
{
|
||||
// Self-assignment detection
|
||||
if( &other == this )
|
||||
return *this;
|
||||
|
||||
// Release any resource we're holding
|
||||
delete d;
|
||||
|
||||
// Copy the resource
|
||||
d = new CalypFramePrivate;
|
||||
d->init( other.getWidth(), other.getHeight(), other.getPelFormat(), other.getBitsPel(), other.getHasNegativeValues() );
|
||||
copyFrom( &other );
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
CalypFrame::CalypFrame( const CalypFrame& other, unsigned int x, unsigned int y, unsigned int width, unsigned int height )
|
||||
: d( new CalypFramePrivate )
|
||||
{
|
||||
|
||||
@@ -102,6 +102,11 @@ public:
|
||||
static int findPixelFormat( const ClpString& name );
|
||||
static int pelformatColorSpace( const int idx );
|
||||
|
||||
/**
|
||||
* Default constructor. Frame is not valid
|
||||
*/
|
||||
CalypFrame();
|
||||
|
||||
/**
|
||||
* Creates a new frame using the following configuration
|
||||
*
|
||||
@@ -124,6 +129,20 @@ public:
|
||||
*/
|
||||
CalypFrame( unsigned int width, unsigned int height, int pelFormat, unsigned bitsPixel, bool has_negative_values );
|
||||
|
||||
/**
|
||||
* Move contructor
|
||||
*
|
||||
* @param other existing frame to copy from
|
||||
*/
|
||||
CalypFrame( CalypFrame&& other ) noexcept;
|
||||
|
||||
/**
|
||||
* Move assignement contructor
|
||||
*
|
||||
* @param other existing frame to copy from
|
||||
*/
|
||||
CalypFrame& operator=( CalypFrame&& other ) noexcept;
|
||||
|
||||
/**
|
||||
* Copy contructor
|
||||
*
|
||||
@@ -132,6 +151,13 @@ public:
|
||||
CalypFrame( const CalypFrame& other );
|
||||
CalypFrame( const CalypFrame* other );
|
||||
|
||||
/**
|
||||
* Copy-assignement contructor
|
||||
*
|
||||
* @param other existing frame to copy from
|
||||
*/
|
||||
CalypFrame& operator=( const CalypFrame& other );
|
||||
|
||||
/**
|
||||
* Creates and new frame with the configuration of an existing one and copy
|
||||
* its contents. This function only copies a specific region from the existing
|
||||
|
||||
Reference in new issue
Block a user