|
1 |
|
2 /* |
|
3 * Copyright 2006 The Android Open Source Project |
|
4 * |
|
5 * Use of this source code is governed by a BSD-style license that can be |
|
6 * found in the LICENSE file. |
|
7 */ |
|
8 |
|
9 |
|
10 #include "SkSVGClipPath.h" |
|
11 #include "SkSVGParser.h" |
|
12 #include "SkSVGUse.h" |
|
13 |
|
14 DEFINE_SVG_NO_INFO(ClipPath) |
|
15 |
|
16 bool SkSVGClipPath::isDef() { |
|
17 return true; |
|
18 } |
|
19 |
|
20 bool SkSVGClipPath::isNotDef() { |
|
21 return false; |
|
22 } |
|
23 |
|
24 void SkSVGClipPath::translate(SkSVGParser& parser, bool defState) { |
|
25 parser._startElement("clip"); |
|
26 INHERITED::translate(parser, defState); |
|
27 SkASSERT(fChildren.count() == 1); |
|
28 SkSVGElement* child = *fChildren.begin(); |
|
29 SkASSERT(child->getType() == SkSVGType_Use); |
|
30 SkSVGUse* use = (SkSVGUse*) child; |
|
31 SkSVGElement* ref = NULL; |
|
32 const char* refStr = &use->f_xlink_href.c_str()[1]; |
|
33 SkASSERT(parser.getIDs().find(refStr, &ref)); |
|
34 SkASSERT(ref); |
|
35 if (ref->getType() == SkSVGType_Rect) |
|
36 parser._addAttribute("rectangle", refStr); |
|
37 else |
|
38 parser._addAttribute("path", refStr); |
|
39 parser._endElement(); |
|
40 } |