Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

FontControl.h

Go to the documentation of this file.
00001 #ifndef __FONTCONTROL_H
00002 #define __FONTCONTROL_H
00003 
00004 #include <qfontmetrics.h>
00005 #include "StyleConsts.h"
00006 
00007 class FontControl
00008 {
00009     int * m_fontsizes;
00010     int m_size, g_size;
00011     QString m_fontname;
00012     QString m_fixedfontname;
00013     int m_maxsize;
00014     bool m_hasCourier;
00015     int m_leading, m_extraspace;
00016     unsigned char m_basesize;
00017     bool m_fixgraphics;
00018  public:
00019     void FixGraphics(bool _b)
00020       {
00021         m_fixgraphics = _b;
00022       }
00023     bool FixGraphics()
00024       {
00025         return m_fixgraphics;
00026       }
00027     void setBaseSize(unsigned char _s) { m_basesize = _s; }
00028     unsigned char getBaseSize() { return m_basesize; }
00029     int gzoom();
00030     FontControl(QString n = "helvetica", int size = 10)
00031         :
00032       m_fontsizes(NULL), m_hasCourier(false), m_leading(0), m_extraspace(0), m_fixgraphics(true)
00033     {
00034         ChangeFont(n, size);
00035     }
00036     ~FontControl()
00037         {
00038             if (m_fontsizes != NULL) delete [] m_fontsizes;
00039         }
00040     void hasCourier(bool _b, const QString& _nm)
00041         {
00042             m_hasCourier = _b;
00043             m_fixedfontname = _nm;
00044         }
00045     QString& fixedfontname() { return m_fixedfontname; }
00046     bool hasCourier() { return m_hasCourier; }
00047     QString name() { return m_fontname; }
00048     int currentsize() { return (m_fontsizes == NULL) ? 0 : m_fontsizes[m_size]; }
00049     int getsize(const CStyle& size)
00050         {
00051           return getsize(size.getFontSize());
00052         }
00053     int getsize(int _offset)
00054       {
00055             int tgt = m_size+_offset;
00056             if (tgt < 0)
00057             {
00058                 tgt = 0;
00059             }
00060             if (tgt >= m_maxsize)
00061             {
00062                 tgt = m_maxsize - 1;
00063             }
00064             return tgt >= 0 ? m_fontsizes[tgt] : 12;
00065         }
00066     int ascent()
00067     {
00068         QFont f(name(), currentsize());
00069         QFontMetrics fm(f);
00070         return fm.ascent();
00071     }
00072     int ascent(const CStyle& ch)
00073     {
00074         QFont f(name(), getsize(ch));
00075         QFontMetrics fm(f);
00076         return fm.ascent();
00077     }
00078     int descent()
00079     {
00080         QFont f(name(), currentsize());
00081         QFontMetrics fm(f);
00082         return fm.descent();
00083     }
00084     int descent(const CStyle& ch)
00085     {
00086         QFont f(name(), getsize(ch));
00087         QFontMetrics fm(f);
00088         return fm.descent();
00089     }
00090     int lineSpacing()
00091     {
00092         QFont f(name(), currentsize());
00093         QFontMetrics fm(f);
00094         return fm.lineSpacing();
00095     }
00096     int lineSpacing(const CStyle& ch)
00097     {
00098         QFont f(name(), getsize(ch));
00099         QFontMetrics fm(f);
00100         return fm.lineSpacing();
00101     }
00102     bool decreasesize()
00103         {
00104           if (m_fixgraphics)
00105             {
00106               if (--m_size < 0)
00107                 {
00108                   m_size = 0;
00109                   return false;
00110                 }
00111               g_size = m_size;
00112             }
00113           else
00114             {
00115               if (g_size-- == m_size)
00116                 {
00117                   if (--m_size < 0)
00118                     {
00119                       m_size = 0;
00120                     }
00121                 }
00122             }
00123 //          qDebug("Font:%d Graphics:%d", m_size, g_size);
00124             return true;
00125         }
00126     bool increasesize()
00127         {
00128           if (m_fixgraphics)
00129             {
00130               if (++m_size >= m_maxsize)
00131                 {
00132                   m_size = m_maxsize - 1;
00133                   return false;
00134                 }
00135               g_size = m_size;
00136             }
00137           else
00138             {
00139               if (g_size++ == m_size)
00140                 {
00141                   if (++m_size >= m_maxsize)
00142                     {
00143                       m_size = m_maxsize - 1;
00144                     }
00145                 }
00146             }
00147             return true;
00148         }
00149     bool ChangeFont(QString& n)
00150         {
00151             return ChangeFont(n, currentsize());
00152         }
00153     bool ChangeFont(QString& n, int tgt);
00154     void setlead(int _lead)
00155         {
00156             m_leading = _lead;
00157         }
00158     int getlead()
00159         {
00160             return m_leading;
00161         }
00162     void setextraspace(int _lead)
00163         {
00164             m_extraspace = _lead;
00165         }
00166     int getextraspace()
00167         {
00168             return m_extraspace;
00169         }
00170 };
00171 
00172 #endif

Generated on Sat Nov 5 16:16:55 2005 for OPIE by  doxygen 1.4.2