sk_sp<SkFlattenable> SkToSRGBColorFilter::CreateProc(SkReadBuffer& buffer) { auto data = buffer.readByteArrayAsData(); if (data) { return Make(SkColorSpace::Deserialize(data->data(), data->size())); } return nullptr; }
sk_sp<SkFlattenable> SkColorCubeFilter::CreateProc(SkReadBuffer& buffer) { int cubeDimension = buffer.readInt(); auto cubeData(buffer.readByteArrayAsData()); if (!buffer.validate(is_valid_3D_lut(cubeData.get(), cubeDimension))) { return nullptr; } return Make(std::move(cubeData), cubeDimension); }
void SkImageInfo::unflatten(SkReadBuffer& buffer) { fWidth = buffer.read32(); fHeight = buffer.read32(); uint32_t packed = buffer.read32(); fColorType = stored_to_live((packed >> 0) & kColorTypeMask); fAlphaType = (SkAlphaType)((packed >> 8) & kAlphaTypeMask); buffer.validate(alpha_type_is_valid(fAlphaType) && color_type_is_valid(fColorType)); sk_sp<SkData> data = buffer.readByteArrayAsData(); fColorSpace = SkColorSpace::Deserialize(data->data(), data->size()); }
SkColorCubeFilter::SkColorCubeFilter(SkReadBuffer& buffer) : fCache(buffer.readInt()) { fCubeData.reset(buffer.readByteArrayAsData()); buffer.validate(is_valid_3D_lut(fCubeData, fCache.cubeDimension())); fUniqueID = SkNextColorCubeUniqueID(); }
SkAnnotation::SkAnnotation(SkReadBuffer& buffer) { buffer.readString(&fKey); fData = buffer.readByteArrayAsData(); }