diff options
author | 2016-07-12 14:50:41 -0700 | |
---|---|---|
committer | 2016-07-12 14:50:41 -0700 | |
commit | 6d3fb898d5f73a82e36f11c712a633c3921ed518 (patch) | |
tree | edbc0625d6120008ac50c710f7486cc26be13a97 /tools/debugger/SkDrawCommand.cpp | |
parent | 2052f313f0fa16daae86e6f298e12e6f23604036 (diff) |
Added the framework for having canvas/recorder/picture record depth_set's.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2127233002
Review-Url: https://codereview.chromium.org/2127233002
Diffstat (limited to 'tools/debugger/SkDrawCommand.cpp')
-rw-r--r-- | tools/debugger/SkDrawCommand.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp index ecd6a7003f..8f42cb70ec 100644 --- a/tools/debugger/SkDrawCommand.cpp +++ b/tools/debugger/SkDrawCommand.cpp @@ -28,6 +28,7 @@ #define SKDEBUGCANVAS_ATTRIBUTE_COMMAND "command" #define SKDEBUGCANVAS_ATTRIBUTE_VISIBLE "visible" #define SKDEBUGCANVAS_ATTRIBUTE_MATRIX "matrix" +#define SKDEBUGCANVAS_ATTRIBUTE_DRAWDEPTHTRANS "drawDepthTranslation" #define SKDEBUGCANVAS_ATTRIBUTE_COORDS "coords" #define SKDEBUGCANVAS_ATTRIBUTE_BOUNDS "bounds" #define SKDEBUGCANVAS_ATTRIBUTE_PAINT "paint" @@ -211,6 +212,7 @@ const char* SkDrawCommand::GetCommandString(OpType type) { case kSave_OpType: return "Save"; case kSaveLayer_OpType: return "SaveLayer"; case kSetMatrix_OpType: return "SetMatrix"; + case kTranslateZ_OpType: return "TranslateZ"; default: SkDebugf("OpType error 0x%08x\n", type); SkASSERT(0); @@ -268,6 +270,8 @@ SkDrawCommand* SkDrawCommand::fromJSON(Json::Value& command, UrlDataManager& url INSTALL_FACTORY(Save); INSTALL_FACTORY(SaveLayer); INSTALL_FACTORY(SetMatrix); + + INSTALL_FACTORY(TranslateZ); } SkString name = SkString(command[SKDEBUGCANVAS_ATTRIBUTE_COMMAND].asCString()); FROM_JSON* factory = factories.find(name); @@ -470,6 +474,11 @@ Json::Value SkDrawCommand::MakeJsonMatrix(const SkMatrix& matrix) { return result; } +Json::Value SkDrawCommand::MakeJsonScalar(SkScalar z) { + Json::Value result(z); + return result; +} + Json::Value SkDrawCommand::MakeJsonPath(const SkPath& path) { Json::Value result(Json::objectValue); switch (path.getFillType()) { @@ -1482,6 +1491,11 @@ static void extract_json_matrix(Json::Value& matrix, SkMatrix* result) { result->set9(values); } +static void extract_json_scalar(Json::Value& scalar, SkScalar* result) { + SkScalar value = scalar.asFloat(); + *result = value; +} + static void extract_json_path(Json::Value& path, SkPath* result) { const char* fillType = path[SKDEBUGCANVAS_ATTRIBUTE_FILLTYPE].asCString(); if (!strcmp(fillType, SKDEBUGCANVAS_FILLTYPE_WINDING)) { @@ -3295,3 +3309,26 @@ SkSetMatrixCommand* SkSetMatrixCommand::fromJSON(Json::Value& command, extract_json_matrix(command[SKDEBUGCANVAS_ATTRIBUTE_MATRIX], &matrix); return new SkSetMatrixCommand(matrix); } + +SkTranslateZCommand::SkTranslateZCommand(SkScalar z) + : INHERITED(kTranslateZ_OpType) { + fZTranslate = z; + fInfo.push(SkObjectParser::ScalarToString(fZTranslate, "drawDepthTranslation")); +} + +void SkTranslateZCommand::execute(SkCanvas* canvas) const { + canvas->translateZ(fZTranslate); +} + +Json::Value SkTranslateZCommand::toJSON(UrlDataManager& urlDataManager) const { + Json::Value result = INHERITED::toJSON(urlDataManager); + result[SKDEBUGCANVAS_ATTRIBUTE_DRAWDEPTHTRANS] = MakeJsonScalar(fZTranslate); + return result; +} + +SkTranslateZCommand* SkTranslateZCommand::fromJSON(Json::Value& command, + UrlDataManager& urlDataManager) { + SkScalar z; + extract_json_scalar(command[SKDEBUGCANVAS_ATTRIBUTE_DRAWDEPTHTRANS], &z); + return new SkTranslateZCommand(z); +} |