/* * Copyright 2015 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef sktext_gpu_TextBlobRedrawCoordinator_DEFINED #define sktext_gpu_TextBlobRedrawCoordinator_DEFINED #include "include/core/SkRefCnt.h" #include "include/private/base/SkTArray.h" #include "include/private/base/SkThreadAnnotations.h" #include "src/base/SkSpinlock.h" #include "src/base/SkTInternalLList.h" #include "src/core/SkMessageBus.h" #include "src/core/SkTHash.h" #include "src/text/gpu/SubRunContainer.h" #include "src/text/gpu/TextBlob.h" #include <cstddef> #include <cstdint> 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 { … }; } // namespace sktext::gpu #endif // sktext_gpu_TextBlobRedrawCoordinator_DEFINED