1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2019 Google LLC 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef GrImageInfo_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define GrImageInfo_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkSize.h" 13*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/gpu/ganesh/GrTypesPriv.h" 14*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrColorInfo.h" 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker #include <cstddef> 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard Worker class SkColorSpace; 19*c8dee2aaSAndroid Build Coastguard Worker enum SkAlphaType : int; 20*c8dee2aaSAndroid Build Coastguard Worker struct SkImageInfo; 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Worker class GrImageInfo { 23*c8dee2aaSAndroid Build Coastguard Worker public: 24*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo(); 25*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo(const SkImageInfo& info); 26*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo(GrColorType ct, SkAlphaType at, sk_sp<SkColorSpace> cs, int w, int h); 27*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo(GrColorType ct, SkAlphaType at, sk_sp<SkColorSpace> cs, const SkISize& dimensions); 28*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo(const GrColorInfo& info, const SkISize& dimensions); 29*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo(GrColorInfo&& info, const SkISize& dimensions); 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo(const GrImageInfo&); 32*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo(GrImageInfo&&); 33*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo& operator=(const GrImageInfo&); 34*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo& operator=(GrImageInfo&&); 35*c8dee2aaSAndroid Build Coastguard Worker 36*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo makeColorType(GrColorType ct) const; 37*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo makeAlphaType(SkAlphaType at) const; 38*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo makeColorSpace(sk_sp<SkColorSpace> cs) const; 39*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo makeDimensions(SkISize dimensions) const ; 40*c8dee2aaSAndroid Build Coastguard Worker GrImageInfo makeWH(int width, int height) const; 41*c8dee2aaSAndroid Build Coastguard Worker colorInfo()42*c8dee2aaSAndroid Build Coastguard Worker const GrColorInfo& colorInfo() const { return fColorInfo; } 43*c8dee2aaSAndroid Build Coastguard Worker colorType()44*c8dee2aaSAndroid Build Coastguard Worker GrColorType colorType() const { return fColorInfo.colorType(); } 45*c8dee2aaSAndroid Build Coastguard Worker alphaType()46*c8dee2aaSAndroid Build Coastguard Worker SkAlphaType alphaType() const { return fColorInfo.alphaType(); } 47*c8dee2aaSAndroid Build Coastguard Worker colorSpace()48*c8dee2aaSAndroid Build Coastguard Worker SkColorSpace* colorSpace() const { return fColorInfo.colorSpace(); } 49*c8dee2aaSAndroid Build Coastguard Worker 50*c8dee2aaSAndroid Build Coastguard Worker sk_sp<SkColorSpace> refColorSpace() const; 51*c8dee2aaSAndroid Build Coastguard Worker dimensions()52*c8dee2aaSAndroid Build Coastguard Worker SkISize dimensions() const { return fDimensions; } 53*c8dee2aaSAndroid Build Coastguard Worker width()54*c8dee2aaSAndroid Build Coastguard Worker int width() const { return fDimensions.width(); } 55*c8dee2aaSAndroid Build Coastguard Worker height()56*c8dee2aaSAndroid Build Coastguard Worker int height() const { return fDimensions.height(); } 57*c8dee2aaSAndroid Build Coastguard Worker bpp()58*c8dee2aaSAndroid Build Coastguard Worker size_t bpp() const { return GrColorTypeBytesPerPixel(this->colorType()); } 59*c8dee2aaSAndroid Build Coastguard Worker minRowBytes()60*c8dee2aaSAndroid Build Coastguard Worker size_t minRowBytes() const { return this->bpp() * this->width(); } 61*c8dee2aaSAndroid Build Coastguard Worker isValid()62*c8dee2aaSAndroid Build Coastguard Worker bool isValid() const { return fColorInfo.isValid() && this->width() > 0 && this->height() > 0; } 63*c8dee2aaSAndroid Build Coastguard Worker 64*c8dee2aaSAndroid Build Coastguard Worker private: 65*c8dee2aaSAndroid Build Coastguard Worker GrColorInfo fColorInfo = {}; 66*c8dee2aaSAndroid Build Coastguard Worker SkISize fDimensions; 67*c8dee2aaSAndroid Build Coastguard Worker }; 68*c8dee2aaSAndroid Build Coastguard Worker 69*c8dee2aaSAndroid Build Coastguard Worker #endif 70