Index: tools/debugger/SkDrawCommand.cpp |
diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp |
index 6c9287fa31d8c711948fd77a72aeb7bed721f6a6..7f5db7531a2d42584152ece176208d0cf3c66645 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" |
@@ -210,6 +211,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); |
@@ -266,6 +268,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); |
@@ -468,6 +472,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()) { |
@@ -1480,6 +1489,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)) { |
@@ -3224,3 +3238,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); |
+} |