jdk/src/share/classes/sun/java2d/pisces/TransformingPathConsumer2D.java
author ohair
Tue, 28 Dec 2010 15:53:50 -0800
changeset 7668 d4a77089c587
parent 6997 3642614e2282
child 8131 e2932d8114cb
permissions -rw-r--r--
6962318: Update copyright year Reviewed-by: xdono
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6997
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
     1
/*
7668
d4a77089c587 6962318: Update copyright year
ohair
parents: 6997
diff changeset
     2
 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
6997
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
     4
 *
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    10
 *
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    15
 * accompanied this code).
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    16
 *
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    20
 *
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    23
 * questions.
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    24
 */
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    25
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    26
package sun.java2d.pisces;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    27
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    28
import sun.awt.geom.PathConsumer2D;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    29
import java.awt.geom.AffineTransform;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    30
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    31
public class TransformingPathConsumer2D {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    32
    public static PathConsumer2D
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    33
        transformConsumer(PathConsumer2D out,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    34
                          AffineTransform at)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    35
    {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    36
        if (at == null) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    37
            return out;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    38
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    39
        float Mxx = (float) at.getScaleX();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    40
        float Mxy = (float) at.getShearX();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    41
        float Mxt = (float) at.getTranslateX();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    42
        float Myx = (float) at.getShearY();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    43
        float Myy = (float) at.getScaleY();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    44
        float Myt = (float) at.getTranslateY();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    45
        if (Mxy == 0f && Myx == 0f) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    46
            if (Mxx == 1f && Myy == 1f) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    47
                if (Mxt == 0f && Myt == 0f) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    48
                    return out;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    49
                } else {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    50
                    return new TranslateFilter(out, Mxt, Myt);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    51
                }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    52
            } else {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    53
                return new ScaleFilter(out, Mxx, Myy, Mxt, Myt);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    54
            }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    55
        } else {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    56
            return new TransformFilter(out, Mxx, Mxy, Mxt, Myx, Myy, Myt);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    57
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    58
    }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    59
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    60
    static class TranslateFilter implements PathConsumer2D {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    61
        PathConsumer2D out;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    62
        float tx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    63
        float ty;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    64
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    65
        TranslateFilter(PathConsumer2D out,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    66
                        float tx, float ty)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    67
        {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    68
            this.out = out;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    69
            this.tx = tx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    70
            this.ty = ty;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    71
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    72
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    73
        public void moveTo(float x0, float y0) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    74
            out.moveTo(x0 + tx, y0 + ty);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    75
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    76
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    77
        public void lineTo(float x1, float y1) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    78
            out.lineTo(x1 + tx, y1 + ty);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    79
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    80
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    81
        public void quadTo(float x1, float y1,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    82
                           float x2, float y2)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    83
        {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    84
            out.quadTo(x1 + tx, y1 + ty,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    85
                       x2 + tx, y2 + ty);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    86
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    87
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    88
        public void curveTo(float x1, float y1,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    89
                            float x2, float y2,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    90
                            float x3, float y3)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    91
        {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    92
            out.curveTo(x1 + tx, y1 + ty,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    93
                        x2 + tx, y2 + ty,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    94
                        x3 + tx, y3 + ty);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    95
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    96
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    97
        public void closePath() {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    98
            out.closePath();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
    99
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   100
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   101
        public void pathDone() {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   102
            out.pathDone();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   103
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   104
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   105
        public long getNativeConsumer() {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   106
            return 0;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   107
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   108
    }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   109
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   110
    static class ScaleFilter implements PathConsumer2D {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   111
        PathConsumer2D out;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   112
        float sx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   113
        float sy;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   114
        float tx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   115
        float ty;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   116
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   117
        ScaleFilter(PathConsumer2D out,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   118
                    float sx, float sy, float tx, float ty)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   119
        {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   120
            this.out = out;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   121
            this.sx = sx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   122
            this.sy = sy;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   123
            this.tx = tx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   124
            this.ty = ty;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   125
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   126
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   127
        public void moveTo(float x0, float y0) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   128
            out.moveTo(x0 * sx + tx, y0 * sy + ty);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   129
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   130
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   131
        public void lineTo(float x1, float y1) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   132
            out.lineTo(x1 * sx + tx, y1 * sy + ty);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   133
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   134
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   135
        public void quadTo(float x1, float y1,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   136
                           float x2, float y2)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   137
        {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   138
            out.quadTo(x1 * sx + tx, y1 * sy + ty,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   139
                       x2 * sx + tx, y2 * sy + ty);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   140
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   141
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   142
        public void curveTo(float x1, float y1,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   143
                            float x2, float y2,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   144
                            float x3, float y3)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   145
        {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   146
            out.curveTo(x1 * sx + tx, y1 * sy + ty,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   147
                        x2 * sx + tx, y2 * sy + ty,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   148
                        x3 * sx + tx, y3 * sy + ty);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   149
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   150
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   151
        public void closePath() {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   152
            out.closePath();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   153
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   154
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   155
        public void pathDone() {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   156
            out.pathDone();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   157
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   158
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   159
        public long getNativeConsumer() {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   160
            return 0;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   161
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   162
    }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   163
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   164
    static class TransformFilter implements PathConsumer2D {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   165
        PathConsumer2D out;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   166
        float Mxx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   167
        float Mxy;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   168
        float Mxt;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   169
        float Myx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   170
        float Myy;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   171
        float Myt;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   172
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   173
        TransformFilter(PathConsumer2D out,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   174
                        float Mxx, float Mxy, float Mxt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   175
                        float Myx, float Myy, float Myt)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   176
        {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   177
            this.out = out;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   178
            this.Mxx = Mxx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   179
            this.Mxy = Mxy;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   180
            this.Mxt = Mxt;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   181
            this.Myx = Myx;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   182
            this.Myy = Myy;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   183
            this.Myt = Myt;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   184
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   185
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   186
        public void moveTo(float x0, float y0) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   187
            out.moveTo(x0 * Mxx + y0 * Mxy + Mxt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   188
                       x0 * Myx + y0 * Myy + Myt);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   189
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   190
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   191
        public void lineTo(float x1, float y1) {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   192
            out.lineTo(x1 * Mxx + y1 * Mxy + Mxt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   193
                       x1 * Myx + y1 * Myy + Myt);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   194
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   195
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   196
        public void quadTo(float x1, float y1,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   197
                           float x2, float y2)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   198
        {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   199
            out.quadTo(x1 * Mxx + y1 * Mxy + Mxt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   200
                       x1 * Myx + y1 * Myy + Myt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   201
                       x2 * Mxx + y2 * Mxy + Mxt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   202
                       x2 * Myx + y2 * Myy + Myt);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   203
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   204
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   205
        public void curveTo(float x1, float y1,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   206
                            float x2, float y2,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   207
                            float x3, float y3)
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   208
        {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   209
            out.curveTo(x1 * Mxx + y1 * Mxy + Mxt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   210
                        x1 * Myx + y1 * Myy + Myt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   211
                        x2 * Mxx + y2 * Mxy + Mxt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   212
                        x2 * Myx + y2 * Myy + Myt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   213
                        x3 * Mxx + y3 * Mxy + Mxt,
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   214
                        x3 * Myx + y3 * Myy + Myt);
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   215
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   216
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   217
        public void closePath() {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   218
            out.closePath();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   219
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   220
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   221
        public void pathDone() {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   222
            out.pathDone();
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   223
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   224
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   225
        public long getNativeConsumer() {
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   226
            return 0;
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   227
        }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   228
    }
3642614e2282 6967434: Round joins/caps of scaled up lines have poor quality.
dlila
parents:
diff changeset
   229
}