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