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

Last change on this file since 461 was 277, checked in by rbri, 12 years ago

PDF plugin: Poppler library updated to version 0.12.3

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