diff options
Diffstat (limited to 'kcontrol/kfontinst/lib/FcEngine.h')
-rw-r--r-- | kcontrol/kfontinst/lib/FcEngine.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/kcontrol/kfontinst/lib/FcEngine.h b/kcontrol/kfontinst/lib/FcEngine.h new file mode 100644 index 000000000..4a09b8a55 --- /dev/null +++ b/kcontrol/kfontinst/lib/FcEngine.h @@ -0,0 +1,118 @@ +#ifndef __FC_ENGINE_H__ +#define __FC_ENGINE_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <qstring.h> +#include <qvaluevector.h> +#include <qfont.h> +#include <kurl.h> +#include <kdeversion.h> +#include <fontconfig/fontconfig.h> + +#if (FC_VERSION<20200) + +#define KFI_FC_NO_WIDTHS +#define KFI_FC_LIMITED_WEIGHTS + +#endif + +#ifdef KFI_FC_LIMITED_WEIGHTS + +#undef FC_WEIGHT_LIGHT +#define FC_WEIGHT_THIN 0 +#define FC_WEIGHT_EXTRALIGHT 40 +#define FC_WEIGHT_ULTRALIGHT FC_WEIGHT_EXTRALIGHT +#define FC_WEIGHT_LIGHT 50 +#define FC_WEIGHT_BOOK 75 +#define FC_WEIGHT_REGULAR 80 +#define FC_WEIGHT_NORMAL FC_WEIGHT_REGULAR +#define FC_WEIGHT_SEMIBOLD FC_WEIGHT_DEMIBOLD +#define FC_WEIGHT_EXTRABOLD 205 +#define FC_WEIGHT_ULTRABOLD FC_WEIGHT_EXTRABOLD +#define FC_WEIGHT_HEAVY FC_WEIGHT_BLACK + +#endif + +class QPixmap; + +#ifdef HAVE_XFT +typedef struct _XftFont XftFont; +#endif + +namespace KFI +{ + +class KDE_EXPORT CFcEngine +{ + public: + + CFcEngine(); + ~CFcEngine(); + +#ifdef HAVE_XFT + bool draw(const KURL &url, int w, int h, QPixmap &pix, int faceNo, bool thumb); +#endif + int getNumIndexes() { return itsIndexCount; } // Only valid after draw has been called! + QString getName(const KURL &url, int faceNo=0); + bool getInfo(const KURL &url, int faceNo, QString &full, QString &family, QString &foundry, QString &weight, +#ifndef KFI_FC_NO_WIDTHS + QString &width, +#endif + QString &spacing, QString &slant); + QFont getQFont(const QString &name, int size); + + const QValueVector<int> & sizes() const { return itsSizes; } + int alphaSize() const { return itsAlphaSize; } + + static QString getPreviewString(); + static void setPreviewString(const QString &str); + static QString getUppercaseLetters(); + static QString getLowercaseLetters(); + static QString getPunctuation(); + static QString getFcString(FcPattern *pat, const char *val, int faceNo=0); + static QString createName(FcPattern *pat, int faceNo=0); + static QString weightStr(int weight, bool emptyNormal=true); +#ifndef KFI_FC_NO_WIDTHS + static QString widthStr(int width, bool emptyNormal=true); +#endif + static QString slantStr(int slant, bool emptyNormal=true); + static QString spacingStr(int spacing); + + static const int constScalableSizes[]; + static const int constDefaultAlphaSize; + + private: + + bool parseUrl(const KURL &url, int faceNo, bool all=false); + void parseName(const QString &name, int faceNo, bool all=false); +#ifdef HAVE_XFT + XftFont * getFont(int size, QPixmap *pix=NULL); + void getSizes(QPixmap *pix=NULL); +#endif + + private: + + bool itsInstalled; + QString itsName, + itsDescriptiveName, + itsFoundry; + int itsIndex, + itsIndexCount, + itsWeight, +#ifndef KFI_FC_NO_WIDTHS + itsWidth, +#endif + itsSlant, + itsSpacing, + itsAlphaSize; + QValueVector<int> itsSizes; + KURL itsLastUrl; + FcBool itsScalable; +}; + +} + +#endif |