Lines Matching refs:SkTextBlob
38 size_t SkTextBlob::RunRecord::StorageSize(uint32_t glyphCount, uint32_t textSize, in StorageSize()
39 SkTextBlob::GlyphPositioning positioning, in StorageSize()
47 auto size = sizeof(SkTextBlob::RunRecord); in StorageSize()
60 const SkTextBlob::RunRecord* SkTextBlob::RunRecord::First(const SkTextBlob* blob) { in First()
66 const SkTextBlob::RunRecord* SkTextBlob::RunRecord::Next(const RunRecord* run) { in Next()
80 void SkTextBlob::RunRecord::validate(const uint8_t* storageTop) const { in validate()
93 static_assert(sizeof(SkTextBlob::RunRecord) == sizeof(RunRecordStorageEquivalent), in validate()
97 const SkTextBlob::RunRecord* SkTextBlob::RunRecord::NextUnchecked(const RunRecord* run) { in NextUnchecked()
106 size_t SkTextBlob::RunRecord::PosCount(uint32_t glyphCount, in PosCount()
107 SkTextBlob::GlyphPositioning positioning, in PosCount()
112 uint32_t* SkTextBlob::RunRecord::textSizePtr() const { in textSizePtr()
121 void SkTextBlob::RunRecord::grow(uint32_t count) { in grow()
143 SkTextBlob::SkTextBlob(const SkRect& bounds) in SkTextBlob() function in SkTextBlob
148 SkTextBlob::~SkTextBlob() { in ~SkTextBlob()
179 enum SkTextBlob::GlyphPositioning : uint8_t {
186 unsigned SkTextBlob::ScalarsPerGlyph(GlyphPositioning pos) { in ScalarsPerGlyph()
197 void SkTextBlob::operator delete(void* p) { in operator delete()
201 void* SkTextBlob::operator new(size_t) { in operator new()
206 void* SkTextBlob::operator new(size_t, void* p) { in operator new()
210 SkTextBlobRunIterator::SkTextBlobRunIterator(const SkTextBlob* blob) in SkTextBlobRunIterator()
211 : fCurrentRun(SkTextBlob::RunRecord::First(blob)) { in SkTextBlobRunIterator()
220 fCurrentRun = SkTextBlob::RunRecord::Next(fCurrentRun); in next()
226 static_assert(static_cast<GlyphPositioning>(SkTextBlob::kDefault_Positioning) == in positioning()
228 static_assert(static_cast<GlyphPositioning>(SkTextBlob::kHorizontal_Positioning) == in positioning()
230 static_assert(static_cast<GlyphPositioning>(SkTextBlob::kFull_Positioning) == in positioning()
232 static_assert(static_cast<GlyphPositioning>(SkTextBlob::kRSXform_Positioning) == in positioning()
259 SkRect SkTextBlobBuilder::TightRunBounds(const SkTextBlob::RunRecord& run) { in TightRunBounds()
263 if (SkTextBlob::kDefault_Positioning == run.positioning()) { in TightRunBounds()
272 SkASSERT(SkTextBlob::kFull_Positioning == run.positioning() || in TightRunBounds()
273 SkTextBlob::kHorizontal_Positioning == run.positioning()); in TightRunBounds()
279 const SkScalar* glyphPosY = (run.positioning() == SkTextBlob::kFull_Positioning) ? in TightRunBounds()
281 const unsigned posXInc = SkTextBlob::ScalarsPerGlyph(run.positioning()); in TightRunBounds()
282 const unsigned posYInc = (run.positioning() == SkTextBlob::kFull_Positioning) ? in TightRunBounds()
292 SkASSERT((void*)glyphPosX <= SkTextBlob::RunRecord::Next(&run)); in TightRunBounds()
301 SkRect SkTextBlobBuilder::ConservativeRunBounds(const SkTextBlob::RunRecord& run) { in ConservativeRunBounds()
303 SkASSERT(SkTextBlob::kFull_Positioning == run.positioning() || in ConservativeRunBounds()
304 SkTextBlob::kHorizontal_Positioning == run.positioning() || in ConservativeRunBounds()
305 SkTextBlob::kRSXform_Positioning == run.positioning()); in ConservativeRunBounds()
317 case SkTextBlob::kHorizontal_Positioning: { in ConservativeRunBounds()
319 SkASSERT((void*)(glyphPos + run.glyphCount()) <= SkTextBlob::RunRecord::Next(&run)); in ConservativeRunBounds()
331 case SkTextBlob::kFull_Positioning: { in ConservativeRunBounds()
333 SkASSERT((void*)(glyphPosPts + run.glyphCount()) <= SkTextBlob::RunRecord::Next(&run)); in ConservativeRunBounds()
337 case SkTextBlob::kRSXform_Positioning: { in ConservativeRunBounds()
339 SkASSERT((void*)(xform + run.glyphCount()) <= SkTextBlob::RunRecord::Next(&run)); in ConservativeRunBounds()
349 if (run.positioning() != SkTextBlob::kRSXform_Positioning) { in ConservativeRunBounds()
368 SkASSERT(fLastRun >= SkAlignPtr(sizeof(SkTextBlob))); in updateDeferredBounds()
369 SkTextBlob::RunRecord* run = reinterpret_cast<SkTextBlob::RunRecord*>(fStorage.get() + in updateDeferredBounds()
373 SkRect runBounds = SkTextBlob::kDefault_Positioning == run->positioning() ? in updateDeferredBounds()
394 fStorageUsed = SkAlignPtr(sizeof(SkTextBlob)); in reserve()
404 bool SkTextBlobBuilder::mergeRun(const SkFont& font, SkTextBlob::GlyphPositioning positioning, in mergeRun()
411 SkASSERT(fLastRun >= SkAlignPtr(sizeof(SkTextBlob))); in mergeRun()
412 SkTextBlob::RunRecord* run = reinterpret_cast<SkTextBlob::RunRecord*>(fStorage.get() + in mergeRun()
430 if (SkTextBlob::kFull_Positioning != positioning in mergeRun()
431 && (SkTextBlob::kHorizontal_Positioning != positioning in mergeRun()
438 SkTextBlob::RunRecord::StorageSize(run->glyphCount() + count, 0, positioning, &safe) - in mergeRun()
439 SkTextBlob::RunRecord::StorageSize(run->glyphCount() , 0, positioning, &safe); in mergeRun()
447 run = reinterpret_cast<SkTextBlob::RunRecord*>(fStorage.get() + fLastRun); in mergeRun()
454 + preMergeCount * SkTextBlob::ScalarsPerGlyph(positioning); in mergeRun()
465 SkTextBlob::GlyphPositioning positioning, in allocInternal()
477 size_t runSize = SkTextBlob::RunRecord::StorageSize(count, textSize, positioning, &safe); in allocInternal()
485 SkASSERT(fStorageUsed >= SkAlignPtr(sizeof(SkTextBlob))); in allocInternal()
488 SkTextBlob::RunRecord* run = new (fStorage.get() + fStorageUsed) in allocInternal()
489 SkTextBlob::RunRecord(count, textSize, offset, font, positioning); in allocInternal()
518 this->allocInternal(font, SkTextBlob::kDefault_Positioning, count, 0, {x, y}, bounds); in allocRun()
525 this->allocInternal(font, SkTextBlob::kHorizontal_Positioning, count, 0, {0, y}, bounds); in allocRunPosH()
531 this->allocInternal(font, SkTextBlob::kFull_Positioning, count, 0, {0, 0}, bounds); in allocRunPos()
537 this->allocInternal(font, SkTextBlob::kRSXform_Positioning, count, 0, {0, 0}, nullptr); in allocRunRSXform()
546 …this->allocInternal(font, SkTextBlob::kDefault_Positioning, count, textByteCount, SkPoint::Make(x,… in allocRunText()
555 …this->allocInternal(font, SkTextBlob::kHorizontal_Positioning, count, textByteCount, SkPoint::Make… in allocRunTextPosH()
564 …this->allocInternal(font, SkTextBlob::kFull_Positioning, count, textByteCount, SkPoint::Make(0, 0)… in allocRunTextPos()
572 this->allocInternal(font, SkTextBlob::kRSXform_Positioning, count, textByteCount, in allocRunRSXform()
577 sk_sp<SkTextBlob> SkTextBlobBuilder::make() { in make()
591 auto* lastRun = reinterpret_cast<SkTextBlob::RunRecord*>(fStorage.get() + fLastRun); in make()
592 lastRun->fFlags |= SkTextBlob::RunRecord::kLast_Flag; in make()
594 SkTextBlob* blob = new (fStorage.release()) SkTextBlob(fBounds); in make()
595 SkDEBUGCODE(const_cast<SkTextBlob*>(blob)->fStorageSize = fStorageSize;) in make()
599 size_t validateSize = SkAlignPtr(sizeof(SkTextBlob)); in make()
600 for (const auto* run = SkTextBlob::RunRecord::First(blob); run; in make()
601 run = SkTextBlob::RunRecord::Next(run)) { in make()
602 validateSize += SkTextBlob::RunRecord::StorageSize( in make()
618 return sk_sp<SkTextBlob>(blob); in make()
644 int SkTextBlob::getIntercepts(const SkScalar bounds[2], SkScalar intervals[], in getIntercepts()
691 void SkTextBlobPriv::Flatten(const SkTextBlob& blob, SkWriteBuffer& buffer) { in Flatten()
719 SkTextBlob::ScalarsPerGlyph( in Flatten()
720 SkTo<SkTextBlob::GlyphPositioning>(it.positioning()))); in Flatten()
733 sk_sp<SkTextBlob> SkTextBlobPriv::MakeFromBuffer(SkReadBuffer& reader) { in MakeFromBuffer()
748 const auto pos = SkTo<SkTextBlob::GlyphPositioning>(pe.positioning); in MakeFromBuffer()
749 if (glyphCount <= 0 || pos > SkTextBlob::kRSXform_Positioning) { in MakeFromBuffer()
772 SkTextBlob::ScalarsPerGlyph(pos))), in MakeFromBuffer()
783 case SkTextBlob::kDefault_Positioning: in MakeFromBuffer()
787 case SkTextBlob::kHorizontal_Positioning: in MakeFromBuffer()
791 case SkTextBlob::kFull_Positioning: in MakeFromBuffer()
794 case SkTextBlob::kRSXform_Positioning: in MakeFromBuffer()
821 sk_sp<SkTextBlob> SkTextBlob::MakeFromText(const void* text, size_t byteLength, const SkFont& font, in MakeFromText()
833 sk_sp<SkTextBlob> SkTextBlob::MakeFromPosText(const void* text, size_t byteLength, in MakeFromPosText()
844 sk_sp<SkTextBlob> SkTextBlob::MakeFromPosTextH(const void* text, size_t byteLength, in MakeFromPosTextH()
855 sk_sp<SkTextBlob> SkTextBlob::MakeFromRSXform(const void* text, size_t byteLength, in MakeFromRSXform()
866 sk_sp<SkData> SkTextBlob::serialize(const SkSerialProcs& procs) const { in serialize()
877 sk_sp<SkTextBlob> SkTextBlob::Deserialize(const void* data, size_t length, in Deserialize()
886 size_t SkTextBlob::serialize(const SkSerialProcs& procs, void* memory, size_t memory_size) const { in serialize()