Home | History | Annotate | Download | only in parser
      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 = nullptr;
     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