| 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 |