Lines Matching defs:blob
61 const SkTextBlob::RunRecord* SkTextBlob::RunRecord::First(const SkTextBlob* blob) {
62 // The first record (if present) is stored following the blob object.
64 return reinterpret_cast<const RunRecord*>(SkAlignPtr((uintptr_t)(blob + 1)));
210 SkTextBlobRunIterator::SkTextBlobRunIterator(const SkTextBlob* blob)
211 : fCurrentRun(SkTextBlob::RunRecord::First(blob)) {
212 SkDEBUGCODE(fStorageTop = (uint8_t*)blob + blob->fStorageSize;)
258 // The easiest way to accomplish that is to use the blob destructor.
404 // the first allocation also includes blob storage
622 SkTextBlob* blob = new (fStorage.release()) SkTextBlob(fBounds);
623 SkDEBUGCODE(const_cast<SkTextBlob*>(blob)->fStorageSize = fStorageSize;)
628 for (const auto* run = SkTextBlob::RunRecord::First(blob); run;
632 run->validate(reinterpret_cast<const uint8_t*>(blob) + fStorageUsed);
646 return sk_sp<SkTextBlob>(blob);
651 void SkTextBlobPriv::Flatten(const SkTextBlob& blob, SkWriteBuffer& buffer) {
654 buffer.writeRect(blob.bounds());
656 SkTextBlobRunIterator it(&blob);
972 SkTextBlob::Iter::Iter(const SkTextBlob& blob) {
973 fRunRecord = RunRecord::First(&blob);
1016 void GetGlyphIDforTextBlob(const SkTextBlob* blob, std::vector<SkGlyphID>& glyphIds)
1018 if (blob == nullptr) {
1021 SkTextBlobRunIterator it(blob);
1031 SkPath GetPathforTextBlob(const SkGlyphID& glyphId, const SkTextBlob* blob)
1034 if (blob == nullptr) {
1037 SkTextBlobRunIterator it(blob);
1045 void GetPointsForTextBlob(const SkTextBlob* blob, std::vector<SkPoint>& points)
1047 if (blob == nullptr) {
1050 SkTextBlobRunIterator run(blob);