xref: /aosp_15_r20/external/skia/dm/DMJsonWriter.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2014 Google Inc.
3*c8dee2aaSAndroid Build Coastguard Worker  *
4*c8dee2aaSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker  * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker  */
7*c8dee2aaSAndroid Build Coastguard Worker 
8*c8dee2aaSAndroid Build Coastguard Worker #ifndef DMJsonWriter_DEFINED
9*c8dee2aaSAndroid Build Coastguard Worker #define DMJsonWriter_DEFINED
10*c8dee2aaSAndroid Build Coastguard Worker 
11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkString.h"
12*c8dee2aaSAndroid Build Coastguard Worker #include "tools/flags/CommandLineFlags.h"
13*c8dee2aaSAndroid Build Coastguard Worker 
14*c8dee2aaSAndroid Build Coastguard Worker namespace DM {
15*c8dee2aaSAndroid Build Coastguard Worker 
16*c8dee2aaSAndroid Build Coastguard Worker /**
17*c8dee2aaSAndroid Build Coastguard Worker  *  Class for collecting results from DM and writing to a json file.
18*c8dee2aaSAndroid Build Coastguard Worker  *  All methods are thread-safe.
19*c8dee2aaSAndroid Build Coastguard Worker  */
20*c8dee2aaSAndroid Build Coastguard Worker class JsonWriter {
21*c8dee2aaSAndroid Build Coastguard Worker public:
22*c8dee2aaSAndroid Build Coastguard Worker     /**
23*c8dee2aaSAndroid Build Coastguard Worker      *  Info describing a single run.
24*c8dee2aaSAndroid Build Coastguard Worker      */
25*c8dee2aaSAndroid Build Coastguard Worker     struct BitmapResult {
26*c8dee2aaSAndroid Build Coastguard Worker         SkString name;            // E.g. "ninepatch-stretch", "desk_gws.skp"
27*c8dee2aaSAndroid Build Coastguard Worker         SkString config;          //      "gpu", "8888", "serialize", "pipe"
28*c8dee2aaSAndroid Build Coastguard Worker         SkString sourceType;      //      "gm", "skp", "image"
29*c8dee2aaSAndroid Build Coastguard Worker         SkString sourceOptions;   //      "image", "codec", "subset", "scanline"
30*c8dee2aaSAndroid Build Coastguard Worker         SkString md5;             // In ASCII, so 32 bytes long.
31*c8dee2aaSAndroid Build Coastguard Worker         SkString ext;             // Extension of file we wrote: "png", "pdf", ...
32*c8dee2aaSAndroid Build Coastguard Worker         SkString gamut;
33*c8dee2aaSAndroid Build Coastguard Worker         SkString transferFn;
34*c8dee2aaSAndroid Build Coastguard Worker         SkString colorType;
35*c8dee2aaSAndroid Build Coastguard Worker         SkString alphaType;
36*c8dee2aaSAndroid Build Coastguard Worker         SkString colorDepth;
37*c8dee2aaSAndroid Build Coastguard Worker     };
38*c8dee2aaSAndroid Build Coastguard Worker 
39*c8dee2aaSAndroid Build Coastguard Worker     /**
40*c8dee2aaSAndroid Build Coastguard Worker      *  Add a result to the end of the list of results.
41*c8dee2aaSAndroid Build Coastguard Worker      */
42*c8dee2aaSAndroid Build Coastguard Worker     static void AddBitmapResult(const BitmapResult&);
43*c8dee2aaSAndroid Build Coastguard Worker 
44*c8dee2aaSAndroid Build Coastguard Worker     /**
45*c8dee2aaSAndroid Build Coastguard Worker      *  Write all collected results to the file dir/dm.json.
46*c8dee2aaSAndroid Build Coastguard Worker      */
47*c8dee2aaSAndroid Build Coastguard Worker     static void DumpJson(const char* dir,
48*c8dee2aaSAndroid Build Coastguard Worker                          CommandLineFlags::StringArray key,
49*c8dee2aaSAndroid Build Coastguard Worker                          CommandLineFlags::StringArray properties);
50*c8dee2aaSAndroid Build Coastguard Worker 
51*c8dee2aaSAndroid Build Coastguard Worker     /**
52*c8dee2aaSAndroid Build Coastguard Worker      * Read JSON file at path written by DumpJson, calling callback for each
53*c8dee2aaSAndroid Build Coastguard Worker      * BitmapResult recorded in the file.  Return success.
54*c8dee2aaSAndroid Build Coastguard Worker      */
55*c8dee2aaSAndroid Build Coastguard Worker     static bool ReadJson(const char* path, void(*callback)(BitmapResult));
56*c8dee2aaSAndroid Build Coastguard Worker };
57*c8dee2aaSAndroid Build Coastguard Worker 
58*c8dee2aaSAndroid Build Coastguard Worker 
59*c8dee2aaSAndroid Build Coastguard Worker } // namespace DM
60*c8dee2aaSAndroid Build Coastguard Worker #endif // DMJsonWriter_DEFINED
61