summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/plucker.h
blob: d3ca7321b62919c2a00b66a08f532ab08946aa95 (plain)
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
#ifndef __plucker_h
#define __plucker_h

#include "CExpander.h"
#include "zlib/zlib.h"
#include "ztxt.h"
#include "pdb.h"
#include "CBuffer.h"

struct CPlucker_dataRecord
{
    UInt16 uid;
    UInt16 nParagraphs;
    UInt16 size;
    UInt8 type;
    UInt8 reserved;
};

struct CPlucker_record0
{
    UInt16 uid;
    UInt16 version;
    UInt16 nRecords;
};

struct CPluckerbkmk
{
    UInt32 offset;
    tchar title[MAX_BMRK_LENGTH];
};


const UInt32 CPLUCKER_ID = 0x5458547a;

class CPlucker : public CExpander, Cpdb
{
    size_t textlength;
    UInt16 uid;
    int m_nextPara, m_nextParaIndex;
    CBufferFace<UInt16> m_ParaOffsets;
    CBufferFace<UInt16> m_ParaAttrs;
    UInt16 m_nParas;
    CStyle mystyle;
//    bool bInit;
    UInt32 buffersize;
    UInt32 buffercontent;
    UInt8* expandedtextbuffer;
    UInt8* compressedtextbuffer;
    size_t bufferpos;
    UInt16 bufferrec;
    CPlucker_record0 hdr0;
    size_t currentpos;
    bool expand(int);
    void UnZip(size_t, UInt8*, UInt16);
    void UnDoc(size_t, UInt8*, UInt16);
    void expandimg(UInt16 tgt);
    void home();
    int bgetch();
 public:
    virtual void sizes(unsigned long& _file, unsigned long& _text)
  {
      _file = file_length;
      _text = textlength;
//ntohl(hdr0.size);
  }
    virtual bool hasrandomaccess() { return true; }
    virtual ~CPlucker()
  {
      if (expandedtextbuffer != NULL) delete [] expandedtextbuffer;
      if (compressedtextbuffer != NULL) delete [] compressedtextbuffer;
  }
    CPlucker();
    virtual int openfile(const char *src);
    virtual int getch();
    virtual void getch(int&, CStyle&);
    virtual unsigned int locate();
    virtual void locate(unsigned int n);
    virtual CList<Bkmk>* getbkmklist();
    virtual bool hyperlink(unsigned int n);
    virtual MarkupType PreferredMarkup()
  {
      return cNONE;
  }
};

#endif