Grok  10.0.3
GrkImage.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "grk_includes.h"
4 #include "lcms2.h"
5 
6 namespace grk
7 {
8 struct Tile;
9 struct CodingParams;
10 struct TileComponent;
11 
12 const uint32_t singleTileRowsPerStrip = 32;
13 
15 {
16  public:
17  GrkImageMeta();
18  virtual ~GrkImageMeta();
19  void releaseColor(void);
20  void releaseColorPalatte();
21  void allocPalette(uint8_t num_channels, uint16_t num_entries);
22 };
23 
24 class 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 applyICC(void);
83  bool validateICC(void);
84  void convertPrecision(void);
85  bool execUpsample(void);
86  void all_components_data_free(void);
87  void postReadHeader(CodingParams* cp);
88  void validateColourSpace(void);
89  bool isSubsampled();
90  bool validateZeroed(void);
91  bool applyColour(void);
92  bool apply_palette_clr(void);
93  bool check_color(void);
94  void apply_channel_definition(void);
95  void allocPalette(uint8_t num_channels, uint16_t num_entries);
96  uint32_t width(void) const;
97  uint32_t height(void) const;
98  void print(void) const;
99  bool componentsEqual(bool checkPrecision);
100  bool componentsEqual(uint16_t firstNComponents, bool checkPrecision);
101 
102  private:
103  ~GrkImage();
104  static void single_component_data_free(grk_image_comp* comp);
105  std::string getColourSpaceString(void);
106  std::string getICCColourSpaceString(cmsColorSpaceSignature color_space);
107  bool isValidICCColourSpace(uint32_t signature);
108  bool needsConversionToRGB(void);
109  bool isOpacity(uint16_t compno);
110  bool compositePlanar(const GrkImage* srcImg);
111  bool generateCompositeBounds(const grk_image_comp* srcComp, uint16_t destCompno,
112  grk_rect32* destWin);
113  bool generateCompositeBounds(grk_rect32 src, uint16_t destCompno, grk_rect32* destWin);
114  bool allComponentsSanityCheck(bool equalPrecision);
115  grk_image* createRGB(uint16_t numcmpts, uint32_t w, uint32_t h, uint8_t prec);
116  void sycc_to_rgb(int32_t offset, int32_t upb, int32_t y, int32_t cb, int32_t cr, int32_t* out_r,
117  int32_t* out_g, int32_t* out_b);
118  bool sycc444_to_rgb(void);
119  bool sycc422_to_rgb(bool oddFirstX);
120  bool sycc420_to_rgb(bool oddFirstX, bool oddFirstY);
121  bool color_sycc_to_rgb(bool oddFirstX, bool oddFirstY);
122  bool color_cmyk_to_rgb(void);
123  bool color_esycc_to_rgb(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:1468
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