OLD | NEW |
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/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 if (mask_layer && | 243 if (mask_layer && |
244 (!mask_layer->DrawsContent() || mask_layer->bounds().IsEmpty())) | 244 (!mask_layer->DrawsContent() || mask_layer->bounds().IsEmpty())) |
245 mask_layer = NULL; | 245 mask_layer = NULL; |
246 } | 246 } |
247 | 247 |
248 gfx::RectF mask_uv_rect(0.f, 0.f, 1.f, 1.f); | 248 gfx::RectF mask_uv_rect(0.f, 0.f, 1.f, 1.f); |
249 if (mask_layer) { | 249 if (mask_layer) { |
250 gfx::Vector2dF owning_layer_draw_scale = | 250 gfx::Vector2dF owning_layer_draw_scale = |
251 MathUtil::ComputeTransform2dScaleComponents( | 251 MathUtil::ComputeTransform2dScaleComponents( |
252 owning_layer_->draw_transform(), 1.f); | 252 owning_layer_->draw_transform(), 1.f); |
253 gfx::SizeF unclipped_surface_size = gfx::ScaleSize( | 253 gfx::SizeF unclipped_mask_target_size = gfx::ScaleSize( |
254 owning_layer_->content_bounds(), | 254 owning_layer_->content_bounds(), |
255 owning_layer_draw_scale.x(), | 255 owning_layer_draw_scale.x(), |
256 owning_layer_draw_scale.y()); | 256 owning_layer_draw_scale.y()); |
257 // This assumes that the owning layer clips its subtree when a mask is | |
258 // present. | |
259 DCHECK(gfx::RectF(unclipped_surface_size).Contains(content_rect_)); | |
260 | 257 |
261 float uv_scale_x = content_rect_.width() / unclipped_surface_size.width(); | 258 float uv_scale_x = |
262 float uv_scale_y = content_rect_.height() / unclipped_surface_size.height(); | 259 content_rect_.width() / unclipped_mask_target_size.width(); |
| 260 float uv_scale_y = |
| 261 content_rect_.height() / unclipped_mask_target_size.height(); |
263 | 262 |
264 mask_uv_rect = gfx::RectF( | 263 mask_uv_rect = gfx::RectF( |
265 uv_scale_x * content_rect_.x() / content_rect_.width(), | 264 uv_scale_x * content_rect_.x() / content_rect_.width(), |
266 uv_scale_y * content_rect_.y() / content_rect_.height(), | 265 uv_scale_y * content_rect_.y() / content_rect_.height(), |
267 uv_scale_x, | 266 uv_scale_x, |
268 uv_scale_y); | 267 uv_scale_y); |
269 } | 268 } |
270 | 269 |
271 ResourceProvider::ResourceId mask_resource_id = | 270 ResourceProvider::ResourceId mask_resource_id = |
272 mask_layer ? mask_layer->ContentsResourceId() : 0; | 271 mask_layer ? mask_layer->ContentsResourceId() : 0; |
273 gfx::Rect contents_changed_since_last_frame = | 272 gfx::Rect contents_changed_since_last_frame = |
274 ContentsChanged() ? content_rect_ : gfx::Rect(); | 273 ContentsChanged() ? content_rect_ : gfx::Rect(); |
275 | 274 |
276 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); | 275 scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create(); |
277 quad->SetNew(shared_quad_state, | 276 quad->SetNew(shared_quad_state, |
278 content_rect_, | 277 content_rect_, |
279 render_pass_id, | 278 render_pass_id, |
280 for_replica, | 279 for_replica, |
281 mask_resource_id, | 280 mask_resource_id, |
282 contents_changed_since_last_frame, | 281 contents_changed_since_last_frame, |
283 mask_uv_rect, | 282 mask_uv_rect, |
284 owning_layer_->filters(), | 283 owning_layer_->filters(), |
285 owning_layer_->filter(), | 284 owning_layer_->filter(), |
286 owning_layer_->background_filters()); | 285 owning_layer_->background_filters()); |
287 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 286 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); |
288 } | 287 } |
289 | 288 |
290 } // namespace cc | 289 } // namespace cc |
OLD | NEW |