15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_GFX_IMAGE_IMAGE_SKIA_REP_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_GFX_IMAGE_IMAGE_SKIA_REP_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h" 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/gfx/gfx_export.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/size.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// An ImageSkiaRep represents a bitmap and the scale factor it is intended for. 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// 0.0f scale is used to indicate that this ImageSkiaRep is used for unscaled 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// image (the image that only returns 1.0f scale image). 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class GFX_EXPORT ImageSkiaRep { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create null bitmap. 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ImageSkiaRep(); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~ImageSkiaRep(); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Note: This is for testing purpose only. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a bitmap with kARGB_8888_Config config with given |size| in DIP. 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // This allocates pixels in the bitmap. It is guaranteed that the data in the 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // bitmap are initialized but the actual values are undefined. 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Specifying 0 scale means the image is for unscaled image. (unscaled() 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // returns truen, and scale() returns 1.0f;) 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ImageSkiaRep(const gfx::Size& size, float scale); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Creates a bitmap with given scale. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adds ref to |src|. 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ImageSkiaRep(const SkBitmap& src, float scale); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the backing bitmap is null. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_null() const { return bitmap_.isNull(); } 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Get width and height of bitmap in DIP. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int GetWidth() const; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int GetHeight() const; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Get width and height of bitmap in pixels. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int pixel_width() const { return bitmap_.width(); } 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int pixel_height() const { return bitmap_.height(); } 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Size pixel_size() const { 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return Size(pixel_width(), pixel_height()); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Retrieves the scale that the bitmap will be painted at. 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) float scale() const { return unscaled() ? 1.0f : scale_; } 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool unscaled() const { return scale_ == 0.0f; } 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Mark the image to be used as scaled image. 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void SetScaled(); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns backing bitmap. 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const SkBitmap& sk_bitmap() const { return bitmap_; } 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class ImageSkia; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkBitmap& mutable_sk_bitmap() { return bitmap_; } 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkBitmap bitmap_; 65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 6668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) float scale_; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gfx 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // UI_GFX_IMAGE_IMAGE_SKIA_REP_H_ 72