Part 2 of removing PlatformString.h, remove PlatformString.h
[WebKit-https.git] / Source / WebCore / platform / graphics / FontPlatformData.cpp
1 /*
2  * Copyright (C) 2011 Brent Fulgham
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  */
20
21 #include "config.h"
22 #include "FontPlatformData.h"
23
24 #include <wtf/HashMap.h>
25 #include <wtf/RetainPtr.h>
26 #include <wtf/Vector.h>
27 #include <wtf/text/StringHash.h>
28 #include <wtf/text/WTFString.h>
29
30 #if PLATFORM(CHROMIUM) && OS(DARWIN)
31 #include "HarfBuzzNGFace.h"
32 #endif
33
34 using namespace std;
35
36 namespace WebCore {
37
38 FontPlatformData::FontPlatformData(WTF::HashTableDeletedValueType)
39     : m_syntheticBold(false)
40     , m_syntheticOblique(false)
41     , m_orientation(Horizontal)
42     , m_textOrientation(TextOrientationVerticalRight)
43     , m_size(0)
44     , m_widthVariant(RegularWidth)
45 #if PLATFORM(WIN)
46     , m_font(WTF::HashTableDeletedValue)
47 #elif OS(DARWIN)
48     , m_font(hashTableDeletedFontValue())
49 #endif
50 #if USE(CG) && PLATFORM(WIN)
51     , m_cgFont(0)
52 #elif USE(CAIRO)
53     , m_scaledFont(hashTableDeletedFontValue())
54 #endif
55     , m_isColorBitmapFont(false)
56     , m_isCompositeFontReference(false)
57 #if OS(DARWIN)
58     , m_isPrinterFont(false)
59 #endif
60 #if PLATFORM(WIN)
61     , m_useGDI(false)
62 #endif
63 {
64 }
65
66 FontPlatformData::FontPlatformData()
67     : m_syntheticBold(false)
68     , m_syntheticOblique(false)
69     , m_orientation(Horizontal)
70     , m_textOrientation(TextOrientationVerticalRight)
71     , m_size(0)
72     , m_widthVariant(RegularWidth)
73 #if OS(DARWIN)
74     , m_font(0)
75 #endif
76 #if USE(CG) && PLATFORM(WIN)
77     , m_cgFont(0)
78 #elif USE(CAIRO)
79     , m_scaledFont(0)
80 #endif
81     , m_isColorBitmapFont(false)
82     , m_isCompositeFontReference(false)
83 #if OS(DARWIN)
84     , m_isPrinterFont(false)
85 #endif
86 #if PLATFORM(WIN)
87     , m_useGDI(false)
88 #endif
89 {
90 }
91
92 FontPlatformData::FontPlatformData(float size, bool syntheticBold, bool syntheticOblique, FontOrientation orientation, TextOrientation textOrientation, FontWidthVariant widthVariant)
93     : m_syntheticBold(syntheticBold)
94     , m_syntheticOblique(syntheticOblique)
95     , m_orientation(orientation)
96     , m_textOrientation(textOrientation)
97     , m_size(size)
98     , m_widthVariant(widthVariant)
99 #if OS(DARWIN)
100     , m_font(0)
101 #endif
102 #if USE(CG) && PLATFORM(WIN)
103     , m_cgFont(0)
104 #elif USE(CAIRO)
105     , m_scaledFont(0)
106 #endif
107     , m_isColorBitmapFont(false)
108     , m_isCompositeFontReference(false)
109 #if OS(DARWIN)
110     , m_isPrinterFont(false)
111 #endif
112 #if PLATFORM(WIN)
113     , m_useGDI(false)
114 #endif
115 {
116 }
117
118 #if OS(DARWIN) && (USE(CG) || USE(SKIA_ON_MAC_CHROMIUM))
119 FontPlatformData::FontPlatformData(CGFontRef cgFont, float size, bool syntheticBold, bool syntheticOblique, FontOrientation orientation,
120                                    TextOrientation textOrientation, FontWidthVariant widthVariant)
121     : m_syntheticBold(syntheticBold)
122     , m_syntheticOblique(syntheticOblique)
123     , m_orientation(orientation)
124     , m_textOrientation(textOrientation)
125     , m_size(size)
126     , m_widthVariant(widthVariant)
127     , m_font(0)
128     , m_cgFont(cgFont)
129     , m_isColorBitmapFont(false)
130     , m_isCompositeFontReference(false)
131     , m_isPrinterFont(false)
132 {
133 }
134 #endif
135
136 FontPlatformData::FontPlatformData(const FontPlatformData& source)
137     : m_syntheticBold(source.m_syntheticBold)
138     , m_syntheticOblique(source.m_syntheticOblique)
139     , m_orientation(source.m_orientation)
140     , m_textOrientation(source.m_textOrientation)
141     , m_size(source.m_size)
142     , m_widthVariant(source.m_widthVariant)
143     , m_isColorBitmapFont(source.m_isColorBitmapFont)
144     , m_isCompositeFontReference(source.m_isCompositeFontReference)
145 #if OS(DARWIN)
146     , m_isPrinterFont(source.m_isPrinterFont)
147 #endif
148 {
149     platformDataInit(source);
150 }
151
152 const FontPlatformData& FontPlatformData::operator=(const FontPlatformData& other)
153 {
154     // Check for self-assignment.
155     if (this == &other)
156         return *this;
157
158     m_syntheticBold = other.m_syntheticBold;
159     m_syntheticOblique = other.m_syntheticOblique;
160     m_orientation = other.m_orientation;
161     m_textOrientation = other.m_textOrientation;
162     m_size = other.m_size;
163     m_widthVariant = other.m_widthVariant;
164     m_isColorBitmapFont = other.m_isColorBitmapFont;
165     m_isCompositeFontReference = other.m_isCompositeFontReference;
166 #if OS(DARWIN)
167     m_isPrinterFont = other.m_isPrinterFont;
168 #endif
169
170     return platformDataAssign(other);
171 }
172
173 }