Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: Source/WebCore/platform/graphics/FontPlatformData.h

Issue 13724012: Remove Cairo support. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. 2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc.
3 * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com 3 * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
4 * Copyright (C) 2007 Holger Hans Peter Freyther 4 * Copyright (C) 2007 Holger Hans Peter Freyther
5 * Copyright (C) 2007 Pioneer Research Center USA, Inc. 5 * Copyright (C) 2007 Pioneer Research Center USA, Inc.
6 * Copyright (C) 2010, 2011 Brent Fulgham <bfulgham@webkit.org> 6 * Copyright (C) 2010, 2011 Brent Fulgham <bfulgham@webkit.org>
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 27 matching lines...) Expand all
38 #ifndef FontPlatformData_h 38 #ifndef FontPlatformData_h
39 #define FontPlatformData_h 39 #define FontPlatformData_h
40 40
41 #include "FontOrientation.h" 41 #include "FontOrientation.h"
42 #include "FontWidthVariant.h" 42 #include "FontWidthVariant.h"
43 43
44 #if PLATFORM(WIN) 44 #if PLATFORM(WIN)
45 #include "RefCountedGDIHandle.h" 45 #include "RefCountedGDIHandle.h"
46 #endif 46 #endif
47 47
48 #if USE(CAIRO)
49 #include <wtf/HashFunctions.h>
50 #include <cairo.h>
51 #endif
52
53 #if OS(DARWIN) 48 #if OS(DARWIN)
54 OBJC_CLASS NSFont; 49 OBJC_CLASS NSFont;
55 50
56 typedef struct CGFont* CGFontRef; 51 typedef struct CGFont* CGFontRef;
57 typedef const struct __CTFont* CTFontRef; 52 typedef const struct __CTFont* CTFontRef;
58 53
59 #include <CoreFoundation/CFBase.h> 54 #include <CoreFoundation/CFBase.h>
60 #include <objc/objc-auto.h> 55 #include <objc/objc-auto.h>
61 #endif 56 #endif
62 57
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 #if USE(CG) || USE(SKIA_ON_MAC_CHROMIUM) 106 #if USE(CG) || USE(SKIA_ON_MAC_CHROMIUM)
112 FontPlatformData(CGFontRef, float size, bool syntheticBold, bool syntheticOb lique, FontOrientation, FontWidthVariant); 107 FontPlatformData(CGFontRef, float size, bool syntheticBold, bool syntheticOb lique, FontOrientation, FontWidthVariant);
113 #endif 108 #endif
114 #endif 109 #endif
115 #if PLATFORM(WIN) 110 #if PLATFORM(WIN)
116 FontPlatformData(HFONT, float size, bool syntheticBold, bool syntheticObliqu e, bool useGDI); 111 FontPlatformData(HFONT, float size, bool syntheticBold, bool syntheticObliqu e, bool useGDI);
117 #if USE(CG) 112 #if USE(CG)
118 FontPlatformData(HFONT, CGFontRef, float size, bool syntheticBold, bool synt heticOblique, bool useGDI); 113 FontPlatformData(HFONT, CGFontRef, float size, bool syntheticBold, bool synt heticOblique, bool useGDI);
119 #endif 114 #endif
120 #endif 115 #endif
121 #if USE(CAIRO)
122 FontPlatformData(cairo_font_face_t*, float size, bool bold, bool italic);
123 #endif
124 116
125 ~FontPlatformData(); 117 ~FontPlatformData();
126 118
127 #if PLATFORM(WIN) 119 #if PLATFORM(WIN)
128 HFONT hfont() const { return m_font ? m_font->handle() : 0; } 120 HFONT hfont() const { return m_font ? m_font->handle() : 0; }
129 bool useGDI() const { return m_useGDI; } 121 bool useGDI() const { return m_useGDI; }
130 #elif OS(DARWIN) 122 #elif OS(DARWIN)
131 NSFont* font() const { return m_font; } 123 NSFont* font() const { return m_font; }
132 void setFont(NSFont*); 124 void setFont(NSFont*);
133 #endif 125 #endif
(...skipping 18 matching lines...) Expand all
152 bool isColorBitmapFont() const { return m_isColorBitmapFont; } 144 bool isColorBitmapFont() const { return m_isColorBitmapFont; }
153 bool isCompositeFontReference() const { return m_isCompositeFontReference; } 145 bool isCompositeFontReference() const { return m_isCompositeFontReference; }
154 #if OS(DARWIN) 146 #if OS(DARWIN)
155 bool isPrinterFont() const { return m_isPrinterFont; } 147 bool isPrinterFont() const { return m_isPrinterFont; }
156 #endif 148 #endif
157 FontOrientation orientation() const { return m_orientation; } 149 FontOrientation orientation() const { return m_orientation; }
158 FontWidthVariant widthVariant() const { return m_widthVariant; } 150 FontWidthVariant widthVariant() const { return m_widthVariant; }
159 151
160 void setOrientation(FontOrientation orientation) { m_orientation = orientati on; } 152 void setOrientation(FontOrientation orientation) { m_orientation = orientati on; }
161 153
162 #if USE(CAIRO)
163 cairo_scaled_font_t* scaledFont() const { return m_scaledFont; }
164 #endif
165
166 #if PLATFORM(CHROMIUM) && OS(DARWIN) 154 #if PLATFORM(CHROMIUM) && OS(DARWIN)
167 HarfBuzzFace* harfBuzzFace(); 155 HarfBuzzFace* harfBuzzFace();
168 #endif 156 #endif
169 157
170 unsigned hash() const 158 unsigned hash() const
171 { 159 {
172 #if PLATFORM(WIN) && !USE(CAIRO) 160 #if PLATFORM(WIN)
173 return m_font ? m_font->hash() : 0; 161 return m_font ? m_font->hash() : 0;
174 #elif OS(DARWIN) 162 #elif OS(DARWIN)
175 #if USE(CG) || USE(SKIA_ON_MAC_CHROMIUM) 163 #if USE(CG) || USE(SKIA_ON_MAC_CHROMIUM)
176 ASSERT(m_font || !m_cgFont); 164 ASSERT(m_font || !m_cgFont);
177 #endif 165 #endif
178 uintptr_t hashCodes[3] = { (uintptr_t)m_font, m_widthVariant, static_cas t<uintptr_t>(m_isPrinterFont << 3 | m_orientation << 2 | m_syntheticBold << 1 | m_syntheticOblique) }; 166 uintptr_t hashCodes[3] = { (uintptr_t)m_font, m_widthVariant, static_cas t<uintptr_t>(m_isPrinterFont << 3 | m_orientation << 2 | m_syntheticBold << 1 | m_syntheticOblique) };
179 return StringHasher::hashMemory<sizeof(hashCodes)>(hashCodes); 167 return StringHasher::hashMemory<sizeof(hashCodes)>(hashCodes);
180 #elif USE(CAIRO)
181 return PtrHash<cairo_scaled_font_t*>::hash(m_scaledFont);
182 #endif 168 #endif
183 } 169 }
184 170
185 const FontPlatformData& operator=(const FontPlatformData&); 171 const FontPlatformData& operator=(const FontPlatformData&);
186 172
187 bool operator==(const FontPlatformData& other) const 173 bool operator==(const FontPlatformData& other) const
188 { 174 {
189 return platformIsEqual(other) 175 return platformIsEqual(other)
190 && m_size == other.m_size 176 && m_size == other.m_size
191 && m_syntheticBold == other.m_syntheticBold 177 && m_syntheticBold == other.m_syntheticBold
192 && m_syntheticOblique == other.m_syntheticOblique 178 && m_syntheticOblique == other.m_syntheticOblique
193 && m_isColorBitmapFont == other.m_isColorBitmapFont 179 && m_isColorBitmapFont == other.m_isColorBitmapFont
194 && m_isCompositeFontReference == other.m_isCompositeFontReference 180 && m_isCompositeFontReference == other.m_isCompositeFontReference
195 #if OS(DARWIN) 181 #if OS(DARWIN)
196 && m_isPrinterFont == other.m_isPrinterFont 182 && m_isPrinterFont == other.m_isPrinterFont
197 #endif 183 #endif
198 && m_orientation == other.m_orientation 184 && m_orientation == other.m_orientation
199 && m_widthVariant == other.m_widthVariant; 185 && m_widthVariant == other.m_widthVariant;
200 } 186 }
201 187
202 bool isHashTableDeletedValue() const 188 bool isHashTableDeletedValue() const
203 { 189 {
204 #if PLATFORM(WIN) && !USE(CAIRO) 190 #if PLATFORM(WIN)
205 return m_font.isHashTableDeletedValue(); 191 return m_font.isHashTableDeletedValue();
206 #elif OS(DARWIN) 192 #elif OS(DARWIN)
207 return m_font == hashTableDeletedFontValue(); 193 return m_font == hashTableDeletedFontValue();
208 #elif USE(CAIRO)
209 return m_scaledFont == hashTableDeletedFontValue();
210 #endif 194 #endif
211 } 195 }
212 196
213 #if PLATFORM(WIN) && (USE(CG) || USE(CAIRO)) 197 #if PLATFORM(WIN) && USE(CG)
214 PassRefPtr<SharedBuffer> openTypeTable(uint32_t table) const; 198 PassRefPtr<SharedBuffer> openTypeTable(uint32_t table) const;
215 #endif 199 #endif
216 200
217 #ifndef NDEBUG 201 #ifndef NDEBUG
218 String description() const; 202 String description() const;
219 #endif 203 #endif
220 204
221 private: 205 private:
222 bool platformIsEqual(const FontPlatformData&) const; 206 bool platformIsEqual(const FontPlatformData&) const;
223 void platformDataInit(const FontPlatformData&); 207 void platformDataInit(const FontPlatformData&);
224 const FontPlatformData& platformDataAssign(const FontPlatformData&); 208 const FontPlatformData& platformDataAssign(const FontPlatformData&);
225 #if OS(DARWIN) 209 #if OS(DARWIN)
226 // Load various data about the font specified by |nsFont| with the size font Size into the following output paramters: 210 // Load various data about the font specified by |nsFont| with the size font Size into the following output paramters:
227 // Note: Callers should always take into account that for the Chromium port, |outNSFont| isn't necessarily the same 211 // Note: Callers should always take into account that for the Chromium port, |outNSFont| isn't necessarily the same
228 // font as |nsFont|. This because the sandbox may block loading of the origi nal font. 212 // font as |nsFont|. This because the sandbox may block loading of the origi nal font.
229 // * outNSFont - The font that was actually loaded, for the Chromium port th is may be different than nsFont. 213 // * outNSFont - The font that was actually loaded, for the Chromium port th is may be different than nsFont.
230 // The caller is responsible for calling CFRelease() on this parameter when done with it. 214 // The caller is responsible for calling CFRelease() on this parameter when done with it.
231 // * cgFont - CGFontRef representing the input font at the specified point s ize. 215 // * cgFont - CGFontRef representing the input font at the specified point s ize.
232 void loadFont(NSFont*, float fontSize, NSFont*& outNSFont, CGFontRef&); 216 void loadFont(NSFont*, float fontSize, NSFont*& outNSFont, CGFontRef&);
233 static NSFont* hashTableDeletedFontValue() { return reinterpret_cast<NSFont *>(-1); } 217 static NSFont* hashTableDeletedFontValue() { return reinterpret_cast<NSFont *>(-1); }
234 #elif PLATFORM(WIN) 218 #elif PLATFORM(WIN)
235 void platformDataInit(HFONT, float size, HDC, WCHAR* faceName); 219 void platformDataInit(HFONT, float size, HDC, WCHAR* faceName);
236 #endif 220 #endif
237 221
238 #if USE(CAIRO)
239 static cairo_scaled_font_t* hashTableDeletedFontValue() { return reinterpret _cast<cairo_scaled_font_t*>(-1); }
240 #endif
241
242 public: 222 public:
243 bool m_syntheticBold; 223 bool m_syntheticBold;
244 bool m_syntheticOblique; 224 bool m_syntheticOblique;
245 FontOrientation m_orientation; 225 FontOrientation m_orientation;
246 float m_size; 226 float m_size;
247 FontWidthVariant m_widthVariant; 227 FontWidthVariant m_widthVariant;
248 228
249 private: 229 private:
250 #if OS(DARWIN) 230 #if OS(DARWIN)
251 NSFont* m_font; 231 NSFont* m_font;
252 #elif PLATFORM(WIN) 232 #elif PLATFORM(WIN)
253 RefPtr<RefCountedGDIHandle<HFONT> > m_font; 233 RefPtr<RefCountedGDIHandle<HFONT> > m_font;
254 #endif 234 #endif
255 235
256 #if USE(CG) || USE(SKIA_ON_MAC_CHROMIUM) 236 #if USE(CG) || USE(SKIA_ON_MAC_CHROMIUM)
257 #if PLATFORM(WIN) 237 #if PLATFORM(WIN)
258 RetainPtr<CGFontRef> m_cgFont; 238 RetainPtr<CGFontRef> m_cgFont;
259 #else 239 #else
260 RetainPtr<CGFontRef> m_cgFont; 240 RetainPtr<CGFontRef> m_cgFont;
261 mutable RetainPtr<CTFontRef> m_CTFont; 241 mutable RetainPtr<CTFontRef> m_CTFont;
262 #endif 242 #endif
263 #endif 243 #endif
264 244
265 #if USE(CAIRO)
266 cairo_scaled_font_t* m_scaledFont;
267 #endif
268
269 #if PLATFORM(CHROMIUM) && OS(DARWIN) 245 #if PLATFORM(CHROMIUM) && OS(DARWIN)
270 RefPtr<MemoryActivatedFont> m_inMemoryFont; 246 RefPtr<MemoryActivatedFont> m_inMemoryFont;
271 RefPtr<HarfBuzzFace> m_harfBuzzFace; 247 RefPtr<HarfBuzzFace> m_harfBuzzFace;
272 #endif 248 #endif
273 249
274 bool m_isColorBitmapFont; 250 bool m_isColorBitmapFont;
275 bool m_isCompositeFontReference; 251 bool m_isCompositeFontReference;
276 #if OS(DARWIN) 252 #if OS(DARWIN)
277 bool m_isPrinterFont; 253 bool m_isPrinterFont;
278 #endif 254 #endif
279 255
280 #if PLATFORM(WIN) 256 #if PLATFORM(WIN)
281 bool m_useGDI; 257 bool m_useGDI;
282 #endif 258 #endif
283 }; 259 };
284 260
285 } // namespace WebCore 261 } // namespace WebCore
286 262
287 #endif // FontPlatformData_h 263 #endif // FontPlatformData_h
288 264
289 #endif 265 #endif
OLDNEW
« no previous file with comments | « Source/WebCore/platform/graphics/FloatRect.h ('k') | Source/WebCore/platform/graphics/FontPlatformData.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698