src/gui/text/qfontengine_s60.cpp
changeset 22 79de32ba3296
parent 18 2f34d5167611
child 23 89e065397ea6
--- a/src/gui/text/qfontengine_s60.cpp	Mon May 03 13:17:34 2010 +0300
+++ b/src/gui/text/qfontengine_s60.cpp	Fri May 14 16:40:13 2010 +0300
@@ -79,6 +79,31 @@
     return result;
 }
 
+bool QFontEngineS60Extensions::getSfntTableData(uint tag, uchar *buffer, uint *length) const
+{
+    if (!m_trueTypeExtension->HasTrueTypeTable(tag))
+        return false;
+
+    bool result = true;
+    TInt error = KErrNone;
+    TInt tableByteLength;
+    TAny *table =
+        q_check_ptr(m_trueTypeExtension->GetTrueTypeTable(error, tag, &tableByteLength));
+
+    if (error != KErrNone) {
+        return false;
+    } else if (*length > 0 && *length < tableByteLength) {
+        result = false; // Caller did not allocate enough memory
+    } else {
+        *length = tableByteLength;
+        if (buffer)
+            qMemCopy(buffer, table, tableByteLength);
+    }
+
+    m_trueTypeExtension->ReleaseTrueTypeTable(table);
+    return result;
+}
+
 const unsigned char *QFontEngineS60Extensions::cmap() const
 {
     if (!m_cmap) {
@@ -326,6 +351,11 @@
     return m_extensions->getSfntTable(tag);
 }
 
+bool QFontEngineS60::getSfntTableData(uint tag, uchar *buffer, uint *length) const
+{
+    return m_extensions->getSfntTableData(tag, buffer, length);
+}
+
 QFontEngine::Type QFontEngineS60::type() const
 {
     return QFontEngine::S60FontEngine;