/* * Copyright 2015 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkMasks_DEFINED #define SkMasks_DEFINED #include "include/core/SkTypes.h" // Contains useful mask routines for SkMaskSwizzler class SkMasks { public: //Contains all of the information for a single mask struct MaskInfo { uint32_t mask; uint32_t shift; // To the left uint32_t size; // Of mask width }; constexpr SkMasks(const MaskInfo red, const MaskInfo green, const MaskInfo blue, const MaskInfo alpha) : fRed(red) , fGreen(green) , fBlue(blue) , fAlpha(alpha) { } //Input bit masks format struct InputMasks { uint32_t red; uint32_t green; uint32_t blue; uint32_t alpha; }; // Create the masks object static SkMasks* CreateMasks(InputMasks masks, int bytesPerPixel); // Get a color component uint8_t getRed(uint32_t pixel) const; uint8_t getGreen(uint32_t pixel) const; uint8_t getBlue(uint32_t pixel) const; uint8_t getAlpha(uint32_t pixel) const; // Getter for the alpha mask // The alpha mask may be used in other decoding modes uint32_t getAlphaMask() const { return fAlpha.mask; } private: const MaskInfo fRed; const MaskInfo fGreen; const MaskInfo fBlue; const MaskInfo fAlpha; }; #endif