]>
Commit | Line | Data |
---|---|---|
ef416fc2 | 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 | #include <config.h> | |
13 | ||
14 | #ifdef USE_GCC_PRAGMAS | |
15 | #pragma interface | |
16 | #endif | |
17 | ||
18 | #include "gtypes.h" | |
19 | #include "Object.h" | |
20 | #include "Stream.h" | |
21 | ||
22 | class GList; | |
23 | class JBIG2Segment; | |
24 | class JBIG2Bitmap; | |
25 | class JArithmeticDecoder; | |
26 | class JArithmeticDecoderStats; | |
27 | class JBIG2HuffmanDecoder; | |
28 | struct JBIG2HuffmanTable; | |
29 | class JBIG2MMRDecoder; | |
30 | ||
31 | //------------------------------------------------------------------------ | |
32 | ||
33 | class JBIG2Stream: public FilterStream { | |
34 | public: | |
35 | ||
36 | JBIG2Stream(Stream *strA, Object *globalsStream); | |
37 | virtual ~JBIG2Stream(); | |
38 | virtual StreamKind getKind() { return strJBIG2; } | |
39 | virtual void reset(); | |
40 | virtual int getChar(); | |
41 | virtual int lookChar(); | |
42 | virtual GString *getPSFilter(int psLevel, char *indent); | |
43 | virtual GBool isBinary(GBool last = gTrue); | |
44 | ||
45 | private: | |
46 | ||
47 | void readSegments(); | |
48 | GBool readSymbolDictSeg(Guint segNum, Guint length, | |
49 | Guint *refSegs, Guint nRefSegs); | |
50 | void readTextRegionSeg(Guint segNum, GBool imm, | |
51 | GBool lossless, Guint length, | |
52 | Guint *refSegs, Guint nRefSegs); | |
53 | JBIG2Bitmap *readTextRegion(GBool huff, GBool refine, | |
54 | int w, int h, | |
55 | Guint numInstances, | |
56 | Guint logStrips, | |
57 | int numSyms, | |
58 | JBIG2HuffmanTable *symCodeTab, | |
59 | Guint symCodeLen, | |
60 | JBIG2Bitmap **syms, | |
61 | Guint defPixel, Guint combOp, | |
62 | Guint transposed, Guint refCorner, | |
63 | int sOffset, | |
64 | JBIG2HuffmanTable *huffFSTable, | |
65 | JBIG2HuffmanTable *huffDSTable, | |
66 | JBIG2HuffmanTable *huffDTTable, | |
67 | JBIG2HuffmanTable *huffRDWTable, | |
68 | JBIG2HuffmanTable *huffRDHTable, | |
69 | JBIG2HuffmanTable *huffRDXTable, | |
70 | JBIG2HuffmanTable *huffRDYTable, | |
71 | JBIG2HuffmanTable *huffRSizeTable, | |
72 | Guint templ, | |
73 | int *atx, int *aty); | |
74 | void readPatternDictSeg(Guint segNum, Guint length); | |
75 | void readHalftoneRegionSeg(Guint segNum, GBool imm, | |
76 | GBool lossless, Guint length, | |
77 | Guint *refSegs, Guint nRefSegs); | |
78 | void readGenericRegionSeg(Guint segNum, GBool imm, | |
79 | GBool lossless, Guint length); | |
80 | JBIG2Bitmap *readGenericBitmap(GBool mmr, int w, int h, | |
81 | int templ, GBool tpgdOn, | |
82 | GBool useSkip, JBIG2Bitmap *skip, | |
83 | int *atx, int *aty, | |
84 | int mmrDataLength); | |
85 | void readGenericRefinementRegionSeg(Guint segNum, GBool imm, | |
86 | GBool lossless, Guint length, | |
87 | Guint *refSegs, | |
88 | Guint nRefSegs); | |
89 | JBIG2Bitmap *readGenericRefinementRegion(int w, int h, | |
90 | int templ, GBool tpgrOn, | |
91 | JBIG2Bitmap *refBitmap, | |
92 | int refDX, int refDY, | |
93 | int *atx, int *aty); | |
94 | void readPageInfoSeg(Guint length); | |
95 | void readEndOfStripeSeg(Guint length); | |
96 | void readProfilesSeg(Guint length); | |
97 | void readCodeTableSeg(Guint segNum, Guint length); | |
98 | void readExtensionSeg(Guint length); | |
99 | JBIG2Segment *findSegment(Guint segNum); | |
100 | void discardSegment(Guint segNum); | |
101 | void resetGenericStats(Guint templ, | |
102 | JArithmeticDecoderStats *prevStats); | |
103 | void resetRefinementStats(Guint templ, | |
104 | JArithmeticDecoderStats *prevStats); | |
105 | void resetIntStats(int symCodeLen); | |
106 | GBool readUByte(Guint *x); | |
107 | GBool readByte(int *x); | |
108 | GBool readUWord(Guint *x); | |
109 | GBool readULong(Guint *x); | |
110 | GBool readLong(int *x); | |
111 | ||
112 | Guint pageW, pageH, curPageH; | |
113 | Guint pageDefPixel; | |
114 | JBIG2Bitmap *pageBitmap; | |
115 | Guint defCombOp; | |
116 | GList *segments; // [JBIG2Segment] | |
117 | GList *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 |