1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "athena/home/minimized_home.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/compositor/layer.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/compositor/layer_owner.h"
96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ui/gfx/canvas.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace {
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)const int kDragHandleWidth = 112;
146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)const int kDragHandleHeight = 2;
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char kMinimizedHomeLayerName[] = "MinimizedHome";
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass MinimizedHomePainter : public ui::LayerDelegate,
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                             public ui::LayerOwner {
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  explicit MinimizedHomePainter(ui::Layer* layer) {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    layer->set_name(kMinimizedHomeLayerName);
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    layer->set_delegate(this);
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SetLayer(layer);
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~MinimizedHomePainter() {}
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // ui::LayerDelegate:
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE {
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    gfx::Rect bounds(layer()->GetTargetBounds().size());
316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    canvas->FillRect(bounds, SK_ColorBLACK);
326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    canvas->FillRect(gfx::Rect((bounds.width() - kDragHandleWidth) / 2,
336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                               bounds.bottom() - kDragHandleHeight,
346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                               kDragHandleWidth,
356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                               kDragHandleHeight),
366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                     SK_ColorWHITE);
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnDelegatedFrameDamage(
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      const gfx::Rect& damage_rect_in_dip) OVERRIDE {
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE {
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  }
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual base::Closure PrepareForLayerBoundsChange() OVERRIDE {
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return base::Closure();
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DISALLOW_COPY_AND_ASSIGN(MinimizedHomePainter);
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace athena {
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<ui::LayerOwner> CreateMinimizedHome() {
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return scoped_ptr<ui::LayerOwner>(
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      new MinimizedHomePainter(new ui::Layer(ui::LAYER_TEXTURED)));
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace athena
63