Index: webkit/glue/plugins/pepper_image_data.h |
=================================================================== |
--- webkit/glue/plugins/pepper_image_data.h (revision 69381) |
+++ webkit/glue/plugins/pepper_image_data.h (working copy) |
@@ -1,131 +0,0 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef WEBKIT_GLUE_PLUGINS_PEPPER_IMAGE_DATA_H_ |
-#define WEBKIT_GLUE_PLUGINS_PEPPER_IMAGE_DATA_H_ |
- |
-#include "base/basictypes.h" |
-#include "base/scoped_ptr.h" |
-#include "ppapi/c/ppb_image_data.h" |
-#include "webkit/glue/plugins/pepper_plugin_delegate.h" |
-#include "webkit/glue/plugins/pepper_resource.h" |
- |
-namespace skia { |
-class PlatformCanvas; |
-} |
- |
-struct PPB_ImageDataTrusted; |
-class SkBitmap; |
- |
-namespace pepper { |
- |
-class ImageData : public Resource { |
- public: |
- explicit ImageData(PluginModule* module); |
- virtual ~ImageData(); |
- |
- int width() const { return width_; } |
- int height() const { return height_; } |
- |
- // Returns the image format. |
- PP_ImageDataFormat format() const { return format_; } |
- |
- // Returns true if this image is mapped. False means that the image is either |
- // invalid or not mapped. See ImageDataAutoMapper below. |
- bool is_mapped() const { return !!mapped_canvas_.get(); } |
- |
- PluginDelegate::PlatformImage2D* platform_image() const { |
- return platform_image_.get(); |
- } |
- |
- // Returns a pointer to the interface implementing PPB_ImageData that is |
- // exposed to the plugin. |
- static const PPB_ImageData* GetInterface(); |
- static const PPB_ImageDataTrusted* GetTrustedInterface(); |
- |
- // Returns the image data format used by the browser. If the plugin uses the |
- // same format, there is no conversion. Otherwise the browser will be in |
- // charge of converting from a supported format to its native format. |
- static PP_ImageDataFormat GetNativeImageDataFormat(); |
- |
- // Returns true if the format is supported by the browser. |
- static bool IsImageDataFormatSupported(PP_ImageDataFormat format); |
- |
- // Resource overrides. |
- virtual ImageData* AsImageData(); |
- |
- // PPB_ImageData implementation. |
- bool Init(PP_ImageDataFormat format, |
- int width, int height, |
- bool init_to_zero); |
- void Describe(PP_ImageDataDesc* desc) const; |
- void* Map(); |
- void Unmap(); |
- |
- // PPB_ImageDataTrusted implementation. |
- int GetSharedMemoryHandle(uint32* byte_count) const; |
- |
- // The mapped bitmap and canvas will be NULL if the image is not mapped. |
- skia::PlatformCanvas* mapped_canvas() const { return mapped_canvas_.get(); } |
- const SkBitmap* GetMappedBitmap() const; |
- |
- // Swaps the guts of this image data with another. |
- void Swap(ImageData* other); |
- |
- private: |
- // This will be NULL before initialization, and if this ImageData is |
- // swapped with another. |
- scoped_ptr<PluginDelegate::PlatformImage2D> platform_image_; |
- |
- // When the device is mapped, this is the image. Null when umapped. |
- scoped_ptr<skia::PlatformCanvas> mapped_canvas_; |
- |
- PP_ImageDataFormat format_; |
- int width_; |
- int height_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ImageData); |
-}; |
- |
-// Manages mapping an image resource if necessary. Use this to ensure the |
-// image is mapped. The destructor will put the image back into the previous |
-// state. You must check is_valid() to make sure the image was successfully |
-// mapped before using it. |
-// |
-// Example: |
-// ImageDataAutoMapper mapper(image_data); |
-// if (!mapper.is_valid()) |
-// return utter_failure; |
-// image_data->mapped_canvas()->blah(); // Guaranteed valid. |
-class ImageDataAutoMapper { |
- public: |
- ImageDataAutoMapper(ImageData* image_data) : image_data_(image_data) { |
- if (image_data_->is_mapped()) { |
- is_valid_ = true; |
- needs_unmap_ = false; |
- } else { |
- is_valid_ = needs_unmap_ = !!image_data_->Map(); |
- } |
- } |
- |
- ~ImageDataAutoMapper() { |
- if (needs_unmap_) |
- image_data_->Unmap(); |
- } |
- |
- // Check this to see if the image was successfully mapped. If this is false, |
- // the image could not be mapped and is unusable. |
- bool is_valid() const { return is_valid_; } |
- |
- private: |
- ImageData* image_data_; |
- bool is_valid_; |
- bool needs_unmap_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ImageDataAutoMapper); |
-}; |
- |
-} // namespace pepper |
- |
-#endif // WEBKIT_GLUE_PLUGINS_PEPPER_IMAGE_DATA_H_ |