Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Slug.cpp
Go to the documentation of this file.
1/*
2 * Copyright 2021 Google LLC
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
9
15
16class SkData;
17
18namespace sktext::gpu {
19
21 SkCanvas* canvas, const SkTextBlob& blob, SkPoint origin, const SkPaint& paint) {
22 return canvas->convertBlobToSlug(blob, origin, paint);
23}
24
27 this->doFlatten(buffer);
28 return buffer.snapshotAsData();
29}
30
31size_t Slug::serialize(void* buffer, size_t size) const {
32 SkBinaryWriteBuffer writeBuffer{buffer, size, {}};
33 this->doFlatten(writeBuffer);
34
35 // If we overflow the given buffer, then SkWriteBuffer allocates a new larger buffer. Check
36 // to see if an additional buffer was allocated, if it wasn't then everything fit, else
37 // return 0 signaling the buffer overflowed.
38 // N.B. This is the idiom from SkTextBlob.
39 return writeBuffer.usingInitialStorage() ? writeBuffer.bytesWritten() : 0u;
40}
41
42sk_sp<Slug> Slug::Deserialize(const void* data, size_t size, const SkStrikeClient* client) {
44 SkDeserialProcs procs;
45 Slug::AddDeserialProcs(&procs, client);
46 buffer.setDeserialProcs(procs);
47 return MakeFromBuffer(buffer);
48}
49
50void Slug::draw(SkCanvas* canvas, const SkPaint& paint) const {
51 canvas->drawSlug(this, paint);
52}
53
54} // namespace sktext::gpu
55
static sk_sp< Slug > ConvertBlob(SkCanvas *canvas, const SkTextBlob &blob, SkPoint origin, const SkPaint &paint)
Definition Slug.cpp:20
static void AddDeserialProcs(SkDeserialProcs *procs, const SkStrikeClient *client=nullptr)
Definition SlugImpl.cpp:106
static sk_sp< Slug > MakeFromBuffer(SkReadBuffer &buffer)
void draw(SkCanvas *canvas, const SkPaint &paint) const
Definition Slug.cpp:50
sk_sp< SkData > serialize() const
Definition Slug.cpp:25
virtual void doFlatten(SkWriteBuffer &) const =0
static sk_sp< Slug > Deserialize(const void *data, size_t size, const SkStrikeClient *client=nullptr)
Definition Slug.cpp:42
const Paint & paint
static const uint8_t buffer[]
AutoTArray< uint8_t > data((int) size)