// This class implements functionality shared between `SkPngEncoderImpl` and // `SkPngRustEncoderImpl`. class SkPngEncoderBase : public SkEncoder {
public: struct TargetInfo {
std::optional<SkImageInfo> fSrcRowInfo;
std::optional<SkImageInfo> fDstRowInfo;
SkEncodedInfo fDstInfo;
size_t fDstRowSize;
};
// Gets the `fDstRowInfo` that `fSrcRowInfo` should be converted into before // encoding and uses SkConvertPixels to transform source rows into // ready-to-encode rows (and the `fDstRowSize` of such rows). // // For example, `kRGBA_F32_SkColorType` source will be encoded as // `SkEncodedInfo::kRGBA_Color` with 16 `bitsPerComponent`. // // 'fDstInfo' stores extra information for libpng. // // Returns `std::nullopt` if `srcInfo` is not supported by the PNG encoder. static std::optional<TargetInfo> getTargetInfo(const SkImageInfo& srcInfo);
// Called from `onEncodeRows` to encode the given `row` (in `dstInfo` format // that was passed to the `SkPngEncoderBase`'s constructor).
virtual bool onEncodeRow(SkSpan<const uint8_t> row) = 0;
// Called from `onEncodeRows` to finalize the encoded PNG (e.g. write the // `IEND` chunk).
virtual bool onFinishEncoding() = 0;
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.