Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/compositor/layer.h" | 5 #include "ui/compositor/layer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 571 if (!web_layer_is_accelerated_) { | 571 if (!web_layer_is_accelerated_) { |
| 572 if (type_ != LAYER_SOLID_COLOR) | 572 if (type_ != LAYER_SOLID_COLOR) |
| 573 web_layer_.to<WebKit::WebContentLayer>().setDrawsContent(should_draw); | 573 web_layer_.to<WebKit::WebContentLayer>().setDrawsContent(should_draw); |
| 574 web_layer_.setBounds(ConvertSizeToPixel(this, bounds_.size())); | 574 web_layer_.setBounds(ConvertSizeToPixel(this, bounds_.size())); |
| 575 } else { | 575 } else { |
| 576 DCHECK(texture_); | 576 DCHECK(texture_); |
| 577 unsigned int texture_id = texture_->texture_id(); | 577 unsigned int texture_id = texture_->texture_id(); |
| 578 WebKit::WebExternalTextureLayer texture_layer = | 578 WebKit::WebExternalTextureLayer texture_layer = |
| 579 web_layer_.to<WebKit::WebExternalTextureLayer>(); | 579 web_layer_.to<WebKit::WebExternalTextureLayer>(); |
| 580 texture_layer.setTextureId(should_draw ? texture_id : 0); | 580 texture_layer.setTextureId(should_draw ? texture_id : 0); |
| 581 gfx::Rect bounds_in_pixel = ConvertRectToPixel(this, bounds()); | |
| 582 gfx::Size texture_size = texture_->size(); | 581 gfx::Size texture_size = texture_->size(); |
| 583 gfx::Size size(std::min(bounds_in_pixel.width(), texture_size.width()), | 582 |
| 584 std::min(bounds_in_pixel.height(), texture_size.height())); | 583 // As WebKit does not support DIP, WebKit is told of coordinates in DIP |
| 584 // as if they were pixel coordinates. The texture is scaled here via | |
| 585 // the setBounds call. | |
| 586 // TODO(pkotwicz): Fix this code to take in account textures with pixel | |
| 587 // sizes once WebKit understands DIP. http://crbug.com/127455 | |
|
piman
2012/05/09 23:31:03
Note: once you want to provide support for that, i
| |
| 588 gfx::Size size(std::min(bounds().width(), texture_size.width()), | |
| 589 std::min(bounds().height(), texture_size.height())); | |
| 585 WebKit::WebFloatRect rect( | 590 WebKit::WebFloatRect rect( |
| 586 0, | 591 0, |
| 587 0, | 592 0, |
| 588 static_cast<float>(size.width())/texture_size.width(), | 593 static_cast<float>(size.width())/texture_size.width(), |
| 589 static_cast<float>(size.height())/texture_size.height()); | 594 static_cast<float>(size.height())/texture_size.height()); |
| 590 texture_layer.setUVRect(rect); | 595 texture_layer.setUVRect(rect); |
| 591 web_layer_.setBounds(size); | 596 |
| 597 gfx::Size size_in_pixel = ConvertSizeToPixel(this, bounds().size()); | |
| 598 web_layer_.setBounds(size_in_pixel); | |
| 592 } | 599 } |
| 593 } | 600 } |
| 594 | 601 |
| 595 void Layer::RecomputeDebugBorderColor() { | 602 void Layer::RecomputeDebugBorderColor() { |
| 596 if (!show_debug_borders_) | 603 if (!show_debug_borders_) |
| 597 return; | 604 return; |
| 598 unsigned int color = 0xFF000000; | 605 unsigned int color = 0xFF000000; |
| 599 color |= web_layer_is_accelerated_ ? 0x0000FF00 : 0x00FF0000; | 606 color |= web_layer_is_accelerated_ ? 0x0000FF00 : 0x00FF0000; |
| 600 bool opaque = fills_bounds_opaquely_ && (GetCombinedOpacity() == 1.f); | 607 bool opaque = fills_bounds_opaquely_ && (GetCombinedOpacity() == 1.f); |
| 601 if (!opaque) | 608 if (!opaque) |
| 602 color |= 0xFF; | 609 color |= 0xFF; |
| 603 web_layer_.setDebugBorderColor(color); | 610 web_layer_.setDebugBorderColor(color); |
| 604 } | 611 } |
| 605 | 612 |
| 606 } // namespace ui | 613 } // namespace ui |
| OLD | NEW |