• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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 "ash/accelerators/accelerator_commands.h"
6 
7 #include "ash/desktop_background/desktop_background_controller.h"
8 #include "ash/desktop_background/user_wallpaper_delegate.h"
9 #include "ash/shell.h"
10 #include "third_party/skia/include/core/SkColor.h"
11 #include "third_party/skia/include/core/SkPaint.h"
12 #include "ui/gfx/canvas.h"
13 #include "ui/gfx/image/image_skia.h"
14 
15 namespace ash {
16 namespace debug {
17 namespace {
18 
CreateWallpaperImage(SkColor fill,SkColor rect)19 gfx::ImageSkia CreateWallpaperImage(SkColor fill, SkColor rect) {
20   // TODO(oshima): Consider adding a command line option to control
21   // wallpaper images for testing.
22   // The size is randomly picked.
23   gfx::Size image_size(1366, 768);
24   gfx::Canvas canvas(image_size, 1.0f, true);
25   canvas.DrawColor(fill);
26   SkPaint paint;
27   paint.setColor(rect);
28   paint.setStrokeWidth(10);
29   paint.setStyle(SkPaint::kStroke_Style);
30   paint.setXfermodeMode(SkXfermode::kSrcOver_Mode);
31   canvas.DrawRoundRect(gfx::Rect(image_size), 100, paint);
32   return gfx::ImageSkia(canvas.ExtractImageRep());
33 }
34 
35 }  // namespace
36 
CycleDesktopBackgroundMode()37 bool CycleDesktopBackgroundMode() {
38   static int index = 0;
39   DesktopBackgroundController* desktop_background_controller =
40       Shell::GetInstance()->desktop_background_controller();
41   switch (++index % 4) {
42     case 0:
43       ash::Shell::GetInstance()->user_wallpaper_delegate()->
44           InitializeWallpaper();
45       break;
46     case 1:
47       desktop_background_controller->SetWallpaperImage(
48           CreateWallpaperImage(SK_ColorRED, SK_ColorBLUE),
49           WALLPAPER_LAYOUT_STRETCH);
50       break;
51     case 2:
52       desktop_background_controller->SetWallpaperImage(
53           CreateWallpaperImage(SK_ColorBLUE, SK_ColorGREEN),
54           WALLPAPER_LAYOUT_CENTER);
55       break;
56     case 3:
57       desktop_background_controller->SetWallpaperImage(
58           CreateWallpaperImage(SK_ColorGREEN, SK_ColorRED),
59           WALLPAPER_LAYOUT_CENTER_CROPPED);
60       break;
61   }
62   return true;
63 }
64 
65 }  // namespace debug
66 }  // namespace ash
67