1 //========================================================================
2 //
3 // This file comes from pdftohtml project
4 // http://pdftohtml.sourceforge.net
5 //
6 // Copyright from:
7 // Gueorgui Ovtcharov
8 // Rainer Dorsch <http://www.ra.informatik.uni-stuttgart.de/~rainer/>
9 // Mikhail Kruk <meshko@cs.brandeis.edu>
10 //
11 //========================================================================
12 
13 //========================================================================
14 //
15 // Modified under the Poppler project - http://poppler.freedesktop.org
16 //
17 // All changes made under the Poppler project to this file are licensed
18 // under GPL version 2 or later
19 //
20 // Copyright (C) 2010 OSSD CDAC Mumbai by Leena Chourey (leenac@cdacmumbai.in) and Onkar Potdar (onkar@cdacmumbai.in)
21 // Copyright (C) 2010 Albert Astals Cid <aacid@kde.org>
22 //
23 // To see a description of the changes please see the Changelog file that
24 // came with your tarball or type make ChangeLog if you are building from git
25 //
26 //========================================================================
27 
28 #ifndef _HTML_FONTS_H
29 #define _HTML_FONTS_H
30 #include "goo/GooString.h"
31 #include "GfxState.h"
32 #include "CharTypes.h"
33 #include <vector>
34 
35 class HtmlFontColor{
36  private:
37    unsigned int r;
38    unsigned int g;
39    unsigned int b;
Ok(unsigned int xcol)40    GBool Ok(unsigned int xcol){ return ((xcol<=255)&&(xcol>=0));}
41    GooString *convtoX(unsigned  int xcol) const;
42  public:
HtmlFontColor()43    HtmlFontColor():r(0),g(0),b(0){}
44    HtmlFontColor(GfxRGB rgb);
HtmlFontColor(const HtmlFontColor & x)45    HtmlFontColor(const HtmlFontColor& x){r=x.r;g=x.g;b=x.b;}
46    HtmlFontColor& operator=(const HtmlFontColor &x){
47      r=x.r;g=x.g;b=x.b;
48      return *this;
49    }
~HtmlFontColor()50    ~HtmlFontColor(){};
51    GooString* toString() const;
isEqual(const HtmlFontColor & col)52    GBool isEqual(const HtmlFontColor& col) const{
53      return ((r==col.r)&&(g==col.g)&&(b==col.b));
54    }
55 } ;
56 
57 
58 class HtmlFont{
59  private:
60    unsigned int size;
61    int lineSize;
62    GBool italic;
63    GBool bold;
64    int pos; // position of the font name in the fonts array
65    static GooString *DefaultFont;
66    GooString *FontName;
67    HtmlFontColor color;
68    static GooString* HtmlFilter(Unicode* u, int uLen); //char* s);
69 public:
70 
HtmlFont()71    HtmlFont(){FontName=NULL;};
72    HtmlFont(GooString* fontname,int _size, GfxRGB rgb);
73    HtmlFont(const HtmlFont& x);
74    HtmlFont& operator=(const HtmlFont& x);
getColor()75    HtmlFontColor getColor() const {return color;}
76    ~HtmlFont();
77    static void clear();
78    GooString* getFullName();
isItalic()79    GBool isItalic() const {return italic;}
isBold()80    GBool isBold() const {return bold;}
getSize()81    unsigned int getSize() const {return size;}
getLineSize()82    int getLineSize() const {return lineSize;}
setLineSize(int _lineSize)83    void setLineSize(int _lineSize) { lineSize = _lineSize; }
84    GooString* getFontName();
85    static GooString* getDefaultFont();
86    static void setDefaultFont(GooString* defaultFont);
87    GBool isEqual(const HtmlFont& x) const;
88    GBool isEqualIgnoreBold(const HtmlFont& x) const;
89    static GooString* simple(HtmlFont *font, Unicode *content, int uLen);
print()90    void print() const {printf("font: %s %d %s%spos: %d\n", FontName->getCString(), size, bold ? "bold " : "", italic ? "italic " : "", pos);};
91 };
92 
93 class HtmlFontAccu{
94 private:
95   std::vector<HtmlFont> *accu;
96 
97 public:
98   HtmlFontAccu();
99   ~HtmlFontAccu();
100   int AddFont(const HtmlFont& font);
Get(int i)101   HtmlFont *Get(int i){
102     return &(*accu)[i];
103   }
104   GooString* getCSStyle (int i,GooString* content, int j = 0);
105   GooString* CSStyle(int i, int j = 0);
size()106   int size() const {return accu->size();}
107 
108 };
109 #endif
110