⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfilter.h

📁 一个小的非常好用的电子书阅读器源码
💻 H
字号:
#ifndef __CFILTER_H#define __CFILTER_H#include "CExpander.h"class CFilter : public CCharacterSource{  friend class CFilterChain; protected:  CCharacterSource* parent;public:  CFilter() : parent(NULL) {}  void setparent(CCharacterSource* p) { parent = p; }  virtual ~CFilter() {};};class vanilla : public CFilter{public:  vanilla() {}  virtual ~vanilla() {}  virtual int getch()  {    return parent->getch();  }};class CFilterChain{  CFilter* first;  CFilter* front; public:  CFilterChain() : first(NULL), front(NULL) {};  ~CFilterChain()    {      CFilter* p = front;      while (p != first)	{	  CFilter* pnext = p;	  p = (CFilter*)(p->parent);	  delete pnext;	}      delete first;    }  int getch() { return front->getch(); }  void addfilter(CFilter* p)    {      if (first == NULL)	{	  first = front = p;	}      else	{	  p->setparent(front);	  front = p;	}    }  void setsource(CCharacterSource* p)    {      if (first == NULL) first = front = new vanilla;      first->setparent(p);    }};class stripcr : public CFilter{public:  stripcr() {}  virtual ~stripcr() {}  virtual int getch()  {    int ch;    do      {	ch = parent->getch();      }    while (ch == 13);    return ch;  }};class unindent : public CFilter{  char lc;public:  unindent() : lc(0) {}  virtual ~unindent() {}  virtual int getch()  {    int ch;    if (lc == 10)      {	while ((ch = parent->getch()) == ' ');      }    else ch = parent->getch();    lc = ch;    return ch;  }};class repara : public CFilter{  int tch;public:  repara() : tch(0) {}  virtual ~repara() {}  virtual int getch()  {    int ch = parent->getch();    if (ch == 10)      {	if (tch == 10)	  {	    return ch;	  }	else	  {	    tch = ch;	    return ' ';	  }      }    tch = ch;    return ch;  }};class indenter : public CFilter{  int amnt;  int indent;public:  indenter(int _a=5) : amnt(_a), indent(0) {}  virtual ~indenter() {}  virtual int getch()    {      if (indent > 0)	{	  indent--;	  return ' ';	}      int ch = parent->getch();      if (ch == 10)	{	  indent = amnt;	}      return ch;    }};class dblspce : public CFilter{  bool lastlf;public:  dblspce() : lastlf(false) {}  virtual ~dblspce() {}  virtual int getch()    {      if (lastlf)	{	  lastlf = false;	  return 10;	}      int ch = parent->getch();      lastlf = (ch == 10);      return ch;    }};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -