/*
|
* 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 "SkTypes.h"
|
|
/*
|
*
|
* Contains useful mask routines for SkMaskSwizzler
|
*
|
*/
|
class SkMasks {
|
public:
|
|
/*
|
*
|
* Input bit masks format
|
*
|
*/
|
struct InputMasks {
|
uint32_t red;
|
uint32_t green;
|
uint32_t blue;
|
uint32_t alpha;
|
};
|
|
/*
|
*
|
* Contains all of the information for a single mask
|
*
|
*/
|
struct MaskInfo {
|
uint32_t mask;
|
uint32_t shift;
|
uint32_t size;
|
};
|
|
/*
|
*
|
* 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:
|
|
/*
|
*
|
* Constructor
|
*
|
*/
|
SkMasks(const MaskInfo& red, const MaskInfo& green, const MaskInfo& blue,
|
const MaskInfo& alpha);
|
|
const MaskInfo fRed;
|
const MaskInfo fGreen;
|
const MaskInfo fBlue;
|
const MaskInfo fAlpha;
|
};
|
|
#endif
|