Index: cc/output/copy_output_request.h |
diff --git a/cc/output/copy_output_request.h b/cc/output/copy_output_request.h |
index 54fff1a6d66af3de604f04665be21406bb1fa21d..b7eb0b4ffc5bada59e6eb5f2bf5f6b56c50b7e35 100644 |
--- a/cc/output/copy_output_request.h |
+++ b/cc/output/copy_output_request.h |
@@ -8,7 +8,7 @@ |
#include "base/callback.h" |
#include "base/memory/scoped_ptr.h" |
#include "cc/base/cc_export.h" |
-#include "ui/gfx/size.h" |
+#include "ui/gfx/rect.h" |
class SkBitmap; |
@@ -35,15 +35,29 @@ class CC_EXPORT CopyOutputRequest { |
static scoped_ptr<CopyOutputRequest> CreateRelayRequest( |
const CopyOutputRequest& original_request, |
const CopyOutputRequestCallback& result_callback) { |
- return make_scoped_ptr(new CopyOutputRequest( |
- original_request.force_bitmap_result(), result_callback)); |
+ scoped_ptr<CopyOutputRequest> relay = CreateRequest(result_callback); |
+ relay->force_bitmap_result_ = original_request.force_bitmap_result_; |
+ relay->has_area_ = original_request.has_area_; |
+ relay->area_ = original_request.area_; |
+ return relay.Pass(); |
} |
~CopyOutputRequest(); |
bool IsEmpty() const { return result_callback_.is_null(); } |
+ |
bool force_bitmap_result() const { return force_bitmap_result_; } |
+ // By default copy requests copy the entire layer's subtree output. If an |
+ // area is given, then the intersection of this rect (in layer space) with |
+ // the layer's subtree output will be returned. |
+ void set_area(gfx::Rect area) { |
+ has_area_ = true; |
+ area_ = area; |
+ } |
+ bool has_area() const { return has_area_; } |
+ gfx::Rect area() const { return area_; } |
+ |
void SendResult(scoped_ptr<CopyOutputResult> result); |
void SendBitmapResult(scoped_ptr<SkBitmap> bitmap); |
void SendTextureResult(gfx::Size size, |
@@ -60,6 +74,8 @@ class CC_EXPORT CopyOutputRequest { |
const CopyOutputRequestCallback& result_callback); |
bool force_bitmap_result_; |
+ bool has_area_; |
+ gfx::Rect area_; |
CopyOutputRequestCallback result_callback_; |
}; |