| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "SkSVGSVG.h" | 10 #include "SkSVGSVG.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 void SkSVGSVG::translate(SkSVGParser& parser, bool defState) { | 36 void SkSVGSVG::translate(SkSVGParser& parser, bool defState) { |
| 37 SkScalar height, width; | 37 SkScalar height, width; |
| 38 SkScalar viewBox[4]; | 38 SkScalar viewBox[4]; |
| 39 const char* hSuffix = SkParse::FindScalar(f_height.c_str(), &height); | 39 const char* hSuffix = SkParse::FindScalar(f_height.c_str(), &height); |
| 40 if (strcmp(hSuffix, "pt") == 0) | 40 if (strcmp(hSuffix, "pt") == 0) |
| 41 height = SkScalarMulDiv(height, SK_Scalar1 * 72, SK_Scalar1 * 96); | 41 height = SkScalarMulDiv(height, SK_Scalar1 * 72, SK_Scalar1 * 96); |
| 42 const char* wSuffix = SkParse::FindScalar(f_width.c_str(), &width); | 42 const char* wSuffix = SkParse::FindScalar(f_width.c_str(), &width); |
| 43 if (strcmp(wSuffix, "pt") == 0) | 43 if (strcmp(wSuffix, "pt") == 0) |
| 44 width = SkScalarMulDiv(width, SK_Scalar1 * 72, SK_Scalar1 * 96); | 44 width = SkScalarMulDiv(width, SK_Scalar1 * 72, SK_Scalar1 * 96); |
| 45 SkParse::FindScalars(f_viewBox.c_str(), viewBox, 4); | 45 SkParse::FindScalars(f_viewBox.c_str(), viewBox, 4); |
| 46 SkRect box = SkRect::MakeLTRB(viewBox[0] / width, viewBox[1] / height, | 46 SkRect box; |
| 47 viewBox[2] / width, viewBox[3] / height); | 47 box.fLeft = SkScalarDiv(viewBox[0], width); |
| 48 box.fTop = SkScalarDiv(viewBox[1], height); |
| 49 box.fRight = SkScalarDiv(viewBox[2], width); |
| 50 box.fBottom = SkScalarDiv(viewBox[3], height); |
| 48 if (box.fLeft == 0 && box.fTop == 0 && | 51 if (box.fLeft == 0 && box.fTop == 0 && |
| 49 box.fRight == SK_Scalar1 && box.fBottom == SK_Scalar1) | 52 box.fRight == SK_Scalar1 && box.fBottom == SK_Scalar1) |
| 50 return; | 53 return; |
| 51 parser._startElement("matrix"); | 54 parser._startElement("matrix"); |
| 52 if (box.fLeft != 0) { | 55 if (box.fLeft != 0) { |
| 53 SkString x; | 56 SkString x; |
| 54 x.appendScalar(box.fLeft); | 57 x.appendScalar(box.fLeft); |
| 55 parser._addAttributeLen("translateX", x.c_str(), x.size()); | 58 parser._addAttributeLen("translateX", x.c_str(), x.size()); |
| 56 } | 59 } |
| 57 if (box.fTop != 0) { | 60 if (box.fTop != 0) { |
| 58 SkString y; | 61 SkString y; |
| 59 y.appendScalar(box.fTop); | 62 y.appendScalar(box.fTop); |
| 60 parser._addAttributeLen("translateY", y.c_str(), y.size()); | 63 parser._addAttributeLen("translateY", y.c_str(), y.size()); |
| 61 } | 64 } |
| 62 if (box.fRight != SK_Scalar1) { | 65 if (box.fRight != SK_Scalar1) { |
| 63 SkString x; | 66 SkString x; |
| 64 x.appendScalar(box.fRight); | 67 x.appendScalar(box.fRight); |
| 65 parser._addAttributeLen("scaleX", x.c_str(), x.size()); | 68 parser._addAttributeLen("scaleX", x.c_str(), x.size()); |
| 66 } | 69 } |
| 67 if (box.fBottom != SK_Scalar1) { | 70 if (box.fBottom != SK_Scalar1) { |
| 68 SkString y; | 71 SkString y; |
| 69 y.appendScalar(box.fBottom); | 72 y.appendScalar(box.fBottom); |
| 70 parser._addAttributeLen("scaleY", y.c_str(), y.size()); | 73 parser._addAttributeLen("scaleY", y.c_str(), y.size()); |
| 71 } | 74 } |
| 72 parser._endElement(); | 75 parser._endElement(); |
| 73 } | 76 } |
| OLD | NEW |