blob: 03ff3fc397151897352b3218bccf6efd2b8758ba [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;
31 SkSVGElement* ref;
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}