Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Side by Side Diff: core/fxcodec/codec/include/ccodec_progressivedecoder.h

Issue 2381063002: Move core/fxcodec/codec/include and core/fxcodec/include files up (Closed)
Patch Set: Rebase to master Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fxcodec/codec/fx_codec_tiff.cpp ('k') | core/fxcodec/fx_codec.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef CORE_FXCODEC_CODEC_INCLUDE_CCODEC_PROGRESSIVEDECODER_H_
8 #define CORE_FXCODEC_CODEC_INCLUDE_CCODEC_PROGRESSIVEDECODER_H_
9
10 #include <vector>
11
12 #include "core/fxcodec/include/fx_codec_def.h"
13 #include "core/fxcrt/include/fx_system.h"
14 #include "core/fxge/include/fx_dib.h"
15
16 class CCodec_BmpModule;
17 class CCodec_GifContext;
18 class CCodec_GifModule;
19 class CCodec_JpegModule;
20 class CCodec_ModuleMgr;
21 class CCodec_PngContext;
22 class CCodec_TiffContext;
23 class CFX_DIBAttribute;
24 class IFX_FileRead;
25 class IFX_Pause;
26 struct FXBMP_Context;
27 struct FXGIF_Context;
28 struct FXJPEG_Context;
29 struct FXPNG_Context;
30
31 class CCodec_ProgressiveDecoder {
32 public:
33 enum FXCodec_Format {
34 FXCodec_Invalid = 0,
35 FXCodec_1bppGray = 0x101,
36 FXCodec_1bppRgb = 0x001,
37 FXCodec_8bppGray = 0x108,
38 FXCodec_8bppRgb = 0x008,
39 FXCodec_Rgb = 0x018,
40 FXCodec_Rgb32 = 0x020,
41 FXCodec_Argb = 0x220,
42 FXCodec_Cmyk = 0x120
43 };
44
45 explicit CCodec_ProgressiveDecoder(CCodec_ModuleMgr* pCodecMgr);
46 ~CCodec_ProgressiveDecoder();
47
48 FXCODEC_STATUS LoadImageInfo(IFX_FileRead* pFile,
49 FXCODEC_IMAGE_TYPE imageType,
50 CFX_DIBAttribute* pAttribute,
51 bool bSkipImageTypeCheck);
52
53 FXCODEC_IMAGE_TYPE GetType() const { return m_imagType; }
54 int32_t GetWidth() const { return m_SrcWidth; }
55 int32_t GetHeight() const { return m_SrcHeight; }
56 int32_t GetNumComponents() const { return m_SrcComponents; }
57 int32_t GetBPC() const { return m_SrcBPC; }
58 void SetClipBox(FX_RECT* clip);
59
60 FXCODEC_STATUS GetFrames(int32_t& frames, IFX_Pause* pPause = nullptr);
61 FXCODEC_STATUS StartDecode(CFX_DIBitmap* pDIBitmap,
62 int start_x,
63 int start_y,
64 int size_x,
65 int size_y,
66 int32_t frames = 0,
67 FX_BOOL bInterpol = TRUE);
68
69 FXCODEC_STATUS ContinueDecode(IFX_Pause* pPause = nullptr);
70
71 struct PixelWeight {
72 int m_SrcStart;
73 int m_SrcEnd;
74 int m_Weights[1];
75 };
76
77 class CFXCODEC_WeightTable {
78 public:
79 CFXCODEC_WeightTable();
80 ~CFXCODEC_WeightTable();
81
82 void Calc(int dest_len,
83 int dest_min,
84 int dest_max,
85 int src_len,
86 int src_min,
87 int src_max,
88 FX_BOOL bInterpol);
89 PixelWeight* GetPixelWeight(int pixel) {
90 return reinterpret_cast<PixelWeight*>(m_pWeightTables.data() +
91 (pixel - m_DestMin) * m_ItemSize);
92 }
93
94 int m_DestMin;
95 int m_ItemSize;
96 std::vector<uint8_t> m_pWeightTables;
97 };
98
99 class CFXCODEC_HorzTable {
100 public:
101 CFXCODEC_HorzTable();
102 ~CFXCODEC_HorzTable();
103
104 void Calc(int dest_len, int src_len, FX_BOOL bInterpol);
105 PixelWeight* GetPixelWeight(int pixel) {
106 return reinterpret_cast<PixelWeight*>(m_pWeightTables.data() +
107 pixel * m_ItemSize);
108 }
109
110 int m_ItemSize;
111 std::vector<uint8_t> m_pWeightTables;
112 };
113
114 class CFXCODEC_VertTable {
115 public:
116 CFXCODEC_VertTable();
117 ~CFXCODEC_VertTable();
118
119 void Calc(int dest_len, int src_len);
120 PixelWeight* GetPixelWeight(int pixel) {
121 return reinterpret_cast<PixelWeight*>(m_pWeightTables.data() +
122 pixel * m_ItemSize);
123 }
124 int m_ItemSize;
125 std::vector<uint8_t> m_pWeightTables;
126 };
127
128 IFX_FileRead* m_pFile;
129 CCodec_ModuleMgr* m_pCodecMgr;
130 FXJPEG_Context* m_pJpegContext;
131 FXPNG_Context* m_pPngContext;
132 FXGIF_Context* m_pGifContext;
133 FXBMP_Context* m_pBmpContext;
134 CCodec_TiffContext* m_pTiffContext;
135 FXCODEC_IMAGE_TYPE m_imagType;
136 uint32_t m_offSet;
137 uint8_t* m_pSrcBuf;
138 uint32_t m_SrcSize;
139 uint8_t* m_pDecodeBuf;
140 int m_ScanlineSize;
141 CFX_DIBitmap* m_pDeviceBitmap;
142 FX_BOOL m_bInterpol;
143 CFXCODEC_WeightTable m_WeightHorz;
144 CFXCODEC_VertTable m_WeightVert;
145 CFXCODEC_HorzTable m_WeightHorzOO;
146 int m_SrcWidth;
147 int m_SrcHeight;
148 int m_SrcComponents;
149 int m_SrcBPC;
150 FX_RECT m_clipBox;
151 int m_startX;
152 int m_startY;
153 int m_sizeX;
154 int m_sizeY;
155 int m_TransMethod;
156 FX_ARGB* m_pSrcPalette;
157 int m_SrcPaletteNumber;
158 int m_SrcRow;
159 FXCodec_Format m_SrcFormat;
160 int m_SrcPassNumber;
161 int m_FrameNumber;
162 int m_FrameCur;
163 int m_GifBgIndex;
164 uint8_t* m_pGifPalette;
165 int32_t m_GifPltNumber;
166 int m_GifTransIndex;
167 FX_RECT m_GifFrameRect;
168 FX_BOOL m_BmpIsTopBottom;
169 FXCODEC_STATUS m_status;
170
171 protected:
172 static FX_BOOL PngReadHeaderFunc(void* pModule,
173 int width,
174 int height,
175 int bpc,
176 int pass,
177 int* color_type,
178 double* gamma);
179 static FX_BOOL PngAskScanlineBufFunc(void* pModule,
180 int line,
181 uint8_t*& src_buf);
182 static void PngFillScanlineBufCompletedFunc(void* pModule,
183 int pass,
184 int line);
185 static void GifRecordCurrentPositionCallback(void* pModule,
186 uint32_t& cur_pos);
187 static uint8_t* GifAskLocalPaletteBufCallback(void* pModule,
188 int32_t frame_num,
189 int32_t pal_size);
190 static FX_BOOL GifInputRecordPositionBufCallback(void* pModule,
191 uint32_t rcd_pos,
192 const FX_RECT& img_rc,
193 int32_t pal_num,
194 void* pal_ptr,
195 int32_t delay_time,
196 FX_BOOL user_input,
197 int32_t trans_index,
198 int32_t disposal_method,
199 FX_BOOL interlace);
200 static void GifReadScanlineCallback(void* pModule,
201 int32_t row_num,
202 uint8_t* row_buf);
203 static FX_BOOL BmpInputImagePositionBufCallback(void* pModule,
204 uint32_t rcd_pos);
205 static void BmpReadScanlineCallback(void* pModule,
206 int32_t row_num,
207 uint8_t* row_buf);
208
209 FX_BOOL DetectImageType(FXCODEC_IMAGE_TYPE imageType,
210 CFX_DIBAttribute* pAttribute);
211 void GetDownScale(int& down_scale);
212 void GetTransMethod(FXDIB_Format des_format, FXCodec_Format src_format);
213 void ReSampleScanline(CFX_DIBitmap* pDeviceBitmap,
214 int32_t des_line,
215 uint8_t* src_scan,
216 FXCodec_Format src_format);
217 void Resample(CFX_DIBitmap* pDeviceBitmap,
218 int32_t src_line,
219 uint8_t* src_scan,
220 FXCodec_Format src_format);
221 void ResampleVert(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row);
222 FX_BOOL JpegReadMoreData(CCodec_JpegModule* pJpegModule,
223 FXCODEC_STATUS& err_status);
224 void PngOneOneMapResampleHorz(CFX_DIBitmap* pDeviceBitmap,
225 int32_t des_line,
226 uint8_t* src_scan,
227 FXCodec_Format src_format);
228 FX_BOOL GifReadMoreData(CCodec_GifModule* pGifModule,
229 FXCODEC_STATUS& err_status);
230 void GifDoubleLineResampleVert(CFX_DIBitmap* pDeviceBitmap,
231 double scale_y,
232 int des_row);
233 FX_BOOL BmpReadMoreData(CCodec_BmpModule* pBmpModule,
234 FXCODEC_STATUS& err_status);
235 void ResampleVertBT(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row);
236 };
237
238 #endif // CORE_FXCODEC_CODEC_INCLUDE_CCODEC_PROGRESSIVEDECODER_H_
OLDNEW
« no previous file with comments | « core/fxcodec/codec/fx_codec_tiff.cpp ('k') | core/fxcodec/fx_codec.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698