56 for (
int i = 0; i < 256; i++) {
62 memcpy(fTable,
table,
sizeof(fTable));
73 dst->bounds() = src.fBounds;
74 dst->rowBytes() =
SkAlign4(dst->fBounds.width());
76 dst->image() =
nullptr;
81 const uint8_t* srcP = src.fImage;
82 uint8_t* dstP = dst->image();
83 const uint8_t*
table = fTable;
84 int dstWidth = dst->fBounds.width();
85 int extraZeros = dst->fRowBytes - dstWidth;
87 for (
int y = dst->fBounds.height() - 1;
y >= 0; --
y) {
88 for (
int x = dstWidth - 1;
x >= 0; --
x) {
91 srcP += src.fRowBytes;
97 for (
int i = extraZeros - 1; i >= 0; --i) {
144 const float dx = 1 / 255.0f;
145 const float g = gamma;
148 for (
int i = 0; i < 256; i++) {
167 for (
int i =
min + 1; i <
max; i++) {
176 for (j = 0; j < 256; j++) {
182 for (; j < 256; j++) {
static constexpr T SkAlign4(T x)
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
#define SkFixedRoundToInt(x)
#define SK_FLATTENABLE_HOOKS(type)
#define sk_float_round2int(x)
static constexpr const T & SkTPin(const T &x, const T &lo, const T &hi)
void flatten(SkWriteBuffer &) const override
SkTableMaskFilterImpl(const uint8_t table[256])
SkMask::Format getFormat() const override
bool filterMask(SkMaskBuilder *, const SkMask &, const SkMatrix &, SkIPoint *) const override
~SkTableMaskFilterImpl() override
SkMaskFilterBase::Type type() const override
static void MakeGammaTable(uint8_t table[256], SkScalar gamma)
static SkMaskFilter * CreateGamma(SkScalar gamma)
static SkMaskFilter * Create(const uint8_t table[256])
static void MakeClipTable(uint8_t table[256], uint8_t min, uint8_t max)
static SkMaskFilter * CreateClip(uint8_t min, uint8_t max)
virtual void writeByteArray(const void *data, size_t size)=0
static const uint8_t buffer[]
static float max(float r, float g, float b)
static float min(float r, float g, float b)
void set(int32_t x, int32_t y)
static uint8_t * AllocImage(size_t bytes, AllocType=kUninit_Alloc)
@ kA8_Format
8bits per pixel mask (e.g. antialiasing)