src/gui/text/qfontengine_s60_p.h
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
child 37 758a864f9613
--- a/src/gui/text/qfontengine_s60_p.h	Tue Jul 06 15:10:48 2010 +0300
+++ b/src/gui/text/qfontengine_s60_p.h	Wed Aug 18 10:37:55 2010 +0300
@@ -54,10 +54,20 @@
 //
 
 #include "qconfig.h"
-#include "qfontengine_p.h"
+#include <private/qfontengine_p.h>
 #include "qsize.h"
 #include <openfont.h>
 
+// This is a very hackish way to detect Symbian^4 and needs to be removed
+// once device profiles for proper feature detection are available
+#ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS
+#define Q_SYMBIAN_HAS_FONTTABLE_API
+#endif
+
+#ifdef Q_SYMBIAN_HAS_FONTTABLE_API
+#define Q_SYMBIAN_HAS_GLYPHOUTLINE_API
+#endif // Q_SYMBIAN_HAS_FONTTABLE_API
+
 class CFont;
 
 QT_BEGIN_NAMESPACE
@@ -66,20 +76,22 @@
 class QSymbianTypeFaceExtras
 {
 public:
-    QSymbianTypeFaceExtras(CFont* fontOwner, COpenFont *font);
+    QSymbianTypeFaceExtras(CFont* cFont, COpenFont *openFont = 0);
+    ~QSymbianTypeFaceExtras();
 
     QByteArray getSfntTable(uint tag) const;
     bool getSfntTableData(uint tag, uchar *buffer, uint *length) const;
-    const unsigned char *cmap() const;
+    const uchar *cmap() const;
     CFont *fontOwner() const;
 
 private:
-    COpenFont *m_font;
-    mutable MOpenFontTrueTypeExtension *m_trueTypeExtension;
-    mutable const unsigned char *m_cmap;
+    CFont* m_cFont;
     mutable bool m_symbolCMap;
     mutable QByteArray m_cmapTable;
-    CFont* m_fontOwner;
+#ifndef Q_SYMBIAN_HAS_FONTTABLE_API
+    COpenFont *m_openFont;
+    mutable MOpenFontTrueTypeExtension *m_trueTypeExtension;
+#endif // Q_SYMBIAN_HAS_FONTTABLE_API
 };
 
 class QFontEngineS60 : public QFontEngine
@@ -91,6 +103,9 @@
     bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const;
     void recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const;
 
+    void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
+                         QPainterPath *path, QTextItem::RenderFlags flags);
+
     QImage alphaMapForGlyph(glyph_t glyph);
 
     glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
@@ -121,6 +136,7 @@
 
 private:
     friend class QFontPrivate;
+    friend class QSymbianVGFontGlyphCache;
 
     QFixed glyphAdvance(HB_Glyph glyph) const;
     CFont *fontWithSize(qreal size) const;