|  | // Copyright 2020 Google LLC. | 
|  | // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. | 
|  | #include "tools/fiddle/examples.h" | 
|  | REG_FIDDLE(unexpected_setAlphaType, 256, 256, true, 0) { | 
|  | static const char* alphatype_name(SkAlphaType at) { | 
|  | switch (at) { | 
|  | case kUnknown_SkAlphaType:  return "Unknown"; | 
|  | case kOpaque_SkAlphaType:   return "Opaque"; | 
|  | case kPremul_SkAlphaType:   return "Premul"; | 
|  | case kUnpremul_SkAlphaType: return "Unpremul"; | 
|  | } | 
|  | SkASSERT(false); | 
|  | return "unexpected alphatype"; | 
|  | } | 
|  | static const char* colortype_name(SkColorType ct) { | 
|  | switch (ct) { | 
|  | case kUnknown_SkColorType:            return "Unknown"; | 
|  | case kAlpha_8_SkColorType:            return "Alpha_8"; | 
|  | case kA16_unorm_SkColorType:          return "Alpha_16"; | 
|  | case kA16_float_SkColorType:          return "A16_float"; | 
|  | case kRGB_565_SkColorType:            return "RGB_565"; | 
|  | case kARGB_4444_SkColorType:          return "ARGB_4444"; | 
|  | case kRGBA_8888_SkColorType:          return "RGBA_8888"; | 
|  | case kSRGBA_8888_SkColorType:         return "SRGBA_8888"; | 
|  | case kRGB_888x_SkColorType:           return "RGB_888x"; | 
|  | case kBGRA_8888_SkColorType:          return "BGRA_8888"; | 
|  | case kRGBA_1010102_SkColorType:       return "RGBA_1010102"; | 
|  | case kRGB_101010x_SkColorType:        return "RGB_101010x"; | 
|  | case kBGRA_1010102_SkColorType:       return "BGRA_1010102"; | 
|  | case kBGR_101010x_SkColorType:        return "BGR_101010x"; | 
|  | case kGray_8_SkColorType:             return "Gray_8"; | 
|  | case kRGBA_F16Norm_SkColorType:       return "RGBA_F16Norm"; | 
|  | case kRGBA_F16_SkColorType:           return "RGBA_F16"; | 
|  | case kRGBA_F32_SkColorType:           return "RGBA_F32"; | 
|  | case kR8G8_unorm_SkColorType:         return "R8G8_unorm"; | 
|  | case kR16G16_unorm_SkColorType:       return "R16G16_unorm"; | 
|  | case kR16G16_float_SkColorType:       return "R16G16_float"; | 
|  | case kR16G16B16A16_unorm_SkColorType: return "R16G16B16A16_unorm"; | 
|  | case kR8_unorm_SkColorType:           return "R8_unorm"; | 
|  | } | 
|  | SkASSERT(false); | 
|  | return "unexpected colortype"; | 
|  | } | 
|  | void draw(SkCanvas* canvas) { | 
|  | static const SkAlphaType kAlphaTypes[] = | 
|  | {kUnknown_SkAlphaType, kOpaque_SkAlphaType, kPremul_SkAlphaType, kUnpremul_SkAlphaType}; | 
|  | static const SkColorType kColorTypes[] = | 
|  | {kUnknown_SkColorType, kAlpha_8_SkColorType, kRGB_565_SkColorType, | 
|  | kARGB_4444_SkColorType, kRGBA_8888_SkColorType, kRGB_888x_SkColorType, | 
|  | kBGRA_8888_SkColorType, kRGBA_1010102_SkColorType, kRGB_101010x_SkColorType, | 
|  | kGray_8_SkColorType, kRGBA_F16_SkColorType}; | 
|  | SkBitmap bitmap; | 
|  | SkDebugf("%16s Canonical    Unknown           Opaque            Premul            " | 
|  | "Unpremul\n", " "); | 
|  | for (SkColorType colorType : kColorTypes) { | 
|  | for (SkAlphaType canonicalAlphaType : kAlphaTypes) { | 
|  | SkColorTypeValidateAlphaType(colorType, kUnknown_SkAlphaType, &canonicalAlphaType); | 
|  | SkDebugf("%15s %10s ", colortype_name(colorType), alphatype_name(canonicalAlphaType)); | 
|  | for (SkAlphaType alphaType : kAlphaTypes) { | 
|  | bitmap.setInfo(SkImageInfo::Make(4, 4, colorType, canonicalAlphaType)); | 
|  | bool result = bitmap.setAlphaType(alphaType); | 
|  | SkDebugf("%s %s    ", result ? "true " : "false", | 
|  | alphatype_name(bitmap.alphaType())); | 
|  | } | 
|  | SkDebugf("\n"); | 
|  | } | 
|  | } | 
|  | } | 
|  | }  // END FIDDLE |