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