OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "native_client/src/shared/ppapi_proxy/plugin_ppb_font.h" | 5 #include "native_client/src/shared/ppapi_proxy/plugin_ppb_font.h" |
6 | 6 |
7 #include "native_client/src/include/nacl_scoped_ptr.h" | 7 #include "native_client/src/include/nacl_scoped_ptr.h" |
8 #include "native_client/src/include/portability.h" | 8 #include "native_client/src/include/portability.h" |
9 #include "native_client/src/shared/ppapi_proxy/object_serialize.h" | 9 #include "native_client/src/shared/ppapi_proxy/object_serialize.h" |
10 #include "native_client/src/shared/ppapi_proxy/plugin_callback.h" | 10 #include "native_client/src/shared/ppapi_proxy/plugin_callback.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 static_cast<nacl_abi_size_t>(sizeof(struct PP_Rect)); | 27 static_cast<nacl_abi_size_t>(sizeof(struct PP_Rect)); |
28 const nacl_abi_size_t kPPTextRunBytes = | 28 const nacl_abi_size_t kPPTextRunBytes = |
29 static_cast<nacl_abi_size_t>(sizeof(struct PP_TextRun_Dev)); | 29 static_cast<nacl_abi_size_t>(sizeof(struct PP_TextRun_Dev)); |
30 const nacl_abi_size_t kPPFontMetricsBytes = | 30 const nacl_abi_size_t kPPFontMetricsBytes = |
31 static_cast<nacl_abi_size_t>(sizeof(struct PP_FontMetrics_Dev)); | 31 static_cast<nacl_abi_size_t>(sizeof(struct PP_FontMetrics_Dev)); |
32 const nacl_abi_size_t kPPFontDescriptionBytes = | 32 const nacl_abi_size_t kPPFontDescriptionBytes = |
33 static_cast<nacl_abi_size_t>(sizeof(struct PP_FontDescription_Dev)); | 33 static_cast<nacl_abi_size_t>(sizeof(struct PP_FontDescription_Dev)); |
34 const int32_t kInvalidOffset = -1; | 34 const int32_t kInvalidOffset = -1; |
35 | 35 |
36 PP_Var GetFontFamilies(PP_Instance instance) { | 36 PP_Var GetFontFamilies(PP_Instance instance) { |
37 DebugPrintf("PPB_Font::GetFontFamilies: instance=%"NACL_PRIu32"\n", | 37 DebugPrintf("PPB_Font::GetFontFamilies: instance=%"NACL_PRId32"\n", |
38 instance); | 38 instance); |
39 NaClSrpcChannel* channel = GetMainSrpcChannel(); | 39 NaClSrpcChannel* channel = GetMainSrpcChannel(); |
40 | 40 |
41 PP_Var font_families = PP_MakeUndefined(); | 41 PP_Var font_families = PP_MakeUndefined(); |
42 nacl_abi_size_t var_size = kMaxReturnVarSize; | 42 nacl_abi_size_t var_size = kMaxReturnVarSize; |
43 nacl::scoped_array<char> var_bytes(new char[var_size]); | 43 nacl::scoped_array<char> var_bytes(new char[var_size]); |
44 | 44 |
45 NaClSrpcError srpc_result = | 45 NaClSrpcError srpc_result = |
46 PpbFontRpcClient::PPB_Font_GetFontFamilies( | 46 PpbFontRpcClient::PPB_Font_GetFontFamilies( |
47 channel, | 47 channel, |
48 instance, | 48 instance, |
49 &var_size, | 49 &var_size, |
50 var_bytes.get()); | 50 var_bytes.get()); |
51 | 51 |
52 DebugPrintf("PPB_Font::GetFontFamilies: %s\n", | 52 DebugPrintf("PPB_Font::GetFontFamilies: %s\n", |
53 NaClSrpcErrorString(srpc_result)); | 53 NaClSrpcErrorString(srpc_result)); |
54 | 54 |
55 if (srpc_result == NACL_SRPC_RESULT_OK) | 55 if (srpc_result == NACL_SRPC_RESULT_OK) |
56 (void) DeserializeTo(var_bytes.get(), var_size, 1, &font_families); | 56 (void) DeserializeTo(var_bytes.get(), var_size, 1, &font_families); |
57 return font_families; | 57 return font_families; |
58 } | 58 } |
59 | 59 |
60 PP_Resource Create(PP_Instance instance, | 60 PP_Resource Create(PP_Instance instance, |
61 const struct PP_FontDescription_Dev* description) { | 61 const struct PP_FontDescription_Dev* description) { |
62 DebugPrintf("PPB_Font::Create: instance=%"NACL_PRIu32"\n", instance); | 62 DebugPrintf("PPB_Font::Create: instance=%"NACL_PRId32"\n", instance); |
63 | 63 |
64 nacl_abi_size_t face_size = 0; | 64 nacl_abi_size_t face_size = 0; |
65 nacl::scoped_array<char> face_bytes( | 65 nacl::scoped_array<char> face_bytes( |
66 Serialize(&description->face, 1, &face_size)); | 66 Serialize(&description->face, 1, &face_size)); |
67 | 67 |
68 PP_Resource resource = kInvalidResourceId; | 68 PP_Resource resource = kInvalidResourceId; |
69 NaClSrpcError srpc_result = | 69 NaClSrpcError srpc_result = |
70 PpbFontRpcClient::PPB_Font_Create( | 70 PpbFontRpcClient::PPB_Font_Create( |
71 GetMainSrpcChannel(), | 71 GetMainSrpcChannel(), |
72 instance, | 72 instance, |
73 kPPFontDescriptionBytes, | 73 kPPFontDescriptionBytes, |
74 reinterpret_cast<char*>( | 74 reinterpret_cast<char*>( |
75 const_cast<struct PP_FontDescription_Dev*>(description)), | 75 const_cast<struct PP_FontDescription_Dev*>(description)), |
76 face_size, | 76 face_size, |
77 face_bytes.get(), | 77 face_bytes.get(), |
78 &resource); | 78 &resource); |
79 | 79 |
80 DebugPrintf("PPB_Font::Create: %s\n", NaClSrpcErrorString(srpc_result)); | 80 DebugPrintf("PPB_Font::Create: %s\n", NaClSrpcErrorString(srpc_result)); |
81 if (srpc_result == NACL_SRPC_RESULT_OK) { | 81 if (srpc_result == NACL_SRPC_RESULT_OK) { |
82 scoped_refptr<PluginFont> font = | 82 scoped_refptr<PluginFont> font = |
83 PluginResource::AdoptAs<PluginFont>(resource); | 83 PluginResource::AdoptAs<PluginFont>(resource); |
84 if (font.get()) | 84 if (font.get()) |
85 return resource; | 85 return resource; |
86 } | 86 } |
87 return kInvalidResourceId; | 87 return kInvalidResourceId; |
88 } | 88 } |
89 | 89 |
90 PP_Bool IsFont(PP_Resource resource) { | 90 PP_Bool IsFont(PP_Resource resource) { |
91 DebugPrintf("PPB_Font::IsFont: resource=%"NACL_PRIu32"\n", resource); | 91 DebugPrintf("PPB_Font::IsFont: resource=%"NACL_PRId32"\n", resource); |
92 | 92 |
93 int32_t is_font = 0; | 93 int32_t is_font = 0; |
94 NaClSrpcError srpc_result = | 94 NaClSrpcError srpc_result = |
95 PpbFontRpcClient::PPB_Font_IsFont(GetMainSrpcChannel(), | 95 PpbFontRpcClient::PPB_Font_IsFont(GetMainSrpcChannel(), |
96 resource, | 96 resource, |
97 &is_font); | 97 &is_font); |
98 | 98 |
99 DebugPrintf("PPB_Font::IsFont: %s\n", NaClSrpcErrorString(srpc_result)); | 99 DebugPrintf("PPB_Font::IsFont: %s\n", NaClSrpcErrorString(srpc_result)); |
100 if (srpc_result == NACL_SRPC_RESULT_OK && is_font) | 100 if (srpc_result == NACL_SRPC_RESULT_OK && is_font) |
101 return PP_TRUE; | 101 return PP_TRUE; |
102 return PP_FALSE; | 102 return PP_FALSE; |
103 } | 103 } |
104 | 104 |
105 PP_Bool Describe(PP_Resource font, | 105 PP_Bool Describe(PP_Resource font, |
106 struct PP_FontDescription_Dev* description, | 106 struct PP_FontDescription_Dev* description, |
107 struct PP_FontMetrics_Dev* metrics) { | 107 struct PP_FontMetrics_Dev* metrics) { |
108 DebugPrintf("PPB_Font::Describe: font=%"NACL_PRIu32"\n", font); | 108 DebugPrintf("PPB_Font::Describe: font=%"NACL_PRId32"\n", font); |
109 NaClSrpcChannel* channel = GetMainSrpcChannel(); | 109 NaClSrpcChannel* channel = GetMainSrpcChannel(); |
110 | 110 |
111 int32_t success = 0; | 111 int32_t success = 0; |
112 nacl_abi_size_t description_size = kPPFontDescriptionBytes; | 112 nacl_abi_size_t description_size = kPPFontDescriptionBytes; |
113 nacl_abi_size_t face_size = kMaxReturnVarSize; | 113 nacl_abi_size_t face_size = kMaxReturnVarSize; |
114 nacl::scoped_array<char> face_bytes(new char[face_size]); | 114 nacl::scoped_array<char> face_bytes(new char[face_size]); |
115 nacl_abi_size_t metrics_size = kPPFontMetricsBytes; | 115 nacl_abi_size_t metrics_size = kPPFontMetricsBytes; |
116 NaClSrpcError srpc_result = | 116 NaClSrpcError srpc_result = |
117 PpbFontRpcClient::PPB_Font_Describe( | 117 PpbFontRpcClient::PPB_Font_Describe( |
118 channel, | 118 channel, |
(...skipping 16 matching lines...) Expand all Loading... |
135 return PP_FALSE; | 135 return PP_FALSE; |
136 } | 136 } |
137 | 137 |
138 PP_Bool DrawTextAt(PP_Resource font, | 138 PP_Bool DrawTextAt(PP_Resource font, |
139 PP_Resource image_data, | 139 PP_Resource image_data, |
140 const struct PP_TextRun_Dev* text_run, | 140 const struct PP_TextRun_Dev* text_run, |
141 const struct PP_Point* position, | 141 const struct PP_Point* position, |
142 uint32_t color, | 142 uint32_t color, |
143 const struct PP_Rect* clip, | 143 const struct PP_Rect* clip, |
144 PP_Bool image_data_is_opaque) { | 144 PP_Bool image_data_is_opaque) { |
145 DebugPrintf("PPB_Font::DrawTextAt: font=%"NACL_PRIu32"\n", font); | 145 DebugPrintf("PPB_Font::DrawTextAt: font=%"NACL_PRId32"\n", font); |
146 | 146 |
147 nacl_abi_size_t text_size = 0; | 147 nacl_abi_size_t text_size = 0; |
148 nacl::scoped_array<char> text_bytes( | 148 nacl::scoped_array<char> text_bytes( |
149 Serialize(&text_run->text, 1, &text_size)); | 149 Serialize(&text_run->text, 1, &text_size)); |
150 | 150 |
151 int32_t success = 0; | 151 int32_t success = 0; |
152 NaClSrpcError srpc_result = | 152 NaClSrpcError srpc_result = |
153 PpbFontRpcClient::PPB_Font_DrawTextAt( | 153 PpbFontRpcClient::PPB_Font_DrawTextAt( |
154 GetMainSrpcChannel(), | 154 GetMainSrpcChannel(), |
155 font, | 155 font, |
(...skipping 12 matching lines...) Expand all Loading... |
168 &success); | 168 &success); |
169 | 169 |
170 DebugPrintf("PPB_Font::DrawTextAt: %s\n", NaClSrpcErrorString(srpc_result)); | 170 DebugPrintf("PPB_Font::DrawTextAt: %s\n", NaClSrpcErrorString(srpc_result)); |
171 if (srpc_result == NACL_SRPC_RESULT_OK && success) | 171 if (srpc_result == NACL_SRPC_RESULT_OK && success) |
172 return PP_TRUE; | 172 return PP_TRUE; |
173 return PP_FALSE; | 173 return PP_FALSE; |
174 } | 174 } |
175 | 175 |
176 int32_t MeasureText(PP_Resource font, | 176 int32_t MeasureText(PP_Resource font, |
177 const struct PP_TextRun_Dev* text_run) { | 177 const struct PP_TextRun_Dev* text_run) { |
178 DebugPrintf("PPB_Font::MeasureText: font=%"NACL_PRIu32"\n", font); | 178 DebugPrintf("PPB_Font::MeasureText: font=%"NACL_PRId32"\n", font); |
179 | 179 |
180 nacl_abi_size_t text_size = 0; | 180 nacl_abi_size_t text_size = 0; |
181 nacl::scoped_array<char> text_bytes( | 181 nacl::scoped_array<char> text_bytes( |
182 Serialize(&text_run->text, 1, &text_size)); | 182 Serialize(&text_run->text, 1, &text_size)); |
183 int32_t width = 0; | 183 int32_t width = 0; |
184 NaClSrpcError srpc_result = | 184 NaClSrpcError srpc_result = |
185 PpbFontRpcClient::PPB_Font_MeasureText( | 185 PpbFontRpcClient::PPB_Font_MeasureText( |
186 GetMainSrpcChannel(), | 186 GetMainSrpcChannel(), |
187 font, | 187 font, |
188 kPPTextRunBytes, | 188 kPPTextRunBytes, |
189 reinterpret_cast<char*>( | 189 reinterpret_cast<char*>( |
190 const_cast<struct PP_TextRun_Dev*>(text_run)), | 190 const_cast<struct PP_TextRun_Dev*>(text_run)), |
191 text_size, | 191 text_size, |
192 text_bytes.get(), | 192 text_bytes.get(), |
193 &width); | 193 &width); |
194 | 194 |
195 DebugPrintf("PPB_Font::MeasureText: %s\n", NaClSrpcErrorString(srpc_result)); | 195 DebugPrintf("PPB_Font::MeasureText: %s\n", NaClSrpcErrorString(srpc_result)); |
196 return width; | 196 return width; |
197 } | 197 } |
198 | 198 |
199 uint32_t CharacterOffsetForPixel(PP_Resource font, | 199 uint32_t CharacterOffsetForPixel(PP_Resource font, |
200 const struct PP_TextRun_Dev* text_run, | 200 const struct PP_TextRun_Dev* text_run, |
201 int32_t pixel_position) { | 201 int32_t pixel_position) { |
202 DebugPrintf("PPB_Font::CharacterOffsetForPixel: font=%"NACL_PRIu32"\n", font); | 202 DebugPrintf("PPB_Font::CharacterOffsetForPixel: font=%"NACL_PRId32"\n", font); |
203 | 203 |
204 nacl_abi_size_t text_size = 0; | 204 nacl_abi_size_t text_size = 0; |
205 nacl::scoped_array<char> text_bytes( | 205 nacl::scoped_array<char> text_bytes( |
206 Serialize(&text_run->text, 1, &text_size)); | 206 Serialize(&text_run->text, 1, &text_size)); |
207 int32_t offset = kInvalidOffset; | 207 int32_t offset = kInvalidOffset; |
208 NaClSrpcError srpc_result = | 208 NaClSrpcError srpc_result = |
209 PpbFontRpcClient::PPB_Font_CharacterOffsetForPixel( | 209 PpbFontRpcClient::PPB_Font_CharacterOffsetForPixel( |
210 GetMainSrpcChannel(), | 210 GetMainSrpcChannel(), |
211 font, | 211 font, |
212 kPPTextRunBytes, | 212 kPPTextRunBytes, |
213 reinterpret_cast<char*>( | 213 reinterpret_cast<char*>( |
214 const_cast<struct PP_TextRun_Dev*>(text_run)), | 214 const_cast<struct PP_TextRun_Dev*>(text_run)), |
215 text_size, | 215 text_size, |
216 text_bytes.get(), | 216 text_bytes.get(), |
217 pixel_position, | 217 pixel_position, |
218 &offset); | 218 &offset); |
219 | 219 |
220 DebugPrintf("PPB_Font::CharacterOffsetForPixel: %s\n", | 220 DebugPrintf("PPB_Font::CharacterOffsetForPixel: %s\n", |
221 NaClSrpcErrorString(srpc_result)); | 221 NaClSrpcErrorString(srpc_result)); |
222 return offset; | 222 return offset; |
223 } | 223 } |
224 | 224 |
225 int32_t PixelOffsetForCharacter(PP_Resource font, | 225 int32_t PixelOffsetForCharacter(PP_Resource font, |
226 const struct PP_TextRun_Dev* text_run, | 226 const struct PP_TextRun_Dev* text_run, |
227 uint32_t char_offset) { | 227 uint32_t char_offset) { |
228 DebugPrintf("PPB_Font::PixelOffsetForCharacter: font=%"NACL_PRIu32"\n", font); | 228 DebugPrintf("PPB_Font::PixelOffsetForCharacter: font=%"NACL_PRId32"\n", font); |
229 | 229 |
230 nacl_abi_size_t text_size = 0; | 230 nacl_abi_size_t text_size = 0; |
231 nacl::scoped_array<char> text_bytes( | 231 nacl::scoped_array<char> text_bytes( |
232 Serialize(&text_run->text, 1, &text_size)); | 232 Serialize(&text_run->text, 1, &text_size)); |
233 int32_t offset = kInvalidOffset; | 233 int32_t offset = kInvalidOffset; |
234 NaClSrpcError srpc_result = | 234 NaClSrpcError srpc_result = |
235 PpbFontRpcClient::PPB_Font_PixelOffsetForCharacter( | 235 PpbFontRpcClient::PPB_Font_PixelOffsetForCharacter( |
236 GetMainSrpcChannel(), | 236 GetMainSrpcChannel(), |
237 font, | 237 font, |
238 kPPTextRunBytes, | 238 kPPTextRunBytes, |
(...skipping 19 matching lines...) Expand all Loading... |
258 Describe, | 258 Describe, |
259 DrawTextAt, | 259 DrawTextAt, |
260 MeasureText, | 260 MeasureText, |
261 CharacterOffsetForPixel, | 261 CharacterOffsetForPixel, |
262 PixelOffsetForCharacter | 262 PixelOffsetForCharacter |
263 }; | 263 }; |
264 return &font_interface; | 264 return &font_interface; |
265 } | 265 } |
266 | 266 |
267 } // namespace ppapi_proxy | 267 } // namespace ppapi_proxy |
OLD | NEW |