20#include <unordered_map>
23int main(
int argc,
char** argv) {
24 std::unordered_map<uint64_t, uint32_t> counts;
27 for (
int i = 1; i < argc; i++) {
28 const char* filename =
argv[i];
36 &&
paint.getPathEffect() ==
nullptr
37 &&
paint.getMaskFilter() ==
nullptr;
39 uint64_t blobID = record.origUniqueID;
49 uint32_t posBits = (fx << 3 | fy) << 12;
51 uint64_t blobKey = blobID << 32u | posBits | colorBits;
52 auto lookup = counts.find(blobKey);
53 if (lookup == counts.end()) {
55 std::tie(lookup,
ok) = counts.insert({blobKey, 0});
59 std::cout << std::hex << blobKey <<
"\n";
62 std::cerr <<
"trace: " << filename
63 <<
" unique: " << counts.size()
65 <<
" ratio: " << (float)total/counts.size() <<
"\n";
67 SkRect bounds = {0, 0, 0, 0};
69 bounds.join(record.blob->bounds().makeOffset(record.offset.x(), record.offset.y()));
71 SkIRect iBounds = bounds.roundOut();
78 SkCanvas* canvas = surf->getCanvas();
79 canvas->
translate(8.0f - iBounds.
x(), 8.0f - iBounds.
y());
84 record.blob.get(), record.offset.x(), record.offset.y(), record.paint);
#define SkColorGetR(color)
#define SkColorGetG(color)
#define SkColorGetB(color)
constexpr SkColor SK_ColorWHITE
#define SkScalarToFixed(x)
static bool ok(int result)
SK_API SkString static SkString SkStringPrintf()
void translate(SkScalar dx, SkScalar dy)
void clear(SkColor color)
void drawTextBlob(const SkTextBlob *blob, SkScalar x, SkScalar y, const SkPaint &paint)
bool write(const void *buffer, size_t size) override
@ kFill_Style
set to fill geometry
static SkColor CanonicalColor(SkColor color)
@ kBackground
Suitable for threads that shouldn't disrupt high priority work.
SK_API bool Encode(SkWStream *dst, const SkPixmap &src, const Options &options)
SK_API sk_sp< SkSurface > Raster(const SkImageInfo &imageInfo, size_t rowBytes, const SkSurfaceProps *surfaceProps)
std::vector< SkTextBlobTrace::Record > CreateBlobTrace(SkStream *stream, sk_sp< SkFontMgr > lastResortMgr)
constexpr int32_t x() const
constexpr int32_t y() const
constexpr SkISize size() const
constexpr int32_t height() const
constexpr int32_t width() const
static SkImageInfo MakeN32Premul(int width, int height)
void offset(float dx, float dy)