summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/CFilter.cpp
Side-by-side diff
Diffstat (limited to 'noncore/apps/opie-reader/CFilter.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/CFilter.cpp54
1 files changed, 50 insertions, 4 deletions
diff --git a/noncore/apps/opie-reader/CFilter.cpp b/noncore/apps/opie-reader/CFilter.cpp
index ab98829..25cdfae 100644
--- a/noncore/apps/opie-reader/CFilter.cpp
+++ b/noncore/apps/opie-reader/CFilter.cpp
@@ -1,35 +1,35 @@
#include <qmap.h>
#include <qfileinfo.h>
#include <qtextstream.h>
#include <qdir.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
@@ -644,76 +644,85 @@ class ErrorFilter : public CFilter
{
QString error;
int currentpos;
public:
ErrorFilter(const QString& _s) : error(_s), currentpos(0) {}
~ErrorFilter() {}
void getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
if (currentpos == error.length())
{
ch = UEOF;
currentpos = 0;
}
else
{
ch = error[currentpos++].unicode();
}
}
QString about() { return parent->about(); }
};
#ifndef __STATIC
ExternFilter::ExternFilter(const QString& nm, const QString& optional) : filt(NULL), handle(NULL)
{
- QString filterpath(QTReaderUtil::getPluginPath("filters"));
- filterpath += "/lib";
+#ifdef USEQPE
+#ifdef OPIE
+ QString filterpath(getenv("OPIEDIR"));
+#else
+ QString filterpath(getenv("QTDIR"));
+#endif
+ filterpath += "/plugins/reader/filters/lib";
+#else
+ QString filterpath(getenv("READERDIR"));
+ filterpath += "/filters/lib";
+#endif
filterpath += nm;
filterpath += ".so";
if (QFile::exists(filterpath))
{
qDebug("Filter:%s", (const char*)filterpath);
handle = dlopen(filterpath, RTLD_LAZY);
if (handle == 0)
{
qDebug("Can't find filter:%s", dlerror());
// status = -10;
filt = new ErrorFilter(QString("Can't find plugin:")+nm);
return;
}
CFilter* (*newfilter)(const QString&);
newfilter = (CFilter* (*)(const QString&))dlsym(handle, "newfilter");
if (newfilter == NULL)
{
qDebug("Can't find newfilter");
filt = new ErrorFilter(QString("Can't find entry point in plugin:")+nm);
return;
}
filt = (*newfilter)(optional);
}
else
{
- qDebug("No filter path");
+ qDebug("No filter path:%s", (const char*)filterpath);
filt = new ErrorFilter(QString("No filter plugins installed:")+nm);
}
if (filt == NULL)
{
qDebug("Can't do newfilter");
filt = new ErrorFilter(QString("Filter creation failed:")+nm);
return;
}
}
#endif
void makeInverse::getch(tchar& ch, CStyle& sty, unsigned long& pos)
{
parent->getch(ch, sty, pos);
int r,g,b;
r = 255 - sty.Red(), g = 255 - sty.Green(), b = 255 - sty.Blue();
sty.setColour(r,g,b);
r = 255 - sty.bRed(), g = 255 - sty.bGreen(), b = 255 - sty.bBlue();
sty.setBackground(r,g,b);
r = 255 - sty.pRed(), g = 255 - sty.pGreen(), b = 255 - sty.pBlue();
sty.setPaper(r,g,b);
}
/*
void makeNegative::getch(tchar& ch, CStyle& sty, unsigned long& pos)
@@ -792,24 +801,61 @@ void repara::getch(tchar& ch, CStyle& sty, unsigned long& pos)
}
}
ch = flt->pop();
/*
parent->getch(ch, sty, pos);
if (ch == 10 || ch == ' ')
{
if (tch == 10)
{
tch = ch;
ch = 10;
return;
}
else
{
tch = ch;
ch = ' ';
return;
}
}
tch = ch;
*/
return;
}
+
+void tableLink::getch(tchar& ch, CStyle& sty, unsigned long& pos)
+{
+ if (offset >= (int)text.length())
+ {
+ offset = -1;
+ sty.setColour(m_r, m_g, m_b);
+ do
+ {
+ parent->getch(ch, sty, pos);
+ }
+ while (sty.isTable());
+ return;
+ }
+ if (offset >= 0)
+ {
+ ch = text[offset++].unicode();
+ return;
+ }
+ parent->getch(ch, sty, pos);
+ if (sty.isTable())
+ {
+ offset = 1;
+ ch = text[0].unicode();
+ m_r = sty.Red(), m_g = sty.Green(), m_b = sty.Blue();
+ sty.setColour(255, 0, 0);
+ }
+ return;
+}
+
+void underlineLink::getch(tchar& ch, CStyle& sty, unsigned long& pos)
+{
+ parent->getch(ch, sty, pos);
+ if (sty.getLink()) sty.setUnderline();
+ //if (isLink && !sty.getLink()) sty.unsetUnderline();
+ //isLink = sty.getLink();
+}