Grok 10.0.1
GrkImage.h
Go to the documentation of this file.
1#pragma once
2
3#include "grk_includes.h"
4#include "lcms2.h"
5
6namespace grk
7{
8struct Tile;
9struct CodingParams;
10struct TileComponent;
11
12const uint32_t singleTileRowsPerStrip = 32;
13
15{
16 public:
18 virtual ~GrkImageMeta();
19 void releaseColor(void);
21 void allocPalette(uint8_t num_channels, uint16_t num_entries);
22};
23
24class GrkImage : public grk_image
25{
27
28 public:
29 GrkImage();
30 bool subsampleAndReduce(uint32_t reduce);
41 static GrkImage* create(grk_image* src, uint16_t numcmpts, grk_image_comp* cmptparms,
42 GRK_COLOR_SPACE clrspc, bool doAllocation);
50 static bool allocData(grk_image_comp* imageComp, bool clear);
51 static bool allocData(grk_image_comp* imageComp);
57 bool allocCompositeData(void);
59
68 void copyHeader(GrkImage* dest);
73 void transferDataTo(GrkImage* dest);
74 void transferDataFrom(const Tile* tile_src_data);
75 GrkImage* duplicate(const Tile* tile_src);
76 bool composite(const GrkImage* src);
77 bool compositeInterleaved(const GrkImage* src);
78 bool compositeInterleaved(const Tile* src, uint32_t yBegin, uint32_t yEnd);
79 bool greyToRGB(void);
80 bool convertToRGB(bool wholeTileDecompress);
81 bool applyColourManagement(void);
82 bool validateICC(void);
83 void convertPrecision(void);
84 bool execUpsample(void);
85 void all_components_data_free(void);
87 void validateColourSpace(void);
88 bool isSubsampled();
89 bool validateZeroed(void);
90 bool applyColour(void);
91 bool apply_palette_clr(void);
92 bool check_color(void);
93 void apply_channel_definition(void);
94 void allocPalette(uint8_t num_channels, uint16_t num_entries);
95 uint32_t width(void) const;
96 uint32_t height(void) const;
97 void print(void) const;
98 bool componentsEqual(bool checkPrecision);
99 bool componentsEqual(uint16_t firstNComponents, bool checkPrecision);
100
101 private:
102 ~GrkImage();
104 std::string getColourSpaceString(void);
105 std::string getICCColourSpaceString(cmsColorSpaceSignature color_space);
106 bool isValidICCColourSpace(uint32_t signature);
107 bool needsConversionToRGB(void);
108 bool isOpacity(uint16_t compno);
109 bool compositePlanar(const GrkImage* srcImg);
110 bool generateCompositeBounds(const grk_image_comp* srcComp, uint16_t destCompno,
111 grk_rect32* destWin);
112 bool generateCompositeBounds(grk_rect32 src, uint16_t destCompno, grk_rect32* destWin);
113 bool allComponentsSanityCheck(bool equalPrecision);
114 grk_image* createRGB(uint16_t numcmpts, uint32_t w, uint32_t h, uint8_t prec);
115 void sycc_to_rgb(int32_t offset, int32_t upb, int32_t y, int32_t cb, int32_t cr, int32_t* out_r,
116 int32_t* out_g, int32_t* out_b);
117 bool sycc444_to_rgb(void);
118 bool sycc422_to_rgb(bool oddFirstX);
119 bool sycc420_to_rgb(bool oddFirstX, bool oddFirstY);
120 bool color_sycc_to_rgb(bool oddFirstX, bool oddFirstY);
121 bool color_cmyk_to_rgb(void);
122 bool color_esycc_to_rgb(void);
123 bool applyICC(void);
124 bool cieLabToRGB(void);
125 bool componentsEqual(grk_image_comp* src, grk_image_comp* dest, bool checkPrecision);
126 static void copyComponent(grk_image_comp* src, grk_image_comp* dest);
127 void scaleComponent(grk_image_comp* component, uint8_t precision);
128};
129
130} // namespace grk
Definition: GrkImage.h:25
bool isSubsampled()
Definition: GrkImage.cpp:343
void apply_channel_definition(void)
Definition: GrkImage.cpp:498
GrkImage()
Definition: GrkImage.cpp:6
bool check_color(void)
Definition: GrkImage.cpp:554
bool color_esycc_to_rgb(void)
Definition: GrkImage_Conversion.cpp:897
bool sycc422_to_rgb(bool oddFirstX)
Definition: GrkImage_Conversion.cpp:571
bool allComponentsSanityCheck(bool equalPrecision)
return false if :
Definition: GrkImage_Conversion.cpp:16
bool compositeInterleaved(const GrkImage *src)
Interleave image data and copy to interleaved composite image.
Definition: GrkImage.cpp:1026
bool subsampleAndReduce(uint32_t reduce)
Definition: GrkImage.cpp:168
bool convertToRGB(bool wholeTileDecompress)
Definition: GrkImage_Conversion.cpp:393
static GrkImage * create(grk_image *src, uint16_t numcmpts, grk_image_comp *cmptparms, GRK_COLOR_SPACE clrspc, bool doAllocation)
Create image.
Definition: GrkImage.cpp:85
void copyHeader(GrkImage *dest)
Copy only header of image and its component header (no data are copied) if dest image have data,...
Definition: GrkImage.cpp:224
bool color_sycc_to_rgb(bool oddFirstX, bool oddFirstY)
Definition: GrkImage_Conversion.cpp:801
void print(void) const
Definition: GrkImage.cpp:32
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)
Definition: GrkImage_Conversion.cpp:490
bool applyColourManagement(void)
Convert to sRGB.
Definition: GrkImage_Conversion.cpp:1142
bool validateICC(void)
Definition: GrkImage_Conversion.cpp:1046
bool allocCompositeData(void)
Allocate data for tile compositing.
Definition: GrkImage.cpp:841
bool greyToRGB(void)
Definition: GrkImage_Conversion.cpp:344
bool supportsStripCache(CodingParams *cp)
Definition: GrkImage.cpp:307
void validateColourSpace(void)
Definition: GrkImage.cpp:353
static void copyComponent(grk_image_comp *src, grk_image_comp *dest)
Definition: GrkImage.cpp:42
bool sycc420_to_rgb(bool oddFirstX, bool oddFirstY)
Definition: GrkImage_Conversion.cpp:662
GrkImage * duplicate(const Tile *tile_src)
Create new image and transfer tile buffer data.
Definition: GrkImage.cpp:907
bool compositePlanar(const GrkImage *srcImg)
Copy planar image data to planar composite image.
Definition: GrkImage.cpp:1084
bool apply_palette_clr(void)
Definition: GrkImage.cpp:700
void convertPrecision(void)
Definition: GrkImage_Conversion.cpp:264
uint32_t height(void) const
Definition: GrkImage.cpp:27
void transferDataFrom(const Tile *tile_src_data)
Definition: GrkImage.cpp:934
static bool allocData(grk_image_comp *imageComp, bool clear)
Allocate data for single image component.
Definition: GrkImage.cpp:283
bool sycc444_to_rgb(void)
Definition: GrkImage_Conversion.cpp:519
bool color_cmyk_to_rgb(void)
Definition: GrkImage_Conversion.cpp:842
bool applyICC(void)
Definition: GrkImage_Conversion.cpp:1202
bool cieLabToRGB(void)
Definition: GrkImage_Conversion.cpp:1465
std::string getColourSpaceString(void)
Definition: GrkImage_Conversion.cpp:958
bool generateCompositeBounds(const grk_image_comp *srcComp, uint16_t destCompno, grk_rect32 *destWin)
Definition: GrkImage.cpp:1140
bool applyColour(void)
Definition: GrkImage.cpp:483
bool isOpacity(uint16_t compno)
Definition: GrkImage.cpp:362
bool isValidICCColourSpace(uint32_t signature)
Definition: GrkImage_Conversion.cpp:1021
bool needsConversionToRGB(void)
Definition: GrkImage_Conversion.cpp:386
void postReadHeader(CodingParams *cp)
Definition: GrkImage.cpp:371
bool componentsEqual(bool checkPrecision)
Definition: GrkImage.cpp:71
~GrkImage()
Definition: GrkImage.cpp:12
void transferDataTo(GrkImage *dest)
Transfer data to dest for each component, and null out "this" data.
Definition: GrkImage.cpp:875
bool execUpsample(void)
Definition: GrkImage_Conversion.cpp:81
void scaleComponent(grk_image_comp *component, uint8_t precision)
Definition: GrkImage_Conversion.cpp:233
bool composite(const GrkImage *src)
Definition: GrkImage.cpp:949
static void single_component_data_free(grk_image_comp *comp)
Definition: GrkImage.cpp:1148
uint32_t width(void) const
Definition: GrkImage.cpp:23
void all_components_data_free(void)
Definition: GrkImage.cpp:159
std::string getICCColourSpaceString(cmsColorSpaceSignature color_space)
Definition: GrkImage_Conversion.cpp:994
void allocPalette(uint8_t num_channels, uint16_t num_entries)
Definition: GrkImage.cpp:479
grk_image * createRGB(uint16_t numcmpts, uint32_t w, uint32_t h, uint8_t prec)
Definition: GrkImage_Conversion.cpp:448
bool validateZeroed(void)
Definition: GrkImage.cpp:461
Definition: GrkImage.h:15
void releaseColor(void)
Definition: GrkImage.cpp:1203
void allocPalette(uint8_t num_channels, uint16_t num_entries)
Definition: GrkImage.cpp:1173
virtual ~GrkImageMeta()
Definition: GrkImage.cpp:1167
GrkImageMeta()
Definition: GrkImage.cpp:1157
void releaseColorPalatte()
Definition: GrkImage.cpp:1191
Definition: GrkObjectWrapper.h:23
enum _GRK_COLOR_SPACE GRK_COLOR_SPACE
Supported color spaces.
Copyright (C) 2016-2022 Grok Image Compression Inc.
Definition: ICacheable.h:20
const uint32_t singleTileRowsPerStrip
Definition: GrkImage.h:12
Image component.
Definition: grok.h:572
Definition: grok.h:603
Definition: grok.h:613
grk_precision * precision
Definition: grok.h:637
GRK_COLOR_SPACE color_space
Definition: grok.h:627
Coding parameters.
Definition: CodingParams.h:245
Definition: TileProcessor.h:39