1/* libs/graphics/svg/SkSVGEllipse.cpp 2** 3** Copyright 2006, The Android Open Source Project 4** 5** Licensed under the Apache License, Version 2.0 (the "License"); 6** you may not use this file except in compliance with the License. 7** You may obtain a copy of the License at 8** 9** http://www.apache.org/licenses/LICENSE-2.0 10** 11** Unless required by applicable law or agreed to in writing, software 12** distributed under the License is distributed on an "AS IS" BASIS, 13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14** See the License for the specific language governing permissions and 15** limitations under the License. 16*/ 17 18#include "SkSVGEllipse.h" 19#include "SkSVGParser.h" 20#include "SkParse.h" 21#include <stdio.h> 22 23const SkSVGAttribute SkSVGEllipse::gAttributes[] = { 24 SVG_ATTRIBUTE(cx), 25 SVG_ATTRIBUTE(cy), 26 SVG_ATTRIBUTE(rx), 27 SVG_ATTRIBUTE(ry) 28}; 29 30DEFINE_SVG_INFO(Ellipse) 31 32void SkSVGEllipse::translate(SkSVGParser& parser, bool defState) { 33 parser._startElement("oval"); 34 INHERITED::translate(parser, defState); 35 SkScalar cx, cy, rx, ry; 36 SkParse::FindScalar(f_cx.c_str(), &cx); 37 SkParse::FindScalar(f_cy.c_str(), &cy); 38 SkParse::FindScalar(f_rx.c_str(), &rx); 39 SkParse::FindScalar(f_ry.c_str(), &ry); 40 SkScalar left, top, right, bottom; 41 left = cx - rx; 42 top = cy - ry; 43 right = cx + rx; 44 bottom = cy + ry; 45 char scratch[16]; 46 sprintf(scratch, "%g", left); 47 parser._addAttribute("left", scratch); 48 sprintf(scratch, "%g", top); 49 parser._addAttribute("top", scratch); 50 sprintf(scratch, "%g", right); 51 parser._addAttribute("right", scratch); 52 sprintf(scratch, "%g", bottom); 53 parser._addAttribute("bottom", scratch); 54 parser._endElement(); 55} 56