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