mirror of
https://invent.kde.org/graphics/okular
synced 2024-09-12 20:51:17 +00:00
3abd57ea99
- Remove not used files of xpdf (images, etc) that we don't need to distribute Please test if your kpdf behaves equally that older versions (it should only have somewhat better support to PDF 1.5) svn path=/trunk/kdegraphics/kpdf/; revision=339928
92 lines
2.1 KiB
C++
92 lines
2.1 KiB
C++
//========================================================================
|
|
//
|
|
// JArithmeticDecoder.h
|
|
//
|
|
// Arithmetic decoder used by the JBIG2 and JPEG2000 decoders.
|
|
//
|
|
// Copyright 2002-2004 Glyph & Cog, LLC
|
|
//
|
|
//========================================================================
|
|
|
|
#ifndef JARITHMETICDECODER_H
|
|
#define JARITHMETICDECODER_H
|
|
|
|
#include <aconf.h>
|
|
|
|
#ifdef USE_GCC_PRAGMAS
|
|
#pragma interface
|
|
#endif
|
|
|
|
#include "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 = -1; }
|
|
void setStream(Stream *strA, int dataLenA)
|
|
{ str = strA; dataLen = dataLenA; }
|
|
void start();
|
|
int decodeBit(Guint context, JArithmeticDecoderStats *stats);
|
|
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;
|
|
};
|
|
|
|
#endif
|