/* * Copyright 2013 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkAlpha_DEFINED #define SkAlpha_DEFINED #include "SkTypes.h" /** * Describes how to interpret the alpha compoent of a pixel. */ enum SkAlphaType { /** * All pixels should be treated as opaque, regardless of the value stored * in their alpha field. Used for legacy images that wrote 0 or garbarge * in their alpha field, but intended the RGB to be treated as opaque. */ kIgnore_SkAlphaType, /** * All pixels are stored as opaque. This differs slightly from kIgnore in * that kOpaque has correct "opaque" values stored in the pixels, while * kIgnore may not, but in both cases the caller should treat the pixels * as opaque. */ kOpaque_SkAlphaType, /** * All pixels have their alpha premultiplied in their color components. * This is the natural format for the rendering target pixels. */ kPremul_SkAlphaType, /** * All pixels have their color components stored without any regard to the * alpha. e.g. this is the default configuration for PNG images. * * This alpha-type is ONLY supported for input images. Rendering cannot * generate this on output. */ kUnpremul_SkAlphaType, kLastEnum_SkAlphaType = kUnpremul_SkAlphaType }; static inline bool SkAlphaTypeIsOpaque(SkAlphaType at) { return (unsigned)at <= kOpaque_SkAlphaType; } #endif