| Index: ui/base/resource/resource_bundle.cc
|
| diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc
|
| index 417fd2bb11b35ac47b340ff38f7dc02904f2f6b6..205ee6dc22c47b63508142910713ee19a7d1668e 100644
|
| --- a/ui/base/resource/resource_bundle.cc
|
| +++ b/ui/base/resource/resource_bundle.cc
|
| @@ -17,6 +17,7 @@
|
| #include "base/synchronization/lock.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "build/build_config.h"
|
| +#include "skia/ext/image_operations.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/layout.h"
|
| @@ -27,6 +28,7 @@
|
| #include "ui/gfx/codec/png_codec.h"
|
| #include "ui/gfx/image/image_skia.h"
|
| #include "ui/gfx/screen.h"
|
| +#include "ui/gfx/skbitmap_operations.h"
|
|
|
| namespace ui {
|
|
|
| @@ -43,6 +45,40 @@ const int kMediumFontSizeDelta = 3;
|
| const int kLargeFontSizeDelta = 8;
|
| #endif
|
|
|
| +// If 2x resource is missing from |image| or is the incorrect size,
|
| +// logs the resource id and creates a 2x version of the resource.
|
| +// Blends the created resource with red to make it distinguishable from
|
| +// bitmaps in the resource pak.
|
| +void Create2xResourceIfMissing(gfx::ImageSkia image, int idr) {
|
| + CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| + if (command_line->HasSwitch(
|
| + switches::kHighlightMissing2xResources) &&
|
| + command_line->HasSwitch(switches::kLoad2xResources) &&
|
| + !image.HasBitmapForScale(2.0f)) {
|
| + float bitmap_scale;
|
| + SkBitmap bitmap = image.GetBitmapForScale(2.0f, &bitmap_scale);
|
| +
|
| + if (bitmap_scale == 1.0f)
|
| + LOG(INFO) << "Missing 2x resource with id " << idr;
|
| + else
|
| + LOG(INFO) << "Incorrectly sized 2x resource with id " << idr;
|
| +
|
| + SkBitmap bitmap2x = skia::ImageOperations::Resize(bitmap,
|
| + skia::ImageOperations::RESIZE_LANCZOS3,
|
| + image.width() * 2, image.height() * 2);
|
| +
|
| + SkBitmap mask;
|
| + mask.setConfig(SkBitmap::kARGB_8888_Config,
|
| + bitmap2x.width(),
|
| + bitmap2x.height());
|
| + mask.allocPixels();
|
| + mask.eraseColor(SK_ColorRED);
|
| + SkBitmap result = SkBitmapOperations::CreateBlendedBitmap(bitmap2x, mask,
|
| + 0.2);
|
| + image.AddBitmapForScale(result, 2.0f);
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| ResourceBundle* ResourceBundle::g_shared_instance_ = NULL;
|
| @@ -259,6 +295,8 @@ gfx::Image& ResourceBundle::GetImageNamed(int resource_id) {
|
| return GetEmptyImage();
|
| }
|
|
|
| + Create2xResourceIfMissing(image_skia, resource_id);
|
| +
|
| image = gfx::Image(image_skia);
|
| }
|
|
|
|
|