2018-10-04 13:10:29 +00:00
|
|
|
/*
|
|
|
|
* Copyright 2018 Google Inc.
|
|
|
|
*
|
|
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
|
|
* found in the LICENSE file.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef SkYUVAIndex_DEFINED
|
|
|
|
#define SkYUVAIndex_DEFINED
|
|
|
|
|
|
|
|
#include "SkTypes.h"
|
|
|
|
|
|
|
|
/** \enum SkColorChannel
|
|
|
|
Describes different color channels one can manipulate
|
|
|
|
*/
|
|
|
|
enum class SkColorChannel {
|
|
|
|
kR, // the red channel
|
|
|
|
kG, // the green channel
|
|
|
|
kB, // the blue channel
|
|
|
|
kA, // the alpha channel
|
|
|
|
|
|
|
|
kLastEnum = kA,
|
|
|
|
};
|
|
|
|
|
|
|
|
/** \struct SkYUVAIndex
|
|
|
|
Describes from which image source and which channel to read each individual YUVA plane.
|
|
|
|
|
|
|
|
SkYUVAIndex contains a index for which image source to read from and a enum for which channel
|
|
|
|
to read from.
|
|
|
|
*/
|
|
|
|
struct SK_API SkYUVAIndex {
|
2018-10-10 15:43:01 +00:00
|
|
|
bool operator==(const SkYUVAIndex& that) const {
|
|
|
|
return this->fIndex == that.fIndex && this->fChannel == that.fChannel;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool operator!=(const SkYUVAIndex& that) const {
|
|
|
|
return !(*this == that);
|
|
|
|
}
|
|
|
|
|
2018-10-04 13:10:29 +00:00
|
|
|
// Index in the array of SkYUVAIndex
|
|
|
|
enum Index {
|
|
|
|
kY_Index = 0,
|
|
|
|
kU_Index = 1,
|
|
|
|
kV_Index = 2,
|
|
|
|
kA_Index = 3
|
|
|
|
};
|
|
|
|
|
|
|
|
/** The index is a number between -1..3 which definies which image source to read from, where -1
|
|
|
|
* means the image source doesn't exist. The assumption is we will always have image sources for
|
|
|
|
* each of YUV planes, but optionally have image source for A plane. */
|
|
|
|
int fIndex;
|
|
|
|
/** The channel describes from which channel to read the info from. Currently we only deal with
|
|
|
|
* YUV and NV12 and channel info is ignored. */
|
|
|
|
SkColorChannel fChannel;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|