summaryrefslogtreecommitdiff
authorpohly <pohly>2004-08-26 05:57:55 (UTC)
committer pohly <pohly>2004-08-26 05:57:55 (UTC)
commit3f36482d9a6c096fdf5d8ab8831eb736746c0565 (patch) (side-by-side diff)
treefb213ba05e20c9a02bca3d805f8f5c96c1c45da0
parente00962edd9d4be58c6184e5b6c5f6ef07f449689 (diff)
downloadopie-3f36482d9a6c096fdf5d8ab8831eb736746c0565.zip
opie-3f36482d9a6c096fdf5d8ab8831eb736746c0565.tar.gz
opie-3f36482d9a6c096fdf5d8ab8831eb736746c0565.tar.bz2
removed obsolete static.h and useqpe.h
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/Aportis.cpp1
-rw-r--r--noncore/apps/opie-reader/AportisCodec/AportisCodec.pro7
-rw-r--r--noncore/apps/opie-reader/BuffDoc.cpp2
-rw-r--r--noncore/apps/opie-reader/BuffDoc.h1
-rw-r--r--noncore/apps/opie-reader/CDrawBuffer.cpp1
-rw-r--r--noncore/apps/opie-reader/CExpander.h1
-rw-r--r--noncore/apps/opie-reader/CFilter.cpp1
-rw-r--r--noncore/apps/opie-reader/CFilter.h1
-rw-r--r--noncore/apps/opie-reader/CHM.cpp1
-rw-r--r--noncore/apps/opie-reader/CHM.h1
-rw-r--r--noncore/apps/opie-reader/CHM/CHM.pro4
-rw-r--r--noncore/apps/opie-reader/CloseDialog.h1
-rw-r--r--noncore/apps/opie-reader/FontControl.cpp1
-rw-r--r--noncore/apps/opie-reader/HTMLFilter/HTMLFilter.pro4
-rw-r--r--noncore/apps/opie-reader/Palm2QImage.cpp1
-rw-r--r--noncore/apps/opie-reader/PluckerCodec/PluckerCodec.pro4
-rw-r--r--noncore/apps/opie-reader/QTReader.cpp1
-rw-r--r--noncore/apps/opie-reader/QTReader.h1
-rw-r--r--noncore/apps/opie-reader/QTReaderApp.cpp2
-rw-r--r--noncore/apps/opie-reader/QTReaderApp.h1
-rw-r--r--noncore/apps/opie-reader/ToolbarPrefs.cpp1
-rw-r--r--noncore/apps/opie-reader/ToolbarPrefs.h2
-rw-r--r--noncore/apps/opie-reader/URLDialog.h1
-rw-r--r--noncore/apps/opie-reader/WeaselCodec/WeaselCodec.pro4
-rw-r--r--noncore/apps/opie-reader/ZText.h1
-rw-r--r--noncore/apps/opie-reader/codeclib/codeclib.pro4
-rw-r--r--noncore/apps/opie-reader/ebookcodec.h2
-rw-r--r--noncore/apps/opie-reader/iSiloCodec/iSiloCodec.pro4
-rw-r--r--noncore/apps/opie-reader/main.cpp1
-rw-r--r--noncore/apps/opie-reader/pdb.cpp1
-rw-r--r--noncore/apps/opie-reader/pdb.h1
-rw-r--r--noncore/apps/opie-reader/pdblib/pdblib.pro4
-rw-r--r--noncore/apps/opie-reader/plucker.cpp2
-rw-r--r--noncore/apps/opie-reader/plucker_base.cpp3
-rw-r--r--noncore/apps/opie-reader/pluckerbaselib/pluckerbaselib.pro4
-rw-r--r--noncore/apps/opie-reader/ppm_expander.cpp1
-rw-r--r--noncore/apps/opie-reader/ppm_expander.h1
-rw-r--r--noncore/apps/opie-reader/ppmsCodec/ppmsCodec.pro4
-rwxr-xr-xnoncore/apps/opie-reader/preferences.cpp1
-rw-r--r--noncore/apps/opie-reader/preferences.h1
-rw-r--r--noncore/apps/opie-reader/static.h0
-rw-r--r--noncore/apps/opie-reader/striphtml.cpp1
-rw-r--r--noncore/apps/opie-reader/useqpe.h0
-rw-r--r--noncore/apps/opie-reader/ztxt.cpp1
44 files changed, 21 insertions, 61 deletions
diff --git a/noncore/apps/opie-reader/Aportis.cpp b/noncore/apps/opie-reader/Aportis.cpp
index 7528e78..353996c 100644
--- a/noncore/apps/opie-reader/Aportis.cpp
+++ b/noncore/apps/opie-reader/Aportis.cpp
@@ -1,198 +1,197 @@
#include <stdio.h>
#include <string.h>
#include "Aportis.h"
#include "my_list.h"
#include "Bkmks.h"
-#include "static.h"
Aportis::Aportis() : peanutfile(false) { /*printf("constructing:%x\n",fin);*/ }
void Aportis::dePeanut(int& ch)
{
if (peanutfile && ch != EOF)
{
unsigned char c = ch;
if (peanutfile) c ^= 0xa5;
ch = c;
}
}
CList<Bkmk>* Aportis::getbkmklist()
{
/*
if (peanutfile)
{
if (nRecs2 > nRecs)
{
CList<Bkmk>* t = new CList<Bkmk>;
for (int i = nRecs; i < nRecs2; i++)
{
char name[17];
name[16] = '\0';
// qDebug("Record:%d, Length:%u",i,recordlength(i));
gotorecordnumber(i);
fread(name,1,16,fin);
unsigned long lcn;
fread(&lcn,sizeof(lcn),1,fin);
lcn ^= 0xa5a5a5a5;
lcn = SwapLong(lcn);
// qDebug("Bookmark:%s:%u", name,lcn);
tchar tname[17];
memset(tname, 0, sizeof(tname));
for (int i = 0; name[i] != 0; i++)
{
tname[i] = name[i] ^ 0xa5;
}
t->push_back(Bkmk(tname, NULL, lcn));
}
return t;
}
else
{
return NULL;
}
}
*/
if (bCompressed != 4) return NULL;
CList<Bkmk>* t = new CList<Bkmk>;
size_t cur = ftell(fin);
for (int i = 0; i < nRecs2; i++)
{
DWORD dwPos;
fseek(fin, 0x56 + 8*i, SEEK_SET);
fread(&dwPos, 4, 1, fin);
dwPos = SwapLong(dwPos);
fseek(fin,dwPos,SEEK_SET);
unsigned char ch;
fread(&ch,1,1,fin);
if (ch != 241)
{
char name[17];
name[16] = '\0';
fseek(fin,dwPos,SEEK_SET);
fread(name,1,16,fin);
unsigned long lcn;
fread(&lcn,sizeof(lcn),1,fin);
lcn = SwapLong(lcn);
#ifdef _UNICODE
tchar tname[17];
memset(tname, 0, sizeof(tname));
for (int i = 0; name[i] != 0; i++)
{
tname[i] = name[i];
}
t->push_back(Bkmk(tname, NULL, lcn));
#else
t->push_back(Bkmk(name,lcn));
#endif
}
}
fseek(fin, cur, SEEK_SET);
return t;
}
int Aportis::OpenFile(const char *src)
{
// printf("In openfile\n");
int ret = 0;
html = false;
mobiimagerec = 0;
if (!Cpdb::openpdbfile(src)) return -1;
if (head.creator == 0x64414552 // 'dAER'
|| head.type == 0x74584554) // 'tXET')
{
}
else if (memcmp(&head.creator, "PPrs", 4) == 0 && memcmp(&head.type, "PNRd", 4) == 0)
{
peanutfile = true;
}
else if (memcmp(&head.creator, "MOBI", 4) == 0 && memcmp(&head.type, "BOOK", 4) == 0)
{
html = true;
unsigned char vsn;
fseek(fin, recordpos(0)+39, SEEK_SET);
fread(&vsn, 1, sizeof(vsn), fin);
qDebug("Mobi version:%x", vsn);
if (vsn > 2)
{
fseek(fin, recordpos(0)+110, SEEK_SET);
fread(&mobiimagerec, 1, sizeof(mobiimagerec), fin);
mobiimagerec = ntohs(mobiimagerec)-1;
}
}
else
{
return -2;
}
nRecs2 = nRecs = SwapWord(head.recordList.numRecords) - 1;
struct stat _stat;
stat(src,&_stat);
dwLen = _stat.st_size;
//fseek(fin,0,SEEK_END);
//dwLen = ftell(fin);
if (peanutfile)
{
PeanutHeader hdr0;
gotorecordnumber(0);
fread(&hdr0, sizeof(hdr0), 1, fin);
// qDebug("Version:%x", ntohs(hdr0.Version));
if (hdr0.Version && 0x0200)
{
bCompressed = 2;
}
else
{
bCompressed = 1;
}
BlockSize = 4096;
nRecs = SwapWord(hdr0.Records)-1;
dwTLen = nRecs*BlockSize;
}
else
{
gotorecordnumber(0);
tDocRecord0 hdr0;
fread(&hdr0, sizeof(hdr0), 1, fin);
bCompressed = SwapWord(hdr0.wVersion);
if (bCompressed!=1 && bCompressed!=2 && bCompressed != 4) {
qDebug("ERROR:Unrecognised compression type in Aportis:%u", bCompressed);
ret = bCompressed;
bCompressed = 2;
}
switch (bCompressed)
{
case 4:
{
dwTLen = 0;
int i;
for (i = 0; i < nRecs; i++)
{
unsigned int bs = GetBS(i);
if (bs == 0) break;
else dwTLen += bs;
}
nRecs = i;
BlockSize = 0;
}
break;
case 1:
case 2:
default:
nRecs = SwapWord(hdr0.wNumRecs);
if (mobiimagerec == 0 || mobiimagerec > nRecs2) mobiimagerec = nRecs;
dwTLen = SwapLong(hdr0.dwStoryLen);
BlockSize = SwapWord(hdr0.wRecSize);
if (BlockSize == 0)
{
BlockSize = 4096;
printf("WARNING: Blocksize not set in source file\n");
}
}
}
diff --git a/noncore/apps/opie-reader/AportisCodec/AportisCodec.pro b/noncore/apps/opie-reader/AportisCodec/AportisCodec.pro
index 4b61a7a..fcab192 100644
--- a/noncore/apps/opie-reader/AportisCodec/AportisCodec.pro
+++ b/noncore/apps/opie-reader/AportisCodec/AportisCodec.pro
@@ -1,30 +1,29 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
HEADERS = Aportis.h \
CExpander.h \
- ../OREADERINC/useqpe.h \
config.h \
ustring.h \
StyleConsts.h \
Markups.h \
names.h \
linktype.h \
pdb.h \
my_list.h \
Bkmks.h \
Filedata.h
SOURCES = Aportis.cpp
INTERFACES =
DESTDIR = $(OPIEDIR)/plugins/reader/codecs
TARGET = Aportis
LIBS += -lreader_pdb -lreader_codec
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
-include ( $(OPIEDIR)/include.pro ) \ No newline at end of file
+include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/opie-reader/BuffDoc.cpp b/noncore/apps/opie-reader/BuffDoc.cpp
index 22934f9..1f0a524 100644
--- a/noncore/apps/opie-reader/BuffDoc.cpp
+++ b/noncore/apps/opie-reader/BuffDoc.cpp
@@ -1,199 +1,197 @@
-#include "static.h"
#include "names.h"
#define NEWLINEBREAK
#define INCREMENTALWIDTH
-#include "useqpe.h"
#include "usenef.h"
#include "BuffDoc.h"
#include "config.h"
#include "CDrawBuffer.h"
#include "ZText.h"
#include "ebookcodec.h"
#ifdef __STATIC
#include "Aportis.h"
#include "CHM.h"
#include "ppm_expander.h"
#include "ztxt.h"
#include "plucker.h"
#ifdef USENEF
#include "nef.h"
#include "arrierego.h"
#endif
#include "iSilo.h"
#endif
linkType BuffDoc::hyperlink(unsigned int n, unsigned int noff, QString& wrd, QString& nm)
{
linkType bRet = eNone;
if (exp != NULL)
{
bRet = filt->hyperlink(n, noff, wrd, nm);
if ((bRet & eLink) != 0)
{
lastword.empty();
lastsizes[0] = laststartline = n;
#ifdef NEWLINEBREAK
lastispara = false;
#else
lastispara = false;
#endif
lastsizes[0] = laststartline = exp->locate();
}
}
return bRet;
}
void BuffDoc::locate(unsigned int n)
{
// //qDebug("BuffDoc:locating:%u",n);
lastword.empty();
lastsizes[0] = laststartline = n;
#ifdef NEWLINEBREAK
lastispara = false;
#else
lastispara = false;
#endif
// tchar linebuf[1024];
if (exp != NULL) filt->locate(n);
// //qDebug("BuffDoc:Located");
}
static bool isletter(unsigned short c)
{
if ('a' <= c && c <= 'z') return true;
if ('A' <= c && c <= 'Z') return true;
// Cyrillic letters
if (0x400 <= c && c <= 0x52F) return true;
return false;
}
static bool isvowel(unsigned short c) // Only want lower case vowels
{
switch (c)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
// Cyrillic vowels
case 0x430:
case 0x435:
case 0x438:
case 0x43E:
case 0x443:
case 0x44B:
case 0x44D:
case 0x44E:
case 0x44F:
case 0x451:
case 0x450:
case 0x454:
case 0x456:
case 0x457:
case 0x45D:
case 0x463:
case 0x4AF:
case 0x4B1:
case 0x4D1:
case 0x4D3:
case 0x4D5:
case 0x4D7:
case 0x4E3:
case 0x4E5:
case 0x4E7:
case 0x4E9:
case 0x4EB:
case 0x4ED:
case 0x4EF:
case 0x4F1:
case 0x4F3:
case 0x4F9:
return true;
default:
return ((0xe0 <= c) && (c <= 0xfc) && (c != 0xf1) && (c != 0xf7) && (c != 0xe7));
}
}
inline bool isconsonant(unsigned short c)
{
switch( c )
{
// Some cyrillic letters are neither vowels, nor consonants, or otherwise
// the letters no word can start from.
case 0x439:
case 0x44A:
case 0x44C:
case 0x45E:
return false;
default:
return (isletter(c) && !isvowel(c));
}
return (isletter(c) && !isvowel(c));
}
#ifdef NEWLINEBREAK
bool BuffDoc::getline(CDrawBuffer* buff, int wth, unsigned short _lborder, unsigned short _rborder, bool hyphenate, int availht)
{
bool moreleft = true;
bool margindone = false;
int isCentred = -1;
int w = wth-(_lborder+_rborder);
tchar ch = 32;
CStyle cs;
buff->empty();
if (exp == NULL)
{
buff->empty();
buff->setEof();
return false;
}
int len = 0;
if (lastword.length() > 0)
{
if (isCentred < 0)
{
isCentred = (lastword.firststyle().getJustify() == m_AlignCentre) ? 1 : 0;
}
*buff = lastword;
cs = lastword.laststyle();
w -= buff->leftMargin() + buff->rightMargin();
margindone = true;
len = lastword.length();
}
else buff->empty();
lastword.empty();
unsigned int slen = buff->width(availht, len);
if (lastispara) buff->setstartpara();
int nospaces = 0;
while (1)
{
getch(ch, cs, lastsizes[len]);
if (isCentred < 0)
{
isCentred = (cs.getJustify() == m_AlignCentre) ? 1 : 0;
}
if (ch == 10 && len == 0 && !lastispara)
{
getch(ch, cs, lastsizes[len]);
buff->setstartpara();
}
if (ch == UEOF)
{
buff->setendpara(cs);
if (len == 0)
{
buff->setEof();
moreleft = false;
}
diff --git a/noncore/apps/opie-reader/BuffDoc.h b/noncore/apps/opie-reader/BuffDoc.h
index a7dd7bf..2b4fb57 100644
--- a/noncore/apps/opie-reader/BuffDoc.h
+++ b/noncore/apps/opie-reader/BuffDoc.h
@@ -1,144 +1,143 @@
#ifndef __BuffDoc_h
#define __BuffDoc_h
-#include "useqpe.h"
#include "CDrawBuffer.h"
#include "CFilter.h"
#include "CExpander.h"
#include <qfontmetrics.h>
#include <qmessagebox.h>
class BuffDoc
{
CDrawBuffer lastword;
CSizeBuffer lastsizes, allsizes;
size_t laststartline;
bool lastispara;
CExpander_Interface* exp;
CFilterChain* filt;
int m_hyphenthreshold;
// bool m_customhyphen;
public:
QString about();
bool findanchor(const QString& nm)
{
return filt->findanchor(nm);
}
// void setCustomHyphen(bool _v) { m_customhyphen = _v; }
// bool getCustomHyphen() { return m_customhyphen; }
void setHyphenThreshold(int _v) { m_hyphenthreshold = _v; }
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);
}
}
#ifdef USEQPE
void suspend() { if (exp != NULL) exp->suspend(); }
void unsuspend() { if (exp != NULL) exp->unsuspend(); }
#else
void suspend() {}
void unsuspend() {}
#endif
~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)
{
unsigned long dummy;
filt->getch(ch, sty, dummy);
}
return ch;
}
void getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
if (exp != NULL)
{
filt->getch(ch, sty, pos);
}
else
ch = UEOF;
}
void setwidth(int w) { if (exp != NULL) exp->setwidth(w); }
QImage* 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(); }
linkType hyperlink(unsigned int n, unsigned int noff, QString& wrd, QString& nm);
size_t getHome() { return ((exp != NULL) ? exp->getHome() : 0); }
void locate(unsigned int n);
bool getline(CDrawBuffer* buff, int w, unsigned short _lborder, unsigned short _rborder, bool hyphenate, int availht);
bool getline(CDrawBuffer* buff, int w, int cw, unsigned short _lborder, unsigned short _rborder, int availht);
void sizes(unsigned long& fs, unsigned long& ts)
{
if (exp != NULL)
{
exp->sizes(fs,ts);
}
else
{
fs = ts = 0;
}
}
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(const QString& f, size_t posn) { filt->saveposn(f, posn); }
void writeposn(const QString& f, size_t posn) { filt->writeposn(f, posn); }
linkType forward(QString& f, size_t& loc) { return filt->forward(f, loc); }
linkType back(QString& f, size_t& loc) { return filt->back(f, loc); }
bool hasnavigation() { return filt->hasnavigation(); }
bool getFile(QString href)
{
return (exp == NULL) ? false : exp->getFile(href);
}
};
#endif
diff --git a/noncore/apps/opie-reader/CDrawBuffer.cpp b/noncore/apps/opie-reader/CDrawBuffer.cpp
index caccf1b..bfb3027 100644
--- a/noncore/apps/opie-reader/CDrawBuffer.cpp
+++ b/noncore/apps/opie-reader/CDrawBuffer.cpp
@@ -1,199 +1,198 @@
#include "CDrawBuffer.h"
#include "FontControl.h"
#include <qfontmetrics.h>
#include <qpainter.h>
#include <qpixmap.h>
#include <qimage.h>
-#include "useqpe.h"
CDrawBuffer::~CDrawBuffer()
{
while (!segs.isEmpty()) segs.erase(0);
}
void CDrawBuffer::setright(CDrawBuffer& rhs, int f)
{
int i;
len = rhs.len;
fc = rhs.fc;
m_ascent = m_descent = m_lineSpacing = m_lineExtraSpacing = 0;
while (!segs.isEmpty())
{
segs.erase(0);
}
for (CList<textsegment>::iterator iter = rhs.segs.begin(); iter != rhs.segs.end(); )
{
CList<textsegment>::iterator next = iter;
iter++;
if (iter == rhs.segs.end() || iter->start > f)
{
int st = next->start-f;
if (st < 0) st = 0;
CStyle _style = next->style;
segs.push_back(textsegment(st,next->style));
}
}
for (i = f; rhs[i] != '\0'; i++) (*this)[i-f] = rhs[i];
(*this)[i-f] = '\0';
len = i;
}
CDrawBuffer& CDrawBuffer::operator=(CDrawBuffer& rhs)
{
int i;
// //qDebug("Trying 2");
len = rhs.len;
m_ascent = rhs.m_ascent;
m_descent = rhs.m_descent;
m_lineSpacing = rhs.m_lineSpacing;
m_lineExtraSpacing = rhs.m_lineExtraSpacing;
m_showPartial = rhs.m_showPartial;
while (!segs.isEmpty())
{
segs.erase(0);
}
for (CList<textsegment>::iterator iter = rhs.segs.begin(); iter != rhs.segs.end(); iter++)
{
segs.push_back(*iter);
}
for (i = 0; rhs[i] != '\0'; i++) (*this)[i] = rhs[i];
(*this)[i] = '\0';
len = i;
// //qDebug("Tried 2");
return *this;
}
CDrawBuffer& CDrawBuffer::operator=(const tchar*sztmp)
{
int i;
while (!segs.isEmpty())
{
segs.erase(0);
}
segs.push_back(textsegment(0, CStyle()));
for (i = 0; sztmp[i] != '\0'; i++) (*this)[i] = sztmp[i];
(*this)[i] = '\0';
len = i;
return *this;
}
void CDrawBuffer::empty()
{
m_bSop = false;
m_bEop = false;
m_bBop = false;
len = 0;
(*this)[0] = 0;
while (!segs.isEmpty())
{
segs.erase(0);
}
segs.push_back(textsegment(0,CStyle()));
m_ascent = m_descent = m_lineSpacing = m_lineExtraSpacing = 0;
m_bEof = false;
}
void CDrawBuffer::setendpara(const CStyle& _style/* = ucFontBase*/)
{
m_bEop = true;
if (len == 0)
{
segs.first().start = 0;
segs.first().style = _style;
}
}
void CDrawBuffer::addch(tchar ch, CStyle _style/* = ucFontBase*/)
{
if (len == 0)
{
segs.first().start = 0;
segs.first().style = _style;
}
else if (_style != segs.last().style)
{
segs.push_back(textsegment(len, _style));
}
(*this)[len++] = ch;
}
void CDrawBuffer::truncate(int n)
{
len = n;
(*this)[n] = 0;
}
int CDrawBuffer::width(int availht, int numchars, bool onscreen, int scwidth, unsigned short _lborder, unsigned short _rborder)
{
int gzoom = fc->gzoom();
int currentx = 0, end = 0;
QString text = (numchars < 0) ? toQString(data()) : toQString(data(), numchars);
CList<textsegment>::iterator textstart = segs.begin();
int extraspace = 0;
bool just = (onscreen && !m_bEop && textstart->style.getJustify() == m_AlignJustify);
int spaces = 0;
int spacesofar = 0;
int spacenumber = 0;
int nonspace = 0;
if (just)
{
for (int i = 0; i < len; i++)
{
if ((*this)[i] != ' ')
{
nonspace = i;
break;
}
}
#ifdef _WINDOWS
for (i = nonspace; i < len; i++)
#else
for (int i = nonspace; i < len; i++)
#endif
{
if ((*this)[i] == ' ')
{
spaces++;
}
}
if (spaces == 0)
{
just = false;
}
else
{
extraspace = (scwidth - (_lborder+_rborder) - rightMargin() - leftMargin() - width(availht));
if (extraspace == 0) just = false;
}
}
CList<textsegment>::iterator textend = textstart;
do
{
textend++;
end = (textend != segs.end()) ? textend->start : len;
if (numchars >= 0 && end > numchars)
{
end = numchars;
}
CStyle currentstyle = textstart->style;
if (currentstyle.isPicture())
{
if (currentstyle.canScale())
{
int ht = (gzoom*currentstyle.getPicture()->height())/100;
int wt = (gzoom*currentstyle.getPicture()->width())/100;
if (ht > availht)
{
wt = (wt*availht)/ht;
}
currentx += wt;
}
else
{
currentx += currentstyle.getPicture()->width();
}
}
else
{
if (currentstyle.isMono() && !fc->hasCourier())
diff --git a/noncore/apps/opie-reader/CExpander.h b/noncore/apps/opie-reader/CExpander.h
index e9aaf79..7fa84f9 100644
--- a/noncore/apps/opie-reader/CExpander.h
+++ b/noncore/apps/opie-reader/CExpander.h
@@ -1,149 +1,148 @@
#ifndef __CExpander_h
#define __CExpander_h
#ifndef _WINDOWS
#include <unistd.h>
#endif
#include <stdio.h>
#include <time.h>
#include <sys/stat.h>
#include <qmessagebox.h>
-#include "useqpe.h"
#include "config.h"
#include "StyleConsts.h"
#include "Markups.h"
#include "names.h"
#include "linktype.h"
class QImage;
class Bkmk;
class QString;
template<class T>
class CList;
class CCharacterSource
{
public:
virtual void getch(tchar&, CStyle&, unsigned long&) = 0;
virtual linkType hyperlink(unsigned int n, unsigned int noff, QString&, QString& nm) = 0;
virtual void locate(unsigned int n) = 0;
virtual bool findanchor(const QString& nm) = 0;
virtual void saveposn(const QString& f, size_t posn) = 0;
virtual void writeposn(const QString& f, size_t posn) = 0;
virtual linkType forward(QString& f, size_t& loc) = 0;
virtual linkType back(QString& f, size_t& loc) = 0;
virtual bool hasnavigation() = 0;
virtual int getwidth() = 0;
virtual QImage* getPicture(unsigned long) = 0;
virtual QImage* getPicture(const QString& href) = 0;
virtual bool getFile(const QString& href) = 0;
virtual QString about() = 0;
};
class CExpander_Interface
{
public:
#ifdef USEQPE
virtual void suspend() = 0;
virtual void unsuspend() = 0;
#endif
virtual QString about() = 0;
virtual size_t getHome() = 0;
//CExpander_Interface();
//virtual ~CExpander_Interface();
virtual int openfile(const char *src) = 0;
//virtual int OpenFile(const char *src) = 0;
virtual unsigned int locate() = 0;
virtual void locate(unsigned int n) = 0;
virtual bool hasrandomaccess() = 0;
virtual void sizes(unsigned long& file, unsigned long& text) = 0;
virtual CList<Bkmk>* getbkmklist() { return NULL; }
virtual void getch(tchar& ch, CStyle& sty, unsigned long& pos) = 0;
virtual int getch() = 0;
virtual linkType hyperlink(unsigned int n, unsigned int noff, QString& wrd, QString& nm) = 0;
virtual MarkupType PreferredMarkup() = 0;
virtual void saveposn(size_t posn) {}
virtual void writeposn(size_t posn) {}
virtual linkType forward(size_t& loc) { return eNone; }
virtual linkType back(size_t& loc) { return eNone; }
virtual bool hasnavigation() { return false; }
virtual unsigned long startSection() = 0;
virtual unsigned long endSection() = 0;
virtual void start2endSection() = 0;
virtual QImage* getPicture(unsigned long tgt) { return NULL; }
virtual void setContinuous(bool _b) = 0;
#ifdef USEQPE
virtual void suspend(FILE*& fin) = 0;
virtual void unsuspend(FILE*& fin) = 0;
#endif
virtual void setSaveData(unsigned char*& data, unsigned short& len, unsigned char* src, unsigned short srclen) = 0;
virtual void putSaveData(unsigned char*& src, unsigned short& srclen) = 0;
virtual void setwidth(int w) = 0;
// bool findstring(const QString& info);
// int getpara(CBuffer& buff);
virtual int getwidth() = 0;
virtual QImage* getPicture(const QString& href) = 0;
virtual bool getFile(const QString& href) = 0;
};
class CExpander : public CExpander_Interface
{
protected:
size_t m_homepos;
bool m_continuous;
char* fname;
bool bSuspended;
size_t suspos;
time_t sustime;
int m_scrWidth;
unsigned long m_currentstart, m_currentend;
public:
#ifdef USEQPE
virtual void suspend() = 0;
virtual void unsuspend() = 0;
#endif
size_t getHome();
CExpander();
virtual ~CExpander();
int openfile(const char *src);
virtual int OpenFile(const char *src) = 0;
virtual unsigned int locate() = 0;
virtual void locate(unsigned int n) = 0;
virtual bool hasrandomaccess() = 0;
virtual void sizes(unsigned long& file, unsigned long& text) = 0;
virtual CList<Bkmk>* getbkmklist() { return NULL; }
virtual void getch(tchar& ch, CStyle& sty, unsigned long& pos);
virtual int getch() = 0;
virtual linkType hyperlink(unsigned int n, unsigned int noff, QString& wrd, QString& nm);
virtual MarkupType PreferredMarkup() = 0;
virtual void saveposn(size_t posn) {}
virtual void writeposn(size_t posn) {}
virtual linkType forward(size_t& loc) { return eNone; }
virtual linkType back(size_t& loc) { return eNone; }
virtual bool hasnavigation() { return false; }
unsigned long startSection();
unsigned long endSection();
virtual void start2endSection();
virtual QImage* getPicture(unsigned long tgt) { return NULL; }
void setContinuous(bool _b) { m_continuous = _b; }
#ifdef USEQPE
virtual void suspend(FILE*& fin);
virtual void unsuspend(FILE*& fin);
#endif
virtual void setSaveData(unsigned char*& data, unsigned short& len, unsigned char* src, unsigned short srclen);
virtual void putSaveData(unsigned char*& src, unsigned short& srclen);
void setwidth(int w)
{
m_scrWidth = w;
}
int getwidth()
{
return m_scrWidth;
}
// bool findstring(const QString& info);
// int getpara(CBuffer& buff);
virtual QImage* getPicture(const QString& href) { return NULL; }
virtual bool getFile(const QString& href) { return false; }
};
#endif
diff --git a/noncore/apps/opie-reader/CFilter.cpp b/noncore/apps/opie-reader/CFilter.cpp
index 6f76e9a..6d94d70 100644
--- a/noncore/apps/opie-reader/CFilter.cpp
+++ b/noncore/apps/opie-reader/CFilter.cpp
@@ -1,197 +1,196 @@
#include <qmap.h>
#include <qfileinfo.h>
#include <qtextstream.h>
#include <qdir.h>
-#include "useqpe.h"
#ifdef USEQPE
#include <qpe/global.h>
#endif
#include "CDrawBuffer.h"
#include "CFilter.h"
#include "hrule.h"
#include "util.h"
#include <qregexp.h>
#include <qimage.h>
#include <qpixmap.h>
//#include <qprogressdialog.h>
//#include <qapplication.h>
void textfmt::mygetch(tchar& ch, CStyle& sty, unsigned long& pos)
{
if (uselast)
{
ch = lastchar;
uselast = false;
}
else
{
parent->getch(ch, sty, pos);
}
}
void textfmt::getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
mygetch(ch, sty, pos);
do
{
sty = currentstyle;
switch (ch)
{
case 10:
currentstyle.unset();
sty = currentstyle;
break;
// Use this if you want to replace -- by em-dash
case '-':
// parent->getch(ch, sty);
mygetch(ch, sty, pos);
if (ch == '-')
{
ch = 0x2014;
}
else
{
lastchar = ch;
uselast = true;
ch = '-';
}
break;
case '*':
if (currentstyle.isBold())
{
// Already bold - time to turn it off?
// The next two lines ensure that * follows a character but it works better without
// QChar c(lastchar);
// if ((lastchar != '*') && (c.isPunct() || c.isLetterOrNumber()))
if (lastchar != '*')
{
currentstyle.unsetBold();
CStyle dummy;
// parent->getch(ch, dummy);
mygetch(ch, dummy, pos);
}
}
else
{
// not bold - time to turn it on?
CStyle dummy;
// parent->getch(ch, dummy);
mygetch(ch, dummy, pos);
QChar c(ch);
if ((ch != '*') && (c.isPunct() || c.isLetterOrNumber()))
{
currentstyle.setBold();
}
else
{
lastchar = ch;
uselast = true;
ch = '*';
}
}
break;
case '_':
if (currentstyle.isItalic())
{
// Already bold - time to turn it off?
// The next two lines ensure that * follows a character but it works better without
// QChar c(lastchar);
// if ((lastchar != '_') && (c.isPunct() || c.isLetterOrNumber()))
if (lastchar != '_')
{
currentstyle.unsetItalic();
CStyle dummy;
// parent->getch(ch, dummy);
mygetch(ch, dummy, pos);
}
}
else
{
// not bold - time to turn it on?
CStyle dummy;
// parent->getch(ch, dummy);
mygetch(ch, dummy, pos);
QChar c(ch);
if ((ch != '_') && (c.isPunct() || c.isLetterOrNumber()))
{
currentstyle.setItalic();
}
else
{
lastchar = ch;
uselast = true;
ch = '_';
}
}
break;
}
}
while (sty != currentstyle);
if (!uselast) lastchar = ch;
return;
}
void remap::getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
if (q[offset] != 0)
{
q[offset++];
sty = currentstyle;
return;
}
parent->getch(ch, sty, pos);
switch (ch)
{
case 0x201a:
ch = '\'';
break;
case 0x0192:
ch = 'f';
break;
case 0x201e:
ch = '"';
break;
case 0x2026:
offset = 0;
q[0] = '.';
q[1] = '.';
q[2] = 0;
ch = '.'; // should be ...
break;
case 0x0160:
ch = 'S';
break;
case 0x2039:
ch = '<';
break;
case 0x0152:
offset = 0;
q[0] = 'E';
q[1] = 0;
ch = 'O';
break;
case 0x017d:
ch = 'Z';
break;
case 0x2018:
ch = '\'';
break;
case 0x2019:
ch = '\'';
break;
case 0x201c:
ch = '"';
break;
case 0x201d:
ch = '"';
break;
case 0x2022:
ch = '>';
break;
case 0x2013:
ch = '-';
break;
case 0x2014:
diff --git a/noncore/apps/opie-reader/CFilter.h b/noncore/apps/opie-reader/CFilter.h
index cec9618..174e6b4 100644
--- a/noncore/apps/opie-reader/CFilter.h
+++ b/noncore/apps/opie-reader/CFilter.h
@@ -202,274 +202,273 @@ class unindent : public CFilter
else parent->getch(ch, sty, pos);
lc = ch;
return;
}
QString about() { return QString("Unindent filter (c) Tim Wentford\n")+parent->about(); }
};
class CRegExpFilt;
class repara : public CFilter
{
tchar tch;
CRegExpFilt* flt;
public:
repara(const QString&);
~repara();
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Reparagraph filter (c) Tim Wentford\n")+parent->about(); }
};
class indenter : public CFilter
{
int amnt;
int indent;
CStyle lsty;
public:
indenter(int _a=5) : amnt(_a), indent(0) {}
~indenter() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
if (indent > 0)
{
indent--;
ch = ' ';
sty = lsty;
return;
}
parent->getch(ch, sty, pos);
if (ch == 10)
{
indent = amnt;
lsty = sty;
}
return;
}
QString about() { return QString("Indentation filter (c) Tim Wentford\n")+parent->about(); }
};
class dblspce : public CFilter
{
bool lastlf;
CStyle lsty;
public:
dblspce() : lastlf(false) {}
~dblspce() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
if (lastlf)
{
lastlf = false;
ch = 10;
sty = lsty;
return;
}
parent->getch(ch, sty, pos);
if (lastlf = (ch == 10))
{
lsty = sty;
}
return;
}
QString about() { return QString("Double space (c) Tim Wentford\n")+parent->about(); }
};
class textfmt : public CFilter
{
CStyle currentstyle;
tchar lastchar;
bool uselast;
void mygetch(tchar&, CStyle&, unsigned long& pos);
public:
textfmt() : lastchar(0), uselast(false) {}
~textfmt() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Text formatting filter (c) Tim Wentford\n")+parent->about(); }
};
class embolden : public CFilter
{
public:
embolden() {}
~embolden() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
parent->getch(ch, sty, pos);
sty.setBold();
}
QString about() { return QString("Emboldening filter (c) Tim Wentford\n")+parent->about(); }
};
class remap : public CFilter
{
tchar q[3];
int offset;
CStyle currentstyle;
public:
remap() : offset(0) { q[0] = 0; }
~remap() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Character remapping filter (c) Tim Wentford\n")+parent->about(); }
};
class PeanutFormatter : public CFilter
{
CStyle currentstyle;
public:
~PeanutFormatter() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("PML filter (c) Tim Wentford\n")+parent->about(); }
};
class OnePara : public CFilter
{
tchar m_lastchar;
public:
OnePara() : m_lastchar(0) {}
~OnePara() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Single space filter (c) Tim Wentford\n")+parent->about(); }
};
class DePluck : public CFilter
{
tchar* nextpart;
tchar m_buffer;
int m_buffed;
int m_current;
bool m_debuff;
CStyle m_laststyle;
public:
DePluck(tchar* t) : nextpart(t), m_buffer(0), m_buffed(0), m_current(0), m_debuff(false) {}
~DePluck() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Depluck filter (c) Tim Wentford\n")+parent->about(); }
};
class repalm : public CFilter
{
public:
~repalm() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Repalm filter (c) Tim Wentford\n")+parent->about(); }
};
class FullJust : public CFilter
{
public:
void getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
parent->getch(ch, sty, pos);
if (sty.getJustify() == m_AlignLeft) sty.setFullJustify();
}
QString about() { return QString("Full justification filter (c) Tim Wentford\n")+parent->about(); }
};
/*
class AddSpace : public CFilter
{
unsigned char m_espc;
public:
AddSpace(unsigned char s) : m_espc(s) {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
parent->getch(ch, sty, pos);
sty.setExtraSpace(m_espc);
}
};
*/
class QTReader;
class HighlightFilter : public CFilter
{
QTReader* pReader;
unsigned long lastpos, nextpos;
unsigned char red, green, blue;
CList<Bkmk>* bkmks;
public:
HighlightFilter(QTReader*);
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
void refresh(unsigned long);
QString about() { return QString("High-lighting filter (c) Tim Wentford\n")+parent->about(); }
};
-#include "static.h"
#ifndef __STATIC
#include <dlfcn.h>
class ExternFilter : public CFilter_IFace
{
CFilter* filt;
void *handle;
public:
linkType hyperlink(unsigned int n, unsigned int noff, QString& w, QString& nm)
{
return filt->hyperlink(n, noff, w, nm);
}
void setparent(CCharacterSource* p) { filt->setparent(p); }
ExternFilter(const QString& nm, const QString& optional);
~ExternFilter()
{
if (filt != NULL) delete filt;
if (handle != NULL) dlclose(handle);
}
void locate(unsigned int n) { filt->locate(n); }
bool findanchor(const QString& nm) { return filt->findanchor(nm); }
void saveposn(const QString& f, size_t posn) { filt->saveposn(f, posn); }
void writeposn(const QString& f, size_t posn) { filt->writeposn(f, posn); }
linkType forward(QString& f, size_t& loc) { return filt->forward(f, loc); }
linkType back(QString& f, size_t& loc) { return filt->back(f, loc); }
bool hasnavigation() { return filt->hasnavigation(); }
int getwidth() { return filt->getwidth(); }
CCharacterSource* getparent() { return filt->getparent(); }
void getch(tchar& c, CStyle& s, unsigned long& l) { filt->getch(c, s, l); }
QImage* getPicture(unsigned long tgt) { return filt->getPicture(tgt); }
CFilter* filter() { return filt; }
QImage* getPicture(const QString& href) { return filt->getPicture(href); }
bool getFile(const QString& href) { return filt->getFile(href); }
QString about() { return QString("Filter plug-in (c) Tim Wentford\n")+filt->about(); }
};
#endif
class kern : public CFilter
{
tchar lastchar;
bool uselast;
CStyle laststy;
public:
kern() : lastchar(0), uselast(false) {}
~kern() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Kerning filter (c) Tim Wentford\n")+parent->about(); }
};
class makeInverse : public CFilter
{
public:
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Colourmap inversion filter (c) Tim Wentford\n")+parent->about(); }
};
/*
class makeNegative : public CFilter
{
public:
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
};
*/
class setbg : public CFilter
{
int m_r, m_g, m_b;
public:
setbg(int _r, int _g, int _b) : m_r(_r), m_g(_g), m_b(_b) {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Background colour filter (c) Tim Wentford\n")+parent->about(); }
};
class setfg : public CFilter
{
int m_r, m_g, m_b;
public:
setfg(int _r, int _g, int _b) : m_r(_r), m_g(_g), m_b(_b) {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos);
QString about() { return QString("Foreground colour filter (c) Tim Wentford\n")+parent->about(); }
};
#endif
diff --git a/noncore/apps/opie-reader/CHM.cpp b/noncore/apps/opie-reader/CHM.cpp
index 9d1eb87..88d53bf 100644
--- a/noncore/apps/opie-reader/CHM.cpp
+++ b/noncore/apps/opie-reader/CHM.cpp
@@ -1,195 +1,194 @@
#include "CHM.h"
#include "chm_lib.h"
-#include "static.h"
#include <qstring.h>
#include <qstringlist.h>
#include <stdio.h>
#include <qimage.h>
#include <qpixmap.h>
#ifndef __STATIC
extern "C"
{
CExpander* newcodec() { return new CHM; }
}
#endif
static int _print_ui_index(struct chmFile *h, struct chmUnitInfo *ui,
void *context)
{
CHM *chm = (CHM *)context;
QString temp = "<tr>";
char buff[1024];
sprintf( buff,"<td align=right>%8d\n</td><td><a href=\"%s\">%s</a></td></tr>",(int)ui->length, ui->path, ui->path);
temp += buff;
chm->addContent(temp);
return CHM_ENUMERATOR_CONTINUE;
}
static int _get_hhc (struct chmFile *h, struct chmUnitInfo *ui,
void *context)
{
CHM *chm = (CHM *)context;
QString PathName = ui->path;
if (PathName.find(".hhc") > -1) {
chm->setPath(PathName);
}
return CHM_ENUMERATOR_CONTINUE;
}
CHM::CHM() {
chmFile = NULL;
chmPath = "";
chmHHCPath = "";
chmBuffer = "";
bufpos = 0;
}
CHM::~CHM() {
if (chmFile != NULL)
chm_close(chmFile);
}
void CHM::suspend() {
#ifdef USEQPE
bSuspended = true;
//suspos = gztell(file);
chm_close(chmFile);
chmFile = NULL;
sustime = time(NULL);
#endif
}
void CHM::unsuspend() {
#ifdef USEQPE
if (bSuspended)
{
bSuspended = false;
int delay = time(NULL) - sustime;
if (delay < 10)
sleep(10-delay);
chmFile = chm_open(fname);
for (int i = 0; chmFile == NULL && i < 5; i++) {
sleep(5);
chmFile = chm_open(fname);
}
if (chmFile == NULL) {
QMessageBox::warning(NULL, PROGNAME, "Couldn't reopen file");
exit(0);
}
//suspos = gzseek(file, suspos, SEEK_SET);
}
#endif
}
void CHM::addContent(QString content) {
chmBuffer += content;
}
void CHM::FillHomeContent() {
if (chmHHCPath != "") {
const char *ext;
char buffer[65536];
unsigned int swath, offset;
QString tmp="";
QString HTML="";
/* try to find the file */
const char *filename = (const char *)chmHHCPath;
if (chm_resolve_object(chmFile, filename, &m_ui) != CHM_RESOLVE_SUCCESS)
{
chmBuffer = "HELP";
fsize = chmBuffer.length();
return;
}
m_homestart = m_ui.start;
m_homeend = m_homestart + m_ui.length;
swath = 65536;
offset = 0;
fsize = m_ui.length;
while (offset < m_ui.length)
{
if ((m_ui.length - offset) < 65536)
swath = m_ui.length - offset;
else
swath = 65536;
swath = (int)chm_retrieve_object(chmFile, &m_ui, (unsigned char *) buffer, offset, swath);
tmp += buffer;
offset += swath;
}
HTML +="<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN>\r\n";
HTML +="<HTML>\r\n";
HTML +="<BODY>\r\n";
HTML +="<h2>Home Page</h2>\r\n";
HTML +="<h3>\r\n";
QStringList qsl = QStringList::split("\r\n",tmp);
QString NameFind ="<param name=\"Name\" value=\"";
QString LocalFind = "<param name=\"Local\" value=\"";
QString ULOpenFind = "<UL>";
QString LIOpenFind = "<LI>";
QString ULCloseFind = "</UL>";
QString Name = "";
QString Local = "";
for ( QStringList::Iterator it = qsl.begin(); it != qsl.end(); ++it ) {
QString Line = (*it);
int NamePos = Line.find( NameFind);
int LocalPos = Line.find( LocalFind);
if (NamePos > -1) {
Name = Line.mid(NamePos+NameFind.length(),Line.length());
Name = Name.left(Name.length() - 2);
}
if (LocalPos > -1) {
Local = Line.mid(LocalPos+LocalFind.length(),Line.length());
Local = Local.left(Local.length() - 2);
if (Name != "") {
HTML += "<br>\r\n<a href=";
HTML += Local;
HTML += ">";
HTML += Name;
HTML += "</a>\r\n";
Name = "";
}
}
}
HTML +="</h3>";
HTML +="</BODY>\r\n";
HTML +="</HTML>\r\n";
chmHomeBuffer = HTML;
chmBuffer = HTML;
fsize = chmBuffer.length();
m_currentstart = m_ui.start;
m_currentend = m_currentstart+chmBuffer.length();
}
}
bool CHM::FillBuffer()
{
bool bRetVal = false;
char buffer[65536];
int swath, offset;
chmBuffer = "";
swath = 65536;
offset = 0;
fsize = m_ui.length;
while (offset < m_ui.length)
{
if ((m_ui.length - offset) < 65536)
swath = m_ui.length - offset;
else
swath = 65536;
swath = (int)chm_retrieve_object(chmFile, &m_ui, (unsigned char *) buffer, offset, swath);
chmBuffer += buffer;
offset += swath;
}
//There seems to be a ton of gobbledygook at the end that is reminiscent of the hhc file - remove it
QString temp = chmBuffer.lower();
int lpos = temp.find("</html");
if (lpos > -1) {
chmBuffer.truncate(lpos);
chmBuffer = chmBuffer+"</HTML>";
}
fsize = chmBuffer.length();
bufpos = 0;
bRetVal = true;
m_currentstart = m_ui.start;
m_currentend = m_currentstart+chmBuffer.length();
diff --git a/noncore/apps/opie-reader/CHM.h b/noncore/apps/opie-reader/CHM.h
index 7dac46f..001f7fc 100644
--- a/noncore/apps/opie-reader/CHM.h
+++ b/noncore/apps/opie-reader/CHM.h
@@ -1,68 +1,67 @@
#ifndef __CHM_h
#define __CHM_h
#include <stdio.h>
#include <sys/stat.h>
-#include "useqpe.h"
#include "CExpander.h"
#include "chm_lib.h"
#include "my_list.h"
#include "CExpander.h"
struct Ref {
QString RefName;
QString RefLoc;
int beginpos;
int endpos;
};
struct Pic {
QString RefName;
QString RefLoc;
int beginpos;
int endpos;
};
class CHM : public CExpander
{
void start2endSection();
struct chmUnitInfo m_ui;
struct chmFile *chmFile;
chmUnitInfo chmui;
//alloc a meg to buffer
QString chmHomeBuffer;
QString chmBuffer;
QString chmPath;
QString chmHHCPath;
unsigned int bufpos;
unsigned long fsize;
unsigned long m_homestart, m_homeend;
public:
void suspend();
void unsuspend();
bool hasnavigation() { return true; }
CHM();
virtual ~CHM();
int OpenFile(const char *src);
int getch();
unsigned int locate();
void locate(unsigned int n);
bool hasrandomaccess() { return true; }
void sizes(unsigned long& _file, unsigned long& _text);
void addContent(QString content);
void getch(tchar& ch, CStyle& sty);
void setPath(QString PathName) {chmPath = PathName;};
void setHomePath(QString PathName) {chmHHCPath = PathName;};
MarkupType PreferredMarkup() {
return cCHM;
}
bool getFile(const QString& href);
QImage *getPicture(const QString& href);
QString about() { return QString("CHM codec (c) Bob Griffin\nchm_lib (c) Jed Wing\nLZX code (c) Stuart Cale"); }
private :
bool FillBuffer();
bool FillContent();
void FillHomeContent();
};
#endif
diff --git a/noncore/apps/opie-reader/CHM/CHM.pro b/noncore/apps/opie-reader/CHM/CHM.pro
index 6ed86f6..d3a2a28 100644
--- a/noncore/apps/opie-reader/CHM/CHM.pro
+++ b/noncore/apps/opie-reader/CHM/CHM.pro
@@ -1,18 +1,18 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
HEADERS = CHM.h chm_lib.h lzx.h
SOURCES = CHM.cpp chm_lib.c lzx.c
INTERFACES =
DESTDIR = $(OPIEDIR)/plugins/reader/codecs
TARGET = CHM
LIBS += -lreader_codec
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
include ( $(OPIEDIR)/include.pro ) \ No newline at end of file
diff --git a/noncore/apps/opie-reader/CloseDialog.h b/noncore/apps/opie-reader/CloseDialog.h
index 62e6423..54aaf1c 100644
--- a/noncore/apps/opie-reader/CloseDialog.h
+++ b/noncore/apps/opie-reader/CloseDialog.h
@@ -1,62 +1,61 @@
/****************************************************************************
** Form interface generated from reading ui file 'Prefs.ui'
**
** Created: Tue Feb 11 23:53:32 2003
** by: The User Interface Compiler (uic)
**
** WARNING! All changes made in this file will be lost!
****************************************************************************/
#ifndef __CLOSEDIALOG_H
#define __CLOSEDIALOG_H
-#include "useqpe.h"
#include <qvariant.h>
#include <qwidget.h>
#include <qtabdialog.h>
#include <qtabwidget.h>
#include <qspinbox.h>
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qlineedit.h>
//#include <qpe/menubutton.h>
#include <qvbuttongroup.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
//class QCheckBox;
class QLabel;
//class QSpinBox;
class CCloseDialog : public QDialog
{
Q_OBJECT
QCheckBox *file, *marks, *config;
#ifndef USEQPE
void keyPressEvent(QKeyEvent* e)
{
switch (e->key())
{
case Key_Escape:
e->accept();
reject();
break;
case Key_Space:
case Key_Return:
e->accept();
accept();
break;
default:
QWidget::keyPressEvent(e);
}
}
#endif
public:
CCloseDialog(const QString&, bool fs = true, QWidget* parent = 0, const char* name = 0);
~CCloseDialog() {}
bool delFile() { return file->isChecked(); }
bool delMarks() { return marks->isChecked(); }
bool delConfig() { return config->isChecked(); }
};
#endif // CPREFS_H
diff --git a/noncore/apps/opie-reader/FontControl.cpp b/noncore/apps/opie-reader/FontControl.cpp
index bbd9fe0..9bb3bc0 100644
--- a/noncore/apps/opie-reader/FontControl.cpp
+++ b/noncore/apps/opie-reader/FontControl.cpp
@@ -1,67 +1,66 @@
#include <qfontdatabase.h>
-#include "useqpe.h"
#include "FontControl.h"
int FontControl::gzoom()
{
if (m_fixgraphics)
{
return 100;
}
else
{
int ret;
if (m_size == g_size)
{
ret = m_fontsizes[m_size]*m_basesize;
}
else if (g_size < 0)
{
int f = -g_size;
ret = (m_fontsizes[0]*m_basesize) >> (f/2);
if (f%2) ret = (2*ret/3);
}
else
{
int f = g_size - m_maxsize + 1;
ret = (m_fontsizes[m_maxsize-1]*m_basesize) << (f/2);
if (f%2) ret = (3*ret/2);
}
return ret;
}
}
bool FontControl::ChangeFont(QString& n, int tgt)
{
QValueList<int>::Iterator it;
QFontDatabase fdb;
QValueList<int> sizes = fdb.pointSizes(n);
if (sizes.count() == 0)
{
return false;
}
else
{
m_fontname = n;
m_maxsize = sizes.count();
if (m_fontsizes != NULL) delete [] m_fontsizes;
m_fontsizes = new int[m_maxsize];
uint i = 0;
uint best = 0;
for (it = sizes.begin(); it != sizes.end(); it++)
{
#if defined(OPIE) || !defined(USEQPE)
m_fontsizes[i] = (*it);
#else
m_fontsizes[i] = (*it)/10;
#endif
if (abs(tgt-m_fontsizes[i]) < abs(tgt-m_fontsizes[best]))
{
best = i;
}
i++;
}
g_size = m_size = best;
}
return true;
}
diff --git a/noncore/apps/opie-reader/HTMLFilter/HTMLFilter.pro b/noncore/apps/opie-reader/HTMLFilter/HTMLFilter.pro
index cc049a9..8eb6f17 100644
--- a/noncore/apps/opie-reader/HTMLFilter/HTMLFilter.pro
+++ b/noncore/apps/opie-reader/HTMLFilter/HTMLFilter.pro
@@ -1,20 +1,20 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
HEADERS = CFilter.h \
util.h
SOURCES = striphtml.cpp
# copy data file to install directory
QMAKE_PRE_LINK = mkdir -p $(OPIEDIR)/plugins/reader/data && cp ../HTMLentities $(OPIEDIR)/plugins/reader/data/HTMLentities
INTERFACES =
DESTDIR = $(OPIEDIR)/plugins/reader/filters
TARGET = HTMLfilter
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/opie-reader/Palm2QImage.cpp b/noncore/apps/opie-reader/Palm2QImage.cpp
index c1b7b7a..c6907eb 100644
--- a/noncore/apps/opie-reader/Palm2QImage.cpp
+++ b/noncore/apps/opie-reader/Palm2QImage.cpp
@@ -1,194 +1,193 @@
/* -*- mode: c; indent-tabs-mode: nil; -*- */
-#include "useqpe.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef _WINDOWS
#include <unistd.h> /* for link */
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <stdarg.h>
#include <qimage.h>
/***********************************************************************/
/***********************************************************************/
/***** *****/
/***** Code to decode the Palm image format to JPEG *****/
/***** *****/
/***********************************************************************/
/***********************************************************************/
#define READ_BIGENDIAN_SHORT(p) (((p)[0] << 8)|((p)[1]))
#define READ_BIGENDIAN_LONG(p) (((p)[0] << 24)|((p)[1] << 16)|((p)[2] << 8)|((p)[3]))
#define PALM_IS_COMPRESSED_FLAG 0x8000
#define PALM_HAS_COLORMAP_FLAG 0x4000
#define PALM_HAS_TRANSPARENCY_FLAG 0x2000
#define PALM_DIRECT_COLOR_FLAG 0x0400
#define PALM_4_BYTE_FIELD_FLAG 0x0200
#define PALM_COMPRESSION_SCANLINE 0x00
#define PALM_COMPRESSION_RLE 0x01
#define PALM_COMPRESSION_PACKBITS 0x02
#define PALM_COMPRESSION_NONE 0xFF
#define PALM_COLORMAP_SIZE 232
typedef struct {
unsigned char red;
unsigned char green;
unsigned char blue;
} ColorMapEntry;
static ColorMapEntry Palm8BitColormap[] = {
{ 255, 255, 255 }, { 255, 204, 255 }, { 255, 153, 255 }, { 255, 102, 255 },
{ 255, 51, 255 }, { 255, 0, 255 }, { 255, 255, 204 }, { 255, 204, 204 },
{ 255, 153, 204 }, { 255, 102, 204 }, { 255, 51, 204 }, { 255, 0, 204 },
{ 255, 255, 153 }, { 255, 204, 153 }, { 255, 153, 153 }, { 255, 102, 153 },
{ 255, 51, 153 }, { 255, 0, 153 }, { 204, 255, 255 }, { 204, 204, 255 },
{ 204, 153, 255 }, { 204, 102, 255 }, { 204, 51, 255 }, { 204, 0, 255 },
{ 204, 255, 204 }, { 204, 204, 204 }, { 204, 153, 204 }, { 204, 102, 204 },
{ 204, 51, 204 }, { 204, 0, 204 }, { 204, 255, 153 }, { 204, 204, 153 },
{ 204, 153, 153 }, { 204, 102, 153 }, { 204, 51, 153 }, { 204, 0, 153 },
{ 153, 255, 255 }, { 153, 204, 255 }, { 153, 153, 255 }, { 153, 102, 255 },
{ 153, 51, 255 }, { 153, 0, 255 }, { 153, 255, 204 }, { 153, 204, 204 },
{ 153, 153, 204 }, { 153, 102, 204 }, { 153, 51, 204 }, { 153, 0, 204 },
{ 153, 255, 153 }, { 153, 204, 153 }, { 153, 153, 153 }, { 153, 102, 153 },
{ 153, 51, 153 }, { 153, 0, 153 }, { 102, 255, 255 }, { 102, 204, 255 },
{ 102, 153, 255 }, { 102, 102, 255 }, { 102, 51, 255 }, { 102, 0, 255 },
{ 102, 255, 204 }, { 102, 204, 204 }, { 102, 153, 204 }, { 102, 102, 204 },
{ 102, 51, 204 }, { 102, 0, 204 }, { 102, 255, 153 }, { 102, 204, 153 },
{ 102, 153, 153 }, { 102, 102, 153 }, { 102, 51, 153 }, { 102, 0, 153 },
{ 51, 255, 255 }, { 51, 204, 255 }, { 51, 153, 255 }, { 51, 102, 255 },
{ 51, 51, 255 }, { 51, 0, 255 }, { 51, 255, 204 }, { 51, 204, 204 },
{ 51, 153, 204 }, { 51, 102, 204 }, { 51, 51, 204 }, { 51, 0, 204 },
{ 51, 255, 153 }, { 51, 204, 153 }, { 51, 153, 153 }, { 51, 102, 153 },
{ 51, 51, 153 }, { 51, 0, 153 }, { 0, 255, 255 }, { 0, 204, 255 },
{ 0, 153, 255 }, { 0, 102, 255 }, { 0, 51, 255 }, { 0, 0, 255 },
{ 0, 255, 204 }, { 0, 204, 204 }, { 0, 153, 204 }, { 0, 102, 204 },
{ 0, 51, 204 }, { 0, 0, 204 }, { 0, 255, 153 }, { 0, 204, 153 },
{ 0, 153, 153 }, { 0, 102, 153 }, { 0, 51, 153 }, { 0, 0, 153 },
{ 255, 255, 102 }, { 255, 204, 102 }, { 255, 153, 102 }, { 255, 102, 102 },
{ 255, 51, 102 }, { 255, 0, 102 }, { 255, 255, 51 }, { 255, 204, 51 },
{ 255, 153, 51 }, { 255, 102, 51 }, { 255, 51, 51 }, { 255, 0, 51 },
{ 255, 255, 0 }, { 255, 204, 0 }, { 255, 153, 0 }, { 255, 102, 0 },
{ 255, 51, 0 }, { 255, 0, 0 }, { 204, 255, 102 }, { 204, 204, 102 },
{ 204, 153, 102 }, { 204, 102, 102 }, { 204, 51, 102 }, { 204, 0, 102 },
{ 204, 255, 51 }, { 204, 204, 51 }, { 204, 153, 51 }, { 204, 102, 51 },
{ 204, 51, 51 }, { 204, 0, 51 }, { 204, 255, 0 }, { 204, 204, 0 },
{ 204, 153, 0 }, { 204, 102, 0 }, { 204, 51, 0 }, { 204, 0, 0 },
{ 153, 255, 102 }, { 153, 204, 102 }, { 153, 153, 102 }, { 153, 102, 102 },
{ 153, 51, 102 }, { 153, 0, 102 }, { 153, 255, 51 }, { 153, 204, 51 },
{ 153, 153, 51 }, { 153, 102, 51 }, { 153, 51, 51 }, { 153, 0, 51 },
{ 153, 255, 0 }, { 153, 204, 0 }, { 153, 153, 0 }, { 153, 102, 0 },
{ 153, 51, 0 }, { 153, 0, 0 }, { 102, 255, 102 }, { 102, 204, 102 },
{ 102, 153, 102 }, { 102, 102, 102 }, { 102, 51, 102 }, { 102, 0, 102 },
{ 102, 255, 51 }, { 102, 204, 51 }, { 102, 153, 51 }, { 102, 102, 51 },
{ 102, 51, 51 }, { 102, 0, 51 }, { 102, 255, 0 }, { 102, 204, 0 },
{ 102, 153, 0 }, { 102, 102, 0 }, { 102, 51, 0 }, { 102, 0, 0 },
{ 51, 255, 102 }, { 51, 204, 102 }, { 51, 153, 102 }, { 51, 102, 102 },
{ 51, 51, 102 }, { 51, 0, 102 }, { 51, 255, 51 }, { 51, 204, 51 },
{ 51, 153, 51 }, { 51, 102, 51 }, { 51, 51, 51 }, { 51, 0, 51 },
{ 51, 255, 0 }, { 51, 204, 0 }, { 51, 153, 0 }, { 51, 102, 0 },
{ 51, 51, 0 }, { 51, 0, 0 }, { 0, 255, 102 }, { 0, 204, 102 },
{ 0, 153, 102 }, { 0, 102, 102 }, { 0, 51, 102 }, { 0, 0, 102 },
{ 0, 255, 51 }, { 0, 204, 51 }, { 0, 153, 51 }, { 0, 102, 51 },
{ 0, 51, 51 }, { 0, 0, 51 }, { 0, 255, 0 }, { 0, 204, 0 },
{ 0, 153, 0 }, { 0, 102, 0 }, { 0, 51, 0 }, { 17, 17, 17 },
{ 34, 34, 34 }, { 68, 68, 68 }, { 85, 85, 85 }, { 119, 119, 119 },
{ 136, 136, 136 }, { 170, 170, 170 }, { 187, 187, 187 }, { 221, 221, 221 },
{ 238, 238, 238 }, { 192, 192, 192 }, { 128, 0, 0 }, { 128, 0, 128 },
{ 0, 128, 0 }, { 0, 128, 128 }, { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }};
static ColorMapEntry Palm1BitColormap[] = {{ 255, 255, 255 }, { 0, 0, 0 }};
static ColorMapEntry Palm2BitColormap[] = {
{ 255, 255, 255 }, { 192, 192, 192 }, { 128, 128, 128 }, { 0, 0, 0 }};
static ColorMapEntry Palm4BitColormap[] = {
{ 255, 255, 255 }, { 238, 238, 238 }, { 221, 221, 221 }, { 204, 204, 204 },
{ 187, 187, 187 }, { 170, 170, 170 }, { 153, 153, 153 }, { 136, 136, 136 },
{ 119, 119, 119 }, { 102, 102, 102 }, { 85, 85, 85 }, { 68, 68, 68 },
{ 51, 51, 51 }, { 34, 34, 34 }, { 17, 17, 17 }, { 0, 0, 0 }};
QImage* Palm2QImage
(unsigned char *image_bytes_in, int byte_count_in)
{
unsigned int width, height, bytes_per_row, flags, next_depth_offset;
unsigned int bits_per_pixel, version, transparent_index, compression_type, i, j, inval, inbit, mask, incount;
unsigned int palm_red_bits, palm_green_bits, palm_blue_bits;
unsigned char *palm_ptr, *x_ptr, *imagedata, *inbyte, *rowbuf, *lastrow,
*imagedatastart, *palmimage;
ColorMapEntry *colormap;
palmimage = image_bytes_in;
width = READ_BIGENDIAN_SHORT(palmimage + 0);
height = READ_BIGENDIAN_SHORT(palmimage + 2);
bytes_per_row = READ_BIGENDIAN_SHORT(palmimage + 4);
flags = READ_BIGENDIAN_SHORT(palmimage + 6);
bits_per_pixel = palmimage[8];
version = palmimage[9];
next_depth_offset = READ_BIGENDIAN_SHORT(palmimage + 10);
transparent_index = palmimage[12];
compression_type = palmimage[13];
/* bytes 14 and 15 are reserved by Palm and always 0 */
#if 0
// qDebug ("Palm image is %dx%d, %d bpp, version %d, flags 0x%x, compression %d", width, height, bits_per_pixel, version, flags, compression_type);
#endif
if (compression_type == PALM_COMPRESSION_PACKBITS) {
// qDebug ("Image uses packbits compression; not yet supported");
return NULL;
} else if ((compression_type != PALM_COMPRESSION_NONE) &&
(compression_type != PALM_COMPRESSION_RLE) &&
(compression_type != PALM_COMPRESSION_SCANLINE)) {
// qDebug ("Image uses unknown compression, code 0x%x", compression_type);
return NULL;
}
/* as of PalmOS 4.0, there are 6 different kinds of Palm pixmaps:
1, 2, or 4 bit grayscale
8-bit StaticColor using the Palm standard colormap
8-bit PseudoColor using a user-specified colormap
16-bit DirectColor using 5 bits for red, 6 for green, and 5 for blue
Each of these can be compressed with one of four compression schemes,
"RLE", "Scanline", "PackBits", or none.
We begin by constructing the colormap.
*/
if (flags & PALM_HAS_COLORMAP_FLAG) {
// qDebug("Palm images with custom colormaps are not currently supported.\n");
return NULL;
} else if (bits_per_pixel == 1) {
colormap = Palm1BitColormap;
imagedatastart = palmimage + 16;
} else if (bits_per_pixel == 2) {
colormap = Palm2BitColormap;
imagedatastart = palmimage + 16;
} else if (bits_per_pixel == 4) {
colormap = Palm4BitColormap;
imagedatastart = palmimage + 16;
} else if (bits_per_pixel == 8) {
colormap = Palm8BitColormap;
imagedatastart = palmimage + 16;
} else if (bits_per_pixel == 16 && (flags & PALM_DIRECT_COLOR_FLAG)) {
colormap = NULL;
palm_red_bits = palmimage[16];
palm_green_bits = palmimage[17];
palm_blue_bits = palmimage[18];
// qDebug("Bits:%d, %d, %d", palm_red_bits, palm_green_bits, palm_blue_bits);
if (palm_blue_bits > 8 || palm_green_bits > 8 || palm_red_bits > 8) {
// qDebug("Can't handle this format DirectColor image -- too wide in some color (%d:%d:%d)\n", palm_red_bits, palm_green_bits, palm_blue_bits);
return NULL;
diff --git a/noncore/apps/opie-reader/PluckerCodec/PluckerCodec.pro b/noncore/apps/opie-reader/PluckerCodec/PluckerCodec.pro
index 6ed4032..7042542 100644
--- a/noncore/apps/opie-reader/PluckerCodec/PluckerCodec.pro
+++ b/noncore/apps/opie-reader/PluckerCodec/PluckerCodec.pro
@@ -1,18 +1,18 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
HEADERS = plucker.h
SOURCES = plucker.cpp \
Palm2QImage.cpp
INTERFACES =
DESTDIR = $(OPIEDIR)/plugins/reader/codecs
TARGET = Plucker
LIBS += -lreader_pdb -lreader_pluckerbase -lreader_codec
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/opie-reader/QTReader.cpp b/noncore/apps/opie-reader/QTReader.cpp
index dfdba28..33884a0 100644
--- a/noncore/apps/opie-reader/QTReader.cpp
+++ b/noncore/apps/opie-reader/QTReader.cpp
@@ -1,205 +1,204 @@
/****************************************************************************
** $Id$
**
** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
**
** This file is part of an example program for Qt. This example
** program may be used, distributed and modified without limitation.
**
*****************************************************************************/
const int _SBARHEIGHT = 3;
-#include "useqpe.h"
#include <qpainter.h>
//#include <qdirectpainter_qws.h>
#include <qimage.h>
#include <qtimer.h>
#include "config.h"
#include "QTReader.h"
//#include "QTReaderApp.h"
#include "CDrawBuffer.h"
#ifdef USEQPE
#include <qpe/qpeapplication.h>
#endif
#include <math.h>
#include <ctype.h>
#include <stdio.h> //for sprintf
#ifdef USEQPE
#include <qpe/config.h>
#include <qpe/applnk.h>
#include <qpe/global.h>
#include <qpe/qcopenvelope_qws.h>
#endif
#include <qfileinfo.h>
#include <qdir.h>
#ifdef _UNICODE
const char *QTReader::fonts[] = { "unifont", "Courier", "Times", 0 };
#else
const char *QTReader::fonts[] = { "Helvetica", "Courier", "Times", 0 };
#endif
//const int QTReader::fontsizes[] = { 8, 10, 12, 14, 18, 24, 30, 40, 50, 60, 70, 80, 90, 100, 0 };
//const tchar *QTReader::fonts[] = { "unifont", "fixed", "micro", "smoothtimes", "Courier", "Times", 0 };
//const int QTReader::fontsizes[] = {10,16,17,22,0};
//const tchar *QTReader::fonts[] = { "verdana", "Courier", "Times", 0 };
//const int QTReader::fontsizes[] = {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,0};
tchar QTReader::pluckernextpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','n','e','x','t',' ','p','a','r','t',0 };
tchar QTReader::jplucknextpart[] = { 'N','e','x','t',' ','P','a','r','t',' ','>','>',0 };
//tchar QTReader::jplucknextpart[] = { 10,'#',10,'N','e','x','t',' ','P','a','r','t',' ','>','>',0 };
QTReader::QTReader( QWidget *parent, const char *name, WFlags f) :
QWidget(parent, name, f),
m_default_fg(0,0,0),
m_default_bg(255,255,255),
m_bg(255,255,255),
m_delay(100),
m_scrolldy1(0),
m_scrolldy2(0),
m_totalscroll(0),
m_autoScroll(false),
//textarray(NULL),
//locnarray(NULL),
numlines(0),
m_fontname("unifont"),
m_fm(NULL),
mouseUpOn(true),
m_twotouch(true),
m_touchone(true),
bDoUpdates(false),
#ifdef _SCROLLPIPE
m_pipeout(NULL),
#endif
m_left_border(2),
m_right_border(2),
m_rotated(true),
pBkmklist(NULL),
m_scrollpos(0),
// bNegative(false),
bInverse(false),
m_highlightfilter(NULL),
m_bgIsScaled(false),
m_scrollstep(2),
m_topmargin(5),
m_bottommargin(5),
m_reparastring("{\\n[\\n ]}"),
m_currentlinkstyle(NULL),
m_currentlinkoffset(-1),
m_currentlink(-1)
{
m_overlap = 1;
setKeyCompression ( true );
#ifdef DOUBLEBUFFER
dbuff = new QPixmap();
dbp = new QPainter();
// if (painter->isActive()) painter->end();
// painter->begin(frame);
#endif
// init();
}
/*
QTReader::QTReader( const QString& filename, QWidget *parent=0, const tchar *name=0, WFlags f = 0) :
QWidget(parent, name, f),
m_textfont(0),
m_textsize(1),
textarray(NULL),
numlines(0),
bstripcr(true),
bunindent(false),
brepara(false),
bdblspce(false),
btight(false),
bindenter(0),
m_fm(NULL)
{
init();
// // qDebug("Load_file(1)");
load_file((const tchar*)filename);
}
*/
/*
void QTReader::mouseMoveEvent(QMouseEvent* _e)
{
mouseUpOn = !(_e->pos().x() == -1);
qDebug("MouseMove:[%d, %d]", _e->pos().x(), _e->pos().y());
}
*/
long QTReader::real_delay()
{
return m_scrollstep*( 8976 + m_delay ) / ( m_linespacing * m_linespacing );
}
void QTReader::mousePressEvent( QMouseEvent* _e )
{
buffdoc.unsuspend();
int x, y, ht, wh;
if (m_rotated)
{
x = _e->y();
y = width()-_e->x();
ht = width();
wh = height();
}
else
{
x = _e->x();
y = _e->y();
ht = height();
wh = width();
}
if (_e->button() == RightButton)
{
// qDebug("MousePress");
mouseUpOn = false;
if (m_swapmouse)
{
int lineno = 0;
/*
int hgt = textarray[0]->lineSpacing();
while ((hgt < y) && (lineno < numlines))
{
hgt += textarray[++lineno]->lineSpacing();
}
*/
size_t startpos, startoffset, tgt, tgtoffset, pictgt;
QImage* img;
getcurrentpos(x, y, wh, ht, lineno, startpos, startoffset, tgt, tgtoffset, pictgt, img);
processmousewordevent(startpos, startoffset, _e, lineno);
}
else
processmousepositionevent(_e);
}
}
void QTReader::processmousepositionevent( QMouseEvent* _e )
{
int x, y, ht, wh;
if (m_rotated)
{
x = _e->y();
y = width()-_e->x();
ht = width();
wh = height();
}
else
{
x = _e->x();
y = _e->y();
ht = height();
wh = width();
}
if (buffdoc.hasnavigation())
{
if (y > (2*ht)/3)
{
goDown();
}
else if (y < ht/3)
diff --git a/noncore/apps/opie-reader/QTReader.h b/noncore/apps/opie-reader/QTReader.h
index 7b0ebc8..3bcdde4 100644
--- a/noncore/apps/opie-reader/QTReader.h
+++ b/noncore/apps/opie-reader/QTReader.h
@@ -1,197 +1,196 @@
#ifndef __QTREADER_H
#define __QTREADER_H
//#define _SCROLLPIPE
-#include "static.h"
#include <qwidget.h>
//#include <qpainter.h>
#include "my_list.h"
#include "BuffDoc.h"
#include "FontControl.h"
//#include <qtimer.h>
class CDrawBuffer;
//class CBuffer;
#include <qpixmap.h>
class QPainter;
class QTimer;
class QImage;
#include "BGType.h"
#include "striphtml.h"
#define ROTATION_ENABLED
#define SPECIALSCROLL
#define DOUBLEBUFFER
#ifdef DOUBLEBUFFER
class QPainter;
#endif
class CStyle;
class QTReader : public QWidget
{
Q_OBJECT
friend class QTReaderApp;
#ifdef DOUBLEBUFFER
QPixmap *dbuff;
QPainter* dbp;
#endif
void drawSingleLine(int lineno);
void gotoLink();
void emitRedraw();
CStyle* m_currentlinkstyle;
int m_currentlink;
int m_currentlinkoffset;
QPixmap m_bgpm;
bool m_bgIsScaled;
bground m_bgtype;
int m_scrollpos;
unsigned short m_scrollstep;
void blitRot(int dx, int sx, int sw, int sh, CDrawBuffer* txt);
void setBackgroundBitmap(const QPixmap& _pm, bground bg)
{
m_bgpm = _pm;
m_bgtype = bg;
m_bgIsScaled = false;
}
QColor m_bg, m_default_bg, m_default_fg, m_negative_fg;
static tchar pluckernextpart[];
static tchar jplucknextpart[];
CList<Bkmk>* pBkmklist;
void setHyphenThreshold(int _v) { buffdoc.setHyphenThreshold(_v); }
void ResetScroll();
void increaseScroll();
void reduceScroll();
void drawText(QPainter& p, int x, int y, tchar* text);
void DrawScroll( QPainter *p, int w, int h );
void dorollingscroll(bool);
void doinplacescroll();
void dostaticscroll();
void suspend();
void redrawScroll(QPainter* p);
int m_delay, m_scrolltype;
unsigned int m_overlap;
bool m_autoScroll, m_swapmouse;
void drawBackground();
#ifdef ROTATION_ENABLED
bool m_rotated;
void setrotated(bool);
#endif
void autoscroll();
QTimer* timer;
int m_scrolldy1, m_scrolldy2, m_encd, m_scrollpart, m_totalscroll;
void focusInEvent(QFocusEvent*);
void focusOutEvent(QFocusEvent*);
void processmousepositionevent( QMouseEvent* _e );
void processmousewordevent(size_t startpos, size_t startoffset, QMouseEvent* _e, int lineno);
bool ChangeFont(int);
bool getline(CDrawBuffer*);
int m_charWidth;
int m_charpc;
unsigned short m_absleft_border, m_absright_border;
unsigned short m_left_border, m_right_border;
FontControl m_fontControl;
void setBaseSize(unsigned char _s) { m_fontControl.setBaseSize(_s); }
unsigned char getBaseSize() { return m_fontControl.getBaseSize(); }
#ifdef _SCROLLPIPE
FILE* m_pipeout;
QString m_pipetarget;
bool m_isPaused;
bool m_pauseAfterEachPara;
#endif
public:
QTReader( QWidget *parent=0, const char *name=0, WFlags f = 0);
// QTReader( const QString& filename, QWidget *parent=0, const tchar *name=0, WFlags f = 0);
~QTReader();
QString about();
CList<Bkmk>* Bkmklist() { return pBkmklist; }
void setBackground(const QColor& _c)
{
m_default_bg = _c;
reset_bg();
}
void setForeground(const QColor& _c)
{
m_default_fg = _c;
int r,g,b;
m_default_fg.rgb(&r, &g, &b);
r = 255-r;
g = 255-g;
b = 255-b;
m_negative_fg.setRgb(r,g,b);
}
void zoomin();
void zoomout();
void setSaveData(unsigned char*& data, unsigned short& len, unsigned char* src, unsigned short srclen)
{
buffdoc.setSaveData(data, len, src, srclen);
}
void putSaveData(unsigned char*& src, unsigned short& srclen)
{
buffdoc.putSaveData(src, srclen);
}
bool empty();
void setContinuous(bool _b);
void toggle_autoscroll();
void setautoscroll(bool);
void disableAutoscroll() { m_autoScroll = false; }
void copy()
{
/*
size_t nd = locate();
jumpto(m_mark);
QString text;
while (m_mark < nd)
{
text += buffdoc.getch();
m_mark++;
}
QApplication::clipboard()->setText(text);
jumpto(nd);
*/
};
void clear() {};
void setText(const QString& n, const QString& s) { m_string = n; load_file((const char*)s); };
/*
void setText(bool oldfile)
{
if (oldfile)
{
m_string = m_lastfile;
load_file((const tchar*)m_string);
}
else
{
m_string = QString::null;
}
};
*/
void setlead(int _lead)
{
m_fontControl.setlead(_lead);
}
int getlead()
{
return m_fontControl.getlead();
}
void setextraspace(int _lead)
{
m_fontControl.setextraspace(_lead);
}
int getextraspace()
{
return m_fontControl.getextraspace();
}
void setpagemode(bool _b)
{
m_bpagemode = _b;
}
void setmono(bool _b)
{
m_bMonoSpaced = _b;
ChangeFont(m_fontControl.currentsize());
locate(pagelocate());
}
diff --git a/noncore/apps/opie-reader/QTReaderApp.cpp b/noncore/apps/opie-reader/QTReaderApp.cpp
index ec7a29c..876b65a 100644
--- a/noncore/apps/opie-reader/QTReaderApp.cpp
+++ b/noncore/apps/opie-reader/QTReaderApp.cpp
@@ -1,278 +1,276 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. Allrights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
-#include "useqpe.h"
#include <qregexp.h>
#include <qclipboard.h>
#include <qwidgetstack.h>
#ifdef USEQPE
#include <qpe/qpemenubar.h>
#include <qpe/qpetoolbar.h>
#endif
#include <qmenubar.h>
#include <qtoolbar.h>
#ifdef USEQPE
#include <qpe/menubutton.h>
#endif
#include <qcombobox.h>
#include <qpopupmenu.h>
#include <qaction.h>
#include <qapplication.h>
#include <qlineedit.h>
#include <qtoolbutton.h>
#include <qspinbox.h>
#include <qobjectlist.h>
#include <qstatusbar.h>
#ifdef USEQPE
#include <qpe/global.h>
#include <qpe/applnk.h>
#endif
#include <qfileinfo.h>
#include <stdlib.h> //getenv
#include <qprogressbar.h>
#ifdef USEQPE
#include <qpe/config.h>
#endif
#include <qbuttongroup.h>
#include <qradiobutton.h>
#ifdef USEQPE
#include <qpe/qcopenvelope_qws.h>
#endif
#include "QTReader.h"
#include "GraphicWin.h"
#include "Bkmks.h"
#include "cbkmkselector.h"
#include "infowin.h"
#include "ToolbarPrefs.h"
#include "Prefs.h"
#include "CAnnoEdit.h"
#include "QFloatBar.h"
#include "FixedFont.h"
#include "URLDialog.h"
#include "util.h"
#include <qfontdatabase.h>
#ifdef USEQPE
#include <qpe/resource.h>
#ifdef OPIE
//#include <qpe/applnk.h>
#include <opie2/ofiledialog.h>
using namespace Opie::Ui;
#else
#include "fileBrowser.h"
#endif
#else
#include "qfiledialog.h"
#endif
#include "QTReaderApp.h"
#include "CDrawBuffer.h"
#include "Filedata.h"
-#include "useqpe.h"
#include "names.h"
#include "CEncoding_tables.h"
#include "CloseDialog.h"
#include "ButtonPrefs.h"
bool CheckVersion(int&, int&, char&);
#ifdef _WINDOWS
#define PICDIR "c:\\uqtreader\\pics\\"
#else
#ifdef USEQPE
#define USEMSGS
#define PICDIR "opie-reader/"
#else
//#define PICDIR "/home/tim/uqtreader/pics/"
QString picdir()
{
QString hd(getenv("READERDIR"));
return hd + "/pics";
}
#define PICDIR picdir()
#endif
#endif
unsigned long QTReaderApp::m_uid = 0;
void QTReaderApp::setScrollState(bool _b) { m_scrollButton->setOn(_b); }
#ifdef USEQPE
#define geticon(iconname) Resource::loadPixmap( iconname )
#define getmyicon(iconname) Resource::loadPixmap( PICDIR iconname )
#else
//#define geticon(iconname) QPixmap(PICDIR iconname ".png")
#define geticon(iconname) QPixmap(PICDIR +"/"+iconname+".png")
#define getmyicon(iconname) geticon(iconname)
//#define geticon(iconname) QIconSet( QPixmap(PICDIR iconname) )
#endif
#ifndef _WINDOWS
#include <unistd.h>
#endif
#include <stddef.h>
#ifndef _WINDOWS
#include <dirent.h>
#endif
void QTReaderApp::listBkmkFiles()
{
bkmkselector->clear();
bkmkselector->setText("Cancel");
#ifndef USEQPE
int cnt = 0;
QDir d = QDir::home(); // "/"
if ( !d.cd(APPDIR) ) { // "/tmp"
qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
d = QDir::home();
d.mkdir(APPDIR);
d.cd(APPDIR);
}
d.setFilter( QDir::Files | QDir::NoSymLinks );
// d.setSorting( QDir::Size | QDir::Reversed );
const QFileInfoList *list = d.entryInfoList();
QFileInfoListIterator it( *list ); // create list iterator
QFileInfo *fi; // pointer for traversing
while ( (fi=it.current()) ) { // for each file...
bkmkselector->insertItem(fi->fileName());
cnt++;
//qDebug( "%10li %s", fi->size(), fi->fileName().data() );
++it; // goto next list element
}
#else /* USEQPE */
int cnt = 0;
DIR *d;
d = opendir((const char *)Global::applicationFileName(APPDIR,""));
while(1)
{
struct dirent* de;
struct stat buf;
de = readdir(d);
if (de == NULL) break;
if (lstat((const char *)Global::applicationFileName(APPDIR,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode))
{
bkmkselector->insertItem(de->d_name);
cnt++;
}
}
closedir(d);
#endif
if (cnt > 0)
{
//tjw menu->hide();
editorStack->raiseWidget( bkmkselector );
hidetoolbars();
m_nBkmkAction = cRmBkmkFile;
}
else
QMessageBox::information(this, PROGNAME, "No bookmark files");
}
void QTReaderApp::hidetoolbars()
{
if (m_scrollbar != NULL) m_scrollbar->hide();
if (m_prog != NULL) m_prog->hide();
#ifdef USEQPE
menubar->hide();
#endif
if (m_scrollbar != NULL) m_scrollbar->hide();
if (fileBar != NULL) fileBar->hide();
if (viewBar != NULL) viewBar->hide();
if (navBar != NULL) navBar->hide();
if (markBar != NULL) markBar->hide();
if (m_fontVisible) m_fontBar->hide();
if (regVisible)
{
#ifdef USEQPE
Global::hideInputMethod();
#endif
regBar->hide();
}
if (searchVisible)
{
#ifdef USEQPE
Global::hideInputMethod();
#endif
searchBar->hide();
}
}
QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
: QMainWindow( parent, name, f ), m_dontSave(false),
fileBar(NULL), navBar(NULL), viewBar(NULL), markBar(NULL), m_scrollbar(NULL), m_localscroll(2), m_hidebars(false), m_kmapchanged(false)
{
{
setKeyCompression ( true );
#ifndef USEQPE
QDir d = QDir::home(); // "/"
d.cd(APPDIR);
QFileInfo fi(d, ".keymap");
FILE* f = fopen((const char *)fi.absFilePath(), "r");
#else /* USEQPE */
FILE* f = fopen((const char *)Global::applicationFileName(APPDIR,".keymap"), "r");
#endif /* USEQPE */
if (f != NULL)
{
uint cnt;
if ((fread(&cnt, sizeof(cnt), 1, f) != 0) && (cnt == KEYMAPVERSION))
{
if (fread(&cnt, sizeof(cnt), 1, f) == 0) cnt = 0;
for (uint i = 0; i != cnt; i++)
{
orKey key;
int data;
fread(&key, sizeof(key), 1, f);
fread(&data, sizeof(data), 1, f);
kmap[key] = data;
}
}
fclose(f);
}
}
m_url_clipboard = false;
m_url_localfile = false;
m_url_globalfile = false;
ftime(&m_lastkeytime);
//// qDebug("Application directory = %s", (const tchar *)QPEApplication::documentDir());
//// qDebug("Application directory = %s", (const tchar *)Global::applicationFileName("uqtreader","bkmks.xml"));
m_bcloseDisabled = true;
m_disableesckey = false;
pBkmklist = NULL;
pOpenlist = NULL;
// doc = 0;
diff --git a/noncore/apps/opie-reader/QTReaderApp.h b/noncore/apps/opie-reader/QTReaderApp.h
index 5ecc42d..ad47fc9 100644
--- a/noncore/apps/opie-reader/QTReaderApp.h
+++ b/noncore/apps/opie-reader/QTReaderApp.h
@@ -1,221 +1,220 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef __QTREADERAPP_H
#define __QTREADERAPP_H
//#define _SCROLLPIPE
//#define __ISEARCH
//#define MAX_ENCODING 6
#define MAX_ACTIONS 5
-#include "useqpe.h"
#include <sys/timeb.h>
#include <qmainwindow.h>
#include "CExpander.h"
#include "CEncoding.h"
#include <qlist.h>
//#include <qpe/filemanager.h>
#include <qmap.h>
#include <qlineedit.h>
#include <qstack.h>
#include <qlistbox.h>
#ifdef USEQPE
#include <qpe/qpeapplication.h>
#endif
#include "orkey.h"
//#include "Queue.h"
#include "BGType.h"
class QBoxLayout;
class QWidgetStack;
class QToolButton;
class QPopupMenu;
class QToolBar;
#ifdef USEQPE
class QPEToolBar;
class QPEMenuBar;
#endif
class QScrollBar;
class CBkmkSelector;
class QProgressBar;
class QAction;
class CAnnoEdit;
class QFloatBar;
class CDrawBuffer;
class QTReader;
class QImage;
class Config;
class CButtonPrefs;
#ifdef USEQPE
enum ToolbarPolicy
{
cesSingle = 0,
cesMenuTool,
cesMultiple
};
#else
enum ToolbarPolicy
{
cesMenuTool = 0,
cesMultiple
};
#endif
enum regedit_type
{
cAutoGen,
cAddBkmk,
cJump,
cMonoSpace,
cSetTarget,
#ifdef _SCROLLPIPE
cSetPipeTarget,
#endif
cSetConfigName,
cMargin,
cExtraSpace,
cExtraLead,
cRepara
};
enum bkmk_action
{
cOpenFile,
cGotoBkmk,
cDelBkmk,
cRmBkmkFile,
cLdConfig,
cRmConfig,
cExportLinks,
cLdTheme
};
enum fontselector_action
{
cChooseFont,
cChooseEncoding
};
#ifdef __ISEARCH
struct searchrecord
{
QString s;
size_t pos;
searchrecord(const QString& _s, size_t _pos) : s(_s), pos(_pos) {}
};
#endif
class infowin;
class GraphicWin;
class QTReaderApp : public QMainWindow
{
Q_OBJECT
QColor getcolour(int c);
QMap<orKey, int> kmap;
unsigned long m_savedpos;
int m_debounce;
bool m_kmapchanged;
bground m_bgtype;
timeb m_lastkeytime;
QScrollBar* m_scrollbar;
QScrollBar* scrollbar;
int m_qtscroll, m_localscroll;
bool m_hidebars, m_scrollishidden, m_statusishidden;
QBoxLayout *m_layout;
QLabel* m_prog;
bool m_annoIsEditing;
bool m_propogatefontchange, m_bFloatingDialog;
bool m_url_clipboard, m_url_localfile, m_url_globalfile;
CButtonPrefs* m_buttonprefs;
fontselector_action m_fontAction;
void doAction(QKeyEvent* e);
public:
QTReaderApp( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
~QTReaderApp();
void hideEvent(QHideEvent*)
{
#ifdef USEQPE
if (m_grabkeyboard)
{
((QPEApplication*)qApp)->ungrabKeyboard();
}
#endif
suspend();
}
#ifdef USEQPE
void showEvent(QShowEvent*)
{
if (m_grabkeyboard)
{
((QPEApplication*)qApp)->grabKeyboard();
}
}
#endif
void suspend();
void openFile( const QString & );
protected:
void setfontHelper(const QString& lcn, int size = 0);
QAction* m_bkmkAvail, *m_actFullscreen;
CAnnoEdit* m_annoWin;
Bkmk* m_anno;
int m_scrollcolor, m_scrollbarcolor, m_background, m_foreground;
// void resizeEvent(QResizeEvent* e);
void closeEvent( QCloseEvent *e );
#ifdef NEWFULLSCREEN
void resizeEvent(QResizeEvent *);
void focusInEvent(QFocusEvent*);
void enableFullscreen();
#endif
void readbkmks();
void do_mono(const QString&);
void do_jump(const QString&);
void do_reparastring(const QString&);
void do_settarget(const QString&);
#ifdef _SCROLLPIPE
// void do_setpipetarget(const QString&);
#endif
void do_saveconfig(const QString&, bool);
bool readconfig(const QString&, const QString&, bool);
bool PopulateConfig(const char*, bool usedirs = false);
ActionTypes ActNameToInt(const QString&);
#ifdef USEQPE
bool m_grabkeyboard;
#endif
bool m_doAnnotation;
bool m_doDictionary;
bool m_doClipboard;
bool m_fullscreen;
bool m_loadedconfig;
public:
void saveprefs();
public slots:
void setBackgroundBitmap();
void UpdateStatus();
void setScrollState(bool _b);
void handlekey(QKeyEvent* e);
diff --git a/noncore/apps/opie-reader/ToolbarPrefs.cpp b/noncore/apps/opie-reader/ToolbarPrefs.cpp
index 5cf220a..56c4e9b 100644
--- a/noncore/apps/opie-reader/ToolbarPrefs.cpp
+++ b/noncore/apps/opie-reader/ToolbarPrefs.cpp
@@ -1,201 +1,200 @@
/****************************************************************************
** Form implementation generated from reading ui file 'Prefs.ui'
**
** Created: Tue Feb 11 23:53:35 2003
** by: The User Interface Compiler (uic)
**
** WARNING! All changes made in this file will be lost!
****************************************************************************/
-#include "useqpe.h"
#include "ToolbarPrefs.h"
#include <qcheckbox.h>
#include <qlabel.h>
#include <qpushbutton.h>
#include <qspinbox.h>
#include <qlayout.h>
#include <qvariant.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
#include <qcombobox.h>
#include <qbuttongroup.h>
#include <qlineedit.h>
#ifdef USEQPE
#include <qpe/menubutton.h>
#endif
CBarPrefs::CBarPrefs(const QString& appdir, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true), config( appdir )
{
setCaption(tr( "Toolbar Settings" ) );
QTabWidget* td = new QTabWidget(this);
misc = new CMiscBarPrefs(this);
filebar = new CFileBarPrefs(config, this);
navbar = new CNavBarPrefs(config, this);
viewbar = new CViewBarPrefs(config, this);
markbar = new CMarkBarPrefs(config, this);
indbar = new CIndBarPrefs(config, this);
td->addTab(filebar, tr("File"));
td->addTab(navbar, tr("Navigation"));
td->addTab(viewbar, tr("View"));
td->addTab(markbar, tr("Marks"));
td->addTab(indbar, tr("Indicators"));
td->addTab(misc, tr("Policy"));
QVBoxLayout* v = new QVBoxLayout(this);
v->addWidget(td);
if (fs) showMaximized();
}
/*
CBarPrefs1::CBarPrefs1( Config& _config, QWidget* parent, const char* name, WFlags fl )
: QWidget( parent, name, fl ), config(_config)
{
config.setGroup( "Toolbar" );
QVBoxLayout* vb = new QVBoxLayout(this);
QGroupBox* bg = new QGroupBox(3, Qt::Horizontal, "File", this);
vb->addWidget(bg);
open = new QCheckBox( tr("Open"), bg );
open->setChecked(config.readBoolEntry( "Open", false ));
connect(open, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
close = new QCheckBox( tr("Close"), bg );
close->setChecked(config.readBoolEntry( "Close", false ));
connect(close, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
info = new QCheckBox( tr("Info"), bg );
info->setChecked(config.readBoolEntry( "Info", false ));
connect(info, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
twotouch = new QCheckBox( tr("Two/One\nTouch"), bg );
twotouch->setChecked(config.readBoolEntry( "Two/One Touch", false ));
connect(twotouch, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
find = new QCheckBox( tr("Find"), bg );
find->setChecked(config.readBoolEntry( "Find", false ));
connect(find, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
bg = new QGroupBox(2, Qt::Horizontal, "Navigation", this);
vb->addWidget(bg);
scroll = new QCheckBox( tr("Scroll"), bg );
scroll->setChecked(config.readBoolEntry( "Scroll", false ));
connect(scroll, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
navigation = new QCheckBox( tr("Back/Home/Forward"), bg );
navigation->setChecked(config.readBoolEntry( "Back/Home/Forward", false ));
connect(navigation, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
page = new QCheckBox( tr("Page\nUp/Down"), bg );
page->setChecked(config.readBoolEntry( "Page Up/Down", false ));
connect(page, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
startend = new QCheckBox( tr("Goto Start/End"), bg );
startend->setChecked(config.readBoolEntry( "Goto Start/End", false ));
connect(startend, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
jump = new QCheckBox( tr("Jump"), bg );
jump->setChecked(config.readBoolEntry( "Jump", false ));
connect(jump, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
pageline = new QCheckBox( tr("Page/Line Scroll"), bg );
pageline->setChecked(config.readBoolEntry( "Page/Line Scroll", false ));
connect(pageline, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
m_isChanged = false;
}
void CBarPrefs1::saveall()
{
config.setGroup( "Toolbar" );
config.writeEntry( "Open", open->isChecked());
config.writeEntry( "Close", close->isChecked());
config.writeEntry( "Info", info->isChecked());
config.writeEntry( "Two/One Touch", twotouch->isChecked());
config.writeEntry( "Find", find->isChecked());
config.writeEntry( "Scroll", scroll->isChecked());
config.writeEntry( "Back/Home/Forward", navigation->isChecked());
config.writeEntry( "Page Up/Down", page->isChecked());
config.writeEntry( "Goto Start/End", startend->isChecked());
config.writeEntry( "Jump", jump->isChecked());
config.writeEntry( "Page/Line Scroll", pageline->isChecked());
}
CBarPrefs1::~CBarPrefs1()
{
}
*/
/*
CBarPrefs2::CBarPrefs2( Config& _config, QWidget* parent, const char* name, WFlags fl )
: QWidget( parent, name, fl ), config(_config)
{
QVBoxLayout* vb = new QVBoxLayout(this);
QGroupBox* bg = new QGroupBox(3, Qt::Horizontal, "View", this);
vb->addWidget(bg);
config.setGroup( "Toolbar" );
fullscreen = new QCheckBox( tr("Fullscreen"), bg );
fullscreen->setChecked(config.readBoolEntry( "Fullscreen", false ));
connect(fullscreen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
rotate = new QCheckBox( tr("Rotate"), bg );
rotate->setChecked(config.readBoolEntry( "Rotate", false ));
connect(rotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
invert = new QCheckBox( tr("Invert"), bg );
invert->setChecked(config.readBoolEntry( "Invert Action", false ));
connect(invert, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
zoom = new QCheckBox( tr("Zoom"), bg );
zoom->setChecked(config.readBoolEntry( "Zoom In/Out", false ));
connect(zoom, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
setfont = new QCheckBox( tr("Set Font"), bg );
setfont->setChecked(config.readBoolEntry( "Set Font", false ));
connect(setfont, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
encoding = new QCheckBox( tr("Encoding"), bg );
encoding->setChecked(config.readBoolEntry("Encoding Select", false));
connect(encoding, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
ideogram = new QCheckBox( tr("Ideogram"), bg );
ideogram->setChecked(config.readBoolEntry("Ideogram Mode", false));
connect(ideogram, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
bg = new QGroupBox(3, Qt::Horizontal, "Marks", this);
vb->addWidget(bg);
mark = new QCheckBox( tr("Bookmark"), bg );
mark->setChecked(config.readBoolEntry( "Mark", false ));
connect(mark, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
annotate = new QCheckBox( tr("Annotate"), bg );
annotate->setChecked(config.readBoolEntry( "Annotate", false ));
connect(annotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
go_to = new QCheckBox( tr("Goto"), bg );
go_to->setChecked(config.readBoolEntry( "Goto", false ));
connect(go_to, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
Delete = new QCheckBox( tr("Delete"), bg );
Delete->setChecked(config.readBoolEntry( "Delete", false ));
connect(Delete, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
autogen = new QCheckBox( tr("Autogen"), bg );
autogen->setChecked(config.readBoolEntry( "Autogen", false ));
connect(autogen, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
clear = new QCheckBox( tr("Clear"), bg );
clear->setChecked(config.readBoolEntry( "Clear", false ));
connect(clear, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
save = new QCheckBox( tr("Save"), bg );
save->setChecked(config.readBoolEntry( "Save", false ));
connect(save, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
tidy = new QCheckBox( tr("Tidy"), bg );
tidy->setChecked(config.readBoolEntry( "Tidy", false ));
connect(tidy, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
block = new QCheckBox( tr("Mark/Copy"), bg );
block->setChecked(config.readBoolEntry( "Start/Copy Block", false ));
connect(block, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
bg = new QGroupBox(1, Qt::Horizontal, "Indicators", this);
vb->addWidget(bg);
indannotate = new QCheckBox( tr("Annotation"), bg );
indannotate->setChecked(config.readBoolEntry( "Annotation indicator", false ));
connect(indannotate, SIGNAL(stateChanged(int)), this, SLOT( isChanged(int) ) );
m_isChanged = false;
}
void CBarPrefs2::saveall()
{
config.setGroup( "Toolbar" );
config.writeEntry( "Fullscreen", fullscreen->isChecked());
config.writeEntry( "Rotate", rotate->isChecked());
config.writeEntry( "Invert Action", invert->isChecked());
config.writeEntry( "Zoom In/Out", zoom->isChecked());
config.writeEntry( "Set Font", setfont->isChecked());
config.writeEntry("Encoding Select", encoding->isChecked());
config.writeEntry("Ideogram Mode", ideogram->isChecked());
diff --git a/noncore/apps/opie-reader/ToolbarPrefs.h b/noncore/apps/opie-reader/ToolbarPrefs.h
index a2686e5..0bdae6b 100644
--- a/noncore/apps/opie-reader/ToolbarPrefs.h
+++ b/noncore/apps/opie-reader/ToolbarPrefs.h
@@ -1,218 +1,216 @@
/****************************************************************************
** Form interface generated from reading ui file 'Prefs.ui'
**
** Created: Tue Feb 11 23:53:32 2003
** by: The User Interface Compiler (uic)
**
** WARNING! All changes made in this file will be lost!
****************************************************************************/
#ifndef CTOOLBARPREFS_H
#define CTOOLBARPREFS_H
-#include "useqpe.h"
#include <qvariant.h>
#include <qwidget.h>
#include <qtabdialog.h>
#include <qtabwidget.h>
#include <qspinbox.h>
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qlineedit.h>
#ifdef USEQPE
#include <qpe/menubutton.h>
#include <qpe/config.h>
#else
#include "preferences.h"
#endif
-//#include "opie.h"
//#ifdef OPIE
#define USECOMBO
//#endif
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
//class QCheckBox;
class QLabel;
//class QSpinBox;
/*
class CBarPrefs1 : public QWidget
{
Q_OBJECT
Config& config;
QCheckBox *open, *close, *info, *twotouch,*find,*scroll,*navigation,*page,*startend,*jump,*pageline;
bool m_isChanged;
private slots:
void isChanged(int _v) { m_isChanged = true; }
public:
CBarPrefs1( Config&, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~CBarPrefs1();
void saveall();
bool isChanged() { return m_isChanged; }
};
*/
class CFileBarPrefs : public QWidget
{
Q_OBJECT
Config& config;
QCheckBox *open, *close, *info, *twotouch, *find, *scroll;
bool m_isChanged;
private slots:
void isChanged(int _v) { m_isChanged = true; }
public:
CFileBarPrefs( Config&, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~CFileBarPrefs();
void saveall();
bool isChanged() { return m_isChanged; }
};
class CNavBarPrefs : public QWidget
{
Q_OBJECT
Config& config;
QCheckBox *scroll, *navback, *navhome, *navforward;
QCheckBox *pageup, *pagedown, *gotostart, *gotoend, *jump, *pageline;
bool m_isChanged;
private slots:
void isChanged(int _v) { m_isChanged = true; }
public:
CNavBarPrefs( Config&, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~CNavBarPrefs();
void saveall();
bool isChanged() { return m_isChanged; }
};
/*
class CBarPrefs2 : public QWidget
{
Q_OBJECT
Config& config;
QCheckBox *fullscreen, *zoom, *setfont, *mark, *annotate, *go_to, *Delete, *autogen, *clear, *save, *tidy, *block, *indannotate, *encoding, *ideogram;
bool m_isChanged;
private slots:
void isChanged(int _v) { m_isChanged = true; }
public:
CBarPrefs2( Config&, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~CBarPrefs2();
void saveall();
bool isChanged() { return m_isChanged; }
};
*/
class CViewBarPrefs : public QWidget
{
Q_OBJECT
Config& config;
QCheckBox *fullscreen, *rotate, *zoomin, *zoomout, *setfont, *encoding, *ideogram, *invert;
bool m_isChanged;
private slots:
void isChanged(int _v) { m_isChanged = true; }
public:
CViewBarPrefs( Config&, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~CViewBarPrefs();
void saveall();
bool isChanged() { return m_isChanged; }
};
class CMarkBarPrefs : public QWidget
{
Q_OBJECT
Config& config;
QCheckBox *mark, *annotate, *go_to, *Delete, *autogen, *clear, *save, *tidy, *startblock, *copyblock;
bool m_isChanged;
private slots:
void isChanged(int _v) { m_isChanged = true; }
public:
CMarkBarPrefs( Config&, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~CMarkBarPrefs();
void saveall();
bool isChanged() { return m_isChanged; }
};
class CIndBarPrefs : public QWidget
{
Q_OBJECT
Config& config;
QCheckBox *indannotate;
bool m_isChanged;
private slots:
void isChanged(int _v) { m_isChanged = true; }
public:
CIndBarPrefs( Config&, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~CIndBarPrefs();
void saveall();
bool isChanged() { return m_isChanged; }
};
class CMiscBarPrefs : public QWidget
{
public:
CMiscBarPrefs( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~CMiscBarPrefs();
#ifdef USECOMBO
QComboBox *tbpolicy, *tbposition, *qtscroll, *localscroll;
#else
MenuButton *tbpolicy, *tbposition, *qtscroll, *localscroll;
#endif
QCheckBox *tbmovable, *floating;
};
class CBarPrefs : public QDialog
{
Q_OBJECT
;
CMiscBarPrefs* misc;
CFileBarPrefs* filebar;
CNavBarPrefs* navbar;
CViewBarPrefs* viewbar;
CMarkBarPrefs* markbar;
CIndBarPrefs* indbar;
Config config;
void keyPressEvent(QKeyEvent* e)
{
switch (e->key())
{
case Key_Escape:
e->accept();
reject();
break;
case Key_Space:
case Key_Return:
e->accept();
accept();
break;
default:
QWidget::keyPressEvent(e);
}
}
public:
CBarPrefs(const QString& appdir, bool fs = true, QWidget* parent = 0, const char* name = 0);
diff --git a/noncore/apps/opie-reader/URLDialog.h b/noncore/apps/opie-reader/URLDialog.h
index 1bcc4bd..792d13a 100644
--- a/noncore/apps/opie-reader/URLDialog.h
+++ b/noncore/apps/opie-reader/URLDialog.h
@@ -1,65 +1,64 @@
/****************************************************************************
** Form interface generated from reading ui file 'Prefs.ui'
**
** Created: Tue Feb 11 23:53:32 2003
** by: The User Interface Compiler (uic)
**
** WARNING! All changes made in this file will be lost!
****************************************************************************/
#ifndef __URLDIALOG_H
#define __URLDIALOG_H
-#include "useqpe.h"
#include <qvariant.h>
#include <qwidget.h>
#include <qtabdialog.h>
#include <qtabwidget.h>
#include <qspinbox.h>
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qlineedit.h>
//#include <qpe/menubutton.h>
#include <qvbuttongroup.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
//class QCheckBox;
class QLabel;
//class QSpinBox;
class CURLDialog : public QDialog
{
Q_OBJECT
QCheckBox *m_localfile, *m_globalfile, *m_clipboard;
#ifndef USEQPE
void keyPressEvent(QKeyEvent* e)
{
switch (e->key())
{
case Key_Escape:
e->accept();
reject();
break;
case Key_Space:
case Key_Return:
e->accept();
accept();
break;
default:
QWidget::keyPressEvent(e);
}
}
#endif
public:
CURLDialog(const QString&, bool fs = true, QWidget* parent = 0, const char* name = 0);
~CURLDialog() {}
bool clipboard() { return m_clipboard->isChecked(); }
bool localfile() { return m_localfile->isChecked(); }
bool globalfile() { return m_globalfile->isChecked(); }
void clipboard(bool _b) { m_clipboard->setChecked(_b); }
void localfile(bool _b) { m_localfile->setChecked(_b); }
void globalfile(bool _b) { m_globalfile->setChecked(_b); }
};
#endif // CPREFS_H
diff --git a/noncore/apps/opie-reader/WeaselCodec/WeaselCodec.pro b/noncore/apps/opie-reader/WeaselCodec/WeaselCodec.pro
index 61e7dc9..f20bdc6 100644
--- a/noncore/apps/opie-reader/WeaselCodec/WeaselCodec.pro
+++ b/noncore/apps/opie-reader/WeaselCodec/WeaselCodec.pro
@@ -1,17 +1,17 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
HEADERS = ztxt.h
SOURCES = ztxt.cpp
INTERFACES =
DESTDIR = $(OPIEDIR)/plugins/reader/codecs
TARGET = Weasel
LIBS += -lreader_pdb -lreader_codec
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/opie-reader/ZText.h b/noncore/apps/opie-reader/ZText.h
index 06e3bf8..199c7da 100644
--- a/noncore/apps/opie-reader/ZText.h
+++ b/noncore/apps/opie-reader/ZText.h
@@ -1,116 +1,115 @@
#ifndef __Text_h
#define __Text_h
#include <stdio.h>
#include <zlib.h>
#include <sys/stat.h>
-#include "useqpe.h"
#include "CExpander.h"
class Text: public CExpander {
gzFile file;
unsigned long fsize;
public:
void suspend()
{
#ifdef USEQPE
if (!bSuspended)
{
bSuspended = true;
suspos = gztell(file);
gzclose(file);
file = NULL;
sustime = time(NULL);
}
#endif
}
void unsuspend()
{
#ifdef USEQPE
if (bSuspended)
{
bSuspended = false;
if (sustime != ((time_t)-1))
{
int delay = time(NULL) - sustime;
if (delay < 10) sleep(10-delay);
}
file = gzopen(fname, "rb");
for (int i = 0; file == NULL && i < 5; i++)
{
sleep(5);
file = gzopen(fname, "rb");
}
if (file == NULL)
{
QMessageBox::warning(NULL, PROGNAME, "Couldn't reopen file");
exit(0);
}
suspos = gzseek(file, suspos, SEEK_SET);
}
#endif
}
Text() : file(NULL) {};
virtual ~Text()
{
if (file != NULL)
{
#ifdef USEQPE
unsuspend();
#endif
gzclose(file);
}
}
int OpenFile(const char *src)
{
if (file != NULL) gzclose(file);
struct stat _stat;
stat(src,&_stat);
fsize = _stat.st_size;
return ((file = gzopen(src,"rb")) == NULL);
}
int getch()
{
#ifdef USEQPE
unsuspend();
#endif
return gzgetc(file);
}
unsigned int locate()
{
#ifdef USEQPE
unsuspend();
#endif
return gztell(file);
}
void locate(unsigned int n)
{
#ifdef USEQPE
unsuspend();
#endif
gzseek(file,n,SEEK_SET);
}
bool hasrandomaccess() { return true; }
void sizes(unsigned long& _file, unsigned long& _text)
{
_text = _file = fsize;
FILE* f = fopen(fname, "rb");
if (f != NULL)
{
unsigned char mn[2];
fread(mn, 1, 2, f);
if ((mn[0] == 31) && (mn[1] == 139))
{
int tmp = sizeof(_text);
fseek(f,-tmp,SEEK_END);
fread(&_text, sizeof(_text), 1, f);
}
fclose(f);
}
}
MarkupType PreferredMarkup()
{
return cTEXT;
}
QString about() { return QString("Text/gzipped text codec (c) Tim Wentford"); }
};
#endif
diff --git a/noncore/apps/opie-reader/codeclib/codeclib.pro b/noncore/apps/opie-reader/codeclib/codeclib.pro
index 6adcda8..c24767b 100644
--- a/noncore/apps/opie-reader/codeclib/codeclib.pro
+++ b/noncore/apps/opie-reader/codeclib/codeclib.pro
@@ -1,17 +1,17 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
HEADERS = pdb.h
SOURCES = CExpander.cpp CBuffer.cpp StyleConsts.cpp \
hrule.cpp Navigation.cpp Bkmks.cpp
INTERFACES =
DESTDIR = $(OPIEDIR)/lib
TARGET = reader_codec
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/opie-reader/ebookcodec.h b/noncore/apps/opie-reader/ebookcodec.h
index b341e55..f6e2daf 100644
--- a/noncore/apps/opie-reader/ebookcodec.h
+++ b/noncore/apps/opie-reader/ebookcodec.h
@@ -1,120 +1,118 @@
#include "CExpander.h"
#include <qfileinfo.h>
#include <qdir.h>
-#include "useqpe.h"
#ifdef USEQPE
#include <qpe/global.h>
#endif
#include "util.h"
-#include "static.h"
#ifndef __STATIC
#include <dlfcn.h>
class ebookcodec : public CExpander_Interface
{
CExpander *codec;
void *handle;
int status;
public:
QString about()
{
return QString("Plug-in ebook codec interface (c) Tim Wentford\n")+codec->about();
}
ebookcodec(const QString& _s) : codec(NULL), handle(NULL), status(0)
{
QString codecpath(QTReaderUtil::getPluginPath());
codecpath += _s;
if (QFile::exists(codecpath))
{
qDebug("Codec:%s", (const char*)codecpath);
handle = dlopen(codecpath, RTLD_LAZY);
if (handle == 0)
{
/*
QString wrn(dlerror());
QString fmt;
while (wrn.length() > 10)
{
fmt += wrn.left(10);
fmt += '\n';
wrn = wrn.right(wrn.length()-10);
}
fmt += wrn;
QMessageBox::warning(NULL, PROGNAME, fmt);
*/
qDebug("Can't find codec:%s", dlerror());
status = -10;
return;
}
CExpander* (*newcodec)();
newcodec = (CExpander* (*)())dlsym(handle, "newcodec");
if (newcodec == NULL)
{
qDebug("Can't find newcodec");
status = -20;
return;
}
codec = (*newcodec)();
}
else
{
qDebug("Can't find codec");
}
if (codec == NULL)
{
qDebug("Can't do newcodec");
status = -30;
return;
}
}
virtual ~ebookcodec()
{
if (codec != NULL) delete codec;
if (handle != NULL) dlclose(handle);
}
size_t getHome() { return codec->getHome(); }
#ifdef USEQPE
void suspend() { codec->suspend(); }
void unsuspend() { codec->unsuspend(); }
void suspend(FILE*& fin) { codec->suspend(fin); }
void unsuspend(FILE*& fin) { codec->unsuspend(fin); }
#endif
unsigned int locate() { return codec->locate(); }
void locate(unsigned int n) { codec->locate(n); }
bool hasrandomaccess() { return codec->hasrandomaccess(); }
void sizes(unsigned long& file, unsigned long& text)
{
codec->sizes(file, text);
//qDebug("Codec sizes:(%u, %u)", file, text);
}
CList<Bkmk>* getbkmklist() { return codec->getbkmklist(); }
void getch(tchar& ch, CStyle& sty, unsigned long& pos) { codec->getch(ch, sty, pos); }
int getch() { return codec->getch(); }
linkType hyperlink(unsigned int n, unsigned int noff, QString& wrd, QString& nm) { return codec->hyperlink(n, noff, wrd, nm); }
MarkupType PreferredMarkup() { return codec->PreferredMarkup(); }
void saveposn(size_t posn) { codec->saveposn(posn); }
void writeposn(size_t posn) { codec->writeposn(posn); }
linkType forward(size_t& loc) { return codec->forward(loc); }
linkType back(size_t& loc) { return codec->back(loc); }
bool hasnavigation() { return codec->hasnavigation(); }
void start2endSection() { codec->start2endSection(); }
QImage* getPicture(unsigned long tgt) { return codec->getPicture(tgt); }
void setSaveData(unsigned char*& data, unsigned short& len, unsigned char* src, unsigned short srclen) { return codec->setSaveData(data, len, src, srclen); }
void putSaveData(unsigned char*& src, unsigned short& srclen) { codec->putSaveData(src, srclen); }
void setContinuous(bool _b) { codec->setContinuous(_b); }
void setwidth(int w) { codec->setwidth(w); }
unsigned long startSection() { return codec->startSection(); }
unsigned long endSection() { return codec->endSection(); }
int openfile(const char *src)
{
//qDebug("ebook openfile:%s", src);
return (status != 0) ? status : codec->openfile(src);
}
int getwidth() { return codec->getwidth(); }
QImage* getPicture(const QString& href) { return codec->getPicture(href); }
bool getFile(const QString& href) { return codec->getFile(href); }
};
#endif
diff --git a/noncore/apps/opie-reader/iSiloCodec/iSiloCodec.pro b/noncore/apps/opie-reader/iSiloCodec/iSiloCodec.pro
index 78d5a49..5cf075e 100644
--- a/noncore/apps/opie-reader/iSiloCodec/iSiloCodec.pro
+++ b/noncore/apps/opie-reader/iSiloCodec/iSiloCodec.pro
@@ -1,19 +1,19 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
#HEADERS = Aportis.h
SOURCES = iSilo.cpp
INTERFACES =
DESTDIR = $(OPIEDIR)/plugins/reader/codecs
TARGET = iSilo
LIBS += -lreader_pdb -lreader_codec
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/opie-reader/main.cpp b/noncore/apps/opie-reader/main.cpp
index 3e1f5e7..af276da 100644
--- a/noncore/apps/opie-reader/main.cpp
+++ b/noncore/apps/opie-reader/main.cpp
@@ -1,50 +1,49 @@
-#include "useqpe.h"
#ifdef USEQPE
#include <qpe/qpeapplication.h>
#else
#include <qapplication.h>
#endif
#include "QTReaderApp.h"
#include "signal.h"
#include "stdio.h"
#include "time.h"
#ifdef USEQPE
QTReaderApp* app = NULL;
void handler(int signum)
{
if (app != NULL)
{
app->suspend();
app->saveprefs();
}
signal(signum, handler);
}
#endif
int main( int argc, char ** argv )
{
#ifdef USEQPE
signal(SIGCONT, handler);
QPEApplication a( argc, argv );
QTReaderApp m;
a.showMainDocumentWidget( &m );
app = &m;
#else
QApplication a( argc, argv );
QTReaderApp m;
a.setMainWidget( &m );
if (argc > 1)
{
m.setDocument(argv[1]);
}
#endif
return a.exec();
}
diff --git a/noncore/apps/opie-reader/pdb.cpp b/noncore/apps/opie-reader/pdb.cpp
index 39551cc..6719af4 100644
--- a/noncore/apps/opie-reader/pdb.cpp
+++ b/noncore/apps/opie-reader/pdb.cpp
@@ -1,90 +1,89 @@
#include "pdb.h"
#ifdef _WINDOWS
#include <winsock2.h>
#endif
-#include "useqpe.h"
#ifdef USEQPE
void Cpdb::suspend()
{
CExpander::suspend(fin);
}
void Cpdb::unsuspend()
{
CExpander::unsuspend(fin);
}
#endif
Cpdb::~Cpdb()
{
if (fin != NULL)
{
#ifdef USEQPE
unsuspend();
#endif
fclose(fin);
}
}
size_t Cpdb::recordpos(int n)
{
UInt16 mxn = ntohs(head.recordList.numRecords);
if (n >= mxn)
{
return file_length;
}
else
{
size_t dataoffset = sizeof(DatabaseHdrType) - sizeof(UInt16);
dataoffset += /*dataoffset%4 + */ sizeof(RecordListType) * n;
fseek(fin, dataoffset, SEEK_SET);
RecordListType hdr;
fread(&hdr, 1, sizeof(hdr), fin);
return ntohl(hdr.nextRecordListID);
}
}
size_t Cpdb::recordlength(int n)
{
return recordpos(n+1)-recordpos(n);
}
void Cpdb::gotorecordnumber(int n)
{
fseek(fin, recordpos(n), SEEK_SET);
}
bool Cpdb::openpdbfile(const char *src)
{
//qDebug("cpdb openfile:%s", src);
// printf("In openfile\n");
// printf("closing fin:%x\n",fin);
if (fin != NULL) fclose(fin);
// printf("opening fin\n");
fin = fopen(src,"rb");
if (fin==0)
{
return false;
}
// just holds the first few chars of the file
// char buf[0x100];
struct stat _stat;
stat(src,&_stat);
file_length = _stat.st_size;
// fseek(fin,0,SEEK_END);
// file_length = ftell(fin);
fseek(fin,0,SEEK_SET);
fread(&head, 1, sizeof(head), fin);
qDebug("Database name:%s", head.name);
qDebug("Total number of records:%u", ntohs(head.recordList.numRecords));
return true;
}
diff --git a/noncore/apps/opie-reader/pdb.h b/noncore/apps/opie-reader/pdb.h
index 7a6580d..7458919 100644
--- a/noncore/apps/opie-reader/pdb.h
+++ b/noncore/apps/opie-reader/pdb.h
@@ -1,101 +1,100 @@
/*
* This header file defines some structures and types normally found in the
* Palm SDK. However, I don't want to require the presense of the SDK for a
* small utility since most Palm owners won't have it.
*
* $Id$
*
*/
#ifndef __PDB_H__
#define __PDB_H__
#ifndef _WINDOWS
#include <netinet/in.h>
#endif
#include <stdio.h>
-#include "useqpe.h"
#include "CExpander.h"
/* Normal Palm typedefs */
typedef unsigned char UInt8;
typedef unsigned short UInt16;
typedef signed short Int16;
typedef unsigned long UInt32;
typedef UInt32 LocalID;
/* Max length of DB name */
#define dmDBNameLength 0x20
/************************************************************
* Structure of a Record entry
*************************************************************/
typedef struct {
LocalID localChunkID; // local chunkID of a record
UInt8 attributes; // record attributes;
UInt8 uniqueID[3]; // unique ID of record; should
// not be 0 for a legal record.
} RecordEntryType;
/************************************************************
* Structure of a record list extension. This is used if all
* the database record/resource entries of a database can't fit into
* the database header.
*************************************************************/
typedef struct {
LocalID nextRecordListID; // local chunkID of next list
UInt16 numRecords; // number of records in this list
UInt16 firstEntry; // array of Record/Rsrc entries
// starts here
} RecordListType;
/************************************************************
* Structure of a Database Header
*************************************************************/
typedef struct {
UInt8 name[dmDBNameLength]; // name of database
UInt16 attributes; // database attributes
UInt16 version; // version of database
UInt32 creationDate; // creation date of database
UInt32 modificationDate; // latest modification date
UInt32 lastBackupDate; // latest backup date
UInt32 modificationNumber; // modification number of database
LocalID appInfoID; // application specific info
LocalID sortInfoID; // app specific sorting info
UInt32 type; // database type
UInt32 creator; // database creator
UInt32 uniqueIDSeed; // used to generate unique IDs.
// Note that only the low order
// 3 bytes of this is used (in
// RecordEntryType.uniqueID).
// We are keeping 4 bytes for
// alignment purposes.
RecordListType recordList; // first record list
} DatabaseHdrType;
class Cpdb : public CExpander
{
protected:
size_t file_length;
FILE* fin;
size_t recordpos(int);
size_t recordlength(int);
void gotorecordnumber(int);
DatabaseHdrType head;
bool openpdbfile(const char* src);
Cpdb() : fin(NULL) {}
~Cpdb();
#ifdef USEQPE
void suspend();
void unsuspend();
#endif
public:
virtual void sizes(unsigned long& _file, unsigned long& _text) = 0;
};
#endif
diff --git a/noncore/apps/opie-reader/pdblib/pdblib.pro b/noncore/apps/opie-reader/pdblib/pdblib.pro
index cb861a8..830d988 100644
--- a/noncore/apps/opie-reader/pdblib/pdblib.pro
+++ b/noncore/apps/opie-reader/pdblib/pdblib.pro
@@ -1,16 +1,16 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
HEADERS = pdb.h
SOURCES = pdb.cpp
INTERFACES =
DESTDIR = $(OPIEDIR)/lib
TARGET = reader_pdb
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/opie-reader/plucker.cpp b/noncore/apps/opie-reader/plucker.cpp
index d1ccd6f..4ea807a 100644
--- a/noncore/apps/opie-reader/plucker.cpp
+++ b/noncore/apps/opie-reader/plucker.cpp
@@ -1,215 +1,213 @@
-#include "useqpe.h"
#include <stdio.h>
#include <string.h>
#include <qmessagebox.h>
#include <qpixmap.h>
#ifdef USEQPE
#include <qpe/qcopenvelope_qws.h>
#endif
#ifdef LOCALPICTURES
#include <qscrollview.h>
#endif
#ifdef USEQPE
#include <qpe/global.h>
#include <qpe/qpeapplication.h>
#else
#include <qapplication.h>
#endif
#include <qclipboard.h>
#include "plucker.h"
#include "Aportis.h"
#include "Palm2QImage.h"
-#include "static.h"
struct CPlucker_dataRecord
{
UInt16 uid;
UInt16 nParagraphs;
UInt16 size;
UInt8 type;
UInt8 reserved;
};
int CPlucker::HeaderSize()
{
return sizeof(CPlucker_dataRecord);
}
void CPlucker::GetHeader(UInt16& uid, UInt16& nParagraphs, UInt32& size, UInt8& type, UInt8& reserved)
{
CPlucker_dataRecord thishdr;
fread(&thishdr, 1, HeaderSize(), fin);
uid = ntohs(thishdr.uid);
nParagraphs = ntohs(thishdr.nParagraphs);
size = ntohs(thishdr.size);
type = thishdr.type;
reserved = thishdr.reserved;
}
CPlucker::CPlucker()
{ /*printf("constructing:%x\n",fin);*/
EOPPhase = 0;
}
bool CPlucker::CorrectDecoder()
{
return (memcmp(&head.type, "DataPlkr", 8) == 0);
}
int CPlucker::bgetch()
{
int ch = EOF;
if (bufferpos >= buffercontent)
{
if (isEndOfSection(bufferrec))
{
if (!m_continuous) return EOF;
}
if (bufferrec >= ntohs(head.recordList.numRecords) - 1)
{
return EOF;
}
if (!expand(bufferrec+1))
{
return EOF;
}
mystyle.unset();
if (m_ParaOffsets[m_nextParaIndex] == 0)
{
while (m_ParaOffsets[m_nextParaIndex+1] == 0)
{
// qDebug("Skipping extraspace:%d", m_ParaAttrs[m_nextParaIndex]&7);
m_nextParaIndex++;
}
}
mystyle.setExtraSpace((m_ParaAttrs[m_nextParaIndex]&7)*2);
// qDebug("Using extraspace:%d", m_ParaAttrs[m_nextParaIndex]&7);
ch = 10;
if (m_continuous) EOPPhase = 4;
}
else if (bufferpos == m_nextPara)
{
while (bufferpos == m_nextPara)
{
UInt16 attr = m_ParaAttrs[m_nextParaIndex];
m_nextParaIndex++;
// qDebug("Skipping extraspace:%d", m_ParaAttrs[m_nextParaIndex]&7);
if (m_nextParaIndex == m_nParas)
{
m_nextPara = -1;
}
else
{
m_nextPara += m_ParaOffsets[m_nextParaIndex];
}
}
mystyle.unset();
mystyle.setExtraSpace((m_ParaAttrs[m_nextParaIndex]&7)*2);
// qDebug("Using extraspace:%d", m_ParaAttrs[m_nextParaIndex]&7);
if (m_lastBreak == locate())
{
currentpos++;
ch = expandedtextbuffer[bufferpos++];
}
else
{
ch = 10;
}
}
else
{
currentpos++;
ch = expandedtextbuffer[bufferpos++];
}
return ch;
}
tchar CPlucker::getch(bool fast)
{
mystyle.clearPicture();
if (EOPPhase > 0)
{
int ch = 10;
switch (EOPPhase)
{
case 4:
if (!fast) mystyle.setPicture(false, hRule(100,5));
mystyle.setCentreJustify();
ch = '#';
break;
case 3:
mystyle.setFontSize(3);
ch = 10;
break;
case 2:
ch = 10;
break;
case 1:
mystyle.unset();
default:
ch = 10;
}
EOPPhase--;
return ch;
}
return getch_base(fast);
}
QImage* CPlucker::imagefromdata(UInt8* imgbuffer, UInt32 imgsize)
{
QImage* qimage = Palm2QImage(imgbuffer, imgsize);
delete [] imgbuffer;
return qimage;
}
void CPlucker::start2endSection() // to plucker base
{
m_currentstart = NEFstartSection();
m_currentend = NEFendSection();
}
unsigned long CPlucker::NEFstartSection() // virtual in plucker base - differs only in obsoleted nef so move implementation
{
//inefficient - Should calc start/end of section on entry to section?
UInt16 thishdr_uid, thishdr_nParagraphs;
UInt32 thishdr_size;
UInt8 thishdr_type, thishdr_reserved;
unsigned long textlength = currentpos-bufferpos;
for (UInt16 recptr = bufferrec-1; recptr >= 1; recptr--)
{
gotorecordnumber(recptr);
//qDebug("recptr:%u", recptr);
GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
if (thishdr_type < 2)
{
if ((thishdr_reserved && continuation_bit) == 0) break;
textlength -= thishdr_size;
//qDebug("Textlength:%u, reserved:%u, recptr:%u", textlength, thishdr_reserved, recptr);
}
}
return textlength;
}
unsigned long CPlucker::NEFendSection() // virtual in plucker base - differs only in obsoleted nef so move implementation
{
//inefficient - Should calc start/end of section on entry to section?
unsigned long textlength = currentpos-bufferpos+buffercontent;
gotorecordnumber(bufferrec);
UInt16 thishdr_uid, thishdr_nParagraphs;
UInt32 thishdr_size;
UInt8 thishdr_type, thishdr_reserved;
GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
if ((thishdr_reserved && continuation_bit) != 0)
{
for (UInt16 recptr = bufferrec+1; recptr < ntohs(head.recordList.numRecords); recptr++)
{
gotorecordnumber(recptr);
UInt16 thishdr_uid, thishdr_nParagraphs;
UInt32 thishdr_size;
UInt8 thishdr_type, thishdr_reserved;
GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
// qDebug("recptr %u bufferrec %u type %u m_reserved %u", recptr, bufferrec, typ
diff --git a/noncore/apps/opie-reader/plucker_base.cpp b/noncore/apps/opie-reader/plucker_base.cpp
index 0b7fae8..d7d538f 100644
--- a/noncore/apps/opie-reader/plucker_base.cpp
+++ b/noncore/apps/opie-reader/plucker_base.cpp
@@ -1,216 +1,214 @@
-#include "useqpe.h"
#include "usenef.h"
#include <stdio.h>
#include <string.h>
#include <qmessagebox.h>
#include <qpixmap.h>
#ifdef USEQPE
#include <qpe/qcopenvelope_qws.h>
#endif /* USEQPE */
#ifdef LOCALPICTURES
#include <qscrollview.h>
#endif
#ifdef USEQPE
#include <qpe/global.h>
#endif /* USEQPE */
#include <qclipboard.h>
#ifndef USEQPE
#include <qapplication.h>
#else /* USEQPE */
#include <qpe/qpeapplication.h>
#endif /* USEQPE */
#include <qimage.h>
-#include "static.h"
#include "plucker_base.h"
#include "Aportis.h"
#include "hrule.h"
#include "util.h"
const UInt8 CPlucker_base::continuation_bit = 1;
CPlucker_base::CPlucker_base() :
#ifdef LOCALPICTURES
m_viewer(NULL),
m_picture(NULL),
#endif
expandedtextbuffer(NULL),
compressedtextbuffer(NULL),
bufferrec(-1),
m_offset(0)
//, urls(NULL)
{ /*printf("constructing:%x\n",fin);*/ }
void CPlucker_base::Expand(UInt32 reclen, UInt8 type, UInt8* buffer, UInt32 buffersize)
{
if (type%2 == 0)
{
fread(buffer, reclen, sizeof(char), fin);
}
else
{
UInt8* readbuffer = NULL;
if (reclen > compressedbuffersize)
{
readbuffer = new UInt8[reclen];
}
else
{
readbuffer = compressedtextbuffer;
}
if (readbuffer != NULL)
{
fread(readbuffer, reclen, sizeof(char), fin);
(*m_decompress)(readbuffer, reclen, buffer, buffersize);
if (reclen > compressedbuffersize)
{
delete [] readbuffer;
}
}
}
}
void CPlucker_base::sizes(unsigned long& _file, unsigned long& _text)
{
_file = file_length;
if (textlength == 0)
{
for (int recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++)
{
gotorecordnumber(recptr);
UInt16 thishdr_uid, thishdr_nParagraphs;
UInt32 thishdr_size;
UInt8 thishdr_type, thishdr_reserved;
GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
if (thishdr_type < 2) textlength += thishdr_size;
}
}
_text = textlength;
//ntohl(hdr0.size);
}
char* CPlucker_base::geturl(UInt16 tgt)
{
char * pRet = NULL;
gotorecordnumber(0);
fread(&hdr0, 1, 6, fin);
unsigned int nrecs = ntohs(hdr0.nRecords);
//qDebug("Version %u, no. recs %u", ntohs(hdr0.version), nrecs);
UInt16 urlid = 0;
bool urlsfound = false;
char* urls = NULL;
size_t urlsize = 0;
for (unsigned int i = 0; i < nrecs; i++)
{
UInt16 id, name;
fread(&name, 1, sizeof(name), fin);
fread(&id, 1, sizeof(id), fin);
//qDebug("N:%d, I:%d", ntohs(name), ntohs(id));
if (ntohs(name) == 2)
{
urlsfound = true;
urlid = id;
//qDebug("Found url index:%d", ntohs(urlid));
}
// //qDebug("%x", id);
}
if (urlsfound)
{
unsigned short recptr = finduid(ntohs(urlid));
if (recptr != 0)
{
gotorecordnumber(recptr);
UInt16 thishdr_uid, thishdr_nParagraphs;
UInt32 thishdr_size;
UInt8 thishdr_type, thishdr_reserved;
GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
UInt16 urlctr = 0;
while (1)
{
UInt16 tctr;
fread(&tctr, 1, sizeof(tctr), fin);
fread(&urlid, 1, sizeof(urlid), fin);
tctr = ntohs(tctr);
//qDebug("tgt:%u urlctr:%u tctr:%u", tgt, urlctr, tctr);
if (tctr >= tgt)
{
break;
}
urlctr = tctr;
}
//qDebug("urls are in %d", ntohs(urlid));
recptr = finduid(ntohs(urlid));
if (recptr != 0)
{
UInt32 reclen = recordlength(recptr) - HeaderSize();
gotorecordnumber(recptr);
GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
//qDebug("Found urls:%x",thishdr_type);
urlsize = thishdr_size;
urls = new char[urlsize];
Expand(reclen, thishdr_type, (UInt8*)urls, urlsize);
char* ptr = urls;
int rn = urlctr+1;
while (ptr - urls < urlsize)
{
if (rn == tgt)
{
//qDebug("URL:%s", ptr);
int len = strlen(ptr)+1;
pRet = new char[len];
memcpy(pRet, ptr, len);
break;
}
ptr += strlen(ptr)+1;
rn++;
}
delete [] urls;
}
}
}
else
{
pRet = NULL;
}
return pRet;
}
CPlucker_base::~CPlucker_base()
{
if (expandedtextbuffer != NULL) delete [] expandedtextbuffer;
if (compressedtextbuffer != NULL) delete [] compressedtextbuffer;
#ifdef LOCALPICTURES
if (m_viewer != NULL) delete m_viewer;
#endif
}
int CPlucker_base::getch() { return getch(false); }
void CPlucker_base::getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
pos = locate();
ch = getch(false);
sty = mystyle;
}
unsigned int CPlucker_base::locate()
{
return currentpos;
/*
UInt16 thisrec = 1;
unsigned long locpos = 0;
gotorecordnumber(thisrec);
UInt16 thishdr_uid, thishdr_nParagraphs;
UInt32 thishdr_size;
UInt8 thishdr_type, thishdr_reserved;
while (thisrec < bufferrec)
{
GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
if (thishdr_type < 2) locpos += thishdr_size;
thisrec++;
gotorecordnumber(thisrec);
}
return locpos+bufferpos;
*/
}
@@ -1170,242 +1168,241 @@ tchar CPlucker_base::getch_base(bool fast)
mystyle.setFontSize(1);
mystyle.setBold();
break;
case 4:
mystyle.setFontSize(0);
mystyle.setBold();
break;
case 5:
mystyle.setFontSize(0);
mystyle.setBold();
break;
case 6:
mystyle.setFontSize(0);
mystyle.setBold();
break;
case 7:
mystyle.setFontSize(0);
mystyle.setBold();
break;
case 8: // should be fixed width
//qDebug("Trying fixed width");
mystyle.setFontSize(0);
mystyle.setMono();
break;
case 9:
// mystyle.setFontSize(mystyle.getFontSize());
mystyle.setFontSize(-1);
break;
case 10:
mystyle.setFontSize(-2);
mystyle.setVOffset(1);
break;
case 11:
mystyle.setFontSize(-2);
mystyle.setVOffset(-1);
break;
default:
qDebug("Unrecognised font");
break;
}
ch = bgetch();
}
break;
case 0x29:
ch = bgetch();
switch (ch)
{
case 0:
mystyle.setLeftJustify();
// //qDebug("left");
break;
case 1:
mystyle.setRightJustify();
// //qDebug("right");
break;
case 2:
mystyle.setCentreJustify();
// //qDebug("centre");
break;
case 3:
mystyle.setFullJustify();
// //qDebug("full");
break;
}
ch = bgetch();
break;
case 0x53:
{
int r = bgetch();
int g = bgetch();
int b = bgetch();
mystyle.setColour(r,g,b);
ch = bgetch();
}
break;
case 0x1a:
case 0x5c:
{
bool hasalternate = (ch == 0x5c);
UInt16 ir = bgetch();
ir = (ir << 8) + bgetch();
if (hasalternate)
{
//qDebug("Alternate image:%x", ir);
UInt16 ir2 = bgetch();
ir2 = (ir2 << 8) + bgetch();
if (!fast) mystyle.setPicture(true, expandimg(ir2, true), true, ir << 16);
#ifdef LOCALPICTURES
UInt32 ln = ir;
ln <<= 16;
mystyle.setLink(true);
mystyle.setData(ln);
#endif
}
else
{
if (!fast) mystyle.setPicture(true, expandimg(ir));
}
// if (mystyle.getLink()) qDebug("Picture link!");
ch = '#';
}
// ch = bgetch();
break;
case 0x33:
{
UInt8 h = bgetch();
UInt8 wc = bgetch();
UInt8 pc = bgetch();
UInt16 w = wc;
// //qDebug("h,w,pc [%u, %u, %u]", h, w, pc);
if (w == 0)
{
w = (m_scrWidth*(unsigned long)pc)/100;
}
if (w == 0) w = m_scrWidth;
mystyle.setPicture(false, hRule(w,h,mystyle.Red(),mystyle.Green(),mystyle.Blue()));
// if (mystyle.getLink()) //qDebug("hRule link!");
ch = '#';
}
break;
case 0x60:
mystyle.setUnderline();
ch = bgetch();
break;
case 0x68:
mystyle.unsetUnderline();
ch = bgetch();
break;
case 0x22:
ch = bgetch();
mystyle.setLeftMargin(ch);
// //qDebug("Left margin:%d", ch);
ch = bgetch();
mystyle.setRightMargin(ch);
// //qDebug("Right margin:%d", ch);
ch = bgetch();
break;
case 0x70:
mystyle.setStrikethru();
ch = bgetch();
break;
case 0x78:
mystyle.unsetStrikethru();
ch = bgetch();
break;
case 0x83:
{
int tlen = bgetch();
ch = bgetch();
ch <<= 8;
ch |= (tchar)bgetch();
for (int i = 0; i < tlen; i++) bgetch();
//qDebug("Function 83");
}
break;
case 0x9a:
{
m_offset = 255*bgetch();
m_offset += bgetch();
qDebug("Found offset:%u", m_offset);
ch = bgetch();
}
break;
case 0x85:
default:
qDebug("Function:%x NOT IMPLEMENTED", ch);
{
int skip = ch & 7;
for (int i = 0; i < skip; i++)
{
ch = bgetch();
//qDebug("Arg %d, %d", i, ch);
}
ch = bgetch();
}
}
}
if (m_lastIsBreak && !mystyle.isMono())
{
while (ch == ' ')
{
ch = getch(false);
}
}
m_lastIsBreak = (ch == 10);
return (ch == EOF) ? UEOF : ch;
}
-#include "static.h"
#if defined(__STATIC) && defined(USENEF)
#include "Model.h"
void (*CPlucker_base::getdecompressor(const QString& _s))(UInt8*, size_t, UInt8*, size_t)
{
if (_s == "PluckerDecompress3")
{
return PluckerDecompress3;
}
if (_s == "PluckerDecompress4")
{
return PluckerDecompress4;
}
return NULL;
}
#else
#include "qfileinfo.h"
#include <dlfcn.h>
void (*CPlucker_base::getdecompressor(const QString& _s))(UInt8*, size_t, UInt8*, size_t)
{
QString codecpath(QTReaderUtil::getPluginPath("support"));
codecpath += "/libpluckerdecompress.so";
qDebug("Codec:%s", (const char*)codecpath);
if (QFile::exists(codecpath))
{
qDebug("Codec:%s", (const char*)codecpath);
void* handle = dlopen(codecpath, RTLD_LAZY);
if (handle == 0)
{
qDebug("Can't find codec:%s", dlerror());
return NULL;
}
return (void (*)(UInt8*, size_t, UInt8*, size_t))dlsym(handle, _s);
}
return NULL;
}
#endif
QString CPlucker_base::about()
{
QString abt = "Plucker base codec (c) Tim Wentford";
if (m_decompress != UnDoc && m_decompress != UnZip)
{
abt += "\nSpecial decompression (c) Tim Wentford";
}
return abt;
}
diff --git a/noncore/apps/opie-reader/pluckerbaselib/pluckerbaselib.pro b/noncore/apps/opie-reader/pluckerbaselib/pluckerbaselib.pro
index bee1a2d..7c2f31e 100644
--- a/noncore/apps/opie-reader/pluckerbaselib/pluckerbaselib.pro
+++ b/noncore/apps/opie-reader/pluckerbaselib/pluckerbaselib.pro
@@ -1,18 +1,18 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
HEADERS = pdb.h \
util.h
SOURCES = plucker_base.cpp
INTERFACES =
DESTDIR = $(OPIEDIR)/lib
TARGET = reader_pluckerbase
LIBS += -ldl
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/opie-reader/ppm_expander.cpp b/noncore/apps/opie-reader/ppm_expander.cpp
index ea5b955..2a4318b 100644
--- a/noncore/apps/opie-reader/ppm_expander.cpp
+++ b/noncore/apps/opie-reader/ppm_expander.cpp
@@ -1,116 +1,115 @@
/*
* Interface pour le programme de compression
* (c) 1995 Fabrice Bellard
*/
#include <stdlib.h>
//#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
-#include "static.h"
/***************************************************************************
* Interface avec les routines de compression
*/
#define METHOD_NB 2 /* nombre total de méthodes de compression */
#define METHOD_STORE 0
#define METHOD_PPM 1
#define DEFAULT_SUFFIX ".st" /* extension par défault */
/* signature en début de fichier */
#define STAT_MAGIC_SIZE 4
char stat_magic[STAT_MAGIC_SIZE]={'P','P','M','S'};
#include "ppm_expander.h"
ppm_expander::~ppm_expander() {
if (needppmend) ppm.PPM_End();
ppm.arith.Arith_DecodeEnd();
if (buf_in!=NULL) delete [] buf_in;
if (buf_out!=NULL) delete [] buf_out;
if (my_read_buf != NULL) delete my_read_buf;
if (my_file_in != NULL) fclose(my_file_in);
}
int ppm_expander::OpenFile(const char* infile)
{
my_file_in=fopen(infile,"rb");
my_read_buf = new PPM_ReadBuf(my_file_in);
return home();
}
void ppm_expander::sizes(unsigned long& file, unsigned long& text)
{
struct stat _stat;
fstat(fileno(my_file_in),&_stat);
file = _stat.st_size;
text = numblocks*blocksize;
}
int ppm_expander::home()
{
fseek(my_file_in,0, SEEK_SET);
unsigned char header[STAT_MAGIC_SIZE];
size_t len=fread(header,1,STAT_MAGIC_SIZE,my_file_in);
if (strncmp((char*)header,stat_magic,STAT_MAGIC_SIZE)!=0) {
return 1;
}
if (len!=(STAT_MAGIC_SIZE)) {
return 1;
}
if (fread(&maxnode,sizeof(maxnode),1,my_file_in) != 1) return 1;
if (fread(&blocksize,sizeof(blocksize),1,my_file_in) != 1) return 1;
if (fread(&numblocks,sizeof(numblocks),1,my_file_in) != 1) return 1;
//fprintf(stderr,"<%u,%u,%u>\n",maxnode,blocksize,numblocks);
locate(0,0);
outbytes = 0;
return 0;
}
void ppm_expander::locate(unsigned int n) {
locate(n/blocksize, n%blocksize);
outbytes = n;
}
void ppm_expander::locate(unsigned short block, unsigned int n)
{
if (needppmend)
{
ppm.PPM_End();
needppmend = false;
}
size_t fpos;
fseek(my_file_in,STAT_MAGIC_SIZE+sizeof(maxnode)+sizeof(blocksize)+sizeof(numblocks)+block*sizeof(fpos),SEEK_SET);
fread(&fpos,sizeof(fpos),1,my_file_in);
fseek(my_file_in,fpos,SEEK_SET);
ppm.arith.Arith_DecodeInit(my_read_buf,buf_in,bufsize);
int err=ppm.PPM_Init(maxnode);
needppmend = true;
curblock = block;
for (int i = 0; i < n; i++) getch();
}
int ppm_expander::getch() {
if (curblock >= numblocks) return EOF;
int c=ppm.PPM_Decode();
if (c == SYM_EOF)
{
if (++curblock >= numblocks) return EOF;
locate(curblock,0);
c = ppm.PPM_Decode();
}
outbytes++;
return (c==SYM_EOF) ? EOF : c;
}
#ifndef __STATIC
extern "C"
{
CExpander* newcodec() { return new ppm_expander; }
}
#endif
diff --git a/noncore/apps/opie-reader/ppm_expander.h b/noncore/apps/opie-reader/ppm_expander.h
index a1a3b60..ccc89c2 100644
--- a/noncore/apps/opie-reader/ppm_expander.h
+++ b/noncore/apps/opie-reader/ppm_expander.h
@@ -1,62 +1,61 @@
#ifndef __ppm_expander_h
#define __ppm_expander_h
-#include "useqpe.h"
#include "CExpander.h"
#include <sys/stat.h>
#include "utypes.h"
#include "ppm.h"
#include "arith.h"
#define SYM_EOF 256
class ppm_expander : public CExpander {
UCHAR *buf_in,*buf_out;
unsigned int bufsize;
unsigned int outbytes;
unsigned long blocksize;
unsigned short numblocks;
unsigned short curblock;
unsigned short maxnode;
bool needppmend;
int home();
FILE* my_file_in;
PPM_ReadBuf* my_read_buf;
ppm_worker ppm;
public:
QString about() { return QString("ppms Codec (c) Tim Wentford\nCompression code (c) Fabrice Bellard"); }
#ifdef USEQPE
void suspend()
{
CExpander::suspend(my_file_in);
}
void unsuspend()
{
CExpander::unsuspend(my_file_in);
}
#endif
ppm_expander() : needppmend(false), my_file_in(NULL), my_read_buf(NULL)
{
bufsize = 1024;
buf_in = new UCHAR[bufsize];
buf_out = new UCHAR[bufsize];
outbytes = 0;
}
int OpenFile(const char* infile);
int getch();
void locate(unsigned short block, unsigned int n);
virtual ~ppm_expander();
unsigned int locate() { return outbytes; }
void locate(unsigned int n);
bool hasrandomaccess() { return (numblocks > 1); }
void sizes(unsigned long& file, unsigned long& text);
MarkupType PreferredMarkup()
{
return cTEXT;
}
};
#endif
diff --git a/noncore/apps/opie-reader/ppmsCodec/ppmsCodec.pro b/noncore/apps/opie-reader/ppmsCodec/ppmsCodec.pro
index 8699d3b..d6ec97b 100644
--- a/noncore/apps/opie-reader/ppmsCodec/ppmsCodec.pro
+++ b/noncore/apps/opie-reader/ppmsCodec/ppmsCodec.pro
@@ -1,19 +1,19 @@
DEFINES += OPIE USEQPE
VPATH = ..
TEMPLATE = lib
CONFIG = qt warn_on release dll
HEADERS = Aportis.h
SOURCES = ppm_expander.cpp \
ppm.cpp \
arith_d.cpp
INTERFACES =
DESTDIR = $(OPIEDIR)/plugins/reader/codecs
TARGET = ppms
LIBS += -lreader_codec
-INCLUDEPATH += ../OREADERINC $(OPIEDIR)/include
-DEPENDPATH += ../OREADERINC $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += $(OPIEDIR)/include
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/apps/opie-reader/preferences.cpp b/noncore/apps/opie-reader/preferences.cpp
index b9397cf..0f59a22 100755
--- a/noncore/apps/opie-reader/preferences.cpp
+++ b/noncore/apps/opie-reader/preferences.cpp
@@ -1,105 +1,104 @@
-#include "useqpe.h"
#ifndef USEQPE
#include "preferences.h"
#include <qfile.h>
#include <qtextstream.h>
Config::Config(const QString& _fn) : fname(_fn)
{
// qDebug("Config::Config:%s", (const char*)fname);
QFile fl(fname);
if (fl.open(IO_ReadOnly))
{
QTextStream t(&fl);
QString key, value;
while (!t.eof())
{
QString data = t.readLine();
int colon = data.find(':');
if (colon > 0)
{
QString key = data.left(colon);
QString value = data.right(data.length()-colon-1);
values[key] = value;
}
}
fl.close();
}
// read entries into values
}
Config::~Config()
{
// qDebug("Config::~Config:%s", (const char*)fname);
QFile fl(fname);
if (fl.open(IO_WriteOnly))
{
QTextStream t(&fl);
for (QMap<QString,QString>::Iterator iter = values.begin();
iter != values.end();
iter++)
{
t << iter.key() << ':' << iter.data() << '\n';
}
fl.close();
}
}
QString Config::readEntry(const QString& key, const QString& deflt)
{
QMap<QString,QString>::Iterator iter = values.find(key);
if (iter != values.end())
{
return iter.data();
}
else
{
return deflt;
}
}
bool Config::readBoolEntry(const QString& key, const bool deflt)
{
bool ok;
QMap<QString,QString>::Iterator iter = values.find(key);
if (iter != values.end())
{
int ret = iter.data().toInt(&ok);
return ((ok) ? !!ret : deflt);
}
else
{
return deflt;
}
}
int Config::readNumEntry(const QString& key, const int deflt)
{
bool ok;
QMap<QString,QString>::Iterator iter = values.find(key);
if (iter != values.end())
{
int ret = iter.data().toInt(&ok);
return ((ok) ? ret : deflt);
}
else
{
return deflt;
}
}
void Config::writeEntry(const QString& key, const QString& value)
{
values[key] = value;
}
void Config::writeEntry(const QString& key, const bool value)
{
values[key] = (value) ? "1" : "0";
}
void Config::writeEntry(const QString& key, const int value)
{
QString rhs;
rhs.setNum(value);
values[key] = rhs;
}
#endif
diff --git a/noncore/apps/opie-reader/preferences.h b/noncore/apps/opie-reader/preferences.h
index 69d1774..aeb2a84 100644
--- a/noncore/apps/opie-reader/preferences.h
+++ b/noncore/apps/opie-reader/preferences.h
@@ -1,27 +1,26 @@
-#include "useqpe.h"
#ifndef USEQPE
#ifndef __PREFERENCES_H
#define __PREFERENCES_H
#include <qstring.h>
#include <qmap.h>
class Config
{
QMap<QString, QString> values;
QString fname;
public:
Config(const QString& fname);
~Config();
void setGroup(const QString& s) { }
QString readEntry(const QString&, const QString&);
bool readBoolEntry(const QString&, const bool);
int readNumEntry(const QString&, const int);
void writeEntry(const QString&, const QString&);
void writeEntry(const QString&, const bool);
void writeEntry(const QString&, const int);
};
#endif // PREFERENCES
#endif
diff --git a/noncore/apps/opie-reader/static.h b/noncore/apps/opie-reader/static.h
deleted file mode 100644
index e69de29..0000000
--- a/noncore/apps/opie-reader/static.h
+++ b/dev/null
diff --git a/noncore/apps/opie-reader/striphtml.cpp b/noncore/apps/opie-reader/striphtml.cpp
index 9cd6a0d..e86402b 100644
--- a/noncore/apps/opie-reader/striphtml.cpp
+++ b/noncore/apps/opie-reader/striphtml.cpp
@@ -1,197 +1,196 @@
#include <qmap.h>
#include <qfileinfo.h>
#include <qtextstream.h>
#include <qdir.h>
-#include "useqpe.h"
#ifdef USEQPE
#include <qpe/global.h>
#endif
#include "CDrawBuffer.h"
#include "striphtml.h"
#include "hrule.h"
#include "util.h"
#include <qregexp.h>
#include <qimage.h>
#include <qpixmap.h>
//#include <qprogressdialog.h>
//#include <qapplication.h>
static unsigned char h2i(unsigned char c)
{
unsigned char ret = 0;
if ('0' <= c && c <= '9')
{
ret = c - '0';
}
else if ('a' <= c && c <= 'f')
{
ret = c - 'a' + 10;
}
return ret;
}
static void parse_color(const QString& attr, unsigned char& r, unsigned char& g, unsigned char& b)
{
r = g = b = 0;
if (attr.length() >= 7 && attr[0] == '#')
{
r = h2i(attr[1].unicode());
r = 16*r + h2i(attr[2].unicode());
g = h2i(attr[3].unicode());
g = 16*g + h2i(attr[4].unicode());
b = h2i(attr[5].unicode());
b = 16*b + h2i(attr[6].unicode());
}
else if (attr == "red")
{
r = 255;
}
else if (attr == "green")
{
g = 255;
}
else if (attr == "blue")
{
b = 255;
}
else if (attr == "white")
{
r = g = b = 255;
}
else if (attr == "black")
{
r = g = b = 0;
}
else
{
qDebug("Don't understand colour \"%s\"", (const char*)attr);
}
}
CNavigation_base<htmlmark> striphtml::m_nav;
void striphtml::skipblock(const QString& _ent)
{
tchar ch = '>';
CStyle dummy;
QString ent;
unsigned long pos;
do
{
while (ch != '<' && ch != UEOF)
{
mygetch(ch, dummy, pos);
}
ch = skip_ws();
ent = getname(ch, " >").lower();
qDebug("Skipblock:%s", (const char*)ent);
} while (ent != _ent && ch != UEOF);
}
void striphtml::locate(unsigned int n)
{
m_inblock = false;
text_q = "";
forcecentre = false;
ignorespace = false;
while (!stylestack.isEmpty()) stylestack.pop();
currentstyle.unset();
qDebug("striphtml:locating:%u", n);
parent->locate(n);
}
int striphtml::getpara(CBuffer& buff, unsigned long& startpos)
{
tchar ch;
CStyle sty;
unsigned long pos;
int i = 0;
parent->getch(ch, sty, startpos);
pos = startpos;
while (1)
{
if (ch == 10 && !isPre)
{
ch = ' ';
}
if (ch == UEOF)
{
// qDebug("EOF:%d:%u", i, pos);
buff[i] = 0;
if (i == 0)
{
i = -1;
}
return i;
}
else if (ch == '<')
{
tchar ch2 = skip_ws();
QString ent = getname(ch2, " >");
ent = ent.lower();
// qDebug("ent:%s", (const char*)ent);
if (ent == "a")
{
buff[i++] = '<';
buff[i++] = 'a';
buff[i++] = ch2;
// buff[i] = 0; qDebug("ANCHOR:%s", (const char*)toQString(buff.data()));
}
else if (ent == "/a")
{
buff[i++] = '<';
buff[i++] = '/';
buff[i++] = 'a';
buff[i++] = ch2;
// buff[i] = 0; qDebug("/ANCHOR:%s", (const char*)toQString(buff.data()));
}
else if (ent == "div")
{
// buff[i] = 0; qDebug("DIV:%s", (const char*)toQString(buff.data()));
if (i == 0)
{
buff[i++] = '<';
buff[i++] = 'd';
buff[i++] = 'i';
buff[i++] = 'v';
buff[i++] = ' ';
buff[i++] = ch2;
while (ch2 != '>' && ch2 != UEOF && i < 2048)
{
parent->getch(ch2, sty, pos);
buff[i++] = ch2;
}
}
else
{
locate(pos);
}
buff[i++] = 0;
// qDebug("DIV:%s", (const char*)toQString(buff.data()));
return i;
}
else if (ent == "p" || (ent[0] == 'h' && ent.length() == 2 && QString("123456789").find(ent[1]) != -1))
{
buff[i++] = 0;
while (ch2 != '>' && ch2 != UEOF)
{
parent->getch(ch2, sty, pos);
}
return i;
}
else
{
while (ch2 != '>' && ch2 != UEOF)
{
parent->getch(ch2, sty, pos);
}
}
}
else
{
buff[i++] = ch;
}
parent->getch(ch, sty, pos);
diff --git a/noncore/apps/opie-reader/useqpe.h b/noncore/apps/opie-reader/useqpe.h
deleted file mode 100644
index e69de29..0000000
--- a/noncore/apps/opie-reader/useqpe.h
+++ b/dev/null
diff --git a/noncore/apps/opie-reader/ztxt.cpp b/noncore/apps/opie-reader/ztxt.cpp
index 79c5fa4..35db05e 100644
--- a/noncore/apps/opie-reader/ztxt.cpp
+++ b/noncore/apps/opie-reader/ztxt.cpp
@@ -1,174 +1,173 @@
#include <stdio.h>
#include <string.h>
#include "ztxt.h"
#include "my_list.h"
#include "Bkmks.h"
-#include "static.h"
ztxt::ztxt() : bInit(false), expandedtextbuffer(NULL), compressedtextbuffer(NULL) { /*printf("constructing:%x\n",fin);*/ }
int ztxt::OpenFile(const char *src)
{
if (!Cpdb::openpdbfile(src))
{
return -1;
}
//printf("Okay %u\n", 4);
if (head.type != ZTXT_ID) return -1;
gotorecordnumber(0);
fread(&hdr0, 1, sizeof(hdr0), fin);
//printf("Okay %u\n", 5);
buffersize = ntohl(hdr0.size);
compressedtextbuffer = new UInt8[buffersize];
expandedtextbuffer = new UInt8[buffersize];
//printf("Okay %u\n", 6);
home();
//printf("Okay %u\n", 7);
// printf("Returning 0\n");
return 0;
}
int ztxt::getch()
{
if (bufferpos >= buffercontent)
{
size_t reclen = recordlength(++bufferrec);
if (reclen == 0) return -1;
gotorecordnumber(bufferrec);
fread(compressedtextbuffer, reclen, sizeof(char), fin);
zstream.next_in = compressedtextbuffer;
zstream.next_out = expandedtextbuffer;
zstream.avail_out = buffersize;
zstream.avail_in = reclen;
int ret = inflate(&zstream, Z_SYNC_FLUSH);
buffercontent = buffersize - zstream.avail_out;
bufferpos = 0;
}
currentpos++;
return expandedtextbuffer[bufferpos++];
}
unsigned int ztxt::locate()
{
return currentpos;
}
void ztxt::locate(unsigned int n)
{
if (hasrandomaccess())
{
bufferrec = n / ntohs(hdr0.recordSize) + 1;
if (bufferrec == 1)
{
inflateEnd(&zstream);
}
size_t reclen = recordlength(bufferrec);
if (reclen == 0) return;
gotorecordnumber(bufferrec);
fread(compressedtextbuffer, reclen, sizeof(char), fin);
zstream.next_in = compressedtextbuffer;
zstream.next_out = expandedtextbuffer;
zstream.avail_out = buffersize;
zstream.avail_in = reclen;
if (bufferrec == 1)
{
zstream.zalloc = Z_NULL;
zstream.zfree = Z_NULL;
zstream.opaque = Z_NULL;
inflateInit(&zstream);
}
int ret = inflate(&zstream, Z_SYNC_FLUSH);
buffercontent = buffersize - zstream.avail_out;
bufferpos = 0;
currentpos = n - n % ntohs(hdr0.recordSize);
while (currentpos < n) getch();
}
else
{
home();
while (currentpos < n && getch() != EOF);
}
}
void ztxt::home()
{
if (bInit)
{
inflateEnd(&zstream);
}
bInit = true;
size_t reclen = recordlength(1);
gotorecordnumber(1);
fread(compressedtextbuffer, reclen, sizeof(char), fin);
zstream.next_in = compressedtextbuffer;
zstream.next_out = expandedtextbuffer;
zstream.avail_out = buffersize;
zstream.avail_in = reclen;
zstream.zalloc = Z_NULL;
zstream.zfree = Z_NULL;
zstream.opaque = Z_NULL;
// printf("Initialising\n");
inflateInit(&zstream);
int ret = inflate(&zstream, Z_SYNC_FLUSH);
// printf("Inflate : %d\n", ret);
bufferpos = 0;
bufferrec = 1;
currentpos = 0;
buffercontent = buffersize - zstream.avail_out;
// printf("buffercontent:%u\n", buffercontent);
}
CList<Bkmk>* ztxt::getbkmklist()
{
UInt16 recno = ntohs(hdr0.bookmarkRecord);
// printf("Bookmarks - record %d contains %d\n", recno, ntohs(hdr0.numBookmarks));
if (recno == 0) return NULL;
CList<Bkmk>* t = new CList<Bkmk>;
size_t cur = ftell(fin);
gotorecordnumber(recno);
for (int i = 0; i < ntohs(hdr0.numBookmarks); i++)
{
zTXTbkmk bkmk;
if (fread(&bkmk, sizeof(bkmk), 1, fin) != 1) break;
// printf("Bookmark number:%d:%.20s\n", i, bkmk.title);
tchar title[MAX_BMRK_LENGTH];
for (int j = 0; j < MAX_BMRK_LENGTH; j++)
{
title[j] = bkmk.title[j];
}
t->push_back(Bkmk(title, NULL, ntohl(bkmk.offset)));
}
fseek(fin, cur, SEEK_SET);
return t;
}
#ifndef __STATIC
extern "C"
{
CExpander* newcodec() { return new ztxt; }
}
#endif