56 if (this->internalQuickReject(bounds,
paint)) {
59 auto layer = this->aboutToDraw(
paint, &bounds);
66 auto slug = this->onConvertGlyphRunListToSlug(glyphRunList, layer->paint());
67 if (slug !=
nullptr) {
68 bytes = slug->serialize();
72 if (bytes !=
nullptr) {
74 this->drawSlug(slug.get(), layer->paint());
141 if (this->internalQuickReject(bounds,
paint)) {
144 auto layer = this->aboutToDraw(
paint, &bounds);
150 std::vector<uint8_t> glyphBytes;
152 auto analysisCanvas = fStrikeServer.makeAnalysisCanvas(
153 this->topDevice()->
width(),
154 this->topDevice()->
height(),
156 this->topDevice()->imageInfo().refColorSpace(),
163 analysisCanvas->setMatrix(this->getLocalToDevice());
164 auto slug = analysisCanvas->onConvertGlyphRunListToSlug(glyphRunList,
166 if (slug !=
nullptr) {
167 slugBytes = slug->serialize();
169 fStrikeServer.writeStrikeData(&glyphBytes);
172 if (!glyphBytes.empty()) {
173 fStrikeClient.readStrikeData(glyphBytes.data(), glyphBytes.size());
175 if (slugBytes !=
nullptr) {
177 slugBytes->data(), slugBytes->size(), &fStrikeClient);
178 this->drawSlug(slug.get(), layer->paint());
SkRect sourceBoundsWithOrigin() const
static sk_sp< Slug > Deserialize(const void *data, size_t size, const SkStrikeClient *client=nullptr)