other-licenses/skia-npapi/ANPPath.cpp

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

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 }

mercurial