author | pohly <pohly> | 2004-10-01 08:17:11 (UTC) |
---|---|---|
committer | pohly <pohly> | 2004-10-01 08:17:11 (UTC) |
commit | 63d9478584fd80902dcef17244e4415f096d76db (patch) (side-by-side diff) | |
tree | 32d084308d0dca463a0b5205acfd10b91a10a54b | |
parent | 83d2361ccae308696694ab65f69ba8aa999f6696 (diff) | |
download | opie-63d9478584fd80902dcef17244e4415f096d76db.zip opie-63d9478584fd80902dcef17244e4415f096d76db.tar.gz opie-63d9478584fd80902dcef17244e4415f096d76db.tar.bz2 |
fixed searching for input filters, following Tim's suggestion
-rw-r--r-- | noncore/apps/opie-reader/CFilter.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/noncore/apps/opie-reader/CFilter.cpp b/noncore/apps/opie-reader/CFilter.cpp index 6d94d70..ab98829 100644 --- a/noncore/apps/opie-reader/CFilter.cpp +++ b/noncore/apps/opie-reader/CFilter.cpp @@ -476,339 +476,340 @@ void repalm::getch(tchar& ch, CStyle& sty, unsigned long& pos) break; default: break; } } //static tchar nextpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','n','e','x','t',' ','p','a','r','t',0 }; //static tchar prevpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','p','r','e','v','i','o','u','s',' ','p','a','r','t',0 }; void DePluck::getch(tchar& ch, CStyle& sty, unsigned long& pos) { if (m_buffed > 0) { sty = m_laststyle; ch = nextpart[m_current++]; if (m_current == m_buffed) { m_current = m_buffed = 0; } } else { if (m_buffer != 0) { ch = m_buffer; m_buffer = 0; return; } unsigned long lnk, lnkoff; do { if (nextpart[m_buffed] == 0) break; parent->getch(ch, sty, pos); m_laststyle = sty; if (sty.getLink()) { lnk = sty.getData(); lnkoff = sty.getOffset(); } } while (ch == nextpart[m_buffed] && sty.getLink() && ++m_buffed); m_current = 0; if (nextpart[m_buffed] == 0) { m_buffed = 0; QString dmy, dmy2; parent->hyperlink(lnk, lnkoff, dmy, dmy2); do { parent->getch(ch, sty, pos); } while (ch != 10); parent->getch(ch, sty, pos); } else if (m_buffed > 0) { m_buffer = ch; ch = nextpart[0]; if (m_buffed == 1) { m_buffed = 0; } else m_current = 1; } } return; } HighlightFilter::HighlightFilter(QTReader* _p) : pReader(_p), lastpos(0), nextpos(0), red(255), green(255), blue(255) { } #include "Bkmks.h" #include "QTReader.h" void HighlightFilter::refresh(unsigned long pos) { bkmks = pReader->Bkmklist(); red = green = blue = 255; if (bkmks == NULL) { lastpos = 0; nextpos = 0xffffffff; } else { lastpos = 0; nextpos = 0xffffffff; for (CList<Bkmk>::iterator i = bkmks->begin(); i != bkmks->end(); i++) { if ((*i).value() <= pos && pos < (*i).value2()) { red = i->red(); green = i->green(); blue = i->blue(); lastpos = (*i).value(); nextpos = (*i).value2(); break; } if ((*i).value() > pos) { nextpos = (*i).value(); break; } lastpos = (*i).value(); } } } void HighlightFilter::getch(tchar& ch, CStyle& sty, unsigned long& pos) { parent->getch(ch, sty, pos); if (bkmks != pReader->Bkmklist() || pos <= lastpos || pos >= nextpos) { // qDebug("Recalc <%lu, %lu, %lu>", lastpos, pos, nextpos); refresh(pos); // qDebug("Recalc(2) <%lu, %lu, %lu>", lastpos, pos, nextpos); } int r = sty.bRed(), g = sty.bGreen(), b = sty.bBlue(); if (r == 255 && g == 255 && b == 255) { sty.setBackground(red, green, blue); } } void kern::getch(tchar& ch, CStyle& sty, unsigned long& pos) { if (uselast) { ch = lastchar; sty = laststy; uselast = false; return; } else { parent->getch(ch, sty, pos); } switch (ch) { case 'f': { tchar savedchar = 'f'; parent->getch(ch, sty, pos); switch (ch) { case 'i': ch = (251 << 8) + 1; break; case 'l': ch = (251 << 8) + 2; break; default: lastchar = ch; uselast = true; laststy = sty; ch = savedchar; } } break; default: break; } } 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/lib")); + QString filterpath(QTReaderUtil::getPluginPath("filters")); + filterpath += "/lib"; 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"); 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) { parent->getch(ch, sty, pos); QColor fg(sty.Red(), sty.Green(), sty.Blue()); int h,s,v; fg.hsv(&h,&s,&v); fg.setHsv(h,s,255-v); int r,g,b; fg.rgb(&r,&g,&b); sty.setColour(r,g,b); fg = QColor(sty.bRed(), sty.bGreen(), sty.bBlue()); fg.hsv(&h,&s,&v); fg.setHsv(h,s,255-v); fg.rgb(&r,&g,&b); sty.setBackground(r,g,b); } */ void setbg::getch(tchar& ch, CStyle& sty, unsigned long& pos) { parent->getch(ch, sty, pos); int r = sty.pRed(), g = sty.pGreen(), b = sty.pBlue(); if (r == 255 && g == 255 && b == 255) { sty.setPaper(m_r,m_g,m_b); } else { qDebug("We have background [%x%x%x]", r, g, b); } r = sty.bRed(), g = sty.bGreen(), b = sty.bBlue(); if (r == 255 && g == 255 && b == 255) { sty.setBackground(m_r,m_g,m_b); } else { qDebug("We have background [%x%x%x]", r, g, b); } } void setfg::getch(tchar& ch, CStyle& sty, unsigned long& pos) { parent->getch(ch, sty, pos); int r = sty.Red(), g = sty.Green(), b = sty.Blue(); if (r == 0 && g == 0 && b == 0) { sty.setColour(m_r,m_g,m_b); } } #include "CRegExp.h" repara::repara(const QString& pat) : tch(0) { // QString pat("{\\n[A-Z\"]}"); flt = new CRegExpFilt(pat, false); qDebug("Construction done"); } repara::~repara() { delete flt; } void repara::getch(tchar& ch, CStyle& sty, unsigned long& pos) { if (flt->empty()) { while (flt->empty()) { parent->getch(ch, sty, pos); flt->addch(ch); } } 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; } |