// 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/size.h" namespace gfx { ImagePNGRep::ImagePNGRep() : raw_data(NULL), scale(1.0) { } ImagePNGRep::ImagePNGRep(const scoped_refptr<base::RefCountedMemory>& data, float data_scale) : raw_data(data), scale(data_scale) { } 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