SkMasks.h revision 3675874468de7228944ce21922e6ec863f5f2310
1/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7#include "SkTypes.h"
8
9/*
10 *
11 * Contains useful mask routines for SkMaskSwizzler
12 *
13 */
14class SkMasks {
15public:
16
17    /*
18     *
19     * Input bit masks format
20     *
21     */
22    struct InputMasks {
23        uint32_t red;
24        uint32_t green;
25        uint32_t blue;
26        uint32_t alpha;
27    };
28
29    /*
30     *
31     * Contains all of the information for a single mask
32     *
33     */
34     struct MaskInfo {
35        uint32_t mask;
36        uint32_t shift;
37        uint32_t size;
38     };
39
40    /*
41     *
42     * Create the masks object
43     *
44     */
45    static SkMasks* CreateMasks(InputMasks masks, uint32_t bpp);
46
47    /*
48     *
49     * Get a color component
50     *
51     */
52    uint8_t getRed(uint32_t pixel);
53    uint8_t getGreen(uint32_t pixel);
54    uint8_t getBlue(uint32_t pixel);
55    uint8_t getAlpha(uint32_t pixel);
56
57    /*
58     *
59     * Getter for the alpha mask
60     * The alpha mask may be used in other decoding modes
61     *
62     */
63     uint32_t getAlphaMask() {
64        return fAlpha.mask;
65     }
66
67private:
68
69    /*
70     *
71     * Constrcutor
72     *
73     */
74    SkMasks(const MaskInfo red, const MaskInfo green, const MaskInfo blue,
75            const MaskInfo alpha);
76
77    const MaskInfo fRed;
78    const MaskInfo fGreen;
79    const MaskInfo fBlue;
80    const MaskInfo fAlpha;
81};
82