summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/src/kernel/tqfontengine_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/src/kernel/tqfontengine_p.h')
-rw-r--r--tqtinterface/qt4/src/kernel/tqfontengine_p.h642
1 files changed, 0 insertions, 642 deletions
diff --git a/tqtinterface/qt4/src/kernel/tqfontengine_p.h b/tqtinterface/qt4/src/kernel/tqfontengine_p.h
deleted file mode 100644
index 37aba1c..0000000
--- a/tqtinterface/qt4/src/kernel/tqfontengine_p.h
+++ /dev/null
@@ -1,642 +0,0 @@
-/****************************************************************************
-**
-** ???
-**
-** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA.
-**
-** This file is part of the kernel module of the TQt GUI Toolkit.
-**
-** This file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free
-** Software Foundation and appearing in the files LICENSE.GPL2
-** and LICENSE.GPL3 included in the packaging of this file.
-** Alternatively you may (at your option) use any later version
-** of the GNU General Public License if such license has been
-** publicly approved by Trolltech ASA (or its successors, if any)
-** and the KDE Free TQt Foundation.
-**
-** Please review the following information to ensure GNU General
-** Public Licensing requirements will be met:
-** http://trolltech.com/products/qt/licenses/licensing/opensource/.
-** If you are unsure which license is appropriate for your use, please
-** review the following information:
-** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
-** or contact the sales department at [email protected].
-**
-** Licensees holding valid TQt Commercial licenses may use this file in
-** accordance with the TQt Commercial License Agreement provided with
-** the Software.
-**
-** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
-** herein.
-**
-**********************************************************************/
-
-#ifndef TQFONTENGINE_P_H
-#define TQFONTENGINE_P_H
-
-#include "tqtglobaldefines.h"
-
-#ifndef TQT_H
-#include "tqglobal.h"
-#endif // TQT_H
-
-#ifdef USE_QT4
-
-// FIXME
-
-#else // USE_QT4
-
-#ifdef TQ_WS_WIN
-#include "tqt_windows.h"
-#include "tqptrdict.h"
-#endif
-
-#include "tqtextengine_p.h"
-
-class TQPaintDevice;
-
-struct glyph_metrics_t;
-class TQChar;
-typedef unsigned short glyph_t;
-struct qoffset_t;
-typedef int advance_t;
-class TQOpenType;
-struct TransformedFont;
-
-#if defined( TQ_WS_X11 ) || defined( TQ_WS_WIN) || defined( TQ_WS_MAC )
-class TQFontEngine : public TQShared
-{
-public:
- enum Error {
- NoError,
- OutOfMemory
- };
-
- enum Type {
- // X11 types
- Box,
- XLFD,
- LatinXLFD,
- Xft,
-
- // MS Windows types
- Win,
- Uniscribe,
-
- // Apple MacOS types
- Mac,
-
- // Trolltech TQWS types
- TQWS
- };
-
- TQFontEngine() {
- count = 0; cache_count = 0;
-#ifdef TQ_WS_X11
- transformed_fonts = 0;
-#endif
- }
- virtual ~TQFontEngine();
-
- /* returns 0 as glyph index for non existant glyphs */
- virtual Error stringToCMap( const TQChar *str, int len, glyph_t *glyphs,
- advance_t *advances, int *nglyphs, bool mirrored ) const = 0;
-
-#ifdef TQ_WS_X11
- virtual int cmap() const { return -1; }
- virtual TQOpenType *openType() const { return 0; }
-#endif
-
- virtual void draw( TQPainter *p, int x, int y, const TQTextEngine *engine, const TQScriptItem *si, int textFlags ) = 0;
-
- virtual glyph_metrics_t boundingBox( const glyph_t *glyphs,
- const advance_t *advances,
- const qoffset_t *offsets, int numGlyphs ) = 0;
- virtual glyph_metrics_t boundingBox( glyph_t glyph ) = 0;
-
- virtual int ascent() const = 0;
- virtual int descent() const = 0;
- virtual int leading() const = 0;
-
- virtual int lineThickness() const;
- virtual int underlinePosition() const;
-
- virtual int maxCharWidth() const = 0;
- virtual int minLeftBearing() const { return 0; }
- virtual int minRightBearing() const { return 0; }
-
- virtual const char *name() const = 0;
-
- virtual bool canRender( const TQChar *string, int len ) = 0;
-
- virtual void setScale( double ) {}
- virtual double scale() const { return 1.; }
-
- virtual Type type() const = 0;
-
- TQFontDef fontDef;
- uint cache_cost; // amount of mem used in kb by the font
- int cache_count;
-
-#ifdef TQ_WS_WIN
- HDC dc() const;
- void getGlyphIndexes( const TQChar *ch, int numChars, glyph_t *glyphs, bool mirrored ) const;
- void getCMap();
-
- TQCString _name;
- HDC hdc;
- HFONT hfont;
- LOGFONT logfont;
- uint stockFont : 1;
- uint paintDevice : 1;
- uint useTextOutA : 1;
- uint ttf : 1;
- uint symbol : 1;
- union {
- TEXTMETRICW w;
- TEXTMETRICA a;
- } tm;
- int lw;
- unsigned char *cmap;
- void *script_cache;
- static TQPtrDict<TQFontEngine> cacheDict;
- short lbearing;
- short rbearing;
-#endif // TQ_WS_WIN
-#ifdef TQ_WS_X11
- TransformedFont *transformed_fonts;
-#endif
-};
-#elif defined( TQ_WS_TQWS )
-class TQGfx;
-
-class TQFontEngine : public TQShared
-{
-public:
- TQFontEngine( const TQFontDef&, const TQPaintDevice * = 0 );
- ~TQFontEngine();
- /*TQMemoryManager::FontID*/ void *handle() const;
-
- enum Type {
- // X11 types
- Box,
- XLFD,
- Xft,
-
- // MS Windows types
- Win,
- Uniscribe,
-
- // Apple MacOS types
- Mac,
-
- // Trolltech TQWS types
- Qws
- };
-
- enum TextFlags {
- Underline = 0x01,
- Overline = 0x02,
- StrikeOut = 0x04
- };
-
- enum Error {
- NoError,
- OutOfMemory
- };
- /* returns 0 as glyph index for non existant glyphs */
- Error stringToCMap( const TQChar *str, int len, glyph_t *glyphs, advance_t *advances, int *nglyphs, bool mirrored ) const;
-
- void draw( TQPainter *p, int x, int y, const TQTextEngine *engine, const TQScriptItem *si, int textFlags );
-
- glyph_metrics_t boundingBox( const glyph_t *glyphs,
- const advance_t *advances, const qoffset_t *offsets, int numGlyphs );
- glyph_metrics_t boundingBox( glyph_t glyph );
-
- int ascent() const;
- int descent() const;
- int leading() const;
- int maxCharWidth() const;
- int minLeftBearing() const;
- int minRightBearing() const;
- int underlinePosition() const;
- int lineThickness() const;
-
- Type type() { return Qws; }
-
- bool canRender( const TQChar *string, int len );
- inline const char *name() const { return 0; }
- TQFontDef fontDef;
- /*TQMemoryManager::FontID*/ void *id;
- int cache_cost;
- int cache_count;
- int scale;
-};
-#endif // WIN || X11 || MAC
-
-
-
-enum IndicFeatures {
- CcmpFeature,
- InitFeature,
- NuktaFeature,
- AkhantFeature,
- RephFeature,
- BelowFormFeature,
- HalfFormFeature,
- PostFormFeature,
- VattuFeature,
- PreSubstFeature,
- AboveSubstFeature,
- BelowSubstFeature,
- PostSubstFeature,
- HalantFeature
-};
-
-#if defined(TQ_WS_X11) || defined(TQ_WS_WIN)
-class TQFontEngineBox : public TQFontEngine
-{
-public:
- TQFontEngineBox( int size );
- ~TQFontEngineBox();
-
- Error stringToCMap( const TQChar *str, int len, glyph_t *glyphs, advance_t *advances, int *nglyphs, bool mirrored ) const;
-
- void draw( TQPainter *p, int x, int y, const TQTextEngine *engine, const TQScriptItem *si, int textFlags );
-
- virtual glyph_metrics_t boundingBox( const glyph_t *glyphs,
- const advance_t *advances, const qoffset_t *offsets, int numGlyphs );
- glyph_metrics_t boundingBox( glyph_t glyph );
-
- int ascent() const;
- int descent() const;
- int leading() const;
- int maxCharWidth() const;
- int minLeftBearing() const { return 0; }
- int minRightBearing() const { return 0; }
-
-#ifdef TQ_WS_X11
- int cmap() const;
-#endif
- const char *name() const;
-
- bool canRender( const TQChar *string, int len );
-
- Type type() const;
- inline int size() const { return _size; }
-
-private:
- friend class TQFontPrivate;
- int _size;
-};
-#endif
-
-#ifdef TQ_WS_X11
-#include "tqt_x11_p.h"
-
-
-struct TransformedFont
-{
- float xx;
- float xy;
- float yx;
- float yy;
- union {
- Font xlfd_font;
-#ifndef TQT_NO_XFTFREETYPE
- XftFont *xft_font;
-#endif
- };
- TransformedFont *next;
-};
-
-#ifndef TQT_NO_XFTFREETYPE
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include "ftxopen.h"
-
-class TQTextCodec;
-
-class TQFontEngineXft : public TQFontEngine
-{
-public:
- TQFontEngineXft( XftFont *font, XftPattern *pattern, int cmap );
- ~TQFontEngineXft();
-
- TQOpenType *openType() const;
-
- Error stringToCMap( const TQChar *str, int len, glyph_t *glyphs, advance_t *advances, int *nglyphs, bool mirrored ) const;
-
- void draw( TQPainter *p, int x, int y, const TQTextEngine *engine, const TQScriptItem *si, int textFlags );
-
- virtual glyph_metrics_t boundingBox( const glyph_t *glyphs,
- const advance_t *advances, const qoffset_t *offsets, int numGlyphs );
- glyph_metrics_t boundingBox( glyph_t glyph );
-
- int ascent() const;
- int descent() const;
- int leading() const;
- int lineThickness() const;
- int underlinePosition() const;
- int maxCharWidth() const;
- int minLeftBearing() const;
- int minRightBearing() const;
-
- int cmap() const;
- const char *name() const;
-
- void setScale( double scale );
- double scale() const { return _scale; }
-
- bool canRender( const TQChar *string, int len );
-
- Type type() const;
- XftPattern *pattern() const { return _pattern; }
- FT_Face face() const { return _face; }
- XftFont *font() const { return _font; }
-
- void recalcAdvances( int len, glyph_t *glyphs, advance_t *advances );
-
-private:
- friend class TQFontPrivate;
- friend class TQOpenType;
- XftFont *_font;
- XftPattern *_pattern;
- FT_Face _face;
- TQOpenType *_openType;
- int _cmap;
- short lbearing;
- short rbearing;
- float _scale;
- enum { widthCacheSize = 0x800, cmapCacheSize = 0x500 };
- unsigned char widthCache[widthCacheSize];
- glyph_t cmapCache[cmapCacheSize];
-};
-#endif
-
-class TQFontEngineLatinXLFD;
-
-class TQFontEngineXLFD : public TQFontEngine
-{
-public:
- TQFontEngineXLFD( XFontStruct *fs, const char *name, int cmap );
- ~TQFontEngineXLFD();
-
- Error stringToCMap( const TQChar *str, int len, glyph_t *glyphs, advance_t *advances, int *nglyphs, bool mirrored ) const;
-
- void draw( TQPainter *p, int x, int y, const TQTextEngine *engine, const TQScriptItem *si, int textFlags );
-
- virtual glyph_metrics_t boundingBox( const glyph_t *glyphs,
- const advance_t *advances, const qoffset_t *offsets, int numGlyphs );
- glyph_metrics_t boundingBox( glyph_t glyph );
-
- int ascent() const;
- int descent() const;
- int leading() const;
- int maxCharWidth() const;
- int minLeftBearing() const;
- int minRightBearing() const;
-
- int cmap() const;
- const char *name() const;
-
- bool canRender( const TQChar *string, int len );
-
- void setScale( double scale );
- double scale() const { return _scale; }
- Type type() const;
-
- TQt::HANDLE handle() const { return (TQt::HANDLE) _fs->fid; }
-
-private:
- friend class TQFontPrivate;
- XFontStruct *_fs;
- TQCString _name;
- TQTextCodec *_codec;
- float _scale; // needed for printing, to correctly scale font metrics for bitmap fonts
- int _cmap;
- short lbearing;
- short rbearing;
- enum XlfdTransformations {
- XlfdTrUnknown,
- XlfdTrSupported,
- XlfdTrUnsupported
- };
- XlfdTransformations xlfd_transformations;
-
- friend class TQFontEngineLatinXLFD;
-};
-
-class TQFontEngineLatinXLFD : public TQFontEngine
-{
-public:
- TQFontEngineLatinXLFD( XFontStruct *xfs, const char *name, int cmap );
- ~TQFontEngineLatinXLFD();
-
- Error stringToCMap( const TQChar *str, int len, glyph_t *glyphs,
- advance_t *advances, int *nglyphs, bool mirrored ) const;
-
- void draw( TQPainter *p, int x, int y, const TQTextEngine *engine,
- const TQScriptItem *si, int textFlags );
-
- virtual glyph_metrics_t boundingBox( const glyph_t *glyphs,
- const advance_t *advances,
- const qoffset_t *offsets, int numGlyphs );
- glyph_metrics_t boundingBox( glyph_t glyph );
-
- int ascent() const;
- int descent() const;
- int leading() const;
- int maxCharWidth() const;
- int minLeftBearing() const;
- int minRightBearing() const;
-
- int cmap() const { return -1; } // ###
- const char *name() const;
-
- bool canRender( const TQChar *string, int len );
-
- void setScale( double scale );
- double scale() const { return _engines[0]->scale(); }
- Type type() const { return LatinXLFD; }
-
- TQt::HANDLE handle() const { return ((TQFontEngineXLFD *) _engines[0])->handle(); }
-
-private:
- void findEngine( const TQChar &ch );
-
- TQFontEngine **_engines;
- int _count;
-
- glyph_t glyphIndices [0x200];
- advance_t glyphAdvances[0x200];
- glyph_t euroIndex;
- advance_t euroAdvance;
-};
-
-class TQScriptItem;
-class TQTextEngine;
-
-#ifndef TQT_NO_XFTFREETYPE
-
-#include "tqscriptengine_p.h"
-#include "tqtextengine_p.h"
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include "ftxopen.h"
-
-enum { PositioningProperties = 0x80000000 };
-
-class TQOpenType
-{
-public:
- TQOpenType(TQFontEngineXft *fe);
- ~TQOpenType();
-
- struct Features {
- uint tag;
- uint property;
- };
-
- bool supportsScript(unsigned int script) {
- TQ_ASSERT(script < TQFont::NScripts);
- return supported_scripts[script];
- }
- void selectScript(unsigned int script, const Features *features = 0);
-
- bool tqshape(TQShaperItem *item, const unsigned int *properties = 0);
- bool positionAndAdd(TQShaperItem *item, bool doLogClusters = TRUE);
-
- OTL_GlyphItem glyphs() const { return otl_buffer->in_string; }
- int len() const { return otl_buffer->in_length; }
- void setProperty(int index, uint property) { otl_buffer->in_string[index].properties = property; }
-
-
-private:
- bool checkScript(unsigned int script);
- TQFontEngine *fontEngine;
- FT_Face face;
- TTO_GDEF gdef;
- TTO_GSUB gsub;
- TTO_GPOS gpos;
- bool supported_scripts[TQFont::NScripts];
- FT_ULong current_script;
- bool positioned : 1;
- OTL_Buffer otl_buffer;
- GlyphAttributes *tmpAttributes;
- unsigned int *tmpLogClusters;
- int length;
- int orig_nglyphs;
- int loadFlags;
-};
-
-#endif // TQT_NO_XFTFREETYPE
-
-#elif defined( TQ_WS_MAC )
-#include "tqt_mac.h"
-#include <tqmap.h>
-#include <tqcache.h>
-
-class TQFontEngineMac : public TQFontEngine
-{
-#if 0
- ATSFontMetrics *info;
-#else
- FontInfo *info;
-#endif
- int psize;
- FMFontFamily fmfam;
- TQMacFontInfo *internal_fi;
- mutable ATSUTextLayout mTextLayout;
- enum { widthCacheSize = 0x500 };
- mutable unsigned char widthCache[widthCacheSize];
- friend class TQFont;
- friend class TQGLContext;
- friend class TQFontPrivate;
- friend class TQMacSetFontInfo;
-
-public:
- TQFontEngineMac();
- ~TQFontEngineMac();
-
- Error stringToCMap( const TQChar *str, int len, glyph_t *glyphs, advance_t *advances, int *nglyphs, bool mirrored ) const;
-
- void draw( TQPainter *p, int x, int y, const TQTextEngine *engine, const TQScriptItem *si, int textFlags );
-
- glyph_metrics_t boundingBox( const glyph_t *glyphs,
- const advance_t *advances, const qoffset_t *offsets, int numGlyphs );
- glyph_metrics_t boundingBox( glyph_t glyph );
-
- int ascent() const { return (int)info->ascent; }
- int descent() const { return (int)info->descent; }
- int leading() const { return (int)info->leading; }
-#if 0
- int maxCharWidth() const { return (int)info->maxAdvanceWidth; }
-#else
- int maxCharWidth() const { return info->widMax; }
-#endif
-
- const char *name() const { return "ATSUI"; }
-
- bool canRender( const TQChar *string, int len );
-
- Type type() const { return TQFontEngine::Mac; }
-
- void calculateCost();
-
- enum { WIDTH=0x01, DRAW=0x02, EXISTS=0x04 };
- int doTextTask(const TQChar *s, int pos, int use_len, int len, uchar task, int =-1, int y=-1,
- TQPaintDevice *dev=NULL, const TQRegion *rgn=NULL) const;
-};
-
-#elif defined( TQ_WS_WIN )
-
-class TQFontEngineWin : public TQFontEngine
-{
-public:
- TQFontEngineWin( const char *name, HDC, HFONT, bool, LOGFONT );
-
- Error stringToCMap( const TQChar *str, int len, glyph_t *glyphs, advance_t *advances, int *nglyphs, bool mirrored ) const;
-
- void draw( TQPainter *p, int x, int y, const TQTextEngine *engine, const TQScriptItem *si, int textFlags );
-
- glyph_metrics_t boundingBox( const glyph_t *glyphs,
- const advance_t *advances, const qoffset_t *offsets, int numGlyphs );
- glyph_metrics_t boundingBox( glyph_t glyph );
-
- int ascent() const;
- int descent() const;
- int leading() const;
- int maxCharWidth() const;
- int minLeftBearing() const;
- int minRightBearing() const;
-
- const char *name() const;
-
- bool canRender( const TQChar *string, int len );
-
- Type type() const;
-
- enum { widthCacheSize = 0x800, cmapCacheSize = 0x500 };
- unsigned char widthCache[widthCacheSize];
-};
-
-#if 0
-class TQFontEngineUniscribe : public TQFontEngineWin
-{
-public:
- void draw( TQPainter *p, int x, int y, const TQTextEngine *engine, const TQScriptItem *si, int textFlags );
- bool canRender( const TQChar *string, int len );
-
- Type type() const;
-};
-#endif
-
-#endif // TQ_WS_WIN
-
-#endif // USE_QT4
-
-#endif