Skia
2D Graphics Library
SkSerialProcs.h File Reference
#include "include/core/SkRefCnt.h"
#include "include/private/base/SkAPI.h"
#include <cstddef>
#include <optional>
Include dependency graph for SkSerialProcs.h:

Go to the source code of this file.

Classes

struct  SkSerialProcs
 
struct  SkDeserialProcs
 

Namespaces

 sktext
 
 sktext::gpu
 

Typedefs

using SkSerialPictureProc = sk_sp< SkData >(*)(SkPicture *, void *ctx)
 A serial-proc is asked to serialize the specified object (e.g. More...
 
using SkSerialImageProc = sk_sp< SkData >(*)(SkImage *, void *ctx)
 
using SkSerialTypefaceProc = sk_sp< SkData >(*)(SkTypeface *, void *ctx)
 
using SkDeserialPictureProc = sk_sp< SkPicture >(*)(const void *data, size_t length, void *ctx)
 Called with the encoded form of a picture (previously written with a custom SkSerialPictureProc proc). More...
 
using SkDeserialImageProc = sk_sp< SkImage >(*)(const void *data, size_t length, void *ctx)
 Called with the encoded form of an image. More...
 
using SkDeserialImageFromDataProc = sk_sp< SkImage >(*)(sk_sp< SkData >, std::optional< SkAlphaType >, void *ctx)
 
using SkSlugProc = sk_sp< sktext::gpu::Slug >(*)(SkReadBuffer &, void *ctx)
 Slugs are currently only deserializable with a GPU backend. More...
 
using SkDeserialTypefaceProc = sk_sp< SkTypeface >(*)(const void *data, size_t length, void *ctx)
 Called with the encoded form of a typeface (previously written with a custom SkSerialTypefaceProc proc). More...
 

Typedef Documentation

◆ SkDeserialImageFromDataProc

using SkDeserialImageFromDataProc = sk_sp<SkImage> (*)(sk_sp<SkData>, std::optional<SkAlphaType>, void* ctx)

◆ SkDeserialImageProc

using SkDeserialImageProc = sk_sp<SkImage> (*)(const void* data, size_t length, void* ctx)

Called with the encoded form of an image.

The proc can return an image object, or if it returns nullptr, then Skia will take its default action to try to create an image from the data.

This will also be used to decode the internal mipmap layers that are saved on some images.

An explicit SkAlphaType may have been encoded in the bytestream; if not, then the passed in optional will be not present.

Clients should set at least SkDeserialImageProc; SkDeserialImageFromDataProc may be called if the internal implementation has a SkData copy already. Implementations of SkDeserialImageProc must make a copy of any data they needed after the proc finishes, since the data will go away after serialization ends.

◆ SkDeserialPictureProc

using SkDeserialPictureProc = sk_sp<SkPicture> (*)(const void* data, size_t length, void* ctx)

Called with the encoded form of a picture (previously written with a custom SkSerialPictureProc proc).

Return a picture object, or nullptr indicating failure.

◆ SkDeserialTypefaceProc

using SkDeserialTypefaceProc = sk_sp<SkTypeface> (*)(const void* data, size_t length, void* ctx)

Called with the encoded form of a typeface (previously written with a custom SkSerialTypefaceProc proc).

Return a typeface object, or nullptr indicating failure.

◆ SkSerialImageProc

using SkSerialImageProc = sk_sp<SkData> (*)(SkImage*, void* ctx)

◆ SkSerialPictureProc

using SkSerialPictureProc = sk_sp<SkData> (*)(SkPicture*, void* ctx)

A serial-proc is asked to serialize the specified object (e.g.

picture or image). If a data object is returned, it will be used (even if it is zero-length). If null is returned, then Skia will take its default action.

The default action for pictures is to use Skia's internal format. The default action for images is to encode either in its native format or PNG. The default action for typefaces is to use Skia's internal format.

◆ SkSerialTypefaceProc

using SkSerialTypefaceProc = sk_sp<SkData> (*)(SkTypeface*, void* ctx)

◆ SkSlugProc

using SkSlugProc = sk_sp<sktext::gpu::Slug> (*)(SkReadBuffer&, void* ctx)

Slugs are currently only deserializable with a GPU backend.

Clients will not be able to provide a custom mechanism here, but can enable Slug deserialization by calling sktext::gpu::AddDeserialProcs to add Skia's implementation.