| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "ui/gfx/compositor/layer.h" | 5 #include "ui/gfx/compositor/layer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 | 10 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 | 82 |
| 83 void Layer::Draw() { | 83 void Layer::Draw() { |
| 84 ui::TextureDrawParams texture_draw_params; | 84 ui::TextureDrawParams texture_draw_params; |
| 85 for (Layer* layer = this; layer; layer = layer->parent_) { | 85 for (Layer* layer = this; layer; layer = layer->parent_) { |
| 86 texture_draw_params.transform.ConcatTransform(layer->transform_); | 86 texture_draw_params.transform.ConcatTransform(layer->transform_); |
| 87 texture_draw_params.transform.ConcatTranslate( | 87 texture_draw_params.transform.ConcatTranslate( |
| 88 static_cast<float>(layer->bounds_.x()), | 88 static_cast<float>(layer->bounds_.x()), |
| 89 static_cast<float>(layer->bounds_.y())); | 89 static_cast<float>(layer->bounds_.y())); |
| 90 } | 90 } |
| 91 | 91 |
| 92 // Only blend for child layers. The root layer will clobber the cleared bg. | 92 // Only blend for transparent child layers. |
| 93 texture_draw_params.blend = parent_ != NULL; | 93 // The root layer will clobber the cleared bg. |
| 94 texture_draw_params.blend = parent_ != NULL && !fills_bounds_opaquely_; |
| 94 | 95 |
| 95 #if defined(OS_WIN) | 96 #if defined(OS_WIN) |
| 96 texture_->Draw(texture_draw_params); | 97 texture_->Draw(texture_draw_params); |
| 97 #else | 98 #else |
| 98 hole_rect_ = hole_rect_.Intersect( | 99 hole_rect_ = hole_rect_.Intersect( |
| 99 gfx::Rect(0, 0, bounds_.width(), bounds_.height())); | 100 gfx::Rect(0, 0, bounds_.width(), bounds_.height())); |
| 100 | 101 |
| 101 // top | 102 // top |
| 102 DrawRegion(texture_draw_params, gfx::Rect(0, | 103 DrawRegion(texture_draw_params, gfx::Rect(0, |
| 103 0, | 104 0, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 !children_[i]->transform().HasChange()) { | 137 !children_[i]->transform().HasChange()) { |
| 137 hole_rect_ = children_[i]->bounds(); | 138 hole_rect_ = children_[i]->bounds(); |
| 138 return; | 139 return; |
| 139 } | 140 } |
| 140 } | 141 } |
| 141 // no opaque child layers, set hole_rect_ to empty | 142 // no opaque child layers, set hole_rect_ to empty |
| 142 hole_rect_ = gfx::Rect(); | 143 hole_rect_ = gfx::Rect(); |
| 143 } | 144 } |
| 144 | 145 |
| 145 } // namespace ui | 146 } // namespace ui |
| OLD | NEW |