sk_sp<SkFlattenable> legacy_color4_create_proc(SkReadBuffer& buffer) { if (buffer.validate(buffer.isVersionLT(SkPicturePriv::Version::kCombineColorShaders))) { // Only SKPs older than this version should be referring to this create proc.
SkColor4f color;
sk_sp<SkColorSpace> colorSpace;
buffer.readColor4f(&color); if (buffer.readBool()) {
sk_sp<SkData> data = buffer.readByteArrayAsData();
colorSpace = data ? SkColorSpace::Deserialize(data->data(), data->size()) : nullptr;
} return SkShaders::Color(color, std::move(colorSpace));
}
return nullptr;
}
} // anonymous namespace
sk_sp<SkFlattenable> SkColorShader::CreateProc(SkReadBuffer& buffer) { if (buffer.isVersionLT(SkPicturePriv::Version::kCombineColorShaders)) { // Stored an 8-bit color only. return SkShaders::Color(buffer.readColor());
} else { // Stores a floating-point color in sRGB.
SkColor4f color;
buffer.readColor4f(&color); return SkShaders::Color(color, SkColorSpace::MakeSRGB());
}
}
// Convert to sRGB to simplify what must be stored, remaining unpremul until the final dst // color space is known during actual shading. Also pin the alpha to [0,1].
SkColor4f srgb = color.pinAlpha();
SkColorSpaceXformSteps(space.get(), kUnpremul_SkAlphaType,
sk_srgb_singleton(), kUnpremul_SkAlphaType).apply(srgb.vec());
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.