Grok 10.0.5
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
14class GrkImageMeta : public grk_image_meta
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
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);
58 bool supportsStripCache(CodingParams* cp);
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
size_t offset
Definition BitIO.h:80
uint32_t y
Definition BlockExec.h:39
uint32_t h
Definition FileFormat.h:147
uint32_t w
Definition FileFormat.h:145
friend GrkObjectWrapperImpl< GrkImage >
Definition GrkImage.h:26
CodingParams * cp
Definition PacketManager.h:95
bool wholeTileDecompress
Definition TileComponent.h:56
enum _GRK_COLOR_SPACE GRK_COLOR_SPACE
Supported color spaces.
uint32_t yEnd
Definition mct.h:49
uint32_t yBegin
Definition mct.h:48
Copyright (C) 2016-2023 Grok Image Compression Inc.
Definition ICacheable.h:20
const uint32_t singleTileRowsPerStrip
Definition GrkImage.h:12
uint16_t compno
Definition plugin_interface.h:43
Image component.
Definition grok.h:572
Definition grok.h:613
Definition TileCache.h:604