Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(677)

Side by Side Diff: webkit/glue/plugins/pepper_private.cc

Issue 3335016: Same as 3305029. Fixed compilation error on Linux. Unfortunately try does not... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | webkit/glue/plugins/ppb_private.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include "webkit/glue/plugins/pepper_private.h" 7 #include "webkit/glue/plugins/pepper_private.h"
8 8
9 #include "app/resource_bundle.h"
9 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
11 #include "grit/webkit_resources.h"
10 #include "grit/webkit_strings.h" 12 #include "grit/webkit_strings.h"
13 #include "skia/ext/platform_canvas.h"
14 #include "third_party/skia/include/core/SkBitmap.h"
11 #include "webkit/glue/webkit_glue.h" 15 #include "webkit/glue/webkit_glue.h"
16 #include "webkit/glue/plugins/pepper_image_data.h"
12 #include "webkit/glue/plugins/pepper_plugin_module.h" 17 #include "webkit/glue/plugins/pepper_plugin_module.h"
13 #include "webkit/glue/plugins/pepper_var.h" 18 #include "webkit/glue/plugins/pepper_var.h"
14 #include "webkit/glue/plugins/ppb_private.h" 19 #include "webkit/glue/plugins/ppb_private.h"
15 20
16 namespace pepper { 21 namespace pepper {
17 22
18 #if defined(OS_LINUX) 23 #if defined(OS_LINUX)
19 class PrivateFontFile : public Resource { 24 class PrivateFontFile : public Resource {
20 public: 25 public:
21 PrivateFontFile(PluginModule* module, int fd) : Resource(module), fd_(fd) {} 26 PrivateFontFile(PluginModule* module, int fd) : Resource(module), fd_(fd) {}
22 virtual ~PrivateFontFile() {} 27 virtual ~PrivateFontFile() {}
23 28
24 // Resource overrides. 29 // Resource overrides.
25 PrivateFontFile* AsPrivateFontFile() { return this; } 30 PrivateFontFile* AsPrivateFontFile() { return this; }
26 31
27 bool GetFontTable(uint32_t table, 32 bool GetFontTable(uint32_t table,
28 void* output, 33 void* output,
29 uint32_t* output_length); 34 uint32_t* output_length);
30 35
31 private: 36 private:
32 int fd_; 37 int fd_;
33 }; 38 };
34 #endif 39 #endif
35 40
36 namespace { 41 namespace {
37 42
43 struct ResourceImageInfo {
44 PP_ResourceImage pp_id;
45 int res_id;
46 };
47
48 static const ResourceImageInfo kResourceImageMap[] = {
49 { PP_RESOURCEIMAGE_PDF_BUTTON_FTH, IDR_PDF_BUTTON_FTH },
50 { PP_RESOURCEIMAGE_PDF_BUTTON_FTH_HOVER, IDR_PDF_BUTTON_FTH_HOVER },
51 { PP_RESOURCEIMAGE_PDF_BUTTON_FTH_PRESSED, IDR_PDF_BUTTON_FTH_PRESSED },
52 { PP_RESOURCEIMAGE_PDF_BUTTON_FTW, IDR_PDF_BUTTON_FTW },
53 { PP_RESOURCEIMAGE_PDF_BUTTON_FTW_HOVER, IDR_PDF_BUTTON_FTW_HOVER },
54 { PP_RESOURCEIMAGE_PDF_BUTTON_FTW_PRESSED, IDR_PDF_BUTTON_FTW_PRESSED },
55 { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN, IDR_PDF_BUTTON_ZOOMIN },
56 { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_HOVER, IDR_PDF_BUTTON_ZOOMIN_HOVER },
57 { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMIN_PRESSED, IDR_PDF_BUTTON_ZOOMIN_PRESSED },
58 { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT, IDR_PDF_BUTTON_ZOOMOUT },
59 { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_HOVER, IDR_PDF_BUTTON_ZOOMOUT_HOVER },
60 { PP_RESOURCEIMAGE_PDF_BUTTON_ZOOMOUT_PRESSED,
61 IDR_PDF_BUTTON_ZOOMOUT_PRESSED },
62 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_0, IDR_PDF_THUMBNAIL_0 },
63 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_1, IDR_PDF_THUMBNAIL_1 },
64 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_2, IDR_PDF_THUMBNAIL_2 },
65 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_3, IDR_PDF_THUMBNAIL_3 },
66 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_4, IDR_PDF_THUMBNAIL_4 },
67 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_5, IDR_PDF_THUMBNAIL_5 },
68 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_6, IDR_PDF_THUMBNAIL_6 },
69 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_7, IDR_PDF_THUMBNAIL_7 },
70 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_8, IDR_PDF_THUMBNAIL_8 },
71 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_9, IDR_PDF_THUMBNAIL_9 },
72 { PP_RESOURCEIMAGE_PDF_BUTTON_THUMBNAIL_NUM_BACKGROUND,
73 IDR_PDF_THUMBNAIL_NUM_BACKGROUND },
74 };
75
38 PP_Var GetLocalizedString(PP_ResourceString string_id) { 76 PP_Var GetLocalizedString(PP_ResourceString string_id) {
39 std::string rv; 77 std::string rv;
40 if (string_id == PP_RESOURCESTRING_PDFGETPASSWORD) 78 if (string_id == PP_RESOURCESTRING_PDFGETPASSWORD)
41 rv = UTF16ToUTF8(webkit_glue::GetLocalizedString(IDS_PDF_NEED_PASSWORD)); 79 rv = UTF16ToUTF8(webkit_glue::GetLocalizedString(IDS_PDF_NEED_PASSWORD));
42 80
43 return StringToPPVar(rv); 81 return StringToPPVar(rv);
44 } 82 }
45 83
84 PP_Resource GetResourceImage(PP_Module module_id, PP_ResourceImage image_id) {
85 int res_id = 0;
86 for (size_t i = 0; i < arraysize(kResourceImageMap); ++i) {
87 if (kResourceImageMap[i].pp_id == image_id) {
88 res_id = kResourceImageMap[i].res_id;
89 break;
90 }
91 }
92 if (res_id == 0)
93 return NULL;
94
95 SkBitmap* res_bitmap =
96 ResourceBundle::GetSharedInstance().GetBitmapNamed(res_id);
97
98 PluginModule* module = PluginModule::FromPPModule(module_id);
99 if (!module)
100 return NULL;
101 scoped_refptr<pepper::ImageData> image_data(new pepper::ImageData(module));
102 if (!image_data->Init(PP_IMAGEDATAFORMAT_BGRA_PREMUL,
103 res_bitmap->width(), res_bitmap->height(), false)) {
104 return NULL;
105 }
106
107 ImageDataAutoMapper mapper(image_data);
108 if (!mapper.is_valid())
109 return NULL;
110
111 skia::PlatformCanvas* canvas = image_data->mapped_canvas();
112 SkBitmap& ret_bitmap =
113 const_cast<SkBitmap&>(canvas->getTopPlatformDevice().accessBitmap(true));
114 if (!res_bitmap->copyTo(&ret_bitmap, SkBitmap::kARGB_8888_Config, NULL)) {
115 return NULL;
116 }
117
118 return image_data->GetReference();
119 }
120
46 PP_Resource GetFontFileWithFallback( 121 PP_Resource GetFontFileWithFallback(
47 PP_Module module_id, 122 PP_Module module_id,
48 const PP_PrivateFontFileDescription* description) { 123 const PP_PrivateFontFileDescription* description) {
49 #if defined(OS_LINUX) 124 #if defined(OS_LINUX)
50 PluginModule* module = PluginModule::FromPPModule(module_id); 125 PluginModule* module = PluginModule::FromPPModule(module_id);
51 if (!module) 126 if (!module)
52 return NULL; 127 return NULL;
53 128
54 int fd = webkit_glue::MatchFontWithFallback(description->face, 129 int fd = webkit_glue::MatchFontWithFallback(description->face,
55 description->weight >= 700, 130 description->weight >= 700,
(...skipping 22 matching lines...) Expand all
78 if (!font.get()) 153 if (!font.get())
79 return false; 154 return false;
80 return font->GetFontTable(table, output, output_length); 155 return font->GetFontTable(table, output, output_length);
81 #else 156 #else
82 return false; 157 return false;
83 #endif 158 #endif
84 } 159 }
85 160
86 const PPB_Private ppb_private = { 161 const PPB_Private ppb_private = {
87 &GetLocalizedString, 162 &GetLocalizedString,
163 &GetResourceImage,
88 &GetFontFileWithFallback, 164 &GetFontFileWithFallback,
89 &GetFontTableForPrivateFontFile, 165 &GetFontTableForPrivateFontFile,
90 }; 166 };
91 167
92 } // namespace 168 } // namespace
93 169
94 // static 170 // static
95 const PPB_Private* Private::GetInterface() { 171 const PPB_Private* Private::GetInterface() {
96 return &ppb_private; 172 return &ppb_private;
97 } 173 }
98 174
99 #if defined(OS_LINUX) 175 #if defined(OS_LINUX)
100 bool PrivateFontFile::GetFontTable(uint32_t table, 176 bool PrivateFontFile::GetFontTable(uint32_t table,
101 void* output, 177 void* output,
102 uint32_t* output_length) { 178 uint32_t* output_length) {
103 size_t temp_size = static_cast<size_t>(*output_length); 179 size_t temp_size = static_cast<size_t>(*output_length);
104 bool rv = webkit_glue::GetFontTable( 180 bool rv = webkit_glue::GetFontTable(
105 fd_, table, static_cast<uint8_t*>(output), &temp_size); 181 fd_, table, static_cast<uint8_t*>(output), &temp_size);
106 *output_length = static_cast<uint32_t>(temp_size); 182 *output_length = static_cast<uint32_t>(temp_size);
107 return rv; 183 return rv;
108 } 184 }
109 #endif 185 #endif
110 186
111 } // namespace pepper 187 } // namespace pepper
OLDNEW
« no previous file with comments | « no previous file | webkit/glue/plugins/ppb_private.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698