1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch/* 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * Copyright 2006 The Android Open Source Project 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * Use of this source code is governed by a BSD-style license that can be 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * found in the LICENSE file. 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch */ 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "SkSVGImage.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "SkSVGParser.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochconst SkSVGAttribute SkSVGImage::gAttributes[] = { 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SVG_ATTRIBUTE(height), 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SVG_ATTRIBUTE(width), 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SVG_ATTRIBUTE(x), 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SVG_LITERAL_ATTRIBUTE(xlink:href, f_xlink_href), 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SVG_ATTRIBUTE(y) 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 21116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDEFINE_SVG_INFO(Image) 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid SkSVGImage::translate(SkSVGParser& parser, bool defState) { 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch parser._startElement("image"); 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch INHERITED::translate(parser, defState); 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SVG_ADD_ATTRIBUTE(x); 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SVG_ADD_ATTRIBUTE(y); 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// SVG_ADD_ATTRIBUTE(width); 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// SVG_ADD_ATTRIBUTE(height); 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch translateImage(parser); 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch parser._endElement(); 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid SkSVGImage::translateImage(SkSVGParser& parser) { 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SkASSERT(f_xlink_href.size() > 0); 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const char* data = f_xlink_href.c_str(); 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SkASSERT(strncmp(data, "data:image/", 11) == 0); 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch data += 11; 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SkASSERT(strncmp(data, "png;", 4) == 0 || strncmp(data, "jpeg;", 5) == 0); 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch data = strchr(data, ';'); 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SkASSERT(strncmp(data, ";base64,", 8) == 0); 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch data += 8; 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch parser._addAttribute("base64", data); 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch