source: trunk/poppler/mypoppler/poppler/JBIG2Stream.h @ 250

Last change on this file since 250 was 250, checked in by Eugene Romanenko, 13 years ago

PDF plugin: poppler library updated to version 0.8.3

File size: 4.4 KB
Line 
1//========================================================================
2//
3// JBIG2Stream.h
4//
5// Copyright 2002-2003 Glyph & Cog, LLC
6//
7//========================================================================
8
9#ifndef JBIG2STREAM_H
10#define JBIG2STREAM_H
11
12#ifdef USE_GCC_PRAGMAS
13#pragma interface
14#endif
15
16#include "goo/gtypes.h"
17#include "Object.h"
18#include "Stream.h"
19
20class GooList;
21class JBIG2Segment;
22class JBIG2Bitmap;
23class JArithmeticDecoder;
24class JArithmeticDecoderStats;
25class JBIG2HuffmanDecoder;
26struct JBIG2HuffmanTable;
27class JBIG2MMRDecoder;
28
29//------------------------------------------------------------------------
30
31class JBIG2Stream: public FilterStream {
32public:
33
34  JBIG2Stream(Stream *strA, Object *globalsStreamA);
35  virtual ~JBIG2Stream();
36  virtual StreamKind getKind() { return strJBIG2; }
37  virtual void reset();
38  virtual void close();
39  virtual int getChar();
40  virtual int lookChar();
41  virtual GooString *getPSFilter(int psLevel, char *indent);
42  virtual GBool isBinary(GBool last = gTrue);
43
44private:
45
46  void readSegments();
47  GBool readSymbolDictSeg(Guint segNum, Guint length,
48                          Guint *refSegs, Guint nRefSegs);
49  void readTextRegionSeg(Guint segNum, GBool imm,
50                         GBool lossless, Guint length,
51                         Guint *refSegs, Guint nRefSegs);
52  JBIG2Bitmap *readTextRegion(GBool huff, GBool refine,
53                              int w, int h,
54                              Guint numInstances,
55                              Guint logStrips,
56                              int numSyms,
57                              JBIG2HuffmanTable *symCodeTab,
58                              Guint symCodeLen,
59                              JBIG2Bitmap **syms,
60                              Guint defPixel, Guint combOp,
61                              Guint transposed, Guint refCorner,
62                              int sOffset,
63                              JBIG2HuffmanTable *huffFSTable,
64                              JBIG2HuffmanTable *huffDSTable,
65                              JBIG2HuffmanTable *huffDTTable,
66                              JBIG2HuffmanTable *huffRDWTable,
67                              JBIG2HuffmanTable *huffRDHTable,
68                              JBIG2HuffmanTable *huffRDXTable,
69                              JBIG2HuffmanTable *huffRDYTable,
70                              JBIG2HuffmanTable *huffRSizeTable,
71                              Guint templ,
72                              int *atx, int *aty);
73  void readPatternDictSeg(Guint segNum, Guint length);
74  void readHalftoneRegionSeg(Guint segNum, GBool imm,
75                             GBool lossless, Guint length,
76                             Guint *refSegs, Guint nRefSegs);
77  void readGenericRegionSeg(Guint segNum, GBool imm,
78                            GBool lossless, Guint length);
79  JBIG2Bitmap *readGenericBitmap(GBool mmr, int w, int h,
80                                 int templ, GBool tpgdOn,
81                                 GBool useSkip, JBIG2Bitmap *skip,
82                                 int *atx, int *aty,
83                                 int mmrDataLength);
84  void readGenericRefinementRegionSeg(Guint segNum, GBool imm,
85                                      GBool lossless, Guint length,
86                                      Guint *refSegs,
87                                      Guint nRefSegs);
88  JBIG2Bitmap *readGenericRefinementRegion(int w, int h,
89                                           int templ, GBool tpgrOn,
90                                           JBIG2Bitmap *refBitmap,
91                                           int refDX, int refDY,
92                                           int *atx, int *aty);
93  void readPageInfoSeg(Guint length);
94  void readEndOfStripeSeg(Guint length);
95  void readProfilesSeg(Guint length);
96  void readCodeTableSeg(Guint segNum, Guint length);
97  void readExtensionSeg(Guint length);
98  JBIG2Segment *findSegment(Guint segNum);
99  void discardSegment(Guint segNum);
100  void resetGenericStats(Guint templ,
101                         JArithmeticDecoderStats *prevStats);
102  void resetRefinementStats(Guint templ,
103                            JArithmeticDecoderStats *prevStats);
104  void resetIntStats(int symCodeLen);
105  GBool readUByte(Guint *x);
106  GBool readByte(int *x);
107  GBool readUWord(Guint *x);
108  GBool readULong(Guint *x);
109  GBool readLong(int *x);
110
111  Object globalsStream;
112  Guint pageW, pageH, curPageH;
113  Guint pageDefPixel;
114  JBIG2Bitmap *pageBitmap;
115  Guint defCombOp;
116  GooList *segments;            // [JBIG2Segment]
117  GooList *globalSegments;      // [JBIG2Segment]
118  Stream *curStr;
119  Guchar *dataPtr;
120  Guchar *dataEnd;
121
122  JArithmeticDecoder *arithDecoder;
123  JArithmeticDecoderStats *genericRegionStats;
124  JArithmeticDecoderStats *refinementRegionStats;
125  JArithmeticDecoderStats *iadhStats;
126  JArithmeticDecoderStats *iadwStats;
127  JArithmeticDecoderStats *iaexStats;
128  JArithmeticDecoderStats *iaaiStats;
129  JArithmeticDecoderStats *iadtStats;
130  JArithmeticDecoderStats *iaitStats;
131  JArithmeticDecoderStats *iafsStats;
132  JArithmeticDecoderStats *iadsStats;
133  JArithmeticDecoderStats *iardxStats;
134  JArithmeticDecoderStats *iardyStats;
135  JArithmeticDecoderStats *iardwStats;
136  JArithmeticDecoderStats *iardhStats;
137  JArithmeticDecoderStats *iariStats;
138  JArithmeticDecoderStats *iaidStats;
139  JBIG2HuffmanDecoder *huffDecoder;
140  JBIG2MMRDecoder *mmrDecoder;
141};
142
143#endif
Note: See TracBrowser for help on using the repository browser.