summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authorbshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 13:46:07 +0000
committerbshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 13:46:07 +0000
commitff6c38d6dc90b0bafe92b24f5f4657ff535f813e (patch)
tree82b06afc5d7d7a109a611b9fbb1cf751ad73f824 /ash
parentf2a6af064c6be8ab69f2fed83d88b875a5c84a48 (diff)
downloadchromium_src-ff6c38d6dc90b0bafe92b24f5f4657ff535f813e.zip
chromium_src-ff6c38d6dc90b0bafe92b24f5f4657ff535f813e.tar.gz
chromium_src-ff6c38d6dc90b0bafe92b24f5f4657ff535f813e.tar.bz2
Add image layout parameter for wallpaper
+emmanuel's patch: add some new resources and paint background with specified layout. BUG=None TEST=None Review URL: https://chromiumcodereview.appspot.com/9808045 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128474 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r--ash/desktop_background/desktop_background_controller.cc7
-rw-r--r--ash/desktop_background/desktop_background_controller.h6
-rw-r--r--ash/desktop_background/desktop_background_resources.cc160
-rw-r--r--ash/desktop_background/desktop_background_resources.h8
-rw-r--r--ash/desktop_background/desktop_background_view.cc38
-rw-r--r--ash/desktop_background/desktop_background_view.h6
-rw-r--r--ash/shell.cc3
-rw-r--r--ash/shell_factory.h4
8 files changed, 211 insertions, 21 deletions
diff --git a/ash/desktop_background/desktop_background_controller.cc b/ash/desktop_background/desktop_background_controller.cc
index d8af460..ccf22f4 100644
--- a/ash/desktop_background/desktop_background_controller.cc
+++ b/ash/desktop_background/desktop_background_controller.cc
@@ -4,7 +4,6 @@
#include "ash/desktop_background/desktop_background_controller.h"
-#include "ash/desktop_background/desktop_background_resources.h"
#include "ash/desktop_background/desktop_background_view.h"
#include "ash/shell.h"
#include "ash/shell_factory.h"
@@ -38,16 +37,16 @@ void DesktopBackgroundController::OnDesktopBackgroundChanged() {
DCHECK(root_window_layout->background_widget()->widget_delegate());
static_cast<internal::DesktopBackgroundView*>(
root_window_layout->background_widget()->widget_delegate())->
- SetWallpaper(GetWallpaper(index));
+ SetWallpaper(GetWallpaper(index), GetWallpaperInfo(index).layout);
}
void DesktopBackgroundController::SetDesktopBackgroundImageMode(
- const SkBitmap& wallpaper) {
+ const SkBitmap& wallpaper, ImageLayout layout) {
internal::RootWindowLayoutManager* root_window_layout =
Shell::GetInstance()->root_window_layout();
root_window_layout->SetBackgroundLayer(NULL);
root_window_layout->SetBackgroundWidget(
- internal::CreateDesktopBackground(wallpaper));
+ internal::CreateDesktopBackground(wallpaper, layout));
desktop_background_mode_ = BACKGROUND_IMAGE;
}
diff --git a/ash/desktop_background/desktop_background_controller.h b/ash/desktop_background/desktop_background_controller.h
index 7ea56c3..f43cbbd 100644
--- a/ash/desktop_background/desktop_background_controller.h
+++ b/ash/desktop_background/desktop_background_controller.h
@@ -7,6 +7,7 @@
#pragma once
#include "ash/ash_export.h"
+#include "ash/desktop_background/desktop_background_resources.h"
#include "base/basictypes.h"
class SkBitmap;
@@ -42,8 +43,9 @@ class ASH_EXPORT DesktopBackgroundController {
void OnDesktopBackgroundChanged();
// Sets the desktop background to image mode and create a new background
- // widget with |wallpaper|.
- void SetDesktopBackgroundImageMode(const SkBitmap& wallpaper);
+ // widget with |wallpaper| and image |layout|.
+ void SetDesktopBackgroundImageMode(const SkBitmap& wallpaper,
+ ImageLayout layout);
// Sets the desktop background to solid color mode and create a solid color
// layout.
diff --git a/ash/desktop_background/desktop_background_resources.cc b/ash/desktop_background/desktop_background_resources.cc
index 3214b49..8d5c654 100644
--- a/ash/desktop_background/desktop_background_resources.cc
+++ b/ash/desktop_background/desktop_background_resources.cc
@@ -16,84 +16,98 @@ const ash::WallpaperInfo kDefaultWallpapers[] = {
{
IDR_AURA_WALLPAPERS_ROMAINGUY_0,
IDR_AURA_WALLPAPERS_ROMAINGUY_0_THUMB,
+ ash::CENTER_CROPPED,
"Romain Guy",
"http://www.curious-creature.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_0,
IDR_AURA_WALLPAPERS_WALLPAPER_0_THUMB,
+ ash::TILE,
"Test Gradient 0",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_1,
IDR_AURA_WALLPAPERS_WALLPAPER_1_THUMB,
+ ash::TILE,
"Test Gradient 1",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_2,
IDR_AURA_WALLPAPERS_WALLPAPER_2_THUMB,
+ ash::TILE,
"Test Gradient 2",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_3,
IDR_AURA_WALLPAPERS_WALLPAPER_3_THUMB,
+ ash::TILE,
"Test Gradient 3",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_4,
IDR_AURA_WALLPAPERS_WALLPAPER_4_THUMB,
+ ash::TILE,
"Test Gradient 4",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_5,
IDR_AURA_WALLPAPERS_WALLPAPER_5_THUMB,
+ ash::TILE,
"Test Gradient 5",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_6,
IDR_AURA_WALLPAPERS_WALLPAPER_6_THUMB,
+ ash::TILE,
"Test Gradient 6",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_7,
IDR_AURA_WALLPAPERS_WALLPAPER_7_THUMB,
+ ash::TILE,
"Test Gradient 7",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_8,
IDR_AURA_WALLPAPERS_WALLPAPER_8_THUMB,
+ ash::TILE,
"Test Gradient 8",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_9,
IDR_AURA_WALLPAPERS_WALLPAPER_9_THUMB,
+ ash::TILE,
"Test Gradient 9",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_10,
IDR_AURA_WALLPAPERS_WALLPAPER_10_THUMB,
+ ash::TILE,
"Test Gradient 10",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_11,
IDR_AURA_WALLPAPERS_WALLPAPER_11_THUMB,
+ ash::TILE,
"Test Gradient 11",
"http://www.chromium.org"
},
{
IDR_AURA_WALLPAPERS_WALLPAPER_12,
IDR_AURA_WALLPAPERS_WALLPAPER_12_THUMB,
+ ash::TILE,
"Test Gradient 12",
"http://www.chromium.org"
},
@@ -101,303 +115,449 @@ const ash::WallpaperInfo kDefaultWallpapers[] = {
{
IDR_AURA_WALLPAPERS_CHARLESDAVEY_0,
IDR_AURA_WALLPAPERS_CHARLESDAVEY_0_THUMB,
+ ash::CENTER_CROPPED,
"Charles Davey",
"http://500px.com/CharlesDavey"
},
{
IDR_AURA_WALLPAPERS_JOHANNESVANDONGE_0,
IDR_AURA_WALLPAPERS_JOHANNESVANDONGE_0_THUMB,
+ ash::CENTER_CROPPED,
"Johannes van Donge",
"http://www.diginature.nl"
},
{
IDR_AURA_WALLPAPERS_JOHANNESVANDONGE_1,
IDR_AURA_WALLPAPERS_JOHANNESVANDONGE_1_THUMB,
+ ash::CENTER_CROPPED,
"Johannes van Donge",
"http://www.diginature.nl"
},
{
IDR_AURA_WALLPAPERS_JOHANNESVANDONGE_2,
IDR_AURA_WALLPAPERS_JOHANNESVANDONGE_2_THUMB,
+ ash::CENTER_CROPPED,
"Johannes van Donge",
"http://www.diginature.nl"
},
{
IDR_AURA_WALLPAPERS_MARIOMORENO_0,
IDR_AURA_WALLPAPERS_MARIOMORENO_0_THUMB,
+ ash::CENTER_CROPPED,
"Mario Moreno",
"http://www.mariomorenophotography.com"
},
{
IDR_AURA_WALLPAPERS_MARIOMORENO_1,
IDR_AURA_WALLPAPERS_MARIOMORENO_1_THUMB,
+ ash::CENTER_CROPPED,
"Mario Moreno",
"http://www.mariomorenophotography.com"
},
{
IDR_AURA_WALLPAPERS_MARIOMORENO_2,
IDR_AURA_WALLPAPERS_MARIOMORENO_2_THUMB,
+ ash::CENTER_CROPPED,
"Mario Moreno",
"http://www.mariomorenophotography.com"
},
{
IDR_AURA_WALLPAPERS_MARIOMORENO_3,
IDR_AURA_WALLPAPERS_MARIOMORENO_3_THUMB,
+ ash::CENTER_CROPPED,
"Mario Moreno",
"http://www.mariomorenophotography.com"
},
{
IDR_AURA_WALLPAPERS_MARIOMORENO_4,
IDR_AURA_WALLPAPERS_MARIOMORENO_4_THUMB,
+ ash::CENTER_CROPPED,
"Mario Moreno",
"http://www.mariomorenophotography.com"
},
{
IDR_AURA_WALLPAPERS_MARIOMORENO_5,
IDR_AURA_WALLPAPERS_MARIOMORENO_5_THUMB,
+ ash::CENTER_CROPPED,
"Mario Moreno",
"http://www.mariomorenophotography.com"
},
{
IDR_AURA_WALLPAPERS_MARIOMORENO_6,
IDR_AURA_WALLPAPERS_MARIOMORENO_6_THUMB,
+ ash::CENTER_CROPPED,
"Mario Moreno",
"http://www.mariomorenophotography.com"
},
{
IDR_AURA_WALLPAPERS_MARIOMORENO_7,
IDR_AURA_WALLPAPERS_MARIOMORENO_7_THUMB,
+ ash::CENTER_CROPPED,
"Mario Moreno",
"http://www.mariomorenophotography.com"
},
{
IDR_AURA_WALLPAPERS_MARIOMORENO_8,
IDR_AURA_WALLPAPERS_MARIOMORENO_8_THUMB,
+ ash::CENTER_CROPPED,
"Mario Moreno",
"http://www.mariomorenophotography.com"
},
{
IDR_AURA_WALLPAPERS_MARKBRIDGER_0,
IDR_AURA_WALLPAPERS_MARKBRIDGER_0_THUMB,
+ ash::CENTER_CROPPED,
"Mark Bridger",
"http://www.bridgephotography.co.uk"
},
{
IDR_AURA_WALLPAPERS_MARKBRIDGER_1,
IDR_AURA_WALLPAPERS_MARKBRIDGER_1_THUMB,
+ ash::CENTER_CROPPED,
"Mark Bridger",
"http://www.bridgephotography.co.uk"
},
{
IDR_AURA_WALLPAPERS_MARKBRIDGER_2,
IDR_AURA_WALLPAPERS_MARKBRIDGER_2_THUMB,
+ ash::CENTER_CROPPED,
"Mark Bridger",
"http://www.bridgephotography.co.uk"
},
{
IDR_AURA_WALLPAPERS_MARKBRIDGER_3,
IDR_AURA_WALLPAPERS_MARKBRIDGER_3_THUMB,
+ ash::CENTER_CROPPED,
"Mark Bridger",
"http://www.bridgephotography.co.uk"
},
{
IDR_AURA_WALLPAPERS_MARKBRIDGER_4,
IDR_AURA_WALLPAPERS_MARKBRIDGER_4_THUMB,
+ ash::CENTER_CROPPED,
"Mark Bridger",
"http://www.bridgephotography.co.uk"
},
{
IDR_AURA_WALLPAPERS_MARKBRIDGER_5,
IDR_AURA_WALLPAPERS_MARKBRIDGER_5_THUMB,
+ ash::CENTER_CROPPED,
"Mark Bridger",
"http://www.bridgephotography.co.uk"
},
{
IDR_AURA_WALLPAPERS_MARKBRIDGER_6,
IDR_AURA_WALLPAPERS_MARKBRIDGER_6_THUMB,
+ ash::CENTER_CROPPED,
"Mark Bridger",
"http://www.bridgephotography.co.uk"
},
{
IDR_AURA_WALLPAPERS_MICHELBRICTEUX_0,
IDR_AURA_WALLPAPERS_MICHELBRICTEUX_0_THUMB,
+ ash::CENTER_CROPPED,
"Michel Bricteux",
"http://500px.com/mbricteux"
},
{
IDR_AURA_WALLPAPERS_MICHELBRICTEUX_1,
IDR_AURA_WALLPAPERS_MICHELBRICTEUX_1_THUMB,
+ ash::CENTER_CROPPED,
"Michel Bricteux",
"http://500px.com/mbricteux"
},
{
IDR_AURA_WALLPAPERS_MICHELBRICTEUX_2,
IDR_AURA_WALLPAPERS_MICHELBRICTEUX_2_THUMB,
+ ash::CENTER_CROPPED,
"Michel Bricteux",
"http://500px.com/mbricteux"
},
{
IDR_AURA_WALLPAPERS_MICHELBRICTEUX_3,
IDR_AURA_WALLPAPERS_MICHELBRICTEUX_3_THUMB,
+ ash::CENTER_CROPPED,
"Michel Bricteux",
"http://500px.com/mbricteux"
},
{
IDR_AURA_WALLPAPERS_MIKEREYFMAN_0,
IDR_AURA_WALLPAPERS_MIKEREYFMAN_0_THUMB,
+ ash::CENTER_CROPPED,
"Mike Reyfman",
"http://mikereyfman.com"
},
{
IDR_AURA_WALLPAPERS_MIKEREYFMAN_1,
IDR_AURA_WALLPAPERS_MIKEREYFMAN_1_THUMB,
+ ash::CENTER_CROPPED,
"Mike Reyfman",
"http://mikereyfman.com"
},
{
IDR_AURA_WALLPAPERS_MIKEREYFMAN_2,
IDR_AURA_WALLPAPERS_MIKEREYFMAN_2_THUMB,
+ ash::CENTER_CROPPED,
"Mike Reyfman",
"http://mikereyfman.com"
},
{
IDR_AURA_WALLPAPERS_MIKEREYFMAN_3,
IDR_AURA_WALLPAPERS_MIKEREYFMAN_3_THUMB,
+ ash::CENTER_CROPPED,
"Mike Reyfman",
"http://mikereyfman.com"
},
{
IDR_AURA_WALLPAPERS_MIKEREYFMAN_4,
IDR_AURA_WALLPAPERS_MIKEREYFMAN_4_THUMB,
+ ash::CENTER_CROPPED,
"Mike Reyfman",
"http://mikereyfman.com"
},
{
IDR_AURA_WALLPAPERS_MIKEREYFMAN_5,
IDR_AURA_WALLPAPERS_MIKEREYFMAN_5_THUMB,
+ ash::CENTER_CROPPED,
"Mike Reyfman",
"http://mikereyfman.com"
},
{
IDR_AURA_WALLPAPERS_MIKEREYFMAN_6,
IDR_AURA_WALLPAPERS_MIKEREYFMAN_6_THUMB,
+ ash::CENTER_CROPPED,
"Mike Reyfman",
"http://mikereyfman.com"
},
{
IDR_AURA_WALLPAPERS_NEILKREMER_0,
IDR_AURA_WALLPAPERS_NEILKREMER_0_THUMB,
+ ash::CENTER_CROPPED,
"Neil Kremer",
"http://lightshedimagery.smugmug.com"
},
{
IDR_AURA_WALLPAPERS_NEILKREMER_1,
IDR_AURA_WALLPAPERS_NEILKREMER_1_THUMB,
+ ash::CENTER_CROPPED,
"Neil Kremer",
"http://lightshedimagery.smugmug.com"
},
{
IDR_AURA_WALLPAPERS_NEILKREMER_2,
IDR_AURA_WALLPAPERS_NEILKREMER_2_THUMB,
+ ash::CENTER_CROPPED,
"Neil Kremer",
"http://lightshedimagery.smugmug.com"
},
{
IDR_AURA_WALLPAPERS_OLEGZHUKOV_0,
IDR_AURA_WALLPAPERS_OLEGZHUKOV_0_THUMB,
+ ash::CENTER_CROPPED,
"Oleg Zhukov",
"http://500px.com/eosboy"
},
{
IDR_AURA_WALLPAPERS_OLEGZHUKOV_1,
IDR_AURA_WALLPAPERS_OLEGZHUKOV_1_THUMB,
+ ash::CENTER_CROPPED,
"Oleg Zhukov",
"http://500px.com/eosboy"
},
{
IDR_AURA_WALLPAPERS_PAULOFLOP_0,
IDR_AURA_WALLPAPERS_PAULOFLOP_0_THUMB,
+ ash::CENTER_CROPPED,
"Paulo FLOP",
"http://500px.com/FLOP"
},
{
IDR_AURA_WALLPAPERS_PAULOFLOP_1,
IDR_AURA_WALLPAPERS_PAULOFLOP_1_THUMB,
+ ash::CENTER_CROPPED,
"Paulo FLOP",
"http://500px.com/FLOP"
},
{
IDR_AURA_WALLPAPERS_PAULOFLOP_2,
IDR_AURA_WALLPAPERS_PAULOFLOP_2_THUMB,
+ ash::CENTER_CROPPED,
"Paulo FLOP",
"http://500px.com/FLOP"
},
{
IDR_AURA_WALLPAPERS_PAULOFLOP_3,
IDR_AURA_WALLPAPERS_PAULOFLOP_3_THUMB,
+ ash::CENTER_CROPPED,
"Paulo FLOP",
"http://500px.com/FLOP"
},
{
IDR_AURA_WALLPAPERS_PAULOFLOP_4,
IDR_AURA_WALLPAPERS_PAULOFLOP_4_THUMB,
+ ash::CENTER_CROPPED,
"Paulo FLOP",
"http://500px.com/FLOP"
},
{
IDR_AURA_WALLPAPERS_PAULOFLOP_5,
IDR_AURA_WALLPAPERS_PAULOFLOP_5_THUMB,
+ ash::CENTER_CROPPED,
"Paulo FLOP",
"http://500px.com/FLOP"
},
{
IDR_AURA_WALLPAPERS_STEFANORONCHI_0,
IDR_AURA_WALLPAPERS_STEFANORONCHI_0_THUMB,
+ ash::CENTER_CROPPED,
"Stefano Ronchi",
"http://www.stefanoronchi.com"
},
{
IDR_AURA_WALLPAPERS_STEFANORONCHI_1,
IDR_AURA_WALLPAPERS_STEFANORONCHI_1_THUMB,
+ ash::CENTER_CROPPED,
"Stefano Ronchi",
"http://www.stefanoronchi.com"
},
{
IDR_AURA_WALLPAPERS_STEFANORONCHI_2,
IDR_AURA_WALLPAPERS_STEFANORONCHI_2_THUMB,
+ ash::CENTER_CROPPED,
"Stefano Ronchi",
"http://www.stefanoronchi.com"
},
{
IDR_AURA_WALLPAPERS_STEFANORONCHI_3,
IDR_AURA_WALLPAPERS_STEFANORONCHI_3_THUMB,
+ ash::CENTER_CROPPED,
"Stefano Ronchi",
"http://www.stefanoronchi.com"
},
{
IDR_AURA_WALLPAPERS_VITALIPROKOPENKO_0,
IDR_AURA_WALLPAPERS_VITALIPROKOPENKO_0_THUMB,
+ ash::CENTER_CROPPED,
"Vitali Prokopenko",
"http://www.vitphoto.com"
},
{
IDR_AURA_WALLPAPERS_VITALIPROKOPENKO_1,
IDR_AURA_WALLPAPERS_VITALIPROKOPENKO_1_THUMB,
+ ash::CENTER_CROPPED,
"Vitali Prokopenko",
"http://www.vitphoto.com"
},
{
IDR_AURA_WALLPAPERS_VITALIPROKOPENKO_2,
IDR_AURA_WALLPAPERS_VITALIPROKOPENKO_2_THUMB,
+ ash::CENTER_CROPPED,
"Vitali Prokopenko",
"http://www.vitphoto.com"
},
{
IDR_AURA_WALLPAPERS_WALTERSOESTBERGEN_0,
IDR_AURA_WALLPAPERS_WALTERSOESTBERGEN_0_THUMB,
+ ash::CENTER_CROPPED,
"Walter Soestbergen",
"http://www.waltersoestbergen.nl"
},
+ {
+ IDR_AURA_WALLPAPERS_BEACH_DAY,
+ IDR_AURA_WALLPAPERS_BEACH_DAY_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_BEACH_NIGHT,
+ IDR_AURA_WALLPAPERS_BEACH_NIGHT_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_FOREST_DAY,
+ IDR_AURA_WALLPAPERS_FOREST_DAY_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_FOREST_NIGHT,
+ IDR_AURA_WALLPAPERS_FOREST_NIGHT_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_MOUNTAIN_DAY,
+ IDR_AURA_WALLPAPERS_MOUNTAIN_DAY_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_MOUNTAIN_NIGHT,
+ IDR_AURA_WALLPAPERS_MOUNTAIN_NIGHT_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_NYC_DAY,
+ IDR_AURA_WALLPAPERS_NYC_DAY_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_NYC_NIGHT,
+ IDR_AURA_WALLPAPERS_NYC_NIGHT_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_PLAINS_DAY,
+ IDR_AURA_WALLPAPERS_PLAINS_DAY_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_PLAINS_NIGHT,
+ IDR_AURA_WALLPAPERS_PLAINS_NIGHT_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_SF_DAY,
+ IDR_AURA_WALLPAPERS_SF_DAY_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
+ {
+ IDR_AURA_WALLPAPERS_SF_NIGHT,
+ IDR_AURA_WALLPAPERS_SF_NIGHT_THUMB,
+ // TODO(saintlou): change to ash::CENTER once final assets are added.
+ ash::STRETCH,
+ "Test",
+ "http://www.chromium.org",
+ },
#endif // GOOGLE_CHROME_BUILD
};
diff --git a/ash/desktop_background/desktop_background_resources.h b/ash/desktop_background/desktop_background_resources.h
index cbea990..8170b54 100644
--- a/ash/desktop_background/desktop_background_resources.h
+++ b/ash/desktop_background/desktop_background_resources.h
@@ -11,9 +11,17 @@ class SkBitmap;
namespace ash {
+enum ImageLayout {
+ CENTER,
+ CENTER_CROPPED,
+ STRETCH,
+ TILE,
+};
+
struct ASH_EXPORT WallpaperInfo {
int id;
int thumb_id;
+ ImageLayout layout;
// TODO(bshe): author member should be encoded to UTF16. We need to use i18n
// string for this member after M19.
const char* author;
diff --git a/ash/desktop_background/desktop_background_view.cc b/ash/desktop_background/desktop_background_view.cc
index f00ce1a..797d048 100644
--- a/ash/desktop_background/desktop_background_view.cc
+++ b/ash/desktop_background/desktop_background_view.cc
@@ -28,15 +28,19 @@ static int RoundPositive(double x) {
////////////////////////////////////////////////////////////////////////////////
// DesktopBackgroundView, public:
-DesktopBackgroundView::DesktopBackgroundView(const SkBitmap& wallpaper) {
+DesktopBackgroundView::DesktopBackgroundView(const SkBitmap& wallpaper,
+ ImageLayout layout) {
wallpaper_ = wallpaper;
+ image_layout_ = layout;
wallpaper_.buildMipMap(false);
}
DesktopBackgroundView::~DesktopBackgroundView() {
}
-void DesktopBackgroundView::SetWallpaper(const SkBitmap& wallpaper) {
+void DesktopBackgroundView::SetWallpaper(const SkBitmap& wallpaper,
+ ImageLayout layout) {
+ image_layout_ = layout;
wallpaper_ = wallpaper;
wallpaper_.buildMipMap(false);
SchedulePaint();
@@ -52,7 +56,8 @@ void DesktopBackgroundView::OnPaint(gfx::Canvas* canvas) {
// streching to avoid upsampling artifacts (Note that we could tile too, but
// decided not to do this at the moment).
gfx::Rect wallpaper_rect(0, 0, wallpaper_.width(), wallpaper_.height());
- if (wallpaper_.width() > width() && wallpaper_.height() > height()) {
+ if (image_layout_ == ash::CENTER_CROPPED && wallpaper_.width() > width()
+ && wallpaper_.height() > height()) {
// The dimension with the smallest ratio must be cropped, the other one
// is preserved. Both are set in gfx::Size cropped_size.
double horizontal_ratio = static_cast<double>(width()) /
@@ -72,13 +77,23 @@ void DesktopBackgroundView::OnPaint(gfx::Canvas* canvas) {
gfx::Rect wallpaper_cropped_rect = wallpaper_rect.Center(cropped_size);
canvas->DrawBitmapInt(wallpaper_,
- wallpaper_cropped_rect.x(), wallpaper_cropped_rect.y(),
- wallpaper_cropped_rect.width(), wallpaper_cropped_rect.height(),
- 0, 0, width(), height(),
- true);
- } else {
- // Tiling.
+ wallpaper_cropped_rect.x(), wallpaper_cropped_rect.y(),
+ wallpaper_cropped_rect.width(), wallpaper_cropped_rect.height(),
+ 0, 0, width(), height(),
+ true);
+ } else if (image_layout_ == ash::TILE) {
canvas->TileImageInt(wallpaper_, 0, 0, width(), height());
+ } else if (image_layout_ == ash::STRETCH){
+ // This is generally not recommended as it may show artifacts.
+ gfx::Rect centered_rect = wallpaper_rect.Center(
+ gfx::Size(width(), height()));
+ canvas->DrawBitmapInt(wallpaper_, centered_rect.x(), centered_rect.y(),
+ centered_rect.width(), centered_rect.height(), 0, 0, width(), height(),
+ true);
+ } else {
+ // All other are simply centered, and not scaled (but may be clipped).
+ canvas->DrawBitmapInt(wallpaper_, (width() - wallpaper_.width()) / 2,
+ (height() - wallpaper_.height()) / 2);
}
}
@@ -91,11 +106,12 @@ void DesktopBackgroundView::OnMouseReleased(const views::MouseEvent& event) {
Shell::GetInstance()->ShowBackgroundMenu(GetWidget(), event.location());
}
-views::Widget* CreateDesktopBackground(const SkBitmap& wallpaper) {
+views::Widget* CreateDesktopBackground(const SkBitmap& wallpaper,
+ ImageLayout layout) {
views::Widget* desktop_widget = new views::Widget;
views::Widget::InitParams params(
views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
- DesktopBackgroundView* view = new DesktopBackgroundView(wallpaper);
+ DesktopBackgroundView* view = new DesktopBackgroundView(wallpaper, layout);
params.delegate = view;
params.parent =
Shell::GetInstance()->GetContainer(
diff --git a/ash/desktop_background/desktop_background_view.h b/ash/desktop_background/desktop_background_view.h
index f1f7652..4e5560c 100644
--- a/ash/desktop_background/desktop_background_view.h
+++ b/ash/desktop_background/desktop_background_view.h
@@ -6,6 +6,7 @@
#define ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_VIEW_H_
#pragma once
+#include "ash/desktop_background/desktop_background_resources.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/views/view.h"
#include "ui/views/widget/widget_delegate.h"
@@ -15,13 +16,13 @@ namespace internal {
class DesktopBackgroundView : public views::WidgetDelegateView {
public:
- DesktopBackgroundView(const SkBitmap& wallpaper);
+ DesktopBackgroundView(const SkBitmap& wallpaper, ImageLayout layout);
virtual ~DesktopBackgroundView();
// TODO(bshe): Remove this function once issue 117244 is fixed. It is
// currently used in DesktopBackgroundController::
// OnDesktopBackgroundChanged.
- void SetWallpaper(const SkBitmap& wallpaper);
+ void SetWallpaper(const SkBitmap& wallpaper, ImageLayout layout);
private:
// Overridden from views::View:
@@ -30,6 +31,7 @@ class DesktopBackgroundView : public views::WidgetDelegateView {
virtual void OnMouseReleased(const views::MouseEvent& event) OVERRIDE;
SkBitmap wallpaper_;
+ ImageLayout image_layout_;
DISALLOW_COPY_AND_ASSIGN(DesktopBackgroundView);
};
diff --git a/ash/shell.cc b/ash/shell.cc
index 79ca48c..eab203c 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -864,8 +864,9 @@ void Shell::InitLayoutManagers() {
// Create desktop background widget.
// TODO(bshe): We should be able to use OnDesktopBackgroundChanged function
// here after issue 117244 got fixed.
+ int index = user_wallpaper_delegate_->GetUserWallpaperIndex();
desktop_background_controller_->SetDesktopBackgroundImageMode(
- GetWallpaper(user_wallpaper_delegate_->GetUserWallpaperIndex()));
+ GetWallpaper(index), GetWallpaperInfo(index).layout);
}
void Shell::DisableWorkspaceGridLayout() {
diff --git a/ash/shell_factory.h b/ash/shell_factory.h
index b90889b..1e57953 100644
--- a/ash/shell_factory.h
+++ b/ash/shell_factory.h
@@ -7,6 +7,7 @@
#pragma once
#include "ash/ash_export.h"
+#include "ash/desktop_background/desktop_background_resources.h"
class SkBitmap;
@@ -20,7 +21,8 @@ class Widget;
namespace ash {
namespace internal {
-views::Widget* CreateDesktopBackground(const SkBitmap& wallpaper);
+views::Widget* CreateDesktopBackground(const SkBitmap& wallpaper,
+ ImageLayout layout);
ASH_EXPORT views::Widget* CreateStatusArea(views::View* contents);
} // namespace internal