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 "SkSVGPath.h" 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkSVGParser.h" 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkSVGAttribute SkSVGPath::gAttributes[] = { 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SVG_ATTRIBUTE(d) 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_SVG_INFO(Path) 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkSVGPath::translate(SkSVGParser& parser, bool defState) { 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project parser._startElement("path"); 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project INHERITED::translate(parser, defState); 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project bool hasMultiplePaths = false; 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const char* firstZ = strchr(f_d.c_str(), 'z'); 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (firstZ != NULL) { 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project firstZ++; // skip over 'z' 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project while (*firstZ == ' ') 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project firstZ++; 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project hasMultiplePaths = *firstZ != '\0'; 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (hasMultiplePaths) { 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkString& fillRule = parser.getPaintLast(SkSVGPaint::kFillRule); 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (fillRule.size() > 0) 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project parser._addAttribute("fillType", fillRule.equals("evenodd") ? "evenOdd" : "winding"); 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SVG_ADD_ATTRIBUTE(d); 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project parser._endElement(); 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 38