/** * @file ImageMetadata.hpp * * Purpose Class definition of ImageMetadata class * * Authors Dinesh Iyer * * Copyright 2019-2021 MathWorks, Inc. * */ #ifndef imagesdatatypesimagemetadata_header #define imagesdatatypesimagemetadata_header #include "datatypes_util.hpp" #include "ImageDefs.hpp" namespace images { namespace datatypes { class ImageMetadata { public: // ------------------------------------------------ // Life time // ------------------------------------------------ /** * Default constructor * This represents metadata for an empty Image */ ImageMetadata() : ImageMetadata( 0, 0, 3, ClassUnderlying::Uint8, ColorFormat::RGB, Layout::RowMajorInterleaved ) {} /** * Create the metadata for describing an image * * @param - rows - Number of rows in the image * @param - columns - Number of columns in the image * @param - numChannels - Number of channels in the image * @param - dtype - Datatype of the underlying data * @param - format - ColorFormat of the image data * @param - layout - Layout of the image data * @param - relinquish - YES indicates the instance can give up its * underlying data buffer without a data copy */ ImageMetadata( DimType rows, DimType columns, DimType numChannels, ClassUnderlying dtype, ColorFormat format, Layout layout ) : fRows(rows), fColumns(columns), fNumChannels(numChannels), fClassUnderlying(dtype), fColorFormat(format), fLayout(layout) {} // Not really necessary. But adding for completeness ~ImageMetadata() noexcept {} // ------------------------------------------------ // Copy and assignment operations // ------------------------------------------------ // Miranda operations are sufficient for this class // ------------------------------------------------ // Property Getters/Setters // ------------------------------------------------ DimType getRows() const { return fRows; } DimType getColumns() const { return fColumns; } DimType getNumChannels() const { return fNumChannels; } ClassUnderlying getClassUnderlying() const { return fClassUnderlying; } ColorFormat getColorFormat() const { return fColorFormat; } Layout getLayout() const { return fLayout; } void setRows(DimType rows) { fRows = rows; } void setColumns(DimType cols) { fColumns = cols; } void setNumChannels(DimType chans) { fNumChannels = chans; } void setClassUnderlying(ClassUnderlying c) { fClassUnderlying = c; } void setColorFormat(ColorFormat cf) { fColorFormat = cf; } void setLayout(Layout l) { fLayout = l; } private: // ------------------------------------------------ // Properties // ------------------------------------------------ DimType fRows; DimType fColumns; DimType fNumChannels; ClassUnderlying fClassUnderlying; ColorFormat fColorFormat; Layout fLayout; }; } } #endif // imagesdatatypesimagemetadata_header