• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "base/logging.h"
8 #include "third_party/skia/include/core/SkBitmap.h"
9 #include "ui/gfx/codec/png_codec.h"
10 #include "ui/gfx/size.h"
11 
12 namespace gfx {
13 
ImagePNGRep()14 ImagePNGRep::ImagePNGRep()
15     : raw_data(NULL),
16       scale(1.0) {
17 }
18 
ImagePNGRep(const scoped_refptr<base::RefCountedMemory> & data,float data_scale)19 ImagePNGRep::ImagePNGRep(const scoped_refptr<base::RefCountedMemory>& data,
20                          float data_scale)
21     : raw_data(data),
22       scale(data_scale) {
23 }
24 
~ImagePNGRep()25 ImagePNGRep::~ImagePNGRep() {
26 }
27 
Size() const28 gfx::Size ImagePNGRep::Size() const {
29   // The only way to get the width and height of a raw PNG stream, at least
30   // using the gfx::PNGCodec API, is to decode the whole thing.
31   CHECK(raw_data.get());
32   SkBitmap bitmap;
33   if (!gfx::PNGCodec::Decode(raw_data->front(), raw_data->size(),
34                              &bitmap)) {
35     LOG(ERROR) << "Unable to decode PNG.";
36     return gfx::Size(0, 0);
37   }
38   return gfx::Size(bitmap.width(), bitmap.height());
39 }
40 
41 }  // namespace gfx
42