Lines Matching refs:SkTextBlob
43 size_t SkTextBlob::RunRecord::StorageSize(uint32_t glyphCount, uint32_t textSize, in StorageSize()
44 SkTextBlob::GlyphPositioning positioning, in StorageSize()
52 auto size = sizeof(SkTextBlob::RunRecord); in StorageSize()
65 const SkTextBlob::RunRecord* SkTextBlob::RunRecord::First(const SkTextBlob* blob) { in First()
71 const SkTextBlob::RunRecord* SkTextBlob::RunRecord::Next(const RunRecord* run) { in Next()
85 void SkTextBlob::RunRecord::validate(const uint8_t* storageTop) const { in validate()
98 static_assert(sizeof(SkTextBlob::RunRecord) == sizeof(RunRecordStorageEquivalent), in validate()
102 const SkTextBlob::RunRecord* SkTextBlob::RunRecord::NextUnchecked(const RunRecord* run) { in NextUnchecked()
111 size_t SkTextBlob::RunRecord::PosCount(uint32_t glyphCount, in PosCount()
112 SkTextBlob::GlyphPositioning positioning, in PosCount()
117 uint32_t* SkTextBlob::RunRecord::textSizePtr() const { in textSizePtr()
126 void SkTextBlob::RunRecord::grow(uint32_t count) { in grow()
148 SkTextBlob::SkTextBlob(const SkRect& bounds) in SkTextBlob() function in SkTextBlob
153 SkTextBlob::~SkTextBlob() { in ~SkTextBlob()
195 enum SkTextBlob::GlyphPositioning : uint8_t {
202 unsigned SkTextBlob::ScalarsPerGlyph(GlyphPositioning pos) { in ScalarsPerGlyph()
213 void SkTextBlob::operator delete(void* p) { in operator delete()
217 void* SkTextBlob::operator new(size_t) { in operator new()
221 void* SkTextBlob::operator new(size_t, void* p) { in operator new()
225 SkTextBlobRunIterator::SkTextBlobRunIterator(const SkTextBlob* blob) in SkTextBlobRunIterator()
226 : fCurrentRun(SkTextBlob::RunRecord::First(blob)) { in SkTextBlobRunIterator()
235 fCurrentRun = SkTextBlob::RunRecord::Next(fCurrentRun); in next()
241 static_assert(static_cast<GlyphPositioning>(SkTextBlob::kDefault_Positioning) == in positioning()
243 static_assert(static_cast<GlyphPositioning>(SkTextBlob::kHorizontal_Positioning) == in positioning()
245 static_assert(static_cast<GlyphPositioning>(SkTextBlob::kFull_Positioning) == in positioning()
247 static_assert(static_cast<GlyphPositioning>(SkTextBlob::kRSXform_Positioning) == in positioning()
254 return SkTextBlob::ScalarsPerGlyph(fCurrentRun->positioning()); in scalarsPerGlyph()
282 SkRect SkTextBlobBuilder::TightRunBounds(const SkTextBlob::RunRecord& run) { in TightRunBounds()
286 if (SkTextBlob::kDefault_Positioning == run.positioning()) { in TightRunBounds()
295 if (SkTextBlob::kRSXform_Positioning == run.positioning()) { in TightRunBounds()
298 SkASSERT((void*)(xform + run.glyphCount()) <= SkTextBlob::RunRecord::Next(&run)); in TightRunBounds()
303 SkASSERT(SkTextBlob::kFull_Positioning == run.positioning() || in TightRunBounds()
304 SkTextBlob::kHorizontal_Positioning == run.positioning()); in TightRunBounds()
310 const SkScalar* glyphPosY = (run.positioning() == SkTextBlob::kFull_Positioning) ? in TightRunBounds()
312 const unsigned posXInc = SkTextBlob::ScalarsPerGlyph(run.positioning()); in TightRunBounds()
313 const unsigned posYInc = (run.positioning() == SkTextBlob::kFull_Positioning) ? in TightRunBounds()
323 SkASSERT((void*)glyphPosX <= SkTextBlob::RunRecord::Next(&run)); in TightRunBounds()
328 SkRect SkTextBlobBuilder::ConservativeRunBounds(const SkTextBlob::RunRecord& run) { in ConservativeRunBounds()
330 SkASSERT(SkTextBlob::kFull_Positioning == run.positioning() || in ConservativeRunBounds()
331 SkTextBlob::kHorizontal_Positioning == run.positioning() || in ConservativeRunBounds()
332 SkTextBlob::kRSXform_Positioning == run.positioning()); in ConservativeRunBounds()
344 case SkTextBlob::kHorizontal_Positioning: { in ConservativeRunBounds()
346 SkASSERT((void*)(glyphPos + run.glyphCount()) <= SkTextBlob::RunRecord::Next(&run)); in ConservativeRunBounds()
358 case SkTextBlob::kFull_Positioning: { in ConservativeRunBounds()
360 SkASSERT((void*)(glyphPosPts + run.glyphCount()) <= SkTextBlob::RunRecord::Next(&run)); in ConservativeRunBounds()
364 case SkTextBlob::kRSXform_Positioning: { in ConservativeRunBounds()
366 SkASSERT((void*)(xform + run.glyphCount()) <= SkTextBlob::RunRecord::Next(&run)); in ConservativeRunBounds()
376 if (run.positioning() != SkTextBlob::kRSXform_Positioning) { in ConservativeRunBounds()
395 SkASSERT(fLastRun >= SkAlignPtr(sizeof(SkTextBlob))); in updateDeferredBounds()
396 SkTextBlob::RunRecord* run = reinterpret_cast<SkTextBlob::RunRecord*>(fStorage.get() + in updateDeferredBounds()
400 SkRect runBounds = SkTextBlob::kDefault_Positioning == run->positioning() ? in updateDeferredBounds()
421 fStorageUsed = SkAlignPtr(sizeof(SkTextBlob)); in reserve()
431 bool SkTextBlobBuilder::mergeRun(const SkFont& font, SkTextBlob::GlyphPositioning positioning, in mergeRun()
438 SkASSERT(fLastRun >= SkAlignPtr(sizeof(SkTextBlob))); in mergeRun()
439 SkTextBlob::RunRecord* run = reinterpret_cast<SkTextBlob::RunRecord*>(fStorage.get() + in mergeRun()
457 if (SkTextBlob::kFull_Positioning != positioning in mergeRun()
458 && (SkTextBlob::kHorizontal_Positioning != positioning in mergeRun()
465 SkTextBlob::RunRecord::StorageSize(run->glyphCount() + count, 0, positioning, &safe) - in mergeRun()
466 SkTextBlob::RunRecord::StorageSize(run->glyphCount() , 0, positioning, &safe); in mergeRun()
474 run = reinterpret_cast<SkTextBlob::RunRecord*>(fStorage.get() + fLastRun); in mergeRun()
481 + preMergeCount * SkTextBlob::ScalarsPerGlyph(positioning); in mergeRun()
492 SkTextBlob::GlyphPositioning positioning, in allocInternal()
504 size_t runSize = SkTextBlob::RunRecord::StorageSize(count, textSize, positioning, &safe); in allocInternal()
512 SkASSERT(fStorageUsed >= SkAlignPtr(sizeof(SkTextBlob))); in allocInternal()
515 SkTextBlob::RunRecord* run = new (fStorage.get() + fStorageUsed) in allocInternal()
516 SkTextBlob::RunRecord(count, textSize, offset, font, positioning); in allocInternal()
545 this->allocInternal(font, SkTextBlob::kDefault_Positioning, count, 0, {x, y}, bounds); in allocRun()
552 this->allocInternal(font, SkTextBlob::kHorizontal_Positioning, count, 0, {0, y}, bounds); in allocRunPosH()
558 this->allocInternal(font, SkTextBlob::kFull_Positioning, count, 0, {0, 0}, bounds); in allocRunPos()
564 this->allocInternal(font, SkTextBlob::kRSXform_Positioning, count, 0, {0, 0}, nullptr); in allocRunRSXform()
573 SkTextBlob::kDefault_Positioning, in allocRunText()
587 SkTextBlob::kHorizontal_Positioning, in allocRunTextPosH()
600 SkTextBlob::kFull_Positioning, in allocRunTextPos()
612 SkTextBlob::kRSXform_Positioning, in allocRunTextRSXform()
620 sk_sp<SkTextBlob> SkTextBlobBuilder::make() { in make()
634 auto* lastRun = reinterpret_cast<SkTextBlob::RunRecord*>(fStorage.get() + fLastRun); in make()
635 lastRun->fFlags |= SkTextBlob::RunRecord::kLast_Flag; in make()
637 SkTextBlob* blob = new (fStorage.release()) SkTextBlob(fBounds); in make()
638 SkDEBUGCODE(const_cast<SkTextBlob*>(blob)->fStorageSize = fStorageSize;) in make()
642 size_t validateSize = SkAlignPtr(sizeof(SkTextBlob)); in make()
643 for (const auto* run = SkTextBlob::RunRecord::First(blob); run; in make()
644 run = SkTextBlob::RunRecord::Next(run)) { in make()
645 validateSize += SkTextBlob::RunRecord::StorageSize( in make()
661 return sk_sp<SkTextBlob>(blob); in make()
666 void SkTextBlobPriv::Flatten(const SkTextBlob& blob, SkWriteBuffer& buffer) { in Flatten()
694 SkTextBlob::ScalarsPerGlyph( in Flatten()
695 SkTo<SkTextBlob::GlyphPositioning>(it.positioning()))); in Flatten()
708 sk_sp<SkTextBlob> SkTextBlobPriv::MakeFromBuffer(SkReadBuffer& reader) { in MakeFromBuffer()
723 const auto pos = SkTo<SkTextBlob::GlyphPositioning>(pe.positioning); in MakeFromBuffer()
724 if (glyphCount <= 0 || pos > SkTextBlob::kRSXform_Positioning) { in MakeFromBuffer()
742 SkTextBlob::ScalarsPerGlyph(pos))), in MakeFromBuffer()
753 case SkTextBlob::kDefault_Positioning: in MakeFromBuffer()
757 case SkTextBlob::kHorizontal_Positioning: in MakeFromBuffer()
761 case SkTextBlob::kFull_Positioning: in MakeFromBuffer()
764 case SkTextBlob::kRSXform_Positioning: in MakeFromBuffer()
791 sk_sp<SkTextBlob> SkTextBlob::MakeFromText(const void* text, size_t byteLength, const SkFont& font, in MakeFromText()
806 sk_sp<SkTextBlob> SkTextBlob::MakeFromPosText(const void* text, size_t byteLength, in MakeFromPosText()
820 sk_sp<SkTextBlob> SkTextBlob::MakeFromPosTextH(const void* text, size_t byteLength, in MakeFromPosTextH()
834 sk_sp<SkTextBlob> SkTextBlob::MakeFromRSXform(const void* text, size_t byteLength, in MakeFromRSXform()
848 sk_sp<SkData> SkTextBlob::serialize(const SkSerialProcs& procs) const { in serialize()
859 sk_sp<SkTextBlob> SkTextBlob::Deserialize(const void* data, size_t length, in Deserialize()
867 void SkTextBlob::TextBlobSetShareParas(int fId, int fSize, void* fPtr) in TextBlobSetShareParas()
874 void SkTextBlob::TextBlobFlatten(SkWriteBuffer& buffer) in TextBlobFlatten()
880 void SkTextBlob::dump(std::string& desc, int depth) const { in dump()
890 size_t SkTextBlob::serialize(const SkSerialProcs& procs, void* memory, size_t memory_size) const { in serialize()
954 int SkTextBlob::getIntercepts(const SkScalar bounds[2], SkScalar intervals[], in getIntercepts()
1001 SkTextBlob::Iter::Iter(const SkTextBlob& blob) { in Iter()
1005 bool SkTextBlob::Iter::next(Run* rec) { in next()
1027 bool SkTextBlob::Iter::experimentalNext(ExperimentalRun* rec) { in experimentalNext()
1045 void GetGlyphIDforTextBlob(const SkTextBlob* blob, std::vector<SkGlyphID>& glyphIds) in GetGlyphIDforTextBlob()
1057 SkPath GetPathforTextBlob(const SkGlyphID& glyphId, const SkTextBlob* blob) in GetPathforTextBlob()
1068 void GetPointsForTextBlob(const SkTextBlob* blob, std::vector<SkPoint>& points) in GetPointsForTextBlob()