diff options
author | 2017-11-14 11:02:43 -0500 | |
---|---|---|
committer | 2017-11-14 17:14:34 +0000 | |
commit | ab081ae7e424e4d98ec1029fd5f23f6525184806 (patch) | |
tree | 3102fe04eb10a6c0162a881e18bac0a87d2091d9 /include/private/GrTypesPriv.h | |
parent | 0387d35f599dca39cb6a5073743c245b3f12ab7d (diff) |
Move static helper functions for GrPixelConfig to private.
Bug: skia:
Change-Id: I207cce77cbe46e0016afe932a06dba12e732c5da
Reviewed-on: https://skia-review.googlesource.com/71281
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'include/private/GrTypesPriv.h')
-rw-r--r-- | include/private/GrTypesPriv.h | 215 |
1 files changed, 210 insertions, 5 deletions
diff --git a/include/private/GrTypesPriv.h b/include/private/GrTypesPriv.h index cdfaed21be..9922f4cbc0 100644 --- a/include/private/GrTypesPriv.h +++ b/include/private/GrTypesPriv.h @@ -98,11 +98,6 @@ enum class GrPixelConfigIsClamped : bool { kYes, // Any UNORM type }; -static inline GrPixelConfigIsClamped GrGetPixelConfigIsClamped(GrPixelConfig config) { - return GrPixelConfigIsFloatingPoint(config) ? GrPixelConfigIsClamped::kNo - : GrPixelConfigIsClamped::kYes; -} - /** * Types of shader-language-specific boxed variables we can create. (Currently only GrGLShaderVars, * but should be applicable to other shader languages.) @@ -805,4 +800,214 @@ enum class GrMipMapsStatus { GR_MAKE_BITFIELD_CLASS_OPS(GpuPathRenderers) +/** + * Utility functions for GrPixelConfig + */ +// Returns true if the pixel config is 32 bits per pixel +static inline bool GrPixelConfigIs8888Unorm(GrPixelConfig config) { + switch (config) { + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + return true; + case kUnknown_GrPixelConfig: + case kAlpha_8_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + case kRGBA_float_GrPixelConfig: + case kRG_float_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + return false; + } + SK_ABORT("Invalid pixel config"); + return false; +} + +// Returns true if the color (non-alpha) components represent sRGB values. It does NOT indicate that +// all three color components are present in the config or anything about their order. +static inline bool GrPixelConfigIsSRGB(GrPixelConfig config) { + switch (config) { + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + return true; + case kUnknown_GrPixelConfig: + case kAlpha_8_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + case kRGBA_float_GrPixelConfig: + case kRG_float_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + return false; + } + SK_ABORT("Invalid pixel config"); + return false; +} + +// Takes a config and returns the equivalent config with the R and B order +// swapped if such a config exists. Otherwise, kUnknown_GrPixelConfig +static inline GrPixelConfig GrPixelConfigSwapRAndB(GrPixelConfig config) { + switch (config) { + case kBGRA_8888_GrPixelConfig: + return kRGBA_8888_GrPixelConfig; + case kRGBA_8888_GrPixelConfig: + return kBGRA_8888_GrPixelConfig; + case kSBGRA_8888_GrPixelConfig: + return kSRGBA_8888_GrPixelConfig; + case kSRGBA_8888_GrPixelConfig: + return kSBGRA_8888_GrPixelConfig; + case kUnknown_GrPixelConfig: + case kAlpha_8_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + case kRGBA_float_GrPixelConfig: + case kRG_float_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + return kUnknown_GrPixelConfig; + } + SK_ABORT("Invalid pixel config"); + return kUnknown_GrPixelConfig; +} + +static inline size_t GrBytesPerPixel(GrPixelConfig config) { + switch (config) { + case kAlpha_8_GrPixelConfig: + case kGray_8_GrPixelConfig: + return 1; + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + return 2; + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + return 4; + case kRGBA_half_GrPixelConfig: + return 8; + case kRGBA_float_GrPixelConfig: + return 16; + case kRG_float_GrPixelConfig: + return 8; + case kUnknown_GrPixelConfig: + return 0; + } + SK_ABORT("Invalid pixel config"); + return 0; +} + +static inline bool GrPixelConfigIsOpaque(GrPixelConfig config) { + switch (config) { + case kRGB_565_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRG_float_GrPixelConfig: + return true; + case kAlpha_8_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + case kRGBA_float_GrPixelConfig: + case kUnknown_GrPixelConfig: + return false; + } + SK_ABORT("Invalid pixel config"); + return false; +} + +static inline bool GrPixelConfigIsAlphaOnly(GrPixelConfig config) { + switch (config) { + case kAlpha_8_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + return true; + case kUnknown_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + case kRGBA_float_GrPixelConfig: + case kRG_float_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + return false; + } + SK_ABORT("Invalid pixel config."); + return false; +} + +static inline bool GrPixelConfigIsFloatingPoint(GrPixelConfig config) { + switch (config) { + case kRGBA_float_GrPixelConfig: + case kRG_float_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + return true; + case kUnknown_GrPixelConfig: + case kAlpha_8_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + return false; + } + SK_ABORT("Invalid pixel config"); + return false; +} + +static inline bool GrPixelConfigIsSint(GrPixelConfig config) { + return config == kRGBA_8888_sint_GrPixelConfig; +} + +static inline bool GrPixelConfigIsUnorm(GrPixelConfig config) { + switch (config) { + case kAlpha_8_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + return true; + case kUnknown_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + case kRGBA_float_GrPixelConfig: + case kRG_float_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + return false; + } + SK_ABORT("Invalid pixel config."); + return false; +} + +static inline GrPixelConfigIsClamped GrGetPixelConfigIsClamped(GrPixelConfig config) { + return GrPixelConfigIsFloatingPoint(config) ? GrPixelConfigIsClamped::kNo + : GrPixelConfigIsClamped::kYes; +} + + #endif |