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 
DEFINE_SVG_NO_INFO(ClipPath)14 DEFINE_SVG_NO_INFO(ClipPath)
15 
16 bool SkSVGClipPath::isDef() {
17     return true;
18 }
19 
isNotDef()20 bool SkSVGClipPath::isNotDef() {
21     return false;
22 }
23 
translate(SkSVGParser & parser,bool defState)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 }
41