image_png_rep.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ui/gfx/image/image_png_rep.h" 6 7#include "third_party/skia/include/core/SkBitmap.h" 8#include "ui/gfx/codec/png_codec.h" 9#include "ui/gfx/size.h" 10 11namespace gfx { 12 13ImagePNGRep::ImagePNGRep() 14 : raw_data(NULL), 15 scale_factor(ui::SCALE_FACTOR_NONE) { 16} 17 18ImagePNGRep::ImagePNGRep(const scoped_refptr<base::RefCountedMemory>& data, 19 ui::ScaleFactor data_scale_factor) 20 : raw_data(data), 21 scale_factor(data_scale_factor) { 22} 23 24ImagePNGRep::~ImagePNGRep() { 25} 26 27gfx::Size ImagePNGRep::Size() const { 28 // The only way to get the width and height of a raw PNG stream, at least 29 // using the gfx::PNGCodec API, is to decode the whole thing. 30 CHECK(raw_data.get()); 31 SkBitmap bitmap; 32 if (!gfx::PNGCodec::Decode(raw_data->front(), raw_data->size(), 33 &bitmap)) { 34 LOG(ERROR) << "Unable to decode PNG."; 35 return gfx::Size(0, 0); 36 } 37 return gfx::Size(bitmap.width(), bitmap.height()); 38} 39 40} // namespace gfx 41