1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "athena/home/minimized_home.h"
6
7#include "ui/compositor/layer.h"
8#include "ui/compositor/layer_owner.h"
9#include "ui/gfx/canvas.h"
10
11namespace {
12
13const int kDragHandleWidth = 112;
14const int kDragHandleHeight = 2;
15const char kMinimizedHomeLayerName[] = "MinimizedHome";
16
17class MinimizedHomePainter : public ui::LayerDelegate,
18                             public ui::LayerOwner {
19 public:
20  explicit MinimizedHomePainter(ui::Layer* layer) {
21    layer->set_name(kMinimizedHomeLayerName);
22    layer->set_delegate(this);
23    SetLayer(layer);
24  }
25  virtual ~MinimizedHomePainter() {}
26
27 private:
28  // ui::LayerDelegate:
29  virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE {
30    gfx::Rect bounds(layer()->GetTargetBounds().size());
31    canvas->FillRect(bounds, SK_ColorBLACK);
32    canvas->FillRect(gfx::Rect((bounds.width() - kDragHandleWidth) / 2,
33                               bounds.bottom() - kDragHandleHeight,
34                               kDragHandleWidth,
35                               kDragHandleHeight),
36                     SK_ColorWHITE);
37  }
38
39  virtual void OnDelegatedFrameDamage(
40      const gfx::Rect& damage_rect_in_dip) OVERRIDE {
41  }
42
43  virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE {
44  }
45
46  virtual base::Closure PrepareForLayerBoundsChange() OVERRIDE {
47    return base::Closure();
48  }
49
50  DISALLOW_COPY_AND_ASSIGN(MinimizedHomePainter);
51};
52
53}  // namespace
54
55namespace athena {
56
57scoped_ptr<ui::LayerOwner> CreateMinimizedHome() {
58  return scoped_ptr<ui::LayerOwner>(
59      new MinimizedHomePainter(new ui::Layer(ui::LAYER_TEXTURED)));
60}
61
62}  // namespace athena
63