Grok 14.0.0
grk::GrkImage Class Reference

#include <GrkImage.h>

Inheritance diagram for grk::GrkImage:
grk_image

Public Member Functions

 GrkImage ()
 
bool subsampleAndReduce (uint32_t reduce)
 
bool allocCompositeData (void)
 Allocate data for tile compositing.
 
void copyHeader (GrkImage *dest)
 Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed.
 
void transferDataTo (GrkImage *dest)
 Transfer data to dest for each component, and null out "this" data.
 
void transferDataFrom (const Tile *tile_src_data)
 
GrkImageduplicate (const Tile *tile_src)
 Create new image and transfer tile buffer data.
 
bool composite (const GrkImage *src)
 
bool compositeInterleaved (const GrkImage *src)
 Interleave image data and copy to interleaved composite image.
 
bool compositeInterleaved (const Tile *src, uint32_t yBegin, uint32_t yEnd)
 Interleave strip of tile data and copy to interleaved composite image.
 
bool greyToRGB (void)
 
bool convertToRGB (bool wholeTileDecompress)
 
bool applyColourManagement (void)
 Convert to sRGB.
 
bool applyICC (void)
 
bool validateICC (void)
 
void convertPrecision (void)
 
bool execUpsample (void)
 
void all_components_data_free (void)
 
void postReadHeader (CodingParams *cp)
 
void validateColourSpace (void)
 
bool isSubsampled ()
 
bool validateZeroed (void)
 
bool applyColour (void)
 
bool apply_palette_clr (void)
 
bool check_color (void)
 
void apply_channel_definition (void)
 
void allocPalette (uint8_t num_channels, uint16_t num_entries)
 
uint32_t width (void) const
 
uint32_t height (void) const
 
void print (void) const
 
bool componentsEqual (bool checkPrecision)
 
bool componentsEqual (uint16_t firstNComponents, bool checkPrecision)
 

Static Public Member Functions

static GrkImagecreate (grk_image *src, uint16_t numcmpts, grk_image_comp *cmptparms, GRK_COLOR_SPACE clrspc, bool doAllocation)
 Create image.
 
static bool allocData (grk_image_comp *imageComp, bool clear)
 Allocate data for single image component.
 
static bool allocData (grk_image_comp *imageComp)
 Allocate data for single image component.
 

Private Member Functions

 ~GrkImage ()
 
std::string getColourSpaceString (void)
 
std::string getICCColourSpaceString (cmsColorSpaceSignature color_space)
 
bool isValidICCColourSpace (uint32_t signature)
 
bool needsConversionToRGB (void)
 
bool isOpacity (uint16_t compno)
 
bool compositePlanar (const GrkImage *srcImg)
 Copy planar image data to planar composite image.
 
bool generateCompositeBounds (const grk_image_comp *srcComp, uint16_t destCompno, grk_rect32 *destWin)
 
bool generateCompositeBounds (grk_rect32 src, uint16_t destCompno, grk_rect32 *destWin)
 
bool allComponentsSanityCheck (bool equalPrecision)
 return false if :
 
grk_imagecreateRGB (uint16_t numcmpts, uint32_t w, uint32_t h, uint8_t prec)
 
void sycc_to_rgb (int32_t offset, int32_t upb, int32_t y, int32_t cb, int32_t cr, int32_t *out_r, int32_t *out_g, int32_t *out_b)
 
bool sycc444_to_rgb (void)
 
bool sycc422_to_rgb (bool oddFirstX)
 
bool sycc420_to_rgb (bool oddFirstX, bool oddFirstY)
 
bool color_sycc_to_rgb (bool oddFirstX, bool oddFirstY)
 
bool color_cmyk_to_rgb (void)
 
bool color_esycc_to_rgb (void)
 
bool cieLabToRGB (void)
 
bool componentsEqual (grk_image_comp *src, grk_image_comp *dest, bool checkPrecision)
 
void scaleComponent (grk_image_comp *component, uint8_t precision)
 

Static Private Member Functions

static void single_component_data_free (grk_image_comp *comp)
 
static void copyComponent (grk_image_comp *src, grk_image_comp *dest)
 

Private Attributes

friend GrkObjectWrapperImpl< GrkImage >
 

Constructor & Destructor Documentation

◆ GrkImage()

grk::GrkImage::GrkImage ( )

References grk::singleTileRowsPerStrip.

Referenced by create(), and duplicate().

◆ ~GrkImage()

grk::GrkImage::~GrkImage ( )
private

Member Function Documentation

◆ all_components_data_free()

void grk::GrkImage::all_components_data_free ( void )

◆ allComponentsSanityCheck()

bool grk::GrkImage::allComponentsSanityCheck ( bool equalPrecision)
private

return false if :

  1. any component's data buffer is NULL
  2. any component's precision is either 0 or greater than GRK_MAX_SUPPORTED_IMAGE_PRECISION
  3. any component's signedness does not match another component's signedness
  4. any component's precision does not match another component's precision
  5. any component's width,stride or height does not match another component's width,stride or height (if equalPrecision is true)

