blob: d27521deb2753d067cace8aa108bf94e157b9b9e [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001/* libs/graphics/svg/SkSVGCircle.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 "SkSVGCircle.h"
19#include "SkSVGParser.h"
20#include "SkParse.h"
21#include <stdio.h>
22
23const SkSVGAttribute SkSVGCircle::gAttributes[] = {
24 SVG_ATTRIBUTE(cx),
25 SVG_ATTRIBUTE(cy),
26 SVG_ATTRIBUTE(r)
27};
28
29DEFINE_SVG_INFO(Circle)
30
31void SkSVGCircle::translate(SkSVGParser& parser, bool defState) {
32 parser._startElement("oval");
33 INHERITED::translate(parser, defState);
34 SkScalar cx, cy, r;
35 SkParse::FindScalar(f_cx.c_str(), &cx);
36 SkParse::FindScalar(f_cy.c_str(), &cy);
37 SkParse::FindScalar(f_r.c_str(), &r);
38 SkScalar left, top, right, bottom;
39 left = cx - r;
40 top = cy - r;
41 right = cx + r;
42 bottom = cy + r;
43 char scratch[16];
44 sprintf(scratch, "%g", left);
45 parser._addAttribute("left", scratch);
46 sprintf(scratch, "%g", top);
47 parser._addAttribute("top", scratch);
48 sprintf(scratch, "%g", right);
49 parser._addAttribute("right", scratch);
50 sprintf(scratch, "%g", bottom);
51 parser._addAttribute("bottom", scratch);
52 parser._endElement();
53}