Home | History | Annotate | Download | only in home
      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 
     11 namespace {
     12 
     13 const int kDragHandleWidth = 112;
     14 const int kDragHandleHeight = 2;
     15 const char kMinimizedHomeLayerName[] = "MinimizedHome";
     16 
     17 class 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 
     55 namespace athena {
     56 
     57 scoped_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