Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /*
2 * Copyright 2009, The Android Open Source Project
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
26 // must include config.h first for webkit to fiddle with new/delete
27 #include "SkANP.h"
29 static ANPPath* anp_newPath() {
30 return new ANPPath;
31 }
33 static void anp_deletePath(ANPPath* path) {
34 delete path;
35 }
37 static void anp_copy(ANPPath* dst, const ANPPath* src) {
38 *dst = *src;
39 }
41 static bool anp_equal(const ANPPath* p0, const ANPPath* p1) {
42 return *p0 == *p1;
43 }
45 static void anp_reset(ANPPath* path) {
46 path->reset();
47 }
49 static bool anp_isEmpty(const ANPPath* path) {
50 return path->isEmpty();
51 }
53 static void anp_getBounds(const ANPPath* path, ANPRectF* bounds) {
54 SkANP::SetRect(bounds, path->getBounds());
55 }
57 static void anp_moveTo(ANPPath* path, float x, float y) {
58 path->moveTo(SkFloatToScalar(x), SkFloatToScalar(y));
59 }
61 static void anp_lineTo(ANPPath* path, float x, float y) {
62 path->lineTo(SkFloatToScalar(x), SkFloatToScalar(y));
63 }
65 static void anp_quadTo(ANPPath* path, float x0, float y0, float x1, float y1) {
66 path->quadTo(SkFloatToScalar(x0), SkFloatToScalar(y0),
67 SkFloatToScalar(x1), SkFloatToScalar(y1));
68 }
70 static void anp_cubicTo(ANPPath* path, float x0, float y0,
71 float x1, float y1, float x2, float y2) {
72 path->cubicTo(SkFloatToScalar(x0), SkFloatToScalar(y0),
73 SkFloatToScalar(x1), SkFloatToScalar(y1),
74 SkFloatToScalar(x2), SkFloatToScalar(y2));
75 }
77 static void anp_close(ANPPath* path) {
78 path->close();
79 }
81 static void anp_offset(ANPPath* path, float dx, float dy, ANPPath* dst) {
82 path->offset(SkFloatToScalar(dx), SkFloatToScalar(dy), dst);
83 }
85 static void anp_transform(ANPPath* src, const ANPMatrix* matrix,
86 ANPPath* dst) {
87 src->transform(*matrix, dst);
88 }
90 ///////////////////////////////////////////////////////////////////////////////
92 #define ASSIGN(obj, name) (obj)->name = anp_##name
94 void InitPathInterface(ANPPathInterfaceV0* i) {
95 ASSIGN(i, newPath);
96 ASSIGN(i, deletePath);
97 ASSIGN(i, copy);
98 ASSIGN(i, equal);
99 ASSIGN(i, reset);
100 ASSIGN(i, isEmpty);
101 ASSIGN(i, getBounds);
102 ASSIGN(i, moveTo);
103 ASSIGN(i, lineTo);
104 ASSIGN(i, quadTo);
105 ASSIGN(i, cubicTo);
106 ASSIGN(i, close);
107 ASSIGN(i, offset);
108 ASSIGN(i, transform);
109 }