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

Side by Side Diff: webkit/plugins/ppapi/ppb_image_data_impl.cc

Issue 7149026: Implement flash menu and net connector resources using the API/thunk model. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 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
OLDNEW
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_image_data_impl.h" 5 #include "webkit/plugins/ppapi/ppb_image_data_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "skia/ext/platform_canvas.h" 12 #include "skia/ext/platform_canvas.h"
13 #include "ppapi/c/pp_instance.h" 13 #include "ppapi/c/pp_instance.h"
14 #include "ppapi/c/pp_resource.h" 14 #include "ppapi/c/pp_resource.h"
15 #include "ppapi/c/ppb_image_data.h" 15 #include "ppapi/c/ppb_image_data.h"
16 #include "ppapi/c/trusted/ppb_image_data_trusted.h" 16 #include "ppapi/c/trusted/ppb_image_data_trusted.h"
17 #include "ppapi/thunk/thunk.h" 17 #include "ppapi/thunk/thunk.h"
18 #include "third_party/skia/include/core/SkColorPriv.h" 18 #include "third_party/skia/include/core/SkColorPriv.h"
19 #include "webkit/plugins/ppapi/common.h" 19 #include "webkit/plugins/ppapi/common.h"
20 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" 20 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
21 21
22 using ::ppapi::thunk::PPB_ImageData_API;
23
22 namespace webkit { 24 namespace webkit {
23 namespace ppapi { 25 namespace ppapi {
24 26
25 namespace {
26
27 int32_t GetSharedMemory(PP_Resource resource,
28 int* handle,
29 uint32_t* byte_count) {
30 scoped_refptr<PPB_ImageData_Impl> image_data(
31 Resource::GetAs<PPB_ImageData_Impl>(resource));
32 if (image_data) {
33 *handle = image_data->GetSharedMemoryHandle(byte_count);
34 return PP_OK;
35 }
36 return PP_ERROR_BADRESOURCE;
37 }
38
39 const PPB_ImageDataTrusted ppb_imagedata_trusted = {
40 &GetSharedMemory,
41 };
42
43 } // namespace
44
45 PPB_ImageData_Impl::PPB_ImageData_Impl(PluginInstance* instance) 27 PPB_ImageData_Impl::PPB_ImageData_Impl(PluginInstance* instance)
46 : Resource(instance), 28 : Resource(instance),
47 format_(PP_IMAGEDATAFORMAT_BGRA_PREMUL), 29 format_(PP_IMAGEDATAFORMAT_BGRA_PREMUL),
48 width_(0), 30 width_(0),
49 height_(0) { 31 height_(0) {
50 } 32 }
51 33
52 PPB_ImageData_Impl::~PPB_ImageData_Impl() { 34 PPB_ImageData_Impl::~PPB_ImageData_Impl() {
53 } 35 }
54 36
55 // static 37 PPB_ImageData_API* PPB_ImageData_Impl::AsPPB_ImageData_API() {
56 const PPB_ImageData* PPB_ImageData_Impl::GetInterface() {
57 return ::ppapi::thunk::GetPPB_ImageData_Thunk();
58 }
59
60 // static
61 const PPB_ImageDataTrusted* PPB_ImageData_Impl::GetTrustedInterface() {
62 return &ppb_imagedata_trusted;
63 }
64
65 ::ppapi::thunk::PPB_ImageData_API* PPB_ImageData_Impl::AsPPB_ImageData_API() {
66 return this; 38 return this;
67 } 39 }
68 40
69 PPB_ImageData_Impl* PPB_ImageData_Impl::AsPPB_ImageData_Impl() { 41 PPB_ImageData_Impl* PPB_ImageData_Impl::AsPPB_ImageData_Impl() {
70 return this; 42 return this;
71 } 43 }
72 44
73 bool PPB_ImageData_Impl::Init(PP_ImageDataFormat format, 45 bool PPB_ImageData_Impl::Init(PP_ImageDataFormat format,
74 int width, int height, 46 int width, int height,
75 bool init_to_zero) { 47 bool init_to_zero) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 return bitmap.getAddr32(0, 0); 87 return bitmap.getAddr32(0, 0);
116 } 88 }
117 89
118 void PPB_ImageData_Impl::Unmap() { 90 void PPB_ImageData_Impl::Unmap() {
119 // This is currently unimplemented, which is OK. The data will just always 91 // This is currently unimplemented, which is OK. The data will just always
120 // be around once it's mapped. Chrome's TransportDIB isn't currently 92 // be around once it's mapped. Chrome's TransportDIB isn't currently
121 // unmappable without freeing it, but this may be something we want to support 93 // unmappable without freeing it, but this may be something we want to support
122 // in the future to save some memory. 94 // in the future to save some memory.
123 } 95 }
124 96
125 int PPB_ImageData_Impl::GetSharedMemoryHandle(uint32* byte_count) const { 97 int32_t PPB_ImageData_Impl::GetSharedMemory(int* handle,
126 return platform_image_->GetSharedMemoryHandle(byte_count); 98 uint32_t* byte_count) {
99 *handle = platform_image_->GetSharedMemoryHandle(byte_count);
100 return PP_OK;
127 } 101 }
128 102
129 const SkBitmap* PPB_ImageData_Impl::GetMappedBitmap() const { 103 const SkBitmap* PPB_ImageData_Impl::GetMappedBitmap() const {
130 if (!mapped_canvas_.get()) 104 if (!mapped_canvas_.get())
131 return NULL; 105 return NULL;
132 return &skia::GetTopDevice(*mapped_canvas_)->accessBitmap(false); 106 return &skia::GetTopDevice(*mapped_canvas_)->accessBitmap(false);
133 } 107 }
134 108
135 void PPB_ImageData_Impl::Swap(PPB_ImageData_Impl* other) { 109 void PPB_ImageData_Impl::Swap(PPB_ImageData_Impl* other) {
136 swap(other->platform_image_, platform_image_); 110 swap(other->platform_image_, platform_image_);
137 swap(other->mapped_canvas_, mapped_canvas_); 111 swap(other->mapped_canvas_, mapped_canvas_);
138 std::swap(other->format_, format_); 112 std::swap(other->format_, format_);
139 std::swap(other->width_, width_); 113 std::swap(other->width_, width_);
140 std::swap(other->height_, height_); 114 std::swap(other->height_, height_);
141 } 115 }
142 116
143 } // namespace ppapi 117 } // namespace ppapi
144 } // namespace webkit 118 } // namespace webkit
145 119
OLDNEW
« no previous file with comments | « webkit/plugins/ppapi/ppb_image_data_impl.h ('k') | webkit/plugins/ppapi/resource_creation_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698