SkMasks.h revision 4ab9d5f1bc6d05c49dc765c3de5ade816f4c968e
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#ifndef SkMasks_DEFINED
8#define SkMasks_DEFINED
9
10#include "SkTypes.h"
11
12/*
13 *
14 * Contains useful mask routines for SkMaskSwizzler
15 *
16 */
17class SkMasks {
18public:
19
20    /*
21     *
22     * Input bit masks format
23     *
24     */
25    struct InputMasks {
26        uint32_t red;
27        uint32_t green;
28        uint32_t blue;
29        uint32_t alpha;
30    };
31
32    /*
33     *
34     * Contains all of the information for a single mask
35     *
36     */
37     struct MaskInfo {
38        uint32_t mask;
39        uint32_t shift;
40        uint32_t size;
41     };
42
43    /*
44     *
45     * Create the masks object
46     *
47     */
48    static SkMasks* CreateMasks(InputMasks masks, uint32_t bpp);
49
50    /*
51     *
52     * Get a color component
53     *
54     */
55    uint8_t getRed(uint32_t pixel);
56    uint8_t getGreen(uint32_t pixel);
57    uint8_t getBlue(uint32_t pixel);
58    uint8_t getAlpha(uint32_t pixel);
59
60    /*
61     *
62     * Getter for the alpha mask
63     * The alpha mask may be used in other decoding modes
64     *
65     */
66     uint32_t getAlphaMask() {
67        return fAlpha.mask;
68     }
69
70private:
71
72    /*
73     *
74     * Constrcutor
75     *
76     */
77    SkMasks(const MaskInfo red, const MaskInfo green, const MaskInfo blue,
78            const MaskInfo alpha);
79
80    const MaskInfo fRed;
81    const MaskInfo fGreen;
82    const MaskInfo fBlue;
83    const MaskInfo fAlpha;
84};
85
86#endif
87