88 {
90 return false;
91 }
92 auto dst = (uint8_t*)vdst;
93
97
98
100 return false;
101 }
102
104 auto src16 = (
const uint16_t*)
src;
105 for (
int y = 0;
y < srcInfo.
height();
y++) {
106 for (
int x = 0;
x < srcInfo.
width();
x++) {
107 dst[
x] = src16[
x] >> 8;
108 }
109 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
110 src16 = SkTAddOffset<const uint16_t>(src16, srcRB);
111 }
112 return true;
113 }
114
125 for (
int y = 0;
y < srcInfo.
height(); ++
y) {
127 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
128 }
129 return true;
130 }
131
133 auto src16 = (
const uint16_t*)
src;
134 for (
int y = 0;
y < srcInfo.
height();
y++) {
135 for (
int x = 0;
x < srcInfo.
width();
x++) {
137 }
138 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
139 src16 = SkTAddOffset<const uint16_t>(src16, srcRB);
140 }
141 return true;
142 }
143
147 auto src32 = (
const uint32_t*)
src;
148 for (
int y = 0;
y < srcInfo.
height();
y++) {
149 for (
int x = 0;
x < srcInfo.
width();
x++) {
150 dst[
x] = src32[
x] >> 24;
151 }
152 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
153 src32 = SkTAddOffset<const uint32_t>(src32, srcRB);
154 }
155 return true;
156 }
157
160 auto src32 = (
const uint32_t*)
src;
161 for (
int y = 0;
y < srcInfo.
height();
y++) {
162 for (
int x = 0;
x < srcInfo.
width();
x++) {
163 dst[
x] = (src32[
x] >> 30) * 0x55;
164 }
165 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
166 src32 = SkTAddOffset<const uint32_t>(src32, srcRB);
167 }
168 return true;
169 }
170
173 auto src64 = (
const uint64_t*)
src;
174 for (
int y = 0;
y < srcInfo.
height();
y++) {
175 for (
int x = 0;
x < srcInfo.
width();
x++) {
177 }
178 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
179 src64 = SkTAddOffset<const uint64_t>(src64, srcRB);
180 }
181 return true;
182 }
183
186 for (
int y = 0;
y < srcInfo.
height();
y++) {
187 for (
int x = 0;
x < srcInfo.
width();
x++) {
188 dst[
x] = (uint8_t)(255.0f *
rgba[4*
x+3]);
189 }
190 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
191 rgba = SkTAddOffset<const float>(
rgba, srcRB);
192 }
193 return true;
194 }
195
197 auto srcF16 = (
const uint16_t*)
src;
198 for (
int y = 0;
y < srcInfo.
height();
y++) {
199 for (
int x = 0;
x < srcInfo.
width();
x++) {
201 }
202 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
203 srcF16 = SkTAddOffset<const uint16_t>(srcF16, srcRB);
204 }
205 return true;
206 }
207
209 auto src64 = (
const uint64_t*)
src;
210 for (
int y = 0;
y < srcInfo.
height();
y++) {
211 for (
int x = 0;
x < srcInfo.
width();
x++) {
212 static constexpr int64_t
kZero = 384;
213 static constexpr int64_t kRange = 510;
214 static constexpr int64_t kMaxU8 = 0xff;
215 static constexpr int64_t kMinU8 = 0x00;
216 static constexpr int64_t kDivisor = kRange / kMaxU8;
217 int64_t raw_alpha = src64[
x] >> 54;
218
219
220 int64_t alpha =
221 SkTPin((raw_alpha - kZero) / kDivisor, kMinU8, kMaxU8);
222 dst[
x] =
static_cast<uint8_t
>(alpha);
223 }
224 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
225 src64 = SkTAddOffset<const uint64_t>(src64, srcRB);
226 }
227 return true;
228 }
231 auto src64 = (
const uint64_t*)
src;
232 for (
int y = 0;
y < srcInfo.
height();
y++) {
233 for (
int x = 0;
x < srcInfo.
width();
x++) {
234 dst[
x] = (src64[
x] >> 48) >> 8;
235 }
236 dst = SkTAddOffset<uint8_t>(
dst, dstRB);
237 src64 = SkTAddOffset<const uint64_t>(src64, srcRB);
238 }
239 return true;
240 }
241 }
242 return false;
243}
static const uint32_t rgba[kNumPixels]
#define SkPacked4444ToA32(c)
@ kR16G16B16A16_unorm_SkColorType
pixel with a little endian uint16_t for red, green, blue
@ kRGBA_10x6_SkColorType
pixel with 10 used bits (most significant) followed by 6 unused
@ kBGR_101010x_SkColorType
pixel with 10 bits each for blue, green, red; in 32-bit word
@ kARGB_4444_SkColorType
pixel with 4 bits for alpha, red, green, blue; in 16-bit word
@ kR8G8_unorm_SkColorType
pixel with a uint8_t for red and green
@ kBGRA_8888_SkColorType
pixel with 8 bits for blue, green, red, alpha; in 32-bit word
@ kA16_unorm_SkColorType
pixel with a little endian uint16_t for alpha
@ kRGBA_F16_SkColorType
pixel with half floats for red, green, blue, alpha;
@ kAlpha_8_SkColorType
pixel with alpha in 8-bit byte
@ kRGB_101010x_SkColorType
pixel with 10 bits each for red, green, blue; in 32-bit word
@ kSRGBA_8888_SkColorType
@ kGray_8_SkColorType
pixel with grayscale level in 8-bit byte
@ kRGB_565_SkColorType
pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word
@ kBGRA_10101010_XR_SkColorType
pixel with 10 bits each for blue, green, red, alpha; in 64-bit word, extended range
@ kRGBA_8888_SkColorType
pixel with 8 bits for red, green, blue, alpha; in 32-bit word
@ kRGB_888x_SkColorType
pixel with 8 bits each for red, green, blue; in 32-bit word
@ kBGRA_1010102_SkColorType
10 bits for blue, green, red; 2 bits for alpha; in 32-bit word
@ kA16_float_SkColorType
pixel with a half float for alpha
@ kRGBA_F32_SkColorType
pixel using C float for red, green, blue, alpha; in 128-bit word
@ kRGBA_1010102_SkColorType
10 bits for red, green, blue; 2 bits for alpha; in 32-bit word
@ kBGR_101010x_XR_SkColorType
pixel with 10 bits each for blue, green, red; in 32-bit word, extended range
@ kR16G16_unorm_SkColorType
pixel with a little endian uint16_t for red and green
@ kRGBA_F16Norm_SkColorType
pixel with half floats in [0,1] for red, green, blue, alpha;
@ kUnknown_SkColorType
uninitialized
@ kR16G16_float_SkColorType
pixel with a half float for red and green
float SkHalfToFloat(SkHalf h)
static constexpr const T & SkTPin(const T &x, const T &lo, const T &hi)
SkColorType colorType() const