| // 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 "include/core/SkColorType.h" | |
| #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 kR16_float_SkColorType: return "R16_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 kBGR_101010x_XR_SkColorType: return "BGR_101010x_xr"; | |
| case kBGRA_10101010_XR_SkColorType: return "BGRA_10101010_xr"; | |
| case kRGBA_10x6_SkColorType: return "RGBA_10x6"; | |
| case kGray_8_SkColorType: return "Gray_8"; | |
| case kRGBA_F16Norm_SkColorType: return "RGBA_F16Norm"; | |
| case kRGBA_F16_SkColorType: return "RGBA_F16"; | |
| case kRGB_F16F16F16x_SkColorType: return "RGB_F16F16F16x"; | |
| case kRGBA_F32_SkColorType: return "RGBA_F32"; | |
| case kR8G8_unorm_SkColorType: return "R8G8_unorm"; | |
| case kR16_unorm_SkColorType: return "R16_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 |