06189fe890606c740131d673ceef98620b51099c
[WebKit-https.git] / WebCore / platform / qt / FontQt.cpp
1 /*
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>
6  * 
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
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.
17  *
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.
29  */
30
31 #include "config.h"
32 #include "Font.h"
33
34 #include "FontData.h"
35 #include "GraphicsContext.h"
36
37 #include <QPainter>
38
39 namespace WebCore {
40
41 Font::operator QFont() const
42 {
43     return primaryFont()->platformData().font();
44 }
45
46 void Font::drawGlyphs(GraphicsContext* graphicsContext, const FontData* font, const GlyphBuffer& glyphBuffer,
47                       int from, int numGlyphs, const FloatPoint& point) const
48 {
49     QPainter& p = *graphicsContext->platformContext();
50
51     Color color = graphicsContext->fillColor();
52     p.setPen(QColor(color));
53     p.setFont(font->platformData().font());
54
55     const QChar* buffer = reinterpret_cast<const QChar*>(glyphBuffer.glyphs(from));
56     QString str = QString::fromRawData(buffer, numGlyphs);
57
58     p.drawText(point, str);
59 }
60
61 void Font::drawComplexText(GraphicsContext* ctx, const TextRun& run, const TextStyle&, const FloatPoint& point) const
62 {
63     // FIXME: style, run.from()/length() cut-off
64     ctx->platformContext()->drawText(point, 
65                                      QString::fromRawData(
66                                          reinterpret_cast<const QChar*>(
67                                              run.characters() + run.from()), run.length()));
68 }
69
70 float Font::floatWidthForComplexText(const TextRun& run, const TextStyle&) const
71 {
72     // FIXME: style
73     QFontMetricsF metrics(primaryFont()->m_font.font());
74     return metrics.width(QString::fromRawData(reinterpret_cast<const QChar*>(run.characters() + run.from()), run.length()));
75 }
76
77 }
78
79 // vim: ts=4 sw=4 et