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

Unified Diff: ui/gfx/compositor/layer.cc

Issue 9289036: aura: Add Layer::LAYER_SOLID_COLOR to compositor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update WorkspaceManagerTest Created 8 years, 11 months 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
« no previous file with comments | « ui/gfx/compositor/layer.h ('k') | ui/gfx/compositor/layer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/compositor/layer.cc
diff --git a/ui/gfx/compositor/layer.cc b/ui/gfx/compositor/layer.cc
index 2220f82b6c8023a0640a47100e2ea41738185684..6d1d6d544464c99142063f6c9a60cc2bce0b9d32 100644
--- a/ui/gfx/compositor/layer.cc
+++ b/ui/gfx/compositor/layer.cc
@@ -15,6 +15,7 @@
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebFloatPoint.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebFloatRect.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSolidColorLayer.h"
#include "ui/base/animation/animation.h"
#include "ui/gfx/canvas_skia.h"
#include "ui/gfx/compositor/compositor_switches.h"
@@ -28,7 +29,7 @@ namespace {
const float EPSILON = 1e-3f;
-bool IsApproximateMultilpleOf(float value, float base) {
+bool IsApproximateMultipleOf(float value, float base) {
float remainder = fmod(fabs(value), base);
return remainder < EPSILON || base - remainder < EPSILON;
}
@@ -42,7 +43,7 @@ const ui::Layer* GetRoot(const ui::Layer* layer) {
namespace ui {
Layer::Layer()
- : type_(LAYER_HAS_TEXTURE),
+ : type_(LAYER_TEXTURED),
compositor_(NULL),
parent_(NULL),
visible_(true),
@@ -193,7 +194,7 @@ bool Layer::IsDrawn() const {
}
bool Layer::ShouldDraw() const {
- return type_ == LAYER_HAS_TEXTURE && GetCombinedOpacity() > 0.0f;
+ return type_ != LAYER_NOT_DRAWN && GetCombinedOpacity() > 0.0f;
}
// static
@@ -223,6 +224,7 @@ void Layer::SetFillsBoundsOpaquely(bool fills_bounds_opaquely) {
}
void Layer::SetExternalTexture(ui::Texture* texture) {
+ DCHECK_EQ(type_, LAYER_TEXTURED);
layer_updated_externally_ = !!texture;
texture_ = texture;
if (web_layer_is_accelerated_ != layer_updated_externally_) {
@@ -264,7 +266,18 @@ void Layer::SetCanvas(const SkCanvas& canvas, const gfx::Point& origin) {
NOTREACHED();
}
+void Layer::SetColor(SkColor color) {
+ DCHECK_EQ(type_, LAYER_SOLID_COLOR);
+ // WebColor is equivalent to SkColor, per WebColor.h.
+ web_layer_.to<WebKit::WebSolidColorLayer>().setBackgroundColor(
+ static_cast<WebKit::WebColor>(color));
+ SetFillsBoundsOpaquely(SkColorGetA(color) == 0xFF);
+}
+
void Layer::SchedulePaint(const gfx::Rect& invalid_rect) {
+ if (type_ == LAYER_SOLID_COLOR)
+ return;
+
WebKit::WebFloatRect web_rect(
invalid_rect.x(),
invalid_rect.y(),
@@ -336,7 +349,7 @@ void Layer::GetLayerProperties(const ui::Transform& parent_transform,
static_cast<float>(bounds().y()));
current_transform.ConcatTransform(parent_transform);
- if (fills_bounds_opaquely_ && type_ == LAYER_HAS_TEXTURE) {
+ if (fills_bounds_opaquely_ && type_ != LAYER_NOT_DRAWN) {
LayerProperties properties;
properties.layer = this;
properties.transform_relative_to_root = current_transform;
@@ -442,7 +455,10 @@ float Layer::GetOpacityForAnimation() const {
}
void Layer::CreateWebLayer() {
- web_layer_ = WebKit::WebContentLayer::create(this);
+ if (type_ == LAYER_SOLID_COLOR)
+ web_layer_ = WebKit::WebSolidColorLayer::create();
+ else
+ web_layer_ = WebKit::WebContentLayer::create(this);
web_layer_.setAnchorPoint(WebKit::WebFloatPoint(0.f, 0.f));
web_layer_.setOpaque(true);
web_layer_is_accelerated_ = false;
@@ -461,9 +477,10 @@ void Layer::RecomputeTransform() {
void Layer::RecomputeDrawsContentAndUVRect() {
DCHECK(!web_layer_.isNull());
- bool should_draw = type_ == LAYER_HAS_TEXTURE;
+ bool should_draw = type_ != LAYER_NOT_DRAWN;
if (!web_layer_is_accelerated_) {
- web_layer_.to<WebKit::WebContentLayer>().setDrawsContent(should_draw);
+ if (type_ != LAYER_SOLID_COLOR)
+ web_layer_.to<WebKit::WebContentLayer>().setDrawsContent(should_draw);
web_layer_.setBounds(bounds_.size());
} else {
DCHECK(texture_);
« no previous file with comments | « ui/gfx/compositor/layer.h ('k') | ui/gfx/compositor/layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698