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
108
109
110
111
112
113
114
|
#ifndef __BuffDoc_h
#define __BuffDoc_h
#include "ZText.h"
#include "Aportis.h"
#include "ztxt.h"
#include "ppm_expander.h"
#include "CDrawBuffer.h"
#include "CFilter.h"
#include <qfontmetrics.h>
#include <qmessagebox.h>
class BuffDoc
{
CDrawBuffer lastword;
CSizeBuffer lastsizes, allsizes;
size_t laststartline;
bool lastispara;
CExpander* exp;
CFilterChain* filt;
public:
void setSaveData(unsigned char*& data, unsigned short& len, unsigned char* src, unsigned short srclen)
{
if (exp == NULL)
{
data = NULL;
len = 0;
}
else
{
exp->setSaveData(data, len, src, srclen);
}
}
void putSaveData(unsigned char*& src, unsigned short& srclen)
{
if (exp != NULL)
{
exp->putSaveData(src, srclen);
}
}
void suspend() { if (exp != NULL) exp->suspend(); }
void unsuspend() { if (exp != NULL) exp->unsuspend(); }
~BuffDoc()
{
delete filt;
delete exp;
}
BuffDoc()
{
exp = NULL;
filt = NULL;
lastword.empty();
// qDebug("Buffdoc created");
}
bool empty() { return (exp == NULL); }
void setfilter(CFilterChain* _f)
{
if (filt != NULL) delete filt;
filt = _f;
filt->setsource(exp);
}
CList<Bkmk>* getbkmklist() { return exp->getbkmklist(); }
bool hasrandomaccess() { return (exp == NULL) ? false : exp->hasrandomaccess(); }
bool iseol() { return (lastword[0] == '\0'); }
int openfile(QWidget* _parent, const char *src);
tchar getch()
{
tchar ch = UEOF;
CStyle sty;
if (exp != NULL)
{
filt->getch(ch, sty);
}
return ch;
}
void getch(tchar& ch, CStyle& sty)
{
if (exp != NULL)
{
filt->getch(ch, sty);
}
else
ch = UEOF;
}
QPixmap* getPicture(unsigned long tgt) { return (exp == NULL) ? NULL : exp->getPicture(tgt); }
unsigned int startSection() { return (exp == NULL) ? 0 : exp->startSection(); }
unsigned int endSection() { return (exp == NULL) ? 0 : exp->endSection(); }
unsigned int locate() { return (exp == NULL) ? 0 : laststartline; }
unsigned int explocate() { return (exp == NULL) ? 0 : exp->locate(); }
void setContinuous(bool _b) { if (exp != NULL) exp->setContinuous(_b); }
MarkupType PreferredMarkup() { return (exp == NULL) ? cTEXT : exp->PreferredMarkup(); }
bool hyperlink(unsigned int n);
size_t getHome() { return ((exp != NULL) ? exp->getHome() : 0); }
void locate(unsigned int n);
bool getline(CDrawBuffer* buff, int w);
bool getline(CDrawBuffer* buff, int w, int cw);
void sizes(unsigned long& fs, unsigned long& ts) { exp->sizes(fs,ts); }
int getpara(CBuffer& buff)
{
tchar ch;
int i = 0;
while ((ch = getch()) != 10 && ch != UEOF) buff[i++] = ch;
buff[i] = '\0';
if (i == 0 && ch == UEOF) i = -1;
laststartline = exp->locate();
return i;
}
void saveposn(size_t posn) { exp->saveposn(posn); }
bool forward(size_t& loc) { return exp->forward(loc); }
bool back(size_t& loc) { return exp->back(loc); }
bool hasnavigation() { return exp->hasnavigation(); }
};
#endif
|