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
14DEFINE_SVG_NO_INFO(ClipPath)
15
16bool SkSVGClipPath::isDef() {
17    return true;
18}
19
20bool SkSVGClipPath::isNotDef() {
21    return false;
22}
23
24void 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