11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkSVGImage.h" 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkSVGParser.h" 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkSVGAttribute SkSVGImage::gAttributes[] = { 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SVG_ATTRIBUTE(height), 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SVG_ATTRIBUTE(width), 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SVG_ATTRIBUTE(x), 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SVG_LITERAL_ATTRIBUTE(xlink:href, f_xlink_href), 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SVG_ATTRIBUTE(y) 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_SVG_INFO(Image) 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkSVGImage::translate(SkSVGParser& parser, bool defState) { 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project parser._startElement("image"); 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project INHERITED::translate(parser, defState); 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SVG_ADD_ATTRIBUTE(x); 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SVG_ADD_ATTRIBUTE(y); 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// SVG_ADD_ATTRIBUTE(width); 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project// SVG_ADD_ATTRIBUTE(height); 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project translateImage(parser); 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project parser._endElement(); 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkSVGImage::translateImage(SkSVGParser& parser) { 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(f_xlink_href.size() > 0); 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const char* data = f_xlink_href.c_str(); 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(strncmp(data, "data:image/", 11) == 0); 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project data += 11; 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(strncmp(data, "png;", 4) == 0 || strncmp(data, "jpeg;", 5) == 0); 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project data = strchr(data, ';'); 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(strncmp(data, ";base64,", 8) == 0); 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project data += 8; 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project parser._addAttribute("base64", data); 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 45