2 * Copyright (C) 2006 Dirk Mueller <mueller@kde.org>
3 * Copyright (C) 2006 Zack Rusin <zack@kde.org>
4 * Copyright (C) 2006 Simon Hausmann <hausmann@kde.org>
5 * Copyright (C) 2006 Allan Sandfeld Jensen <sandfeld@kde.org>
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
18 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 #include "GraphicsContext.h"
42 Font::operator QFont() const
44 Q_ASSERT(primaryFont() != 0);
45 return primaryFont()->platformData().font();
48 void Font::drawGlyphs(GraphicsContext* graphicsContext, const FontData* font, const GlyphBuffer& glyphBuffer,
49 int from, int numGlyphs, const FloatPoint& point) const
51 QPainter& p = *graphicsContext->platformContext();
53 Color color = graphicsContext->pen().color();
54 p.setPen(QColor(color.red(), color.green(), color.blue()));
55 p.setFont(font->platformData().font());
57 QChar* buffer = reinterpret_cast<QChar*>(glyphBuffer.glyphs(from));
58 QString str = QString::fromRawData(buffer, numGlyphs);
60 p.drawText(QPointF(point.x(),point.y()), str);
63 void Font::drawComplexText(GraphicsContext* ctx, const TextRun& run, const TextStyle&, const FloatPoint& point) const
65 // ### style, run.from()/length() cut-off
66 ctx->platformContext()->drawText(point.x(),
68 QString::fromRawData(reinterpret_cast<const QChar*>(run.characters() + run.from()), run.length()));
71 float Font::floatWidthForComplexText(const TextRun& run, const TextStyle&) const
74 QFontMetricsF metrics(primaryFont()->m_font.font());
75 return metrics.width(QString::fromRawData(reinterpret_cast<const QChar*>(run.characters() + run.from()), run.length()));