References grk::Logger::error(), GRK_MAX_SUPPORTED_IMAGE_PRECISION, grk::Logger::logger_, and grk::Logger::warn().

Referenced by applyICC(), cieLabToRGB(), color_cmyk_to_rgb(), and color_esycc_to_rgb().

◆ allocCompositeData()

bool grk::GrkImage::allocCompositeData ( void )

Allocate data for tile compositing.

Returns
true if successful

References allocData(), grk::Logger::error(), and grk::Logger::logger_.

Referenced by grk::CodeStreamDecompress::createOutputImage().

◆ allocData() [1/2]

bool grk::GrkImage::allocData ( grk_image_comp * imageComp)
static

Allocate data for single image component.

Parameters
imageCompimage component
Returns
true if successful

References allocData().

◆ allocData() [2/2]

bool grk::GrkImage::allocData ( grk_image_comp * imageComp,
bool clear )
static

Allocate data for single image component.

Parameters
imageCompimage component
clearclear image buffer after allocation
Returns
true if successful

References grk::Logger::error(), grk::grk_aligned_malloc(), grk::grk_make_aligned_width(), grk::Logger::logger_, and single_component_data_free().

Referenced by allocCompositeData(), allocData(), apply_palette_clr(), applyICC(), create(), execUpsample(), and greyToRGB().

◆ allocPalette()

void grk::GrkImage::allocPalette ( uint8_t num_channels,
uint16_t num_entries )

◆ apply_channel_definition()

void grk::GrkImage::apply_channel_definition ( void )

◆ apply_palette_clr()

bool grk::GrkImage::apply_palette_clr ( void )

◆ applyColour()

bool grk::GrkImage::applyColour ( void )

◆ applyColourManagement()

◆ applyICC()

◆ check_color()

◆ cieLabToRGB()

◆ color_cmyk_to_rgb()

bool grk::GrkImage::color_cmyk_to_rgb ( void )
private

◆ color_esycc_to_rgb()

bool grk::GrkImage::color_esycc_to_rgb ( void )
private

◆ color_sycc_to_rgb()

bool grk::GrkImage::color_sycc_to_rgb ( bool oddFirstX,
bool oddFirstY )
private

◆ componentsEqual() [1/3]

bool grk::GrkImage::componentsEqual ( bool checkPrecision)

◆ componentsEqual() [2/3]

bool grk::GrkImage::componentsEqual ( grk_image_comp * src,
grk_image_comp * dest,
bool checkPrecision )
private

◆ componentsEqual() [3/3]

bool grk::GrkImage::componentsEqual ( uint16_t firstNComponents,
bool checkPrecision )

References componentsEqual().

◆ composite()

bool grk::GrkImage::composite ( const GrkImage * src)

◆ compositeInterleaved() [1/2]

bool grk::GrkImage::compositeInterleaved ( const GrkImage * src)

Interleave image data and copy to interleaved composite image.

Parameters
srcsource image
Returns
true if successful

References generateCompositeBounds(), GRK_FMT_PXM, GRK_FMT_TIF, grk::grk_rect< T >::height(), grk::Logger::logger_, grk::Logger::warn(), grk::grk_rect< T >::width(), grk::grk_rect< T >::x0, and grk::grk_rect< T >::y0.

Referenced by composite().

◆ compositeInterleaved() [2/2]

bool grk::GrkImage::compositeInterleaved ( const Tile * src,
uint32_t yBegin,
uint32_t yEnd )

Interleave strip of tile data and copy to interleaved composite image.

Parameters
srcsource image
yBeginy coordinate of interleaving beginning
yEndy coordinate of interleaving end
Returns
true if successful

References grk::Tile::comps, generateCompositeBounds(), GRK_FMT_PXM, GRK_FMT_TIF, grk::grk_rect< T >::height(), grk::Logger::logger_, grk::Tile::numcomps_, grk::Logger::warn(), grk::grk_rect< T >::width(), grk::grk_rect< T >::x0, and grk::grk_rect< T >::y0.

◆ compositePlanar()

bool grk::GrkImage::compositePlanar ( const GrkImage * src)
private

Copy planar image data to planar composite image.

Parameters
srcsource image
Returns
true if successful

References generateCompositeBounds(), grk::grk_rect< T >::height(), grk::Logger::logger_, grk::Logger::warn(), grk::grk_rect< T >::width(), grk::grk_rect< T >::x0, and grk::grk_rect< T >::y0.

Referenced by composite().

◆ convertPrecision()

◆ convertToRGB()

◆ copyComponent()

void grk::GrkImage::copyComponent ( grk_image_comp * src,
grk_image_comp * dest )
staticprivate

Referenced by execUpsample(), and greyToRGB().

◆ copyHeader()

void grk::GrkImage::copyHeader ( GrkImage * dest)

Copy only header of image and its component header (no data are copied) if dest image have data, they will be freed.

Copy only header of image and its component header (no data copied) if dest image has data, it will be freed.

Parameters
destthe dest image

References all_components_data_free(), grk_object_ref(), and _grk_image_meta::obj.

