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

Side by Side Diff: cc/layers/render_surface_impl.cc

Issue 1479883002: cc: Fix draw transform computation for non-drawn layers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove LayerImpl::draw_transform() Created 5 years 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
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 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 "cc/layers/render_surface_impl.h" 5 #include "cc/layers/render_surface_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
11 #include "cc/base/math_util.h" 11 #include "cc/base/math_util.h"
12 #include "cc/debug/debug_colors.h" 12 #include "cc/debug/debug_colors.h"
13 #include "cc/layers/delegated_renderer_layer_impl.h" 13 #include "cc/layers/delegated_renderer_layer_impl.h"
14 #include "cc/layers/layer_impl.h" 14 #include "cc/layers/layer_impl.h"
15 #include "cc/layers/render_pass_sink.h" 15 #include "cc/layers/render_pass_sink.h"
16 #include "cc/quads/debug_border_draw_quad.h" 16 #include "cc/quads/debug_border_draw_quad.h"
17 #include "cc/quads/render_pass.h" 17 #include "cc/quads/render_pass.h"
18 #include "cc/quads/render_pass_draw_quad.h" 18 #include "cc/quads/render_pass_draw_quad.h"
19 #include "cc/quads/shared_quad_state.h" 19 #include "cc/quads/shared_quad_state.h"
20 #include "cc/trees/damage_tracker.h" 20 #include "cc/trees/damage_tracker.h"
21 #include "cc/trees/draw_property_utils.h"
22 #include "cc/trees/layer_tree_impl.h"
21 #include "cc/trees/occlusion.h" 23 #include "cc/trees/occlusion.h"
22 #include "third_party/skia/include/core/SkImageFilter.h" 24 #include "third_party/skia/include/core/SkImageFilter.h"
23 #include "ui/gfx/geometry/rect_conversions.h" 25 #include "ui/gfx/geometry/rect_conversions.h"
24 #include "ui/gfx/transform.h" 26 #include "ui/gfx/transform.h"
25 27
26 namespace cc { 28 namespace cc {
27 29
28 RenderSurfaceImpl::RenderSurfaceImpl(LayerImpl* owning_layer) 30 RenderSurfaceImpl::RenderSurfaceImpl(LayerImpl* owning_layer)
29 : owning_layer_(owning_layer), 31 : owning_layer_(owning_layer),
30 surface_property_changed_(false), 32 surface_property_changed_(false),
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 DebugBorderDrawQuad* debug_border_quad = 219 DebugBorderDrawQuad* debug_border_quad =
218 render_pass->CreateAndAppendDrawQuad<DebugBorderDrawQuad>(); 220 render_pass->CreateAndAppendDrawQuad<DebugBorderDrawQuad>();
219 debug_border_quad->SetNew(shared_quad_state, content_rect_, 221 debug_border_quad->SetNew(shared_quad_state, content_rect_,
220 visible_layer_rect, debug_border_color, 222 visible_layer_rect, debug_border_color,
221 debug_border_width); 223 debug_border_width);
222 } 224 }
223 225
224 ResourceId mask_resource_id = 0; 226 ResourceId mask_resource_id = 0;
225 gfx::Size mask_texture_size; 227 gfx::Size mask_texture_size;
226 gfx::Vector2dF mask_uv_scale; 228 gfx::Vector2dF mask_uv_scale;
229 gfx::Transform owning_layer_draw_transform = owning_layer_->DrawTransform();
227 if (mask_layer && mask_layer->DrawsContent() && 230 if (mask_layer && mask_layer->DrawsContent() &&
228 !mask_layer->bounds().IsEmpty()) { 231 !mask_layer->bounds().IsEmpty()) {
229 mask_layer->GetContentsResourceId(&mask_resource_id, &mask_texture_size); 232 mask_layer->GetContentsResourceId(&mask_resource_id, &mask_texture_size);
230 gfx::Vector2dF owning_layer_draw_scale = 233 gfx::Vector2dF owning_layer_draw_scale =
231 MathUtil::ComputeTransform2dScaleComponents( 234 MathUtil::ComputeTransform2dScaleComponents(owning_layer_draw_transform,
232 owning_layer_->draw_transform(), 1.f); 235 1.f);
233 gfx::SizeF unclipped_mask_target_size = gfx::ScaleSize( 236 gfx::SizeF unclipped_mask_target_size = gfx::ScaleSize(
234 gfx::SizeF(owning_layer_->bounds()), owning_layer_draw_scale.x(), 237 gfx::SizeF(owning_layer_->bounds()), owning_layer_draw_scale.x(),
235 owning_layer_draw_scale.y()); 238 owning_layer_draw_scale.y());
236 mask_uv_scale = gfx::Vector2dF( 239 mask_uv_scale = gfx::Vector2dF(
237 content_rect_.width() / unclipped_mask_target_size.width(), 240 content_rect_.width() / unclipped_mask_target_size.width(),
238 content_rect_.height() / unclipped_mask_target_size.height()); 241 content_rect_.height() / unclipped_mask_target_size.height());
239 } 242 }
240 243
241 DCHECK(owning_layer_->draw_properties().target_space_transform.IsScale2d()); 244 DCHECK(owning_layer_->draw_properties().target_space_transform.IsScale2d());
242 gfx::Vector2dF owning_layer_to_target_scale = 245 gfx::Vector2dF owning_layer_to_target_scale =
243 owning_layer_->draw_properties().target_space_transform.Scale2d(); 246 owning_layer_draw_transform.Scale2d();
244 247
245 RenderPassDrawQuad* quad = 248 RenderPassDrawQuad* quad =
246 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 249 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
247 quad->SetNew(shared_quad_state, content_rect_, visible_layer_rect, 250 quad->SetNew(shared_quad_state, content_rect_, visible_layer_rect,
248 render_pass_id, mask_resource_id, mask_uv_scale, 251 render_pass_id, mask_resource_id, mask_uv_scale,
249 mask_texture_size, owning_layer_->filters(), 252 mask_texture_size, owning_layer_->filters(),
250 owning_layer_to_target_scale, 253 owning_layer_to_target_scale,
251 owning_layer_->background_filters()); 254 owning_layer_->background_filters());
252 } 255 }
253 256
254 } // namespace cc 257 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698