OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (c) 2006, 2007, 2008, Google Inc. All rights reserved. | |
3 * | |
4 * Redistribution and use in source and binary forms, with or without | |
5 * modification, are permitted provided that the following conditions are | |
6 * met: | |
7 * | |
8 * * Redistributions of source code must retain the above copyright | |
9 * notice, this list of conditions and the following disclaimer. | |
10 * * Redistributions in binary form must reproduce the above | |
11 * copyright notice, this list of conditions and the following disclaimer | |
12 * in the documentation and/or other materials provided with the | |
13 * distribution. | |
14 * * Neither the name of Google Inc. nor the names of its | |
15 * contributors may be used to endorse or promote products derived from | |
16 * this software without specific prior written permission. | |
17 * | |
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
26 * THEORY 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 #ifndef FontPlatformDataHarfBuzz_h | |
32 #define FontPlatformDataHarfBuzz_h | |
33 | |
34 #include "SkPaint.h" | |
35 #include "platform/SharedBuffer.h" | |
36 #include "platform/fonts/FontDescription.h" | |
37 #include "platform/fonts/FontOrientation.h" | |
38 #include "platform/fonts/FontRenderStyle.h" | |
39 #include "platform/fonts/opentype/OpenTypeVerticalData.h" | |
40 #include "wtf/Forward.h" | |
41 #include "wtf/HashTableDeletedValueType.h" | |
42 #include "wtf/RefPtr.h" | |
43 #include "wtf/text/CString.h" | |
44 #include "wtf/text/StringImpl.h" | |
45 | |
46 class SkTypeface; | |
47 typedef uint32_t SkFontID; | |
48 | |
49 namespace blink { | |
50 | |
51 class GraphicsContext; | |
52 class HarfBuzzFace; | |
53 | |
54 class PLATFORM_EXPORT FontPlatformData { | |
55 public: | |
56 // Used for deleted values in the font cache's hash tables. The hash table | |
57 // will create us with this structure, and it will compare other values | |
58 // to this "Deleted" one. It expects the Deleted one to be differentiable | |
59 // from the 0 one (created with the empty constructor), so we can't just | |
60 // set everything to 0. | |
61 FontPlatformData(WTF::HashTableDeletedValueType); | |
62 FontPlatformData(); | |
63 FontPlatformData(float textSize, bool syntheticBold, bool syntheticItalic); | |
64 FontPlatformData(const FontPlatformData&); | |
65 FontPlatformData(PassRefPtr<SkTypeface>, const char* name, float textSize, b
ool syntheticBold, bool syntheticItalic, FontOrientation = Horizontal, bool subp
ixelTextPosition = defaultUseSubpixelPositioning()); | |
66 FontPlatformData(const FontPlatformData& src, float textSize); | |
67 ~FontPlatformData(); | |
68 | |
69 String fontFamilyName() const; | |
70 float size() const { return m_textSize; } | |
71 bool isFixedPitch() const; | |
72 | |
73 SkTypeface* typeface() const { return m_typeface.get(); } | |
74 HarfBuzzFace* harfBuzzFace() const; | |
75 SkFontID uniqueID() const; | |
76 unsigned hash() const; | |
77 | |
78 FontOrientation orientation() const { return m_orientation; } | |
79 void setOrientation(FontOrientation orientation) { m_orientation = orientati
on; } | |
80 void setSyntheticBold(bool syntheticBold) { m_syntheticBold = syntheticBold;
} | |
81 void setSyntheticItalic(bool syntheticItalic) { m_syntheticItalic = syntheti
cItalic; } | |
82 bool operator==(const FontPlatformData&) const; | |
83 FontPlatformData& operator=(const FontPlatformData&); | |
84 bool isHashTableDeletedValue() const { return m_isHashTableDeletedValue; } | |
85 #if OS(WIN) | |
86 void setMinSizeForAntiAlias(unsigned size) { m_minSizeForAntiAlias = size; } | |
87 unsigned minSizeForAntiAlias() const { return m_minSizeForAntiAlias; } | |
88 void setMinSizeForSubpixel(float size) { m_minSizeForSubpixel = size; } | |
89 float minSizeForSubpixel() const { return m_minSizeForSubpixel; } | |
90 void setHinting(SkPaint::Hinting style) | |
91 { | |
92 m_style.useAutoHint = 0; | |
93 m_style.hintStyle = style; | |
94 } | |
95 #endif | |
96 bool fontContainsCharacter(UChar32 character); | |
97 | |
98 #if ENABLE(OPENTYPE_VERTICAL) | |
99 PassRefPtr<OpenTypeVerticalData> verticalData() const; | |
100 PassRefPtr<SharedBuffer> openTypeTable(uint32_t table) const; | |
101 #endif | |
102 | |
103 #ifndef NDEBUG | |
104 String description() const; | |
105 #endif | |
106 | |
107 // The returned styles are all actual styles without FontRenderStyle::NoPref
erence. | |
108 const FontRenderStyle& fontRenderStyle() const { return m_style; } | |
109 void setupPaint(SkPaint*, GraphicsContext* = 0) const; | |
110 | |
111 #if OS(WIN) | |
112 int paintTextFlags() const { return m_paintTextFlags; } | |
113 #else | |
114 static void setHinting(SkPaint::Hinting); | |
115 static void setAutoHint(bool); | |
116 static void setUseBitmaps(bool); | |
117 static void setAntiAlias(bool); | |
118 static void setSubpixelRendering(bool); | |
119 #endif | |
120 | |
121 private: | |
122 bool static defaultUseSubpixelPositioning(); | |
123 void querySystemForRenderStyle(bool useSkiaSubpixelPositioning); | |
124 | |
125 RefPtr<SkTypeface> m_typeface; | |
126 #if !OS(WIN) | |
127 CString m_family; | |
128 #endif | |
129 float m_textSize; | |
130 bool m_syntheticBold; | |
131 bool m_syntheticItalic; | |
132 FontOrientation m_orientation; | |
133 FontRenderStyle m_style; | |
134 mutable RefPtr<HarfBuzzFace> m_harfBuzzFace; | |
135 bool m_isHashTableDeletedValue; | |
136 #if OS(WIN) | |
137 int m_paintTextFlags; | |
138 bool m_useSubpixelPositioning; | |
139 unsigned m_minSizeForAntiAlias; | |
140 float m_minSizeForSubpixel; | |
141 #endif | |
142 }; | |
143 | |
144 } // namespace blink | |
145 | |
146 #endif // ifdef FontPlatformDataHarfBuzz_h | |
OLD | NEW |