summaryrefslogtreecommitdiffstats
path: root/cc/output/copy_output_request.h
diff options
context:
space:
mode:
Diffstat (limited to 'cc/output/copy_output_request.h')
-rw-r--r--cc/output/copy_output_request.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/cc/output/copy_output_request.h b/cc/output/copy_output_request.h
index 54fff1a..b7eb0b4 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_;
};