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