Referenced by grk::CodeStreamDecompress::createOutputImage(), grk::CodeStreamDecompress::decompressTile(), duplicate(), grk::CodeStreamCompress::init(), and grk::CodeStreamDecompress::readHeader().

◆ create()

GrkImage * grk::GrkImage::create ( grk_image * src,
uint16_t numcmpts,
grk_image_comp * cmptparms,
GRK_COLOR_SPACE clrspc,
bool doAllocation )
static

Create image.

Parameters
srcsource image
numcmptsnumber of components
cmptparmscomponent parameters
clrspcimage color space
doAllocationtrue if data is to be allocated, otherwise false
Returns
a new image if successful, otherwise nullptr

References allocData(), grk::Logger::error(), GRK_CHANNEL_ASSOC_COLOUR_1, GRK_CHANNEL_ASSOC_COLOUR_2, GRK_CHANNEL_ASSOC_COLOUR_3, GRK_CHANNEL_ASSOC_UNASSOCIATED, GRK_CHANNEL_TYPE_COLOUR, GRK_CHANNEL_TYPE_UNSPECIFIED, GRK_CLRSPC_CMYK, GrkImage(), and grk::Logger::logger_.

Referenced by createRGB(), and grk_image_new().

◆ createRGB()

grk_image * grk::GrkImage::createRGB ( uint16_t numcmpts,
uint32_t w,
uint32_t h,
uint8_t prec )
private

◆ duplicate()

GrkImage * grk::GrkImage::duplicate ( const Tile * src)

◆ execUpsample()

bool grk::GrkImage::execUpsample ( void )

◆ generateCompositeBounds() [1/2]

bool grk::GrkImage::generateCompositeBounds ( const grk_image_comp * srcComp,
uint16_t destCompno,
grk_rect32 * destWin )
private

◆ generateCompositeBounds() [2/2]

bool grk::GrkImage::generateCompositeBounds ( grk_rect32 src,
uint16_t destCompno,
grk_rect32 * destWin )
private

◆ getColourSpaceString()

std::string grk::GrkImage::getColourSpaceString ( void )
private

◆ getICCColourSpaceString()

std::string grk::GrkImage::getICCColourSpaceString ( cmsColorSpaceSignature color_space)
private

Referenced by validateICC().

◆ greyToRGB()

bool grk::GrkImage::greyToRGB ( void )

◆ height()

uint32_t grk::GrkImage::height ( void ) const

Referenced by postReadHeader().

◆ isOpacity()

bool grk::GrkImage::isOpacity ( uint16_t compno)
private

◆ isSubsampled()

bool grk::GrkImage::isSubsampled ( )

Referenced by postReadHeader(), and validateICC().

◆ isValidICCColourSpace()

bool grk::GrkImage::isValidICCColourSpace ( uint32_t signature)
private

Referenced by validateICC().

◆ needsConversionToRGB()

bool grk::GrkImage::needsConversionToRGB ( void )
private

◆ postReadHeader()

◆ print()

void grk::GrkImage::print ( void ) const

◆ scaleComponent()

void grk::GrkImage::scaleComponent ( grk_image_comp * component,
uint8_t precision )
private

Referenced by convertPrecision().

◆ single_component_data_free()

void grk::GrkImage::single_component_data_free ( grk_image_comp * comp)
staticprivate

◆ subsampleAndReduce()

bool grk::GrkImage::subsampleAndReduce ( uint32_t reduce)

◆ sycc420_to_rgb()

bool grk::GrkImage::sycc420_to_rgb ( bool oddFirstX,
bool oddFirstY )
private

◆ sycc422_to_rgb()

bool grk::GrkImage::sycc422_to_rgb ( bool oddFirstX)
private

◆ sycc444_to_rgb()

bool grk::GrkImage::sycc444_to_rgb ( void )
private

◆ sycc_to_rgb()

void grk::GrkImage::sycc_to_rgb ( int32_t offset,
int32_t upb,
int32_t y,
int32_t cb,
int32_t cr,
int32_t * out_r,
int32_t * out_g,
int32_t * out_b )
private

◆ transferDataFrom()

void grk::GrkImage::transferDataFrom ( const Tile * tile_src_data)

◆ transferDataTo()

void grk::GrkImage::transferDataTo ( GrkImage * dest)

Transfer data to dest for each component, and null out "this" data.

Transfer data to dest for each component, and null out this data.

Assumption: "this" and dest have the same number of components

Assumption: this and dest have the same number of components

References single_component_data_free().

Referenced by grk::CodeStreamDecompress::decompressExec().

◆ validateColourSpace()

void grk::GrkImage::validateColourSpace ( void )

◆ validateICC()

◆ validateZeroed()

bool grk::GrkImage::validateZeroed ( void )

◆ width()

uint32_t grk::GrkImage::width ( void ) const

Member Data Documentation

◆ GrkObjectWrapperImpl< GrkImage >

friend grk::GrkImage::GrkObjectWrapperImpl< GrkImage >
private

The documentation for this class was generated from the following files: