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 #ifndef UI_GFX_IMAGE_IMAGE_SKIA_REP_H_ 6 #define UI_GFX_IMAGE_IMAGE_SKIA_REP_H_ 7 8 #include "third_party/skia/include/core/SkBitmap.h" 9 #include "ui/base/layout.h" 10 #include "ui/base/ui_export.h" 11 #include "ui/gfx/size.h" 12 13 namespace gfx { 14 15 // An ImageSkiaRep represents a bitmap and the scale factor it is intended for. 16 class UI_EXPORT ImageSkiaRep { 17 public: 18 // Create null bitmap. 19 ImageSkiaRep(); 20 ~ImageSkiaRep(); 21 22 // Creates a bitmap with kARGB_8888_Config config with given |size| in DIP. 23 // This allocates pixels in the bitmap. 24 ImageSkiaRep(const gfx::Size& size, ui::ScaleFactor scale_factor); 25 26 // Creates a bitmap with given scale factor. 27 // Adds ref to |src|. 28 ImageSkiaRep(const SkBitmap& src, ui::ScaleFactor scale_factor); 29 30 // Returns true if the backing bitmap is null. 31 bool is_null() const { return bitmap_.isNull(); } 32 33 // Get width and height of bitmap in DIP. 34 int GetWidth() const; 35 int GetHeight() const; 36 37 // Get width and height of bitmap in pixels. 38 int pixel_width() const { return bitmap_.width(); } 39 int pixel_height() const { return bitmap_.height(); } 40 Size pixel_size() const { 41 return Size(pixel_width(), pixel_height()); 42 } 43 44 // Retrieves the scale that the bitmap will be painted at. 45 float GetScale() const; 46 ui::ScaleFactor scale_factor() const { return scale_factor_; } 47 48 // Returns backing bitmap. 49 const SkBitmap& sk_bitmap() const { return bitmap_; } 50 51 private: 52 friend class ImageSkia; 53 SkBitmap& mutable_sk_bitmap() { return bitmap_; } 54 55 SkBitmap bitmap_; 56 ui::ScaleFactor scale_factor_; 57 }; 58 59 } // namespace gfx 60 61 #endif // UI_GFX_IMAGE_IMAGE_SKIA_REP_H_ 62