class GrTextBlobTestingPeer; class SkCanvas; class SkMatrix; class SkPaint; struct SkStrikeDeviceInfo;
namespace sktext { class GlyphRunList; }
namespace sktext::gpu {
// TextBlobRedrawCoordinator reuses data from previous drawing operations using multiple criteria // to pick the best data for the draw. In addition, it provides a central service for managing // resource usage through a messageBus. // The draw data is stored in a three-tiered system. The first tier is keyed by the SkTextBlob's // uniqueID. The second tier uses the sktext::gpu::TextBlob's key to get a general match for the // draw. The last tier queries each sub run using canReuse to determine if each sub run can handle // the drawing parameters. class TextBlobRedrawCoordinator { public:
TextBlobRedrawCoordinator(uint32_t messageBusID);
int findBlobIndex(const TextBlob::Key& key) const;
uint32_t fID; // Current clients don't generate multiple GrAtlasTextBlobs per SkTextBlob, so an array w/ // linear search is acceptable. If usage changes, we should re-evaluate this structure.
skia_private::STArray<1, sk_sp<TextBlob>> fBlobs;
};
// If not already in the cache, then add it else, return the text blob from the cache.
sk_sp<TextBlob> addOrReturnExisting( const GlyphRunList& glyphRunList,
sk_sp<TextBlob> blob) SK_EXCLUDES(fSpinLock);
// In practice 'messageBusID' is always the unique ID of the owning GrContext const uint32_t fMessageBusID;
SkMessageBus<PurgeBlobMessage, uint32_t>::Inbox fPurgeBlobInbox SK_GUARDED_BY(fSpinLock);
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.