• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2019 Google LLC.
2 // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
3 #ifndef SkTextBlobTrace_DEFINED
4 #define SkTextBlobTrace_DEFINED
5 
6 #include "include/core/SkTypes.h"
7 
8 #include "include/core/SkPaint.h"
9 #include "include/core/SkPoint.h"
10 #include "include/core/SkStream.h"
11 #include "include/core/SkTextBlob.h"
12 #include "src/core/SkGlyphRun.h"
13 #include "src/core/SkWriteBuffer.h"
14 
15 #include <cstdint>
16 #include <vector>
17 
18 namespace SkTextBlobTrace {
19 
20 struct Record {
21     uint32_t origUniqueID;
22     SkPaint paint;
23     SkPoint offset;
24     sk_sp<SkTextBlob> blob;
25 };
26 
27 std::vector<SkTextBlobTrace::Record> CreateBlobTrace(SkStream* stream);
28 
29 void DumpTrace(const std::vector<SkTextBlobTrace::Record>&);
30 
31 class Capture {
32 public:
33     Capture();
34     ~Capture();
35     void capture(const SkGlyphRunList&, const SkPaint&);
36     // If `dst` is nullptr, write to a file.
37     void dump(SkWStream* dst = nullptr) const;
38 
39 private:
40     size_t fBlobCount = 0;
41     sk_sp<SkRefCntSet> fTypefaceSet;
42     SkBinaryWriteBuffer fWriteBuffer;
43 
44     Capture(const Capture&) = delete;
45     Capture& operator=(const Capture&) = delete;
46 };
47 
48 }  // namespace SkTextBlobTrace
49 #endif  // SkTextBlobTrace_DEFINED
50