text: /****************************************************************************
  **
  ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
  ** All rights reserved.
  ** Contact: Nokia Corporation (qt-info@nokia.com)
  **
  ** This file is part of the QtGui module of the Qt Toolkit.
  **
  ** $QT_BEGIN_LICENSE:LGPL$
  ** GNU Lesser General Public License Usage
  ** This file may be used under the terms of the GNU Lesser General Public
  ** License version 2.1 as published by the Free Software Foundation and
  ** appearing in the file LICENSE.LGPL included in the packaging of this
  ** file. Please review the following information to ensure the GNU Lesser
  ** General Public License version 2.1 requirements will be met:
  ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
  **
  ** In addition, as a special exception, Nokia gives you certain additional
  ** rights. These rights are described in the Nokia Qt LGPL Exception
  ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
  **
  ** GNU General Public License Usage
  ** Alternatively, this file may be used under the terms of the GNU General
  ** Public License version 3.0 as published by the Free Software Foundation
  ** and appearing in the file LICENSE.GPL included in the packaging of this
  ** file. Please review the following information to ensure the GNU General
  ** Public License version 3.0 requirements will be met:
  ** http://www.gnu.org/copyleft/gpl.html.
  **
  ** Other Usage
  ** Alternatively, this file may be used in accordance with the terms and
  ** conditions contained in a signed written agreement between you and Nokia.
  **
  **
  **
  **
  **
  ** $QT_END_LICENSE$
  **
  ****************************************************************************/
  
  #ifndef QABSTRACTFONTENGINE_P_H
  #define QABSTRACTFONTENGINE_P_H
  
  //
  //  W A R N I N G
  //  -------------
  //
  // This file is not part of the Qt API.  It exists purely as an
  // implementation detail.  This header file may change from version to
  // version without notice, or even be removed.
  //
  // We mean it.
  //
  
  #include "qfontengine_p.h"
  #include "qabstractfontengine_qws.h"
  
  QT_BEGIN_NAMESPACE
  
  class QCustomFontEngine;
  
  class QProxyFontEngine : public QFontEngine
  {
      Q_OBJECT
  public:
      QProxyFontEngine(QAbstractFontEngine *engine, const QFontDef &def);
      virtual ~QProxyFontEngine();
  
      virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const;
      virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
      virtual QImage alphaMapForGlyph(glyph_t);
      virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs, QPainterPath *path, QTextItem::RenderFlags flags);
      virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
      virtual glyph_metrics_t boundingBox(glyph_t glyph);
  
      virtual QFixed ascent() const;
      virtual QFixed descent() const;
      virtual QFixed leading() const;
      virtual QFixed xHeight() const;
      virtual QFixed averageCharWidth() const;
      virtual QFixed lineThickness() const;
      virtual QFixed underlinePosition() const;
      virtual qreal maxCharWidth() const;
      virtual qreal minLeftBearing() const;
      virtual qreal minRightBearing() const;
      virtual int glyphCount() const;
  
      virtual bool canRender(const QChar *string, int len);
  
      virtual Type type() const { return Proxy; }
      virtual const char *name() const { return "proxy engine"; }
  
  #if !defined(Q_WS_X11) && !defined(Q_WS_WIN) && !defined(Q_WS_MAC) && !defined(Q_OS_SYMBIAN)
      virtual void draw(QPaintEngine *, qreal, qreal, const QTextItemInt &);
  #endif
  
      inline QAbstractFontEngine::Capabilities capabilities() const
      { return engineCapabilities; }
  
      bool drawAsOutline() const;
  
  private:
      QAbstractFontEngine *engine;
      QAbstractFontEngine::Capabilities engineCapabilities;
  };
  
  QT_END_NAMESPACE
  
  #endif
  