blob: d5f2371a78cb06850a00983d2f255c1c8f7fc982 [file] [log] [blame]
// 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/SkGlyphRun.h"
#include "src/core/SkWriteBuffer.h"
#include <cstdint>
#include <vector>
namespace SkTextBlobTrace {
struct Record {
uint32_t origUniqueID;
SkPaint paint;
SkPoint offset;
sk_sp<SkTextBlob> blob;
};
std::vector<SkTextBlobTrace::Record> CreateBlobTrace(SkStream* stream);
void DumpTrace(const std::vector<SkTextBlobTrace::Record>&);
class Capture {
public:
Capture();
~Capture();
void capture(const SkGlyphRunList&, const SkPaint&);
// If `dst` is nullptr, write to a file.
void dump(SkWStream* dst = nullptr) const;
private:
size_t fBlobCount = 0;
sk_sp<SkRefCntSet> fTypefaceSet;
SkBinaryWriteBuffer fWriteBuffer;
Capture(const Capture&) = delete;
Capture& operator=(const Capture&) = delete;
};
} // namespace SkTextBlobTrace
#endif // SkTextBlobTrace_DEFINED