Home | History | Annotate | Download | only in qt
      1 /*
      2     Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
      3 
      4     This library is free software; you can redistribute it and/or
      5     modify it under the terms of the GNU Library General Public
      6     License as published by the Free Software Foundation; either
      7     version 2 of the License, or (at your option) any later version.
      8 
      9     This library is distributed in the hope that it will be useful,
     10     but WITHOUT ANY WARRANTY; without even the implied warranty of
     11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12     Library General Public License for more details.
     13 
     14     You should have received a copy of the GNU Library General Public License
     15     along with this library; see the file COPYING.LIB.  If not, write to
     16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     17     Boston, MA 02110-1301, USA.
     18 
     19     This class provides all functionality needed for loading images, style sheets and html
     20     pages from the web. It has a memory cache for these objects.
     21 */
     22 #include "config.h"
     23 #include "FontCustomPlatformData.h"
     24 
     25 #include "FontPlatformData.h"
     26 #include "SharedBuffer.h"
     27 #include <QFontDatabase>
     28 #include <QStringList>
     29 
     30 namespace WebCore {
     31 
     32 FontCustomPlatformData::~FontCustomPlatformData()
     33 {
     34     QFontDatabase::removeApplicationFont(m_handle);
     35 }
     36 
     37 FontPlatformData FontCustomPlatformData::fontPlatformData(int size, bool bold, bool italic, FontOrientation, TextOrientation, FontWidthVariant, FontRenderingMode)
     38 {
     39     QFont font;
     40     font.setFamily(QFontDatabase::applicationFontFamilies(m_handle)[0]);
     41     font.setPixelSize(size);
     42     if (bold)
     43         font.setWeight(QFont::Bold);
     44     font.setItalic(italic);
     45 
     46     return FontPlatformData(font);
     47 }
     48 
     49 FontCustomPlatformData* createFontCustomPlatformData(SharedBuffer* buffer)
     50 {
     51     ASSERT_ARG(buffer, buffer);
     52 
     53     int id = QFontDatabase::addApplicationFontFromData(QByteArray(buffer->data(), buffer->size()));
     54     if (id == -1)
     55         return 0;
     56 
     57     Q_ASSERT(QFontDatabase::applicationFontFamilies(id).size() > 0);
     58 
     59     FontCustomPlatformData *data = new FontCustomPlatformData;
     60     data->m_handle = id;
     61     return data;
     62 }
     63 
     64 bool FontCustomPlatformData::supportsFormat(const String& format)
     65 {
     66     return equalIgnoringCase(format, "truetype") || equalIgnoringCase(format, "opentype");
     67 }
     68 
     69 }
     70