| Index: src/codec/SkMaskSwizzler.h
|
| diff --git a/src/codec/SkMaskSwizzler.h b/src/codec/SkMaskSwizzler.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..19e0d00c650c3e4dd0e738280295aa8132b782be
|
| --- /dev/null
|
| +++ b/src/codec/SkMaskSwizzler.h
|
| @@ -0,0 +1,99 @@
|
| +/*
|
| + * Copyright 2015 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#include "SkSwizzler.h"
|
| +#include "SkTemplates.h"
|
| +
|
| +/*
|
| + *
|
| + * Used to swizzle images whose pixel components are extracted by bit masks
|
| + * Currently only used by bmp
|
| + *
|
| + */
|
| +class SkMaskSwizzler {
|
| +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;
|
| + };
|
| +
|
| + /*
|
| + *
|
| + * The bit masks used in the decode
|
| + *
|
| + */
|
| + struct Masks {
|
| + const MaskInfo red;
|
| + const MaskInfo green;
|
| + const MaskInfo blue;
|
| + const MaskInfo alpha;
|
| + };
|
| +
|
| + /*
|
| + *
|
| + * Process an input mask to obtain the necessary information
|
| + *
|
| + */
|
| + static const MaskInfo& ProcessMask(uint32_t mask, uint32_t bpp);
|
| +
|
| + /*
|
| + *
|
| + * Create a new swizzler
|
| + *
|
| + */
|
| + static SkMaskSwizzler* CreateMaskSwizzler(const SkImageInfo& imageInfo,
|
| + InputMasks masks,
|
| + uint32_t bitsPerPixel);
|
| +
|
| + /*
|
| + *
|
| + * Swizzle the next row
|
| + *
|
| + */
|
| + SkSwizzler::ResultAlpha next(void* dst, const uint8_t* src);
|
| +
|
| +private:
|
| +
|
| + /*
|
| + *
|
| + * Row procedure used for swizzle
|
| + *
|
| + */
|
| + typedef SkSwizzler::ResultAlpha (*RowProc)(
|
| + void* dstRow, const uint8_t* srcRow, int width, const Masks& masks);
|
| +
|
| + /*
|
| + *
|
| + * Constructor for mask swizzler
|
| + *
|
| + */
|
| + SkMaskSwizzler(const SkImageInfo& info, const Masks& masks, RowProc proc);
|
| +
|
| + // Fields
|
| + const SkImageInfo& fImageInfo;
|
| + const Masks fMasks;
|
| + const RowProc fRowProc;
|
| +};
|
|
|