Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef __HTML_h
  2. #define __HTML_h
  3.  
  4. #include"parser.h"
  5.  
  6. template<class T> class CHTMLStack
  7. {
  8. public:
  9.  CHTMLStack()
  10.  {
  11.   FirstItem=NULL;
  12.   NR=0;
  13.  }
  14.  void Push(T * ff)
  15.  {
  16.   T * ff1;
  17.   if(!ff) return;
  18.   ff1=(T *)malloc(sizeof(T));
  19.   memcpy((void *)ff1,(const void *)ff,sizeof(T));
  20.   NR++;
  21.   ff1->next=FirstElem;
  22.   FirstElem=ff1;
  23.  }
  24.  T * Pop()
  25.  {
  26.   T * R;
  27.   if(!NR) return NULL;
  28.   NR--;
  29.   R=FirstElem;
  30.   FirstElem=R->next;
  31.   return R;
  32.  }
  33.  void Free(T * x)
  34.  {
  35.   free(x);
  36.  }
  37.  ~CHTMLStack()
  38.  {
  39.   T * __tmp;
  40.   while((__tmp=Pop())) this->Free(__tmp);
  41.  }
  42. protected:
  43.  T * FirstElem;
  44.  int NR;
  45. };
  46.  
  47. struct text_style {
  48.  unsigned long flags;
  49.  char * FontName;
  50.  int FontSize;
  51.  unsigned long color;
  52.  struct text_style * next;
  53. };
  54.  
  55. struct page_style {
  56.  unsigned long background;
  57.  unsigned long text;
  58.  unsigned long link,alink,vlink;
  59.  unsigned long flags;
  60.  struct page_style * next;
  61. };
  62.  
  63. struct image_properties {
  64.  int width,height;
  65.  int border;
  66. };
  67.  
  68. struct text_properties {
  69.  char * FontName;
  70.  int font_size;
  71.  int color;
  72.  unsigned long flags;
  73. };
  74.  
  75. struct cpb_Text {
  76.  struct text_properties prop;
  77.  char * Text;
  78.  int len;
  79. };
  80.  
  81. struct cpb_Image {
  82.  struct image_properties img;
  83.  void * ImageData;
  84. };
  85.  
  86. class CPageBuffer
  87. {
  88. public:
  89.  CPageBuffer();
  90.  ~CPageBuffer();
  91.  virtual void AddText(char *,int,struct text_properties *);
  92.  virtual void AddImage(char *,struct image_properties *);
  93.  virtual void Paint();
  94.  virtual void Reset();
  95. private:
  96.  int nr_text,nr_images;
  97.  struct cpb_Text ** _text;
  98.  struct cpb_Image ** _images;
  99. };
  100.  
  101. class CHTMLParser
  102. {
  103. public:
  104.  CHTMLParser(CParser * par,CPageBuffer * buf);
  105.  ~CHTMLParser();
  106.  virtual void DefaultStyles();
  107.  virtual void Parse();
  108.  virtual void ParseHTML();
  109. protected:
  110.  CParser * parser;
  111.  CPageBuffer * pgbuf;
  112.  struct text_style text_style;
  113.  struct page_style page_style;
  114. };
  115.  
  116. #define FFLAG_ALIGNLEFT         0x00000001
  117. #define FFLAG_ALIGNRIGHT        0x00000002
  118. #define FFLAG_ALIGNCENTER       0x00000003
  119. #define FFLAG_BOLD              0x00000004
  120. #define FFLAG_ITALIC            0x00000008
  121. #define FFLAG_UNDERLINE         0x00000010
  122.  
  123. #define PFLAG_ALIGNLEFT         0x00000001
  124. #define PFLAG_ALIGNRIGHT        0x00000002
  125. #define PFLAG_ALIGNCENTER       0x00000003
  126. #define PFLAG_RAWMODE           0x00000004
  127.  
  128. #endif
  129.