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 |