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