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

Unified Diff: ui/compositor/clip_transform_recorder.cc

Issue 1423653005: Further plumb visual rect into cc:DisplayItemList. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix cc unit tests. Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: ui/compositor/clip_transform_recorder.cc
diff --git a/ui/compositor/clip_transform_recorder.cc b/ui/compositor/clip_transform_recorder.cc
index ddc70d15ea2a32f65cf4adc839555bf9e51abee2..46bb149fbe70ca06702e648dcd285d4f20c7a9e5 100644
--- a/ui/compositor/clip_transform_recorder.cc
+++ b/ui/compositor/clip_transform_recorder.cc
@@ -11,32 +11,40 @@
#include "cc/playback/transform_display_item.h"
#include "ui/compositor/paint_context.h"
#include "ui/gfx/canvas.h"
+#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/path.h"
namespace ui {
-ClipTransformRecorder::ClipTransformRecorder(const PaintContext& context)
- : context_(context), num_closers_(0) {
-}
+ClipTransformRecorder::ClipTransformRecorder(const PaintContext& context,
+ const gfx::Size& visual_size)
+ : context_(context),
+ visual_rect_(context.ToVisualRect(visual_size)),
+ num_closers_(0) {}
ClipTransformRecorder::~ClipTransformRecorder() {
for (size_t i = 0; i < num_closers_; ++i) {
switch (closers_[i]) {
case CLIP_RECT:
- context_.list_->CreateAndAppendItem<cc::EndClipDisplayItem>();
+ context_.list_->CreateAndAppendItem<cc::EndClipDisplayItem>(
+ visual_rect_);
break;
case CLIP_PATH:
- context_.list_->CreateAndAppendItem<cc::EndClipPathDisplayItem>();
+ context_.list_->CreateAndAppendItem<cc::EndClipPathDisplayItem>(
+ visual_rect_);
break;
case TRANSFORM:
- context_.list_->CreateAndAppendItem<cc::EndTransformDisplayItem>();
+ context_.list_->CreateAndAppendItem<cc::EndTransformDisplayItem>(
+ visual_rect_);
break;
}
}
}
void ClipTransformRecorder::ClipRect(const gfx::Rect& clip_rect) {
- auto* item = context_.list_->CreateAndAppendItem<cc::ClipDisplayItem>();
+ gfx::Rect visual_rect = clip_rect + context_.offset_;
danakj 2015/11/06 00:32:45 use the same help on context as above? also, comm
wkorman 2015/11/16 19:01:03 Renamed to clip_in_layer_space.
+ auto* item =
+ context_.list_->CreateAndAppendItem<cc::ClipDisplayItem>(visual_rect);
item->SetNew(clip_rect, std::vector<SkRRect>());
DCHECK_LT(num_closers_, arraysize(closers_));
closers_[num_closers_++] = CLIP_RECT;
@@ -44,7 +52,9 @@ void ClipTransformRecorder::ClipRect(const gfx::Rect& clip_rect) {
void ClipTransformRecorder::ClipPath(const gfx::Path& clip_path) {
bool anti_alias = false;
- auto* item = context_.list_->CreateAndAppendItem<cc::ClipPathDisplayItem>();
+ // As a further optimization, consider passing a more granular visual rect.
+ auto* item = context_.list_->CreateAndAppendItem<cc::ClipPathDisplayItem>(
+ visual_rect_);
item->SetNew(clip_path, SkRegion::kIntersect_Op, anti_alias);
DCHECK_LT(num_closers_, arraysize(closers_));
closers_[num_closers_++] = CLIP_PATH;
@@ -53,14 +63,17 @@ void ClipTransformRecorder::ClipPath(const gfx::Path& clip_path) {
void ClipTransformRecorder::ClipPathWithAntiAliasing(
const gfx::Path& clip_path) {
bool anti_alias = true;
- auto* item = context_.list_->CreateAndAppendItem<cc::ClipPathDisplayItem>();
+ // As a further optimization, consider passing a more granular visual rect.
+ auto* item = context_.list_->CreateAndAppendItem<cc::ClipPathDisplayItem>(
+ visual_rect_);
item->SetNew(clip_path, SkRegion::kIntersect_Op, anti_alias);
DCHECK_LT(num_closers_, arraysize(closers_));
closers_[num_closers_++] = CLIP_PATH;
}
void ClipTransformRecorder::Transform(const gfx::Transform& transform) {
- auto* item = context_.list_->CreateAndAppendItem<cc::TransformDisplayItem>();
+ auto* item = context_.list_->CreateAndAppendItem<cc::TransformDisplayItem>(
+ visual_rect_);
item->SetNew(transform);
DCHECK_LT(num_closers_, arraysize(closers_));
closers_[num_closers_++] = TRANSFORM;

Powered by Google App Engine
This is Rietveld 408576698