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