| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "webkit/plugins/ppapi/ppb_font_impl.h" | 5 #include "webkit/plugins/ppapi/ppb_font_impl.h" |
| 6 | 6 |
| 7 #include "ppapi/c/dev/ppb_font_dev.h" | 7 #include "ppapi/c/dev/ppb_font_dev.h" |
| 8 #include "ppapi/shared_impl/font_impl.h" | 8 #include "ppapi/shared_impl/font_impl.h" |
| 9 #include "ppapi/shared_impl/ppapi_preferences.h" | 9 #include "ppapi/shared_impl/ppapi_preferences.h" |
| 10 #include "ppapi/shared_impl/var.h" | 10 #include "ppapi/shared_impl/var.h" |
| 11 #include "ppapi/thunk/enter.h" | 11 #include "ppapi/thunk/enter.h" |
| 12 #include "ppapi/thunk/thunk.h" | 12 #include "ppapi/thunk/thunk.h" |
| 13 #include "webkit/plugins/ppapi/common.h" | 13 #include "webkit/plugins/ppapi/common.h" |
| 14 #include "webkit/plugins/ppapi/plugin_module.h" | 14 #include "webkit/plugins/ppapi/plugin_module.h" |
| 15 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" | 15 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" |
| 16 #include "webkit/plugins/ppapi/ppb_image_data_impl.h" | 16 #include "webkit/plugins/ppapi/ppb_image_data_impl.h" |
| 17 #include "webkit/plugins/ppapi/resource_helper.h" |
| 17 #include "webkit/plugins/ppapi/string.h" | 18 #include "webkit/plugins/ppapi/string.h" |
| 18 | 19 |
| 19 using ppapi::StringVar; | 20 using ppapi::StringVar; |
| 20 using ppapi::thunk::EnterResource; | 21 using ppapi::thunk::EnterResource; |
| 21 using ppapi::thunk::PPB_ImageData_API; | 22 using ppapi::thunk::PPB_ImageData_API; |
| 22 using ppapi::WebKitForwarding; | 23 using ppapi::WebKitForwarding; |
| 23 | 24 |
| 24 namespace webkit { | 25 namespace webkit { |
| 25 namespace ppapi { | 26 namespace ppapi { |
| 26 | 27 |
| 27 namespace { | 28 namespace { |
| 28 | 29 |
| 29 // Converts the given PP_TextRun to a TextRun, returning true on success. | 30 // Converts the given PP_TextRun to a TextRun, returning true on success. |
| 30 // False means the input was invalid. | 31 // False means the input was invalid. |
| 31 bool PPTextRunToTextRun(const PP_TextRun_Dev* run, | 32 bool PPTextRunToTextRun(const PP_TextRun_Dev* run, |
| 32 WebKitForwarding::Font::TextRun* output) { | 33 WebKitForwarding::Font::TextRun* output) { |
| 33 StringVar* text_string = StringVar::FromPPVar(run->text); | 34 StringVar* text_string = StringVar::FromPPVar(run->text); |
| 34 if (!text_string) | 35 if (!text_string) |
| 35 return false; | 36 return false; |
| 36 | 37 |
| 37 output->text = text_string->value(); | 38 output->text = text_string->value(); |
| 38 output->rtl = PPBoolToBool(run->rtl); | 39 output->rtl = PPBoolToBool(run->rtl); |
| 39 output->override_direction = PPBoolToBool(run->override_direction); | 40 output->override_direction = PPBoolToBool(run->override_direction); |
| 40 return true; | 41 return true; |
| 41 } | 42 } |
| 42 | 43 |
| 43 } // namespace | 44 } // namespace |
| 44 | 45 |
| 45 PPB_Font_Impl::PPB_Font_Impl(PluginInstance* instance, | 46 PPB_Font_Impl::PPB_Font_Impl(PP_Instance pp_instance, |
| 46 const PP_FontDescription_Dev& desc) | 47 const PP_FontDescription_Dev& desc) |
| 47 : Resource(instance) { | 48 : Resource(pp_instance) { |
| 48 StringVar* face_name = StringVar::FromPPVar(desc.face); | 49 StringVar* face_name = StringVar::FromPPVar(desc.face); |
| 49 | 50 |
| 51 PluginInstance* instance = ResourceHelper::GetPluginInstance(this); |
| 50 WebKitForwarding::Font* result = NULL; | 52 WebKitForwarding::Font* result = NULL; |
| 51 instance->module()->GetWebKitForwarding()->CreateFontForwarding( | 53 instance->module()->GetWebKitForwarding()->CreateFontForwarding( |
| 52 NULL, desc, face_name ? face_name->value() : std::string(), | 54 NULL, desc, face_name ? face_name->value() : std::string(), |
| 53 instance->delegate()->GetPreferences(), &result); | 55 instance->delegate()->GetPreferences(), &result); |
| 54 font_forwarding_.reset(result); | 56 font_forwarding_.reset(result); |
| 55 } | 57 } |
| 56 | 58 |
| 57 PPB_Font_Impl::~PPB_Font_Impl() { | 59 PPB_Font_Impl::~PPB_Font_Impl() { |
| 58 } | 60 } |
| 59 | 61 |
| 60 // static | 62 // static |
| 61 PP_Resource PPB_Font_Impl::Create(PluginInstance* instance, | 63 PP_Resource PPB_Font_Impl::Create(PP_Instance instance, |
| 62 const PP_FontDescription_Dev& description) { | 64 const PP_FontDescription_Dev& description) { |
| 63 if (!::ppapi::FontImpl::IsPPFontDescriptionValid(description)) | 65 if (!::ppapi::FontImpl::IsPPFontDescriptionValid(description)) |
| 64 return 0; | 66 return 0; |
| 65 return (new PPB_Font_Impl(instance, description))->GetReference(); | 67 return (new PPB_Font_Impl(instance, description))->GetReference(); |
| 66 } | 68 } |
| 67 | 69 |
| 68 ::ppapi::thunk::PPB_Font_API* PPB_Font_Impl::AsPPB_Font_API() { | 70 ::ppapi::thunk::PPB_Font_API* PPB_Font_Impl::AsPPB_Font_API() { |
| 69 return this; | 71 return this; |
| 70 } | 72 } |
| 71 | 73 |
| 72 PP_Bool PPB_Font_Impl::Describe(PP_FontDescription_Dev* description, | 74 PP_Bool PPB_Font_Impl::Describe(PP_FontDescription_Dev* description, |
| 73 PP_FontMetrics_Dev* metrics) { | 75 PP_FontMetrics_Dev* metrics) { |
| 74 std::string face; | 76 std::string face; |
| 75 PP_Bool result = PP_FALSE; | 77 PP_Bool result = PP_FALSE; |
| 76 font_forwarding_->Describe(NULL, description, &face, metrics, &result); | 78 font_forwarding_->Describe(NULL, description, &face, metrics, &result); |
| 77 if (!result) | 79 if (!result) |
| 78 return PP_FALSE; | 80 return PP_FALSE; |
| 79 | 81 |
| 80 // Convert the string. | 82 // Convert the string. |
| 81 description->face = StringVar::StringToPPVar( | 83 description->face = StringVar::StringToPPVar( |
| 82 instance()->module()->pp_module(), face); | 84 ResourceHelper::GetPluginModule(this)->pp_module(), face); |
| 83 return PP_TRUE; | 85 return PP_TRUE; |
| 84 } | 86 } |
| 85 | 87 |
| 86 PP_Bool PPB_Font_Impl::DrawTextAt(PP_Resource image_data, | 88 PP_Bool PPB_Font_Impl::DrawTextAt(PP_Resource image_data, |
| 87 const PP_TextRun_Dev* text, | 89 const PP_TextRun_Dev* text, |
| 88 const PP_Point* position, | 90 const PP_Point* position, |
| 89 uint32_t color, | 91 uint32_t color, |
| 90 const PP_Rect* clip, | 92 const PP_Rect* clip, |
| 91 PP_Bool image_data_is_opaque) { | 93 PP_Bool image_data_is_opaque) { |
| 92 // Get and map the image data we're painting to. | 94 // Get and map the image data we're painting to. |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 return this; | 153 return this; |
| 152 } | 154 } |
| 153 | 155 |
| 154 PP_Var PPB_Font_FunctionImpl::GetFontFamilies(PP_Instance instance) { | 156 PP_Var PPB_Font_FunctionImpl::GetFontFamilies(PP_Instance instance) { |
| 155 return PP_MakeUndefined(); | 157 return PP_MakeUndefined(); |
| 156 } | 158 } |
| 157 | 159 |
| 158 } // namespace ppapi | 160 } // namespace ppapi |
| 159 } // namespace webkit | 161 } // namespace webkit |
| 160 | 162 |
| OLD | NEW |