| Index: trunk/src/ui/gfx/image/image.cc
|
| ===================================================================
|
| --- trunk/src/ui/gfx/image/image.cc (revision 278650)
|
| +++ trunk/src/ui/gfx/image/image.cc (working copy)
|
| @@ -5,7 +5,6 @@
|
| #include "ui/gfx/image/image.h"
|
|
|
| #include <algorithm>
|
| -#include <set>
|
|
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| @@ -13,7 +12,6 @@
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| #include "ui/gfx/image/image_png_rep.h"
|
| #include "ui/gfx/image/image_skia.h"
|
| -#include "ui/gfx/image/image_skia_source.h"
|
| #include "ui/gfx/size.h"
|
|
|
| #if !defined(OS_IOS)
|
| @@ -37,20 +35,20 @@
|
| UIImage* uiimage);
|
| // Caller takes ownership of the returned UIImage.
|
| UIImage* CreateUIImageFromPNG(
|
| - const std::vector<ImagePNGRep>& image_png_reps);
|
| + const std::vector<gfx::ImagePNGRep>& image_png_reps);
|
| gfx::Size UIImageSize(UIImage* image);
|
| #elif defined(OS_MACOSX)
|
| scoped_refptr<base::RefCountedMemory> Get1xPNGBytesFromNSImage(
|
| NSImage* nsimage);
|
| // Caller takes ownership of the returned NSImage.
|
| -NSImage* NSImageFromPNG(const std::vector<ImagePNGRep>& image_png_reps,
|
| +NSImage* NSImageFromPNG(const std::vector<gfx::ImagePNGRep>& image_png_reps,
|
| CGColorSpaceRef color_space);
|
| gfx::Size NSImageSize(NSImage* image);
|
| #endif // defined(OS_MACOSX)
|
|
|
| #if defined(OS_IOS)
|
| ImageSkia* ImageSkiaFromPNG(
|
| - const std::vector<ImagePNGRep>& image_png_reps);
|
| + const std::vector<gfx::ImagePNGRep>& image_png_reps);
|
| scoped_refptr<base::RefCountedMemory> Get1xPNGBytesFromImageSkia(
|
| const ImageSkia* skia);
|
| #else
|
| @@ -61,91 +59,31 @@
|
| bitmap.setConfig(SkBitmap::kARGB_8888_Config, 16, 16);
|
| bitmap.allocPixels();
|
| bitmap.eraseARGB(0xff, 0xff, 0, 0);
|
| - return new ImageSkia(ImageSkiaRep(bitmap, 1.0f));
|
| + return new gfx::ImageSkia(gfx::ImageSkiaRep(bitmap, 1.0f));
|
| }
|
|
|
| -class PNGImageSource : public ImageSkiaSource {
|
| - public:
|
| - PNGImageSource() {}
|
| - virtual ~PNGImageSource() {}
|
| -
|
| - virtual ImageSkiaRep GetImageForScale(float scale) OVERRIDE {
|
| - if (image_skia_reps_.empty())
|
| - return ImageSkiaRep();
|
| -
|
| - const ImageSkiaRep* rep = NULL;
|
| - // gfx::ImageSkia passes one of the resource scale factors. The source
|
| - // should return:
|
| - // 1) The ImageSkiaRep with the highest scale if all available
|
| - // scales are smaller than |scale|.
|
| - // 2) The ImageSkiaRep with the smallest one that is larger than |scale|.
|
| - for (ImageSkiaRepSet::const_iterator iter = image_skia_reps_.begin();
|
| - iter != image_skia_reps_.end(); ++iter) {
|
| - if ((*iter).scale() == scale)
|
| - return (*iter);
|
| - if (!rep || rep->scale() < (*iter).scale())
|
| - rep = &(*iter);
|
| - if (rep->scale() >= scale)
|
| - break;
|
| - }
|
| - return rep ? *rep : ImageSkiaRep();
|
| - }
|
| -
|
| - const gfx::Size size() const {
|
| - return size_;
|
| - }
|
| -
|
| - bool AddPNGData(const ImagePNGRep& png_rep) {
|
| - const gfx::ImageSkiaRep rep = ToImageSkiaRep(png_rep);
|
| - if (rep.is_null())
|
| - return false;
|
| - if (size_.IsEmpty())
|
| - size_ = gfx::Size(rep.GetWidth(), rep.GetHeight());
|
| - image_skia_reps_.insert(rep);
|
| - return true;
|
| - }
|
| -
|
| - static ImageSkiaRep ToImageSkiaRep(const ImagePNGRep& png_rep) {
|
| - scoped_refptr<base::RefCountedMemory> raw_data = png_rep.raw_data;
|
| - CHECK(raw_data.get());
|
| - SkBitmap bitmap;
|
| - if (!PNGCodec::Decode(raw_data->front(), raw_data->size(),
|
| - &bitmap)) {
|
| - LOG(ERROR) << "Unable to decode PNG for " << png_rep.scale << ".";
|
| - return ImageSkiaRep();
|
| - }
|
| - return ImageSkiaRep(bitmap, png_rep.scale);
|
| - }
|
| -
|
| - private:
|
| - struct Compare {
|
| - bool operator()(const ImageSkiaRep& rep1, const ImageSkiaRep& rep2) {
|
| - return rep1.scale() < rep2.scale();
|
| - }
|
| - };
|
| -
|
| - typedef std::set<ImageSkiaRep, Compare> ImageSkiaRepSet;
|
| - ImageSkiaRepSet image_skia_reps_;
|
| - gfx::Size size_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PNGImageSource);
|
| -};
|
| -
|
| ImageSkia* ImageSkiaFromPNG(
|
| - const std::vector<ImagePNGRep>& image_png_reps) {
|
| + const std::vector<gfx::ImagePNGRep>& image_png_reps) {
|
| if (image_png_reps.empty())
|
| return GetErrorImageSkia();
|
| - scoped_ptr<PNGImageSource> image_source(new PNGImageSource);
|
|
|
| + scoped_ptr<gfx::ImageSkia> image_skia(new ImageSkia());
|
| for (size_t i = 0; i < image_png_reps.size(); ++i) {
|
| - if (!image_source->AddPNGData(image_png_reps[i]))
|
| + scoped_refptr<base::RefCountedMemory> raw_data =
|
| + image_png_reps[i].raw_data;
|
| + CHECK(raw_data.get());
|
| + SkBitmap bitmap;
|
| + if (!gfx::PNGCodec::Decode(raw_data->front(), raw_data->size(),
|
| + &bitmap)) {
|
| + LOG(ERROR) << "Unable to decode PNG for "
|
| + << image_png_reps[i].scale
|
| + << ".";
|
| return GetErrorImageSkia();
|
| + }
|
| + image_skia->AddRepresentation(gfx::ImageSkiaRep(
|
| + bitmap, image_png_reps[i].scale));
|
| }
|
| - const gfx::Size& size = image_source->size();
|
| - DCHECK(!size.IsEmpty());
|
| - if (size.IsEmpty())
|
| - return GetErrorImageSkia();
|
| - return new ImageSkia(image_source.release(), size);
|
| + return image_skia.release();
|
| }
|
|
|
| scoped_refptr<base::RefCountedMemory> Get1xPNGBytesFromImageSkia(
|
| @@ -154,7 +92,7 @@
|
|
|
| scoped_refptr<base::RefCountedBytes> png_bytes(new base::RefCountedBytes());
|
| if (image_skia_rep.scale() != 1.0f ||
|
| - !PNGCodec::EncodeBGRASkBitmap(image_skia_rep.sk_bitmap(), false,
|
| + !gfx::PNGCodec::EncodeBGRASkBitmap(image_skia_rep.sk_bitmap(), false,
|
| &png_bytes->data())) {
|
| return NULL;
|
| }
|
| @@ -364,7 +302,7 @@
|
| // ImageReps. This way, the Image can be cheaply copied.
|
| class ImageStorage : public base::RefCounted<ImageStorage> {
|
| public:
|
| - ImageStorage(Image::RepresentationType default_type)
|
| + ImageStorage(gfx::Image::RepresentationType default_type)
|
| : default_representation_type_(default_type),
|
| #if defined(OS_MACOSX) && !defined(OS_IOS)
|
| default_representation_color_space_(
|
| @@ -373,10 +311,10 @@
|
| representations_deleter_(&representations_) {
|
| }
|
|
|
| - Image::RepresentationType default_representation_type() {
|
| + gfx::Image::RepresentationType default_representation_type() {
|
| return default_representation_type_;
|
| }
|
| - Image::RepresentationMap& representations() { return representations_; }
|
| + gfx::Image::RepresentationMap& representations() { return representations_; }
|
|
|
| #if defined(OS_MACOSX) && !defined(OS_IOS)
|
| void set_default_representation_color_space(CGColorSpaceRef color_space) {
|
| @@ -394,7 +332,7 @@
|
|
|
| // The type of image that was passed to the constructor. This key will always
|
| // exist in the |representations_| map.
|
| - Image::RepresentationType default_representation_type_;
|
| + gfx::Image::RepresentationType default_representation_type_;
|
|
|
| #if defined(OS_MACOSX) && !defined(OS_IOS)
|
| // The default representation's colorspace. This is used for converting to
|
| @@ -406,7 +344,7 @@
|
|
|
| // All the representations of an Image. Size will always be at least one, with
|
| // more for any converted representations.
|
| - Image::RepresentationMap representations_;
|
| + gfx::Image::RepresentationMap representations_;
|
|
|
| STLValueDeleter<Image::RepresentationMap> representations_deleter_;
|
|
|
| @@ -475,14 +413,14 @@
|
|
|
| // static
|
| Image Image::CreateFrom1xBitmap(const SkBitmap& bitmap) {
|
| - return Image(ImageSkia::CreateFrom1xBitmap(bitmap));
|
| + return gfx::Image(ImageSkia::CreateFrom1xBitmap(bitmap));
|
| }
|
|
|
| // static
|
| Image Image::CreateFrom1xPNGBytes(const unsigned char* input,
|
| size_t input_size) {
|
| if (input_size == 0u)
|
| - return Image();
|
| + return gfx::Image();
|
|
|
| scoped_refptr<base::RefCountedBytes> raw_data(new base::RefCountedBytes());
|
| raw_data->data().assign(input, input + input_size);
|
| @@ -493,11 +431,11 @@
|
| Image Image::CreateFrom1xPNGBytes(
|
| const scoped_refptr<base::RefCountedMemory>& input) {
|
| if (!input.get() || input->size() == 0u)
|
| - return Image();
|
| + return gfx::Image();
|
|
|
| - std::vector<ImagePNGRep> image_reps;
|
| + std::vector<gfx::ImagePNGRep> image_reps;
|
| image_reps.push_back(ImagePNGRep(input, 1.0f));
|
| - return Image(image_reps);
|
| + return gfx::Image(image_reps);
|
| }
|
|
|
| const SkBitmap* Image::ToSkBitmap() const {
|
| @@ -612,7 +550,7 @@
|
| internal::ImageRep* rep = GetRepresentation(kImageRepPNG, false);
|
|
|
| if (rep) {
|
| - const std::vector<ImagePNGRep>& image_png_reps =
|
| + const std::vector<gfx::ImagePNGRep>& image_png_reps =
|
| rep->AsImageRepPNG()->image_reps();
|
| for (size_t i = 0; i < image_png_reps.size(); ++i) {
|
| if (image_png_reps[i].scale == 1.0f)
|
| @@ -663,7 +601,7 @@
|
| // final type eg (converting from ImageRepSkia to ImageRepPNG to get an
|
| // ImageRepCocoa).
|
| std::vector<ImagePNGRep> image_png_reps;
|
| - image_png_reps.push_back(ImagePNGRep(png_bytes, 1.0f));
|
| + image_png_reps.push_back(gfx::ImagePNGRep(png_bytes, 1.0f));
|
| rep = new internal::ImageRepPNG(image_png_reps);
|
| AddRepresentation(rep);
|
| return png_bytes;
|
| @@ -745,7 +683,7 @@
|
| return GetRepresentation(DefaultRepresentationType(), true)->Size();
|
| }
|
|
|
| -void Image::SwapRepresentations(Image* other) {
|
| +void Image::SwapRepresentations(gfx::Image* other) {
|
| storage_.swap(other->storage_);
|
| }
|
|
|
|
|