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

Unified Diff: athena/screen/background_controller.cc

Issue 287163009: [Athena] minimum impl to add screen/background and test windows (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | « athena/screen/background_controller.h ('k') | athena/screen/public/DEPS » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: athena/screen/background_controller.cc
diff --git a/athena/screen/background_controller.cc b/athena/screen/background_controller.cc
new file mode 100644
index 0000000000000000000000000000000000000000..53cf3e249112ca1da3a27ced2569aab0dec865b9
--- /dev/null
+++ b/athena/screen/background_controller.cc
@@ -0,0 +1,72 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "athena/screen/background_controller.h"
+
+#include "ui/aura/window.h"
+#include "ui/compositor/layer.h"
+#include "ui/gfx/canvas.h"
+#include "ui/gfx/image/image_skia.h"
+#include "ui/views/view.h"
+#include "ui/views/widget/widget.h"
+
+namespace athena {
+
+class BackgroundView : public views::View {
+ public:
+ BackgroundView() {}
+ virtual ~BackgroundView() {}
+
+ void SetImage(const gfx::ImageSkia& image) {
+ image_ = image;
+ SchedulePaint();
+ }
+
+ // views::View
+ virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
+ canvas->DrawImageInt(image_,
+ 0,
+ 0,
+ image_.width(),
+ image_.height(),
+ 0,
+ 0,
+ width(),
+ height(),
+ true);
+ }
+
+ private:
+ gfx::ImageSkia image_;
+
+ DISALLOW_COPY_AND_ASSIGN(BackgroundView);
+};
+
+BackgroundController::BackgroundController(aura::Window* container) {
+ // TODO(oshima): Using widget to just draw an image is probably
+ // overkill. Just use WindowDelegate to draw the background and
+ // remove dependency to ui/views.
+
+ views::Widget* background_widget = new views::Widget;
+ views::Widget::InitParams params(
+ views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
+ params.parent = container;
+ background_widget->Init(params);
+ background_widget->GetNativeWindow()->layer()->SetMasksToBounds(true);
+ background_view_ = new BackgroundView;
+ background_widget->SetContentsView(background_view_);
+ background_widget->Show();
+}
+
+BackgroundController::~BackgroundController() {
+ // background_widget is owned by the container and will be deleted
+ // when the container is deleted.
+}
+
+void BackgroundController::SetImage(const gfx::ImageSkia& image) {
+ // TODO(oshima): implement cross fede animation.
+ background_view_->SetImage(image);
+}
+
+} // namespace athena
« no previous file with comments | « athena/screen/background_controller.h ('k') | athena/screen/public/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698