// Copyright 2019 Google LLC. // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. #ifndef SkTextBlobTrace_DEFINED #define SkTextBlobTrace_DEFINED #include "include/core/SkTypes.h" #include "include/core/SkPaint.h" #include "include/core/SkPoint.h" #include "include/core/SkStream.h" #include "include/core/SkTextBlob.h" #include "src/core/SkWriteBuffer.h" #include "src/text/GlyphRun.h" #include #include namespace SkTextBlobTrace { struct Record { uint32_t origUniqueID; SkPaint paint; SkPoint offset; sk_sp blob; }; std::vector CreateBlobTrace(SkStream* stream); void DumpTrace(const std::vector&); class Capture { public: Capture(); ~Capture(); void capture(const sktext::GlyphRunList&, const SkPaint&); // If `dst` is nullptr, write to a file. void dump(SkWStream* dst = nullptr) const; private: size_t fBlobCount = 0; sk_sp fTypefaceSet; SkBinaryWriteBuffer fWriteBuffer; Capture(const Capture&) = delete; Capture& operator=(const Capture&) = delete; }; } // namespace SkTextBlobTrace #endif // SkTextBlobTrace_DEFINED