"Fossies" - the Fresh Open Source Software Archive 
Member "xpdf-4.04/xpdf/JBIG2Stream.h" (18 Apr 2022, 4824 Bytes) of package /linux/misc/xpdf-4.04.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
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 <aconf.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 *globalsStreamA);
37 virtual ~JBIG2Stream();
38 virtual Stream *copy();
39 virtual StreamKind getKind() { return strJBIG2; }
40 virtual void reset();
41 virtual void close();
42 virtual int getChar();
43 virtual int lookChar();
44 virtual int getBlock(char *blk, int size);
45 virtual GString *getPSFilter(int psLevel, const char *indent,
46 GBool okToReadStream);
47 virtual GBool isBinary(GBool last = gTrue);
48
49 private:
50
51 void decodeImage();
52 void readSegments();
53 GBool readSymbolDictSeg(Guint segNum, Guint length,
54 Guint *refSegs, Guint nRefSegs);
55 void readTextRegionSeg(Guint segNum, GBool imm,
56 GBool lossless, Guint length,
57 Guint *refSegs, Guint nRefSegs);
58 JBIG2Bitmap *readTextRegion(GBool huff, GBool refine,
59 int w, int h,
60 Guint numInstances,
61 Guint logStrips,
62 int numSyms,
63 JBIG2HuffmanTable *symCodeTab,
64 Guint symCodeLen,
65 JBIG2Bitmap **syms,
66 Guint defPixel, Guint combOp,
67 Guint transposed, Guint refCorner,
68 int sOffset,
69 JBIG2HuffmanTable *huffFSTable,
70 JBIG2HuffmanTable *huffDSTable,
71 JBIG2HuffmanTable *huffDTTable,
72 JBIG2HuffmanTable *huffRDWTable,
73 JBIG2HuffmanTable *huffRDHTable,
74 JBIG2HuffmanTable *huffRDXTable,
75 JBIG2HuffmanTable *huffRDYTable,
76 JBIG2HuffmanTable *huffRSizeTable,
77 Guint templ,
78 int *atx, int *aty);
79 void readPatternDictSeg(Guint segNum, Guint length);
80 void readHalftoneRegionSeg(Guint segNum, GBool imm,
81 GBool lossless, Guint length,
82 Guint *refSegs, Guint nRefSegs);
83 void readGenericRegionSeg(Guint segNum, GBool imm,
84 GBool lossless, Guint length);
85 void mmrAddPixels(int a1, int blackPixels,
86 int *codingLine, int *a0i, int w);
87 void mmrAddPixelsNeg(int a1, int blackPixels,
88 int *codingLine, int *a0i, int w);
89 JBIG2Bitmap *readGenericBitmap(GBool mmr, int w, int h,
90 int templ, GBool tpgdOn,
91 GBool useSkip, JBIG2Bitmap *skip,
92 int *atx, int *aty,
93 int mmrDataLength);
94 void readGenericRefinementRegionSeg(Guint segNum, GBool imm,
95 GBool lossless, Guint length,
96 Guint *refSegs,
97 Guint nRefSegs);
98 JBIG2Bitmap *readGenericRefinementRegion(int w, int h,
99 int templ, GBool tpgrOn,
100 JBIG2Bitmap *refBitmap,
101 int refDX, int refDY,
102 int *atx, int *aty);
103 void readPageInfoSeg(Guint length);
104 void readEndOfStripeSeg(Guint length);
105 void readProfilesSeg(Guint length);
106 void readCodeTableSeg(Guint segNum, Guint length);
107 void readExtensionSeg(Guint length);
108 JBIG2Segment *findSegment(Guint segNum);
109 void discardSegment(Guint segNum);
110 void resetGenericStats(Guint templ,
111 JArithmeticDecoderStats *prevStats);
112 void resetRefinementStats(Guint templ,
113 JArithmeticDecoderStats *prevStats);
114 void resetIntStats(int symCodeLen);
115 GBool readUByte(Guint *x);
116 GBool readByte(int *x);
117 GBool readUWord(Guint *x);
118 GBool readULong(Guint *x);
119 GBool readLong(int *x);
120
121 GBool decoded;
122 Object globalsStream;
123 Guint pageW, pageH, curPageH;
124 Guint pageDefPixel;
125 JBIG2Bitmap *pageBitmap;
126 Guint defCombOp;
127 GList *segments; // [JBIG2Segment]
128 GList *globalSegments; // [JBIG2Segment]
129 Stream *curStr;
130 Guchar *dataPtr;
131 Guchar *dataEnd;
132 Guint byteCounter;
133 GBool done;
134
135 JArithmeticDecoder *arithDecoder;
136 JArithmeticDecoderStats *genericRegionStats;
137 JArithmeticDecoderStats *refinementRegionStats;
138 JArithmeticDecoderStats *iadhStats;
139 JArithmeticDecoderStats *iadwStats;
140 JArithmeticDecoderStats *iaexStats;
141 JArithmeticDecoderStats *iaaiStats;
142 JArithmeticDecoderStats *iadtStats;
143 JArithmeticDecoderStats *iaitStats;
144 JArithmeticDecoderStats *iafsStats;
145 JArithmeticDecoderStats *iadsStats;
146 JArithmeticDecoderStats *iardxStats;
147 JArithmeticDecoderStats *iardyStats;
148 JArithmeticDecoderStats *iardwStats;
149 JArithmeticDecoderStats *iardhStats;
150 JArithmeticDecoderStats *iariStats;
151 JArithmeticDecoderStats *iaidStats;
152 JBIG2HuffmanDecoder *huffDecoder;
153 JBIG2MMRDecoder *mmrDecoder;
154 };
155
156 #endif