blob: fa3a79918de900e9103a1c38fbf40c1fe091005e [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
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
reed@android.com8a1c16f2008-12-17 15:59:43 +00009
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;
tomhudson@google.com2c2508d2011-07-29 13:44:30 +000031 SkSVGElement* ref = NULL;
reed@android.com8a1c16f2008-12-17 15:59:43 +000032 const char* refStr = &use->f_xlink_href.c_str()[1];
33 SkASSERT(parser.getIDs().find(refStr, &ref));
34 SkASSERT(ref);
rmistry@google.comd6176b02012-08-23 18:14:13 +000035 if (ref->getType() == SkSVGType_Rect)
reed@android.com8a1c16f2008-12-17 15:59:43 +000036 parser._addAttribute("rectangle", refStr);
37 else
38 parser._addAttribute("path", refStr);
39 parser._endElement();
40}