blob: 4115baf19826b77321fbf683e8341cf5f4e18577 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/gfx/image/image_png_rep.h"
#include "base/logging.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/codec/png_codec.h"
#include "ui/gfx/geometry/size.h"
namespace gfx {
ImagePNGRep::ImagePNGRep() = default;
ImagePNGRep::ImagePNGRep(const scoped_refptr<base::RefCountedMemory>& data,
float data_scale)
: raw_data(data),
scale(data_scale) {
}
ImagePNGRep::ImagePNGRep(const ImagePNGRep& other) = default;
ImagePNGRep::~ImagePNGRep() {
}
gfx::Size ImagePNGRep::Size() const {
// The only way to get the width and height of a raw PNG stream, at least
// using the gfx::PNGCodec API, is to decode the whole thing.
CHECK(raw_data.get());
SkBitmap bitmap;
if (!gfx::PNGCodec::Decode(raw_data->front(), raw_data->size(),
&bitmap)) {
LOG(ERROR) << "Unable to decode PNG.";
return gfx::Size(0, 0);
}
return gfx::Size(bitmap.width(), bitmap.height());
}
} // namespace gfx