]> git.ipfire.org Git - thirdparty/cups.git/blame - pdftops/JBIG2Stream.h
Load cups into easysw/current.
[thirdparty/cups.git] / pdftops / JBIG2Stream.h
CommitLineData
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
22class GList;
23class JBIG2Segment;
24class JBIG2Bitmap;
25class JArithmeticDecoder;
26class JArithmeticDecoderStats;
27class JBIG2HuffmanDecoder;
28struct JBIG2HuffmanTable;
29class JBIG2MMRDecoder;
30
31//------------------------------------------------------------------------
32
33class JBIG2Stream: public FilterStream {
34public:
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
45private:
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