1685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com 2685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com/* 3685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Copyright 2006 The Android Open Source Project 4685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * 5685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * found in the LICENSE file. 7685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com */ 8685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com 9bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 10bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkSVGElements.h" 11bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkSVGParser.h" 12bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 13bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comSkSVGBase::~SkSVGBase() { 14bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 15bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 16dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.comvoid SkSVGBase::addAttribute(SkSVGParser& parser, int attrIndex, 17bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com const char* attrValue, size_t attrLength) { 18bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkString* first = (SkString*) ((char*) this + sizeof(SkSVGElement)); 19bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com first += attrIndex; 20bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com first->set(attrValue, attrLength); 21bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 22bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 23bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 24bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comSkSVGElement::SkSVGElement() : fParent(NULL), fIsDef(false), fIsNotDef(true) { 25bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 26bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 27bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comSkSVGElement::~SkSVGElement() { 28bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 29bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 30bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comSkSVGElement* SkSVGElement::getGradient() { 31bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return NULL; 32bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 33bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 34bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.combool SkSVGElement::isGroupParent() { 35bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkSVGElement* parent = fParent; 36bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com while (parent) { 37bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com if (parent->getType() != SkSVGType_G) 38bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return false; 39bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com parent = parent->fParent; 40bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com } 41bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return true; 42bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 43bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 44bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.combool SkSVGElement::isDef() { 45bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return isGroupParent() == false ? fParent->isDef() : fIsDef; 46bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 47bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 48bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.combool SkSVGElement::isFlushable() { 49bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return true; 50bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 51bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 52bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.combool SkSVGElement::isGroup() { 53bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return false; 54bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 55bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 56bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.combool SkSVGElement::isNotDef() { 57bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return isGroupParent() == false ? fParent->isNotDef() : fIsNotDef; 58bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 59bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 60bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.combool SkSVGElement::onEndElement(SkSVGParser& parser) { 61bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com if (f_id.size() > 0) 62bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com parser.getIDs().set(f_id.c_str(), f_id.size(), this); 63bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return false; 64bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 65bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 66bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.combool SkSVGElement::onStartElement(SkSVGElement* child) { 67bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com *fChildren.append() = child; 68bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return false; 69bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 70bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 71bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comvoid SkSVGElement::translate(SkSVGParser& parser, bool) { 72bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com if (f_id.size() > 0) 73bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SVG_ADD_ATTRIBUTE(id); 74bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 75bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 76bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comvoid SkSVGElement::setIsDef() { 77bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fIsDef = isDef(); 78bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 79bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 80bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com//void SkSVGElement::setIsNotDef() { 81bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com// fIsNotDef = isNotDef(); 82bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com//} 83bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 84bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comvoid SkSVGElement::write(SkSVGParser& , SkString& ) { 85dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com SkASSERT(0); 86bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 87