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 13namespace gfx { 14 15// An ImageSkiaRep represents a bitmap and the scale factor it is intended for. 16class 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