| /* | 
 |  * Copyright 2014 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 | #ifndef DMJsonWriter_DEFINED | 
 | #define DMJsonWriter_DEFINED | 
 |  | 
 | #include "include/core/SkString.h" | 
 | #include "tools/flags/CommandLineFlags.h" | 
 |  | 
 | namespace DM { | 
 |  | 
 | /** | 
 |  *  Class for collecting results from DM and writing to a json file. | 
 |  *  All methods are thread-safe. | 
 |  */ | 
 | class JsonWriter { | 
 | public: | 
 |     /** | 
 |      *  Info describing a single run. | 
 |      */ | 
 |     struct BitmapResult { | 
 |         SkString name;            // E.g. "ninepatch-stretch", "desk_gws.skp" | 
 |         SkString config;          //      "gpu", "8888", "serialize", "pipe" | 
 |         SkString sourceType;      //      "gm", "skp", "image" | 
 |         SkString sourceOptions;   //      "image", "codec", "subset", "scanline" | 
 |         SkString md5;             // In ASCII, so 32 bytes long. | 
 |         SkString ext;             // Extension of file we wrote: "png", "pdf", ... | 
 |         SkString gamut; | 
 |         SkString transferFn; | 
 |         SkString colorType; | 
 |         SkString alphaType; | 
 |         SkString colorDepth; | 
 |     }; | 
 |  | 
 |     /** | 
 |      *  Add a result to the end of the list of results. | 
 |      */ | 
 |     static void AddBitmapResult(const BitmapResult&); | 
 |  | 
 |     /** | 
 |      *  Write all collected results to the file dir/dm.json. | 
 |      */ | 
 |     static void DumpJson(const char* dir, | 
 |                          CommandLineFlags::StringArray key, | 
 |                          CommandLineFlags::StringArray properties); | 
 |  | 
 |     /** | 
 |      * Read JSON file at path written by DumpJson, calling callback for each | 
 |      * BitmapResult recorded in the file.  Return success. | 
 |      */ | 
 |     static bool ReadJson(const char* path, void(*callback)(BitmapResult)); | 
 | }; | 
 |  | 
 |  | 
 | } // namespace DM | 
 | #endif // DMJsonWriter_DEFINED |