| Index: webkit/glue/plugins/pepper_private.cc
|
| ===================================================================
|
| --- webkit/glue/plugins/pepper_private.cc (revision 59113)
|
| +++ webkit/glue/plugins/pepper_private.cc (working copy)
|
| @@ -6,9 +6,14 @@
|
|
|
| #include "webkit/glue/plugins/pepper_private.h"
|
|
|
| +#include "app/resource_bundle.h"
|
| #include "base/utf_string_conversions.h"
|
| +#include "grit/webkit_resources.h"
|
| #include "grit/webkit_strings.h"
|
| +#include "skia/ext/platform_canvas.h"
|
| +#include "third_party/skia/include/core/SkBitmap.h"
|
| #include "webkit/glue/webkit_glue.h"
|
| +#include "webkit/glue/plugins/pepper_image_data.h"
|
| #include "webkit/glue/plugins/pepper_plugin_module.h"
|
| #include "webkit/glue/plugins/pepper_var.h"
|
| #include "webkit/glue/plugins/ppb_private.h"
|
| @@ -35,6 +40,39 @@
|
|
|
| namespace {
|
|
|
| +struct ResourceImageInfo {
|
| + PP_ResourceImage pp_id;
|
| + int res_id;
|
| +};
|
| +
|
| +static const ResourceImageInfo kResourceImageMap[] = {
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_FTH, IDR_PDF_BUTTON_FTH },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_FTH_HOVER, IDR_PDF_BUTTON_FTH_HOVER },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_FTH_PRESSED, IDR_PDF_BUTTON_FTH_PRESSED },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_FTW, IDR_PDF_BUTTON_FTW },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_FTW_HOVER, IDR_PDF_BUTTON_FTW_HOVER },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_FTW_PRESSED, IDR_PDF_BUTTON_FTW_PRESSED },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN, IDR_PDF_BUTTON_ZOOMIN },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_HOVER, IDR_PDF_BUTTON_ZOOMIN_HOVER },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_PRESSED, IDR_PDF_BUTTON_ZOOMIN_PRESSED },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT, IDR_PDF_BUTTON_ZOOMOUT },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_HOVER, IDR_PDF_BUTTON_ZOOMOUT_HOVER },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_PRESSED,
|
| + IDR_PDF_BUTTON_ZOOMOUT_PRESSED },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_0, IDR_PDF_THUMBNAIL_0 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_1, IDR_PDF_THUMBNAIL_1 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_2, IDR_PDF_THUMBNAIL_2 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_3, IDR_PDF_THUMBNAIL_3 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_4, IDR_PDF_THUMBNAIL_4 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_5, IDR_PDF_THUMBNAIL_5 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_6, IDR_PDF_THUMBNAIL_6 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_7, IDR_PDF_THUMBNAIL_7 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_8, IDR_PDF_THUMBNAIL_8 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_9, IDR_PDF_THUMBNAIL_9 },
|
| + { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_NUM_BACKGROUND,
|
| + IDR_PDF_THUMBNAIL_NUM_BACKGROUND },
|
| +};
|
| +
|
| PP_Var GetLocalizedString(PP_ResourceString string_id) {
|
| std::string rv;
|
| if (string_id == PP_RESOURCESTRING_PDFGETPASSWORD)
|
| @@ -43,6 +81,43 @@
|
| return StringToPPVar(rv);
|
| }
|
|
|
| +PP_Resource GetResourceImage(PP_Module module_id, PP_ResourceImage image_id) {
|
| + int res_id = 0;
|
| + for (size_t i = 0; i < arraysize(kResourceImageMap); ++i) {
|
| + if (kResourceImageMap[i].pp_id == image_id) {
|
| + res_id = kResourceImageMap[i].res_id;
|
| + break;
|
| + }
|
| + }
|
| + if (res_id == 0)
|
| + return NULL;
|
| +
|
| + SkBitmap* res_bitmap =
|
| + ResourceBundle::GetSharedInstance().GetBitmapNamed(res_id);
|
| +
|
| + PluginModule* module = PluginModule::FromPPModule(module_id);
|
| + if (!module)
|
| + return NULL;
|
| + scoped_refptr<pepper::ImageData> image_data(new pepper::ImageData(module));
|
| + if (!image_data->Init(PP_IMAGEDATAFORMAT_BGRA_PREMUL,
|
| + res_bitmap->width(), res_bitmap->height(), false)) {
|
| + return NULL;
|
| + }
|
| +
|
| + ImageDataAutoMapper mapper(image_data);
|
| + if (!mapper.is_valid())
|
| + return NULL;
|
| +
|
| + skia::PlatformCanvas* canvas = image_data->mapped_canvas();
|
| + SkBitmap& ret_bitmap =
|
| + const_cast<SkBitmap&>(canvas->getTopPlatformDevice().accessBitmap(true));
|
| + if (!res_bitmap->copyTo(&ret_bitmap, SkBitmap::kARGB_8888_Config, NULL)) {
|
| + return NULL;
|
| + }
|
| +
|
| + return image_data->GetReference();
|
| +}
|
| +
|
| PP_Resource GetFontFileWithFallback(
|
| PP_Module module_id,
|
| const PP_PrivateFontFileDescription* description) {
|
| @@ -85,6 +160,7 @@
|
|
|
| const PPB_Private ppb_private = {
|
| &GetLocalizedString,
|
| + &GetResourceImage,
|
| &GetFontFileWithFallback,
|
| &GetFontTableForPrivateFontFile,
|
| };
|
|
|