Grok  9.7.5
GrkImage.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "grk_includes.h"
4 
5 namespace grk
6 {
7 struct Tile;
8 struct CodingParams;
9 struct TileComponent;
10 
12 {
13  public:
14  GrkImageMeta();
15  virtual ~GrkImageMeta();
16  void free_color(void);
17  void free_palette_clr();
18  void alloc_palette(uint8_t num_channels, uint16_t num_entries);
19 };
20 
21 class GrkImage : public grk_image
22 {
24 
25  public:
26  GrkImage();
27  bool subsampleAndReduce(uint32_t reduce);
38  static GrkImage* create(grk_image* src, uint16_t numcmpts, grk_image_comp* cmptparms,
39  GRK_COLOR_SPACE clrspc, bool doAllocation);
47  static bool allocData(grk_image_comp* imageComp, bool clear);
48  static bool allocData(grk_image_comp* imageComp);
55 
57 
66  void copyHeader(GrkImage* dest);
71  void transferDataTo(GrkImage* dest);
72  void transferDataFrom(const Tile* tile_src_data);
73  GrkImage* duplicate(const Tile* tile_src);
74  bool composite(const GrkImage* srcImg);
75  bool compositeInterleaved(const GrkImage* srcImg);
76  bool greyToRGB(void);
77  bool convertToRGB(bool wholeTileDecompress);
78  bool applyColourManagement(void);
79  void convertPrecision(void);
80  bool execUpsample(void);
81  void all_components_data_free(void);
82  void postReadHeader(CodingParams* cp);
83  void validateColourSpace(void);
84  bool isSubsampled();
85  bool validateZeroed(void);
86  bool applyColour(void);
87  bool apply_palette_clr(void);
88  bool check_color(void);
89  void apply_channel_definition(void);
90  void alloc_palette(uint8_t num_channels, uint16_t num_entries);
91  uint32_t width(void) const;
92  uint32_t height(void) const;
93  void print(void) const;
94 
95  private:
96  ~GrkImage();
97  bool needsConversionToRGB(void);
98  bool isOpacity(uint16_t compno);
99  bool compositePlanar(const GrkImage* srcImg);
100  bool generateCompositeBounds(const grk_image_comp* srcComp, uint16_t compno,
101  grk_rect32* destWin, uint32_t* srcLineOffset);
102  bool generateCompositeBounds(uint16_t compno, grk_rect32 src, uint32_t src_stride,
103  grk_rect32* destWin, uint32_t* srcLineOffset);
104  bool allComponentsSanityCheck(bool equalPrecision);
105  grk_image* createRGB(uint16_t numcmpts, uint32_t w, uint32_t h, uint8_t prec);
106  void sycc_to_rgb(int32_t offset, int32_t upb, int32_t y, int32_t cb, int32_t cr, int32_t* out_r,
107  int32_t* out_g, int32_t* out_b);
108  bool sycc444_to_rgb(void);
109  bool sycc422_to_rgb(bool oddFirstX);
110  bool sycc420_to_rgb(bool oddFirstX, bool oddFirstY);
111  bool color_sycc_to_rgb(bool oddFirstX, bool oddFirstY);
112  bool color_cmyk_to_rgb(void);
113  bool color_esycc_to_rgb(void);
114  bool applyICC(void);
115  bool cieLabToRGB(void);
117  static void copyComponent(grk_image_comp* src, grk_image_comp* dest);
118  void scaleComponent(grk_image_comp* component, uint8_t precision);
119 };
120 
121 } // namespace grk
Definition: GrkImage.h:22
bool isSubsampled()
Definition: GrkImage.cpp:306
void apply_channel_definition(void)
Definition: GrkImage.cpp:469
GrkImage()
Definition: GrkImage.cpp:6
bool check_color(void)
Definition: GrkImage.cpp:525
bool color_esycc_to_rgb(void)
Definition: GrkImage_Conversion.cpp:899
bool sycc422_to_rgb(bool oddFirstX)
Definition: GrkImage_Conversion.cpp:573
bool allComponentsSanityCheck(bool equalPrecision)
return false if :
Definition: GrkImage_Conversion.cpp:16
bool subsampleAndReduce(uint32_t reduce)
Definition: GrkImage.cpp:145
bool convertToRGB(bool wholeTileDecompress)
Definition: GrkImage_Conversion.cpp:395
bool generateCompositeBounds(const grk_image_comp *srcComp, uint16_t compno, grk_rect32 *destWin, uint32_t *srcLineOffset)
Definition: GrkImage.cpp:930
static GrkImage * create(grk_image *src, uint16_t numcmpts, grk_image_comp *cmptparms, GRK_COLOR_SPACE clrspc, bool doAllocation)
Create image.
Definition: GrkImage.cpp:64
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:197
bool color_sycc_to_rgb(bool oddFirstX, bool oddFirstY)
Definition: GrkImage_Conversion.cpp:803
bool composite(const GrkImage *srcImg)
Definition: GrkImage.cpp:939
void print(void) const
Definition: GrkImage.cpp:31
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:492
bool applyColourManagement(void)
Definition: GrkImage_Conversion.cpp:961
bool greyToRGB(void)
Definition: GrkImage_Conversion.cpp:346
void validateColourSpace(void)
Definition: GrkImage.cpp:316
static void copyComponent(grk_image_comp *src, grk_image_comp *dest)
Definition: GrkImage.cpp:41
bool sycc420_to_rgb(bool oddFirstX, bool oddFirstY)
Definition: GrkImage_Conversion.cpp:664
GrkImage * duplicate(const Tile *tile_src)
Create new image and transfer tile buffer data.
Definition: GrkImage.cpp:889
bool allocCompositeData(CodingParams *cp)
Allocate data for tile compositing.
Definition: GrkImage.cpp:819
bool compositePlanar(const GrkImage *srcImg)
Copy image data to composite image.
Definition: GrkImage.cpp:1009
bool apply_palette_clr(void)
Definition: GrkImage.cpp:675
void convertPrecision(void)
Definition: GrkImage_Conversion.cpp:266
uint32_t height(void) const
Definition: GrkImage.cpp:26
void transferDataFrom(const Tile *tile_src_data)
Definition: GrkImage.cpp:916
static bool allocData(grk_image_comp *imageComp, bool clear)
Allocate data for single image component.
Definition: GrkImage.cpp:256
bool sycc444_to_rgb(void)
Definition: GrkImage_Conversion.cpp:521
bool color_cmyk_to_rgb(void)
Definition: GrkImage_Conversion.cpp:844
bool compositeInterleaved(const GrkImage *srcImg)
Copy image data to composite image.
Definition: GrkImage.cpp:951
bool applyICC(void)
Definition: GrkImage_Conversion.cpp:1017
bool cieLabToRGB(void)
Definition: GrkImage_Conversion.cpp:1280
bool applyColour(void)
Definition: GrkImage.cpp:454
bool isOpacity(uint16_t compno)
Definition: GrkImage.cpp:325
bool needsConversionToRGB(void)
Definition: GrkImage_Conversion.cpp:388
void postReadHeader(CodingParams *cp)
Definition: GrkImage.cpp:334
bool canAllocInterleaved(CodingParams *cp)
Definition: GrkImage.cpp:280
~GrkImage()
Definition: GrkImage.cpp:11
void transferDataTo(GrkImage *dest)
Transfer data to dest for each component, and null out "this" data.
Definition: GrkImage.cpp:857
bool execUpsample(void)
Definition: GrkImage_Conversion.cpp:81
void scaleComponent(grk_image_comp *component, uint8_t precision)
Definition: GrkImage_Conversion.cpp:235
uint32_t width(void) const
Definition: GrkImage.cpp:22
void all_components_data_free(void)
Definition: GrkImage.cpp:136
bool componentsEqual(grk_image_comp *src, grk_image_comp *dest)
Definition: GrkImage.cpp:56
grk_image * createRGB(uint16_t numcmpts, uint32_t w, uint32_t h, uint8_t prec)
Definition: GrkImage_Conversion.cpp:450
bool validateZeroed(void)
Definition: GrkImage.cpp:432
void alloc_palette(uint8_t num_channels, uint16_t num_entries)
Definition: GrkImage.cpp:450
Definition: GrkImage.h:12
void alloc_palette(uint8_t num_channels, uint16_t num_entries)
Definition: GrkImage.cpp:1117
void free_palette_clr()
Definition: GrkImage.cpp:1135
virtual ~GrkImageMeta()
Definition: GrkImage.cpp:1111
GrkImageMeta()
Definition: GrkImage.cpp:1101
void free_color(void)
Definition: GrkImage.cpp:1147
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
Image component.
Definition: grok.h:929
Definition: grok.h:960
Definition: grok.h:970
grk_precision * precision
Definition: grok.h:994
Coding parameters.
Definition: CodingParams.h:244
Definition: TileProcessor.h:39