Diffstat (limited to 'noncore/apps/opie-reader/CFilter.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/CFilter.h | 55 |
1 files changed, 52 insertions, 3 deletions
diff --git a/noncore/apps/opie-reader/CFilter.h b/noncore/apps/opie-reader/CFilter.h index 174e6b4..594b606 100644 --- a/noncore/apps/opie-reader/CFilter.h +++ b/noncore/apps/opie-reader/CFilter.h | |||
@@ -6,97 +6,114 @@ | |||
6 | 6 | ||
7 | class CFilter_IFace : public CCharacterSource | 7 | class CFilter_IFace : public CCharacterSource |
8 | { | 8 | { |
9 | public: | 9 | public: |
10 | virtual linkType hyperlink(unsigned int n, unsigned int noff, QString& w, QString& nm) = 0; | 10 | virtual linkType hyperlink(unsigned int n, unsigned int noff, QString& w, QString& nm) = 0; |
11 | virtual void setparent(CCharacterSource* p) = 0; | 11 | virtual void setparent(CCharacterSource* p) = 0; |
12 | virtual ~CFilter_IFace() {}; | 12 | virtual ~CFilter_IFace() {}; |
13 | virtual void locate(unsigned int n) = 0; | 13 | virtual void locate(unsigned int n) = 0; |
14 | virtual bool findanchor(const QString& nm) = 0; | 14 | virtual bool findanchor(const QString& nm) = 0; |
15 | virtual void saveposn(const QString& f, size_t posn) = 0; | 15 | virtual void saveposn(const QString& f, size_t posn) = 0; |
16 | virtual void writeposn(const QString& f, size_t posn) = 0; | 16 | virtual void writeposn(const QString& f, size_t posn) = 0; |
17 | virtual linkType forward(QString& f, size_t& loc) = 0; | 17 | virtual linkType forward(QString& f, size_t& loc) = 0; |
18 | virtual linkType back(QString& f, size_t& loc) = 0; | 18 | virtual linkType back(QString& f, size_t& loc) = 0; |
19 | virtual bool hasnavigation() = 0; | 19 | virtual bool hasnavigation() = 0; |
20 | virtual int getwidth() = 0; | 20 | virtual int getwidth() = 0; |
21 | virtual CCharacterSource* getparent() = 0; | 21 | virtual CCharacterSource* getparent() = 0; |
22 | virtual unsigned long startSection() = 0; | ||
22 | }; | 23 | }; |
23 | 24 | ||
24 | class CFilter : public CFilter_IFace | 25 | class CFilter : public CFilter_IFace |
25 | { | 26 | { |
26 | protected: | 27 | protected: |
27 | CCharacterSource* parent; | 28 | CCharacterSource* parent; |
28 | public: | 29 | public: |
30 | virtual QString getTableAsHtml(unsigned long loc) | ||
31 | { | ||
32 | qDebug("CFilter::getTableAsHtml()"); | ||
33 | return parent->getTableAsHtml(loc); | ||
34 | } | ||
29 | virtual linkType hyperlink(unsigned int n, unsigned int noff, QString& w, QString& nm) | 35 | virtual linkType hyperlink(unsigned int n, unsigned int noff, QString& w, QString& nm) |
30 | { | 36 | { |
31 | return parent->hyperlink(n,noff,w,nm); | 37 | return parent->hyperlink(n,noff,w,nm); |
32 | } | 38 | } |
33 | CFilter() : parent(NULL) {} | 39 | CFilter() : parent(NULL) {} |
34 | void setparent(CCharacterSource* p) { parent = p; } | 40 | void setparent(CCharacterSource* p) { parent = p; } |
35 | CCharacterSource* getparent() { return parent; } | 41 | CCharacterSource* getparent() { return parent; } |
36 | virtual ~CFilter() {}; | 42 | virtual ~CFilter() {}; |
37 | virtual void locate(unsigned int n) | 43 | virtual void locate(unsigned int n) |
38 | { | 44 | { |
39 | parent->locate(n); | 45 | parent->locate(n); |
40 | } | 46 | } |
41 | virtual bool findanchor(const QString& nm) | 47 | virtual bool findanchor(const QString& nm) |
42 | { | 48 | { |
43 | return parent->findanchor(nm); | 49 | return parent->findanchor(nm); |
44 | } | 50 | } |
45 | virtual void saveposn(const QString& f, size_t posn) { parent->saveposn(f, posn); } | 51 | virtual void saveposn(const QString& f, size_t posn) { parent->saveposn(f, posn); } |
46 | virtual void writeposn(const QString& f, size_t posn) { parent->writeposn(f, posn); } | 52 | virtual void writeposn(const QString& f, size_t posn) { parent->writeposn(f, posn); } |
47 | virtual linkType forward(QString& f, size_t& loc) { return parent->forward(f, loc); } | 53 | virtual linkType forward(QString& f, size_t& loc) { return parent->forward(f, loc); } |
48 | virtual linkType back(QString& f, size_t& loc) { return parent->back(f, loc); } | 54 | virtual linkType back(QString& f, size_t& loc) { return parent->back(f, loc); } |
49 | virtual bool hasnavigation() { return parent->hasnavigation(); } | 55 | virtual bool hasnavigation() { return parent->hasnavigation(); } |
50 | virtual int getwidth() { return parent->getwidth(); } | 56 | virtual int getwidth() { return parent->getwidth(); } |
51 | QImage* getPicture(unsigned long tgt) { return parent->getPicture(tgt); } | 57 | QImage* getPicture(unsigned long tgt) { return parent->getPicture(tgt); } |
52 | QImage* getPicture(const QString& href) { return parent->getPicture(href); } | 58 | QImage* getPicture(const QString& href) { return parent->getPicture(href); } |
53 | bool getFile(const QString& href) { return parent->getFile(href); } | 59 | bool getFile(const QString& href, const QString& nm) { return parent->getFile(href, nm); } |
60 | virtual unsigned long startSection() { return parent->startSection(); } | ||
54 | }; | 61 | }; |
55 | 62 | ||
56 | class CFilterChain | 63 | class CFilterChain |
57 | { | 64 | { |
58 | CExpander_Interface* expander; | 65 | CExpander_Interface* expander; |
59 | CEncoding* encoder; | 66 | CEncoding* encoder; |
60 | CFilter_IFace* first; | 67 | CFilter_IFace* first; |
61 | CCharacterSource* front; | 68 | CCharacterSource* front; |
62 | public: | 69 | public: |
63 | CFilterChain(CEncoding* _e) : encoder(_e), first(NULL), front(_e) {}; | 70 | CFilterChain(CEncoding* _e) : encoder(_e), first(NULL), front(_e) {}; |
64 | ~CFilterChain() | 71 | ~CFilterChain() |
65 | { | 72 | { |
66 | CCharacterSource* p = front; | 73 | CCharacterSource* p = front; |
67 | while (p != encoder) | 74 | while (p != encoder) |
68 | { | 75 | { |
69 | CFilter_IFace* pnext = (CFilter_IFace*)p; | 76 | CFilter_IFace* pnext = (CFilter_IFace*)p; |
70 | p = ((CFilter_IFace*)p)->getparent(); | 77 | p = ((CFilter_IFace*)p)->getparent(); |
71 | delete pnext; | 78 | delete pnext; |
72 | } | 79 | } |
73 | delete encoder; | 80 | delete encoder; |
74 | } | 81 | } |
75 | linkType hyperlink(unsigned int n, unsigned int noff, QString& wrd, QString& nm) | 82 | linkType hyperlink(unsigned int n, unsigned int noff, QString& wrd, QString& nm) |
76 | { | 83 | { |
77 | return front->hyperlink(n, noff, wrd, nm); | 84 | return front->hyperlink(n, noff, wrd, nm); |
78 | } | 85 | } |
86 | QString getTableAsHtml(unsigned long loc) | ||
87 | { | ||
88 | return front->getTableAsHtml(loc); | ||
89 | } | ||
79 | void locate(unsigned int n) | 90 | void locate(unsigned int n) |
80 | { | 91 | { |
81 | front->locate(n); | 92 | front->locate(n); |
82 | } | 93 | } |
83 | void getch(tchar& ch, CStyle& sty, unsigned long& pos) | 94 | void getch(tchar& ch, CStyle& sty, unsigned long& pos) |
84 | { | 95 | { |
85 | front->getch(ch, sty, pos); | 96 | front->getch(ch, sty, pos); |
86 | } | 97 | } |
98 | /* | ||
99 | void rawgetch(tchar& ch, CStyle& sty, unsigned long& pos) | ||
100 | { | ||
101 | encoder->getch(ch, sty, pos); | ||
102 | } | ||
103 | */ | ||
87 | void addfilter(CFilter_IFace* p) | 104 | void addfilter(CFilter_IFace* p) |
88 | { | 105 | { |
89 | if (first == NULL) | 106 | if (first == NULL) |
90 | { | 107 | { |
91 | front = first = p; | 108 | front = first = p; |
92 | p->setparent(encoder); | 109 | p->setparent(encoder); |
93 | } | 110 | } |
94 | else | 111 | else |
95 | { | 112 | { |
96 | p->setparent(front); | 113 | p->setparent(front); |
97 | front = p; | 114 | front = p; |
98 | } | 115 | } |
99 | } | 116 | } |
100 | void setsource(CExpander_Interface* p) | 117 | void setsource(CExpander_Interface* p) |
101 | { | 118 | { |
102 | expander = p; | 119 | expander = p; |
@@ -390,54 +407,63 @@ class HighlightFilter : public CFilter | |||
390 | void refresh(unsigned long); | 407 | void refresh(unsigned long); |
391 | QString about() { return QString("High-lighting filter (c) Tim Wentford\n")+parent->about(); } | 408 | QString about() { return QString("High-lighting filter (c) Tim Wentford\n")+parent->about(); } |
392 | }; | 409 | }; |
393 | 410 | ||
394 | #ifndef __STATIC | 411 | #ifndef __STATIC |
395 | #include <dlfcn.h> | 412 | #include <dlfcn.h> |
396 | 413 | ||
397 | class ExternFilter : public CFilter_IFace | 414 | class ExternFilter : public CFilter_IFace |
398 | { | 415 | { |
399 | CFilter* filt; | 416 | CFilter* filt; |
400 | void *handle; | 417 | void *handle; |
401 | public: | 418 | public: |
402 | linkType hyperlink(unsigned int n, unsigned int noff, QString& w, QString& nm) | 419 | linkType hyperlink(unsigned int n, unsigned int noff, QString& w, QString& nm) |
403 | { | 420 | { |
404 | return filt->hyperlink(n, noff, w, nm); | 421 | return filt->hyperlink(n, noff, w, nm); |
405 | } | 422 | } |
423 | QString getTableAsHtml(unsigned long loc) | ||
424 | { | ||
425 | qDebug("ExternFilter::getTableAsHtml()"); | ||
426 | return filt->getTableAsHtml(loc); | ||
427 | } | ||
406 | void setparent(CCharacterSource* p) { filt->setparent(p); } | 428 | void setparent(CCharacterSource* p) { filt->setparent(p); } |
407 | ExternFilter(const QString& nm, const QString& optional); | 429 | ExternFilter(const QString& nm, const QString& optional); |
408 | ~ExternFilter() | 430 | ~ExternFilter() |
409 | { | 431 | { |
410 | if (filt != NULL) delete filt; | 432 | if (filt != NULL) delete filt; |
411 | if (handle != NULL) dlclose(handle); | 433 | if (handle != NULL) dlclose(handle); |
412 | } | 434 | } |
413 | void locate(unsigned int n) { filt->locate(n); } | 435 | void locate(unsigned int n) { filt->locate(n); } |
414 | bool findanchor(const QString& nm) { return filt->findanchor(nm); } | 436 | bool findanchor(const QString& nm) |
437 | { | ||
438 | return filt->findanchor(nm); | ||
439 | } | ||
415 | void saveposn(const QString& f, size_t posn) { filt->saveposn(f, posn); } | 440 | void saveposn(const QString& f, size_t posn) { filt->saveposn(f, posn); } |
416 | void writeposn(const QString& f, size_t posn) { filt->writeposn(f, posn); } | 441 | void writeposn(const QString& f, size_t posn) { filt->writeposn(f, posn); } |
417 | linkType forward(QString& f, size_t& loc) { return filt->forward(f, loc); } | 442 | linkType forward(QString& f, size_t& loc) { return filt->forward(f, loc); } |
418 | linkType back(QString& f, size_t& loc) { return filt->back(f, loc); } | 443 | linkType back(QString& f, size_t& loc) { return filt->back(f, loc); } |
419 | bool hasnavigation() { return filt->hasnavigation(); } | 444 | bool hasnavigation() { return filt->hasnavigation(); } |
420 | int getwidth() { return filt->getwidth(); } | 445 | int getwidth() { return filt->getwidth(); } |
421 | CCharacterSource* getparent() { return filt->getparent(); } | 446 | CCharacterSource* getparent() { return filt->getparent(); } |
422 | void getch(tchar& c, CStyle& s, unsigned long& l) { filt->getch(c, s, l); } | 447 | void getch(tchar& c, CStyle& s, unsigned long& l) { filt->getch(c, s, l); } |
423 | QImage* getPicture(unsigned long tgt) { return filt->getPicture(tgt); } | 448 | QImage* getPicture(unsigned long tgt) { return filt->getPicture(tgt); } |
424 | CFilter* filter() { return filt; } | 449 | CFilter* filter() { return filt; } |
425 | QImage* getPicture(const QString& href) { return filt->getPicture(href); } | 450 | QImage* getPicture(const QString& href) { return filt->getPicture(href); } |
426 | bool getFile(const QString& href) { return filt->getFile(href); } | 451 | bool getFile(const QString& href, const QString& nm) { return filt->getFile(href, nm); } |
427 | QString about() { return QString("Filter plug-in (c) Tim Wentford\n")+filt->about(); } | 452 | QString about() { return QString("Filter plug-in (c) Tim Wentford\n")+filt->about(); } |
453 | unsigned long startSection() { return filt->startSection(); } | ||
428 | }; | 454 | }; |
429 | #endif | 455 | #endif |
430 | 456 | ||
431 | class kern : public CFilter | 457 | class kern : public CFilter |
432 | { | 458 | { |
433 | tchar lastchar; | 459 | tchar lastchar; |
434 | bool uselast; | 460 | bool uselast; |
435 | CStyle laststy; | 461 | CStyle laststy; |
436 | public: | 462 | public: |
437 | kern() : lastchar(0), uselast(false) {} | 463 | kern() : lastchar(0), uselast(false) {} |
438 | ~kern() {} | 464 | ~kern() {} |
439 | void getch(tchar& ch, CStyle& sty, unsigned long& pos); | 465 | void getch(tchar& ch, CStyle& sty, unsigned long& pos); |
440 | QString about() { return QString("Kerning filter (c) Tim Wentford\n")+parent->about(); } | 466 | QString about() { return QString("Kerning filter (c) Tim Wentford\n")+parent->about(); } |
441 | }; | 467 | }; |
442 | 468 | ||
443 | class makeInverse : public CFilter | 469 | class makeInverse : public CFilter |
@@ -458,17 +484,40 @@ class setbg : public CFilter | |||
458 | int m_r, m_g, m_b; | 484 | int m_r, m_g, m_b; |
459 | public: | 485 | public: |
460 | setbg(int _r, int _g, int _b) : m_r(_r), m_g(_g), m_b(_b) {} | 486 | setbg(int _r, int _g, int _b) : m_r(_r), m_g(_g), m_b(_b) {} |
461 | void getch(tchar& ch, CStyle& sty, unsigned long& pos); | 487 | void getch(tchar& ch, CStyle& sty, unsigned long& pos); |
462 | QString about() { return QString("Background colour filter (c) Tim Wentford\n")+parent->about(); } | 488 | QString about() { return QString("Background colour filter (c) Tim Wentford\n")+parent->about(); } |
463 | }; | 489 | }; |
464 | 490 | ||
465 | class setfg : public CFilter | 491 | class setfg : public CFilter |
466 | { | 492 | { |
467 | int m_r, m_g, m_b; | 493 | int m_r, m_g, m_b; |
468 | public: | 494 | public: |
469 | setfg(int _r, int _g, int _b) : m_r(_r), m_g(_g), m_b(_b) {} | 495 | setfg(int _r, int _g, int _b) : m_r(_r), m_g(_g), m_b(_b) {} |
470 | void getch(tchar& ch, CStyle& sty, unsigned long& pos); | 496 | void getch(tchar& ch, CStyle& sty, unsigned long& pos); |
471 | QString about() { return QString("Foreground colour filter (c) Tim Wentford\n")+parent->about(); } | 497 | QString about() { return QString("Foreground colour filter (c) Tim Wentford\n")+parent->about(); } |
472 | }; | 498 | }; |
473 | 499 | ||
500 | class tableLink : public CFilter | ||
501 | { | ||
502 | QString text; | ||
503 | int offset; | ||
504 | int m_r, m_g, m_b; | ||
505 | public: | ||
506 | tableLink() : text( "See Table" ), offset(-1) | ||
507 | { | ||
508 | } | ||
509 | void getch(tchar& ch, CStyle& sty, unsigned long& pos); | ||
510 | QString about() { return QString("Table link filter (c) Tim Wentford\n")+parent->about(); } | ||
511 | }; | ||
512 | |||
513 | class underlineLink : public CFilter | ||
514 | { | ||
515 | bool isLink; | ||
516 | public: | ||
517 | underlineLink() : isLink(false) {} | ||
518 | ~underlineLink() {} | ||
519 | void getch(tchar& ch, CStyle& sty, unsigned long& pos); | ||
520 | QString about() { return QString("Link underlining filter (c) Tim Wentford\n")+parent->about(); } | ||
521 | }; | ||
522 | |||
474 | #endif | 523 | #endif |