Grok 12.0.1
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
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.
 
bool supportsStripCache (CodingParams *cp)
 
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)
 

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 >
 

Additional Inherited Members

- Public Attributes inherited from _grk_image
grk_object obj
 
uint32_t x0
 XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
 
uint32_t y0
 YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
 
uint32_t x1
 Xsiz: width of the reference grid.
 
uint32_t y1
 Ysiz: height of the reference grid.
 
uint16_t numcomps
 number of components in the image
 
GRK_COLOR_SPACE color_space
 
bool paletteApplied_
 
bool channelDefinitionApplied_
 
bool has_capture_resolution
 
double capture_resolution [2]
 
bool has_display_resolution
 
double display_resolution [2]
 
GRK_SUPPORTED_FILE_FMT decompressFormat
 
bool forceRGB
 
bool upsample
 
grk_precisionprecision
 
uint32_t numPrecision
 
bool hasMultipleTiles
 
bool splitByComponent
 
uint16_t decompressNumComps
 
uint32_t decompressWidth
 
uint32_t decompressHeight
 
uint8_t decompressPrec
 
GRK_COLOR_SPACE decompressColourSpace
 
grk_io_buf interleavedData
 
uint32_t rowsPerStrip
 
uint32_t rowsPerTask
 
uint64_t packedRowBytes
 
grk_image_metameta
 
grk_image_compcomps
 

Constructor & Destructor Documentation

◆ GrkImage()

grk::GrkImage::GrkImage ( )

◆ ~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_image::comps, grk::Logger::error(), GRK_MAX_SUPPORTED_IMAGE_PRECISION, grk::grk_read(), grk::Logger::logger_, _grk_image::numcomps, and grk::Logger::warn().

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

◆ allocCompositeData()

bool grk::GrkImage::allocCompositeData ( void )

◆ allocData() [1/2]

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

References allocData(), and grk::grk_read().

◆ allocData() [2/2]

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

Allocate data for single image component.

Parameters
imageCompimage component
Returns
true if successful

References grk::Logger::error(), grk::grk_aligned_malloc(), grk::grk_make_aligned_width(), grk::grk_read(), 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()

bool grk::GrkImage::applyColourManagement ( void )

◆ applyICC()

bool grk::GrkImage::applyICC ( void )

◆ check_color()

bool grk::GrkImage::check_color ( void )

◆ cieLabToRGB()

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

◆ 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

References grk::grk_read().

◆ componentsEqual() [3/3]

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

◆ 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 _grk_image::comps, _grk_io_buf::data_, _grk_image::decompressFormat, generateCompositeBounds(), GRK_FMT_PXM, GRK_FMT_TIF, grk::grk_read(), _grk_image::interleavedData, grk::Logger::logger_, and grk::Logger::warn().

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
srcImgsource image
Returns
: true if successful

References _grk_image::comps, _grk_io_buf::data_, _grk_image::decompressFormat, generateCompositeBounds(), GRK_FMT_PXM, GRK_FMT_TIF, grk::grk_read(), _grk_image::interleavedData, grk::Logger::logger_, and grk::Logger::warn().

◆ 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 _grk_image::comps, generateCompositeBounds(), grk::grk_read(), grk::Logger::logger_, and grk::Logger::warn().

Referenced by composite().

◆ convertPrecision()

void grk::GrkImage::convertPrecision ( void )

◆ convertToRGB()

bool grk::GrkImage::convertToRGB ( bool wholeTileDecompress)

◆ copyComponent()

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

References grk::grk_read().

Referenced by execUpsample(), and greyToRGB().

◆ copyHeader()

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

◆ 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
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, grk::grk_read(), 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)

Create new image and transfer tile buffer data.

Parameters
srctile source
Returns
new GrkImage if successful

References copyHeader(), grk::grk_read(), and GrkImage().

Referenced by grk::TileProcessor::generateImage().

◆ 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

References _grk_image::color_space, and grk::grk_read().

Referenced by validateICC().

◆ greyToRGB()

bool grk::GrkImage::greyToRGB ( void )

◆ height()

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

◆ isOpacity()

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

◆ isSubsampled()

bool grk::GrkImage::isSubsampled ( )

◆ isValidICCColourSpace()

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

References grk::grk_read().

Referenced by validateICC().

◆ needsConversionToRGB()

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

◆ postReadHeader()

void grk::GrkImage::postReadHeader ( CodingParams * cp)

◆ print()

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

◆ scaleComponent()

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

◆ single_component_data_free()

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

◆ subsampleAndReduce()

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

◆ supportsStripCache()

bool grk::GrkImage::supportsStripCache ( CodingParams * cp)

◆ 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 _grk_image::comps, _grk_io_buf::data_, grk::grk_read(), _grk_image::interleavedData, _grk_image::numcomps, and single_component_data_free().

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

◆ validateColourSpace()

void grk::GrkImage::validateColourSpace ( void )

◆ validateICC()

bool grk::GrkImage::validateICC ( void )

◆ validateZeroed()

bool grk::GrkImage::validateZeroed ( void )

◆ width()

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

References _grk_image::x0, and _grk_image::x1.

Member Data Documentation

◆ GrkObjectWrapperImpl< GrkImage >

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

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