/usr/include/poppler/JArithmeticDecoder.h is in libpoppler-dev 0.18.4-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | //========================================================================
//
// JArithmeticDecoder.h
//
// Arithmetic decoder used by the JBIG2 and JPEG2000 decoders.
//
// Copyright 2002-2004 Glyph & Cog, LLC
//
//========================================================================
#ifndef JARITHMETICDECODER_H
#define JARITHMETICDECODER_H
#ifdef USE_GCC_PRAGMAS
#pragma interface
#endif
#include "goo/gtypes.h"
class Stream;
//------------------------------------------------------------------------
// JArithmeticDecoderStats
//------------------------------------------------------------------------
class JArithmeticDecoderStats {
public:
JArithmeticDecoderStats(int contextSizeA);
~JArithmeticDecoderStats();
JArithmeticDecoderStats *copy();
void reset();
int getContextSize() { return contextSize; }
void copyFrom(JArithmeticDecoderStats *stats);
void setEntry(Guint cx, int i, int mps);
private:
Guchar *cxTab; // cxTab[cx] = (i[cx] << 1) + mps[cx]
int contextSize;
friend class JArithmeticDecoder;
};
//------------------------------------------------------------------------
// JArithmeticDecoder
//------------------------------------------------------------------------
class JArithmeticDecoder {
public:
JArithmeticDecoder();
~JArithmeticDecoder();
void setStream(Stream *strA)
{ str = strA; dataLen = 0; limitStream = gFalse; }
void setStream(Stream *strA, int dataLenA)
{ str = strA; dataLen = dataLenA; limitStream = gTrue; }
// Start decoding on a new stream. This fills the byte buffers and
// runs INITDEC.
void start();
// Restart decoding on an interrupted stream. This refills the
// buffers if needed, but does not run INITDEC. (This is used in
// JPEG 2000 streams when codeblock data is split across multiple
// packets/layers.)
void restart(int dataLenA);
// Read any leftover data in the stream.
void cleanup();
// Decode one bit.
int decodeBit(Guint context, JArithmeticDecoderStats *stats);
// Decode eight bits.
int decodeByte(Guint context, JArithmeticDecoderStats *stats);
// Returns false for OOB, otherwise sets *<x> and returns true.
GBool decodeInt(int *x, JArithmeticDecoderStats *stats);
Guint decodeIAID(Guint codeLen,
JArithmeticDecoderStats *stats);
private:
Guint readByte();
int decodeIntBit(JArithmeticDecoderStats *stats);
void byteIn();
static Guint qeTab[47];
static int nmpsTab[47];
static int nlpsTab[47];
static int switchTab[47];
Guint buf0, buf1;
Guint c, a;
int ct;
Guint prev; // for the integer decoder
Stream *str;
int dataLen;
GBool limitStream;
};
#endif
|