jdk/src/solaris/classes/sun/java2d/xr/XRBackendNative.java
author ceisserer
Tue, 22 Oct 2013 13:47:45 -0700
changeset 21233 a36ed36d3209
parent 19782 ce9a620fe879
child 23010 6dadb192ad81
permissions -rw-r--r--
8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms Reviewed-by: prr, bae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
     1
/*
6374
e214162c907e 6982137: Rebranding pass 2 - missed copyright changes
ohair
parents: 5579
diff changeset
     2
 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
     4
 *
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
6374
e214162c907e 6982137: Rebranding pass 2 - missed copyright changes
ohair
parents: 5579
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
6374
e214162c907e 6982137: Rebranding pass 2 - missed copyright changes
ohair
parents: 5579
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    10
 *
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    15
 * accompanied this code).
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    16
 *
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    20
 *
6374
e214162c907e 6982137: Rebranding pass 2 - missed copyright changes
ohair
parents: 5579
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e214162c907e 6982137: Rebranding pass 2 - missed copyright changes
ohair
parents: 5579
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
e214162c907e 6982137: Rebranding pass 2 - missed copyright changes
ohair
parents: 5579
diff changeset
    23
 * questions.
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    24
 */
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    25
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    26
package sun.java2d.xr;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    27
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    28
import java.awt.geom.*;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    29
import java.util.*;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    30
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    31
import sun.font.*;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    32
import sun.java2d.jules.*;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    33
import sun.java2d.pipe.*;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    34
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    35
import static sun.java2d.xr.XRUtils.XDoubleToFixed;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    36
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    37
/**
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    38
 * Native implementation of XRBackend.
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    39
 * Almost direct 1:1 binding to libX11.
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    40
 *
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    41
 * @author Clemens Eisserer
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    42
 */
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    43
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    44
public class XRBackendNative implements XRBackend {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    45
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    46
    static {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    47
        initIDs();
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    48
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    49
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    50
    private static long FMTPTR_A8;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    51
    private static long FMTPTR_ARGB32;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    52
    private static long MASK_XIMG;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    53
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    54
    private static native void initIDs();
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    55
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    56
    public native long createGC(int drawable);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    57
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    58
    public native void freeGC(long gc);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    59
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    60
    public native int createPixmap(int drawable, int depth,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    61
                                   int width, int height);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    62
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    63
    private native int createPictureNative(int drawable, long formatID);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    64
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    65
    public native void freePicture(int picture);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    66
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    67
    public native void freePixmap(int pixmap);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    68
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    69
    public native void setGCExposures(long gc, boolean exposure);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    70
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    71
    public native void setGCForeground(long gc, int pixel);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    72
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    73
    public native void setPictureRepeat(int picture, int repeat);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    74
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    75
    public native void copyArea(int src, int dst, long gc,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    76
                                int srcx, int srcy, int width, int height,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    77
                                 int dstx, int dsty);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    78
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    79
    public native void setGCMode(long gc, boolean copy);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    80
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    81
    private static native void GCRectanglesNative(int drawable, long gc,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    82
                                                  int[] rectArray, int rectCnt);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    83
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    84
    public native void renderComposite(byte op, int src, int mask,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    85
                                       int dst, int srcX, int srcY,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    86
                                       int maskX, int maskY, int dstX, int dstY,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    87
                                       int width, int height);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    88
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    89
    private native void renderRectangle(int dst, byte op,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    90
                                        short red, short green,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    91
                                        short blue, short alpha,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    92
                                        int x, int y, int width, int height);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    93
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    94
    private static native void
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    95
         XRenderRectanglesNative(int dst, byte op,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    96
                                 short red, short green,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    97
                                 short blue, short alpha,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    98
                                 int[] rects, int rectCnt);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
    99
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   100
    private native void XRSetTransformNative(int pic,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   101
                                             int m00, int m01, int m02,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   102
                                             int m10, int m11, int m12);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   103
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   104
    private static native int
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   105
        XRCreateLinearGradientPaintNative(float[] fractionsArray,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   106
                                          short[] pixelsArray,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   107
                                          int x1, int y1, int x2, int y2,
21233
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   108
                                          int numStops, int repeat);
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   109
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   110
    private native static int
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   111
        XRCreateRadialGradientPaintNative(float[] fractionsArray,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   112
                                          short[] pixelsArray, int numStops,
21233
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   113
                                          int centerX, int centerY,
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   114
                                          int innerRadius, int outerRadius,
21233
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   115
                                          int repeat);
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   116
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   117
    public native void setFilter(int picture, int filter);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   118
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   119
    private static native void XRSetClipNative(long dst,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   120
                                               int x1, int y1, int x2, int y2,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   121
                                               Region clip, boolean isGC);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   122
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   123
    public void GCRectangles(int drawable, long gc, GrowableRectArray rects) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   124
        GCRectanglesNative(drawable, gc, rects.getArray(), rects.getSize());
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   125
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   126
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   127
    public int createPicture(int drawable, int formatID) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   128
        return createPictureNative(drawable, getFormatPtr(formatID));
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   129
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   130
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   131
    public void setPictureTransform(int picture, AffineTransform transform) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   132
        XRSetTransformNative(picture,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   133
                             XDoubleToFixed(transform.getScaleX()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   134
                             XDoubleToFixed(transform.getShearX()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   135
                             XDoubleToFixed(transform.getTranslateX()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   136
                             XDoubleToFixed(transform.getShearY()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   137
                             XDoubleToFixed(transform.getScaleY()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   138
                             XDoubleToFixed(transform.getTranslateY()));
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   139
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   140
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   141
    public void renderRectangle(int dst, byte op, XRColor color,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   142
                                int x, int y, int width, int height) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   143
        renderRectangle(dst, op, (short)color.red, (short)color.green,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   144
                       (short)color.blue, (short)color.alpha,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   145
                        x, y, width, height);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   146
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   147
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   148
    private short[] getRenderColors(int[] pixels) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   149
        short[] renderColors = new short[pixels.length * 4];
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   150
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   151
        XRColor c = new XRColor();
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   152
        for (int i = 0; i < pixels.length; i++) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   153
            c.setColorValues(pixels[i], true);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   154
            renderColors[i * 4 + 0] = (short) c.alpha;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   155
            renderColors[i * 4 + 1] = (short) c.red;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   156
            renderColors[i * 4 + 2] = (short) c.green;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   157
            renderColors[i * 4 + 3] = (short) c.blue;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   158
        }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   159
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   160
        return renderColors;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   161
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   162
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   163
    private static long getFormatPtr(int formatID) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   164
        switch (formatID) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   165
        case XRUtils.PictStandardA8:
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   166
            return FMTPTR_A8;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   167
        case XRUtils.PictStandardARGB32:
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   168
            return FMTPTR_ARGB32;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   169
        }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   170
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   171
        return 0L;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   172
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   173
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   174
    public int createLinearGradient(Point2D p1, Point2D p2, float[] fractions,
21233
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   175
                              int[] pixels,  int repeat) {
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   176
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   177
        short[] colorValues = getRenderColors(pixels);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   178
        int gradient =
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   179
           XRCreateLinearGradientPaintNative(fractions, colorValues,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   180
                XDoubleToFixed(p1.getX()), XDoubleToFixed(p1.getY()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   181
                XDoubleToFixed(p2.getX()), XDoubleToFixed(p2.getY()),
21233
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   182
                fractions.length, repeat);
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   183
        return gradient;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   184
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   185
21233
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   186
    public int createRadialGradient(float centerX, float centerY,
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   187
                                   float innerRadius, float outerRadius,
21233
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   188
                                   float[] fractions, int[] pixels, int repeat) {
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   189
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   190
        short[] colorValues = getRenderColors(pixels);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   191
        return XRCreateRadialGradientPaintNative
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   192
             (fractions, colorValues, fractions.length,
21233
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   193
              XDoubleToFixed(centerX),
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   194
              XDoubleToFixed(centerY),
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   195
              XDoubleToFixed(innerRadius),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   196
              XDoubleToFixed(outerRadius),
21233
a36ed36d3209 8023483: sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java failed with jdk8 on linux platforms
ceisserer
parents: 19782
diff changeset
   197
              repeat);
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   198
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   199
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   200
    public void setGCClipRectangles(long gc, Region clip) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   201
        XRSetClipNative(gc, clip.getLoX(), clip.getLoY(),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   202
                        clip.getHiX(), clip.getHiY(),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   203
                        clip.isRectangular() ? null : clip, true);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   204
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   205
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   206
    public void setClipRectangles(int picture, Region clip) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   207
        if (clip != null) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   208
            XRSetClipNative(picture, clip.getLoX(), clip.getLoY(),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   209
                            clip.getHiX(), clip.getHiY(),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   210
                            clip.isRectangular() ? null : clip, false);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   211
        } else {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   212
            XRSetClipNative(picture, 0, 0, 32767, 32767, null, false);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   213
        }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   214
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   215
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   216
    public void renderRectangles(int dst, byte op, XRColor color,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   217
                                 GrowableRectArray rects) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   218
        XRenderRectanglesNative(dst, op,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   219
                                (short) color.red, (short) color.green,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   220
                                (short) color.blue, (short) color.alpha,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   221
                                rects.getArray(), rects
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   222
                .getSize());
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   223
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   224
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   225
    private static long[] getGlyphInfoPtrs(List<XRGlyphCacheEntry> cacheEntries) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   226
        long[] glyphInfoPtrs = new long[cacheEntries.size()];
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   227
        for (int i = 0; i < cacheEntries.size(); i++) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   228
            glyphInfoPtrs[i] = cacheEntries.get(i).getGlyphInfoPtr();
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   229
        }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   230
        return glyphInfoPtrs;
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   231
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   232
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   233
    public void XRenderAddGlyphs(int glyphSet, GlyphList gl,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   234
                                 List<XRGlyphCacheEntry> cacheEntries,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   235
                                 byte[] pixelData) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   236
        long[] glyphInfoPtrs = getGlyphInfoPtrs(cacheEntries);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   237
        XRAddGlyphsNative(glyphSet, glyphInfoPtrs,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   238
                          glyphInfoPtrs.length, pixelData, pixelData.length);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   239
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   240
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   241
    public void XRenderFreeGlyphs(int glyphSet, int[] gids) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   242
        XRFreeGlyphsNative(glyphSet, gids, gids.length);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   243
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   244
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   245
    private static native void XRAddGlyphsNative(int glyphSet,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   246
                                                 long[] glyphInfoPtrs,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   247
                                                 int glyphCnt,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   248
                                                 byte[] pixelData,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   249
                                                 int pixelDataLength);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   250
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   251
    private static native void XRFreeGlyphsNative(int glyphSet,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   252
                                                  int[] gids, int idCnt);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   253
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   254
    private static native void
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   255
        XRenderCompositeTextNative(int op, int src, int dst,
19782
ce9a620fe879 7189452: XRender pipeline does ignore source-surface offset for text rendering
ceisserer
parents: 6374
diff changeset
   256
                                   int srcX, int srcY, long maskFormat,
ce9a620fe879 7189452: XRender pipeline does ignore source-surface offset for text rendering
ceisserer
parents: 6374
diff changeset
   257
                                   int[] eltArray, int[] glyphIDs, int eltCnt,
ce9a620fe879 7189452: XRender pipeline does ignore source-surface offset for text rendering
ceisserer
parents: 6374
diff changeset
   258
                                   int glyphCnt);
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   259
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   260
    public int XRenderCreateGlyphSet(int formatID) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   261
        return XRenderCreateGlyphSetNative(getFormatPtr(formatID));
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   262
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   263
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   264
    private static native int XRenderCreateGlyphSetNative(long format);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   265
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   266
    public void XRenderCompositeText(byte op, int src, int dst,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   267
                                     int maskFormatID,
19782
ce9a620fe879 7189452: XRender pipeline does ignore source-surface offset for text rendering
ceisserer
parents: 6374
diff changeset
   268
                                     int sx, int sy, int dx, int dy,
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   269
                                     int glyphset, GrowableEltArray elts) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   270
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   271
        GrowableIntArray glyphs = elts.getGlyphs();
19782
ce9a620fe879 7189452: XRender pipeline does ignore source-surface offset for text rendering
ceisserer
parents: 6374
diff changeset
   272
        XRenderCompositeTextNative(op, src, dst, sx, sy, 0, elts.getArray(),
5579
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   273
                                   glyphs.getArray(), elts.getSize(),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   274
                                   glyphs.getSize());
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   275
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   276
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   277
    public void putMaskImage(int drawable, long gc, byte[] imageData,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   278
                             int sx, int sy, int dx, int dy,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   279
                             int width, int height, int maskOff,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   280
                             int maskScan, float ea) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   281
        putMaskNative(drawable, gc, imageData, sx, sy, dx, dy,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   282
                      width, height, maskOff, maskScan, ea, MASK_XIMG);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   283
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   284
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   285
    private static native void putMaskNative(int drawable, long gc,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   286
                                             byte[] imageData,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   287
                                             int sx, int sy, int dx, int dy,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   288
                                             int width, int height,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   289
                                             int maskOff, int maskScan,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   290
                                             float ea, long xImg);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   291
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   292
    public void padBlit(byte op, int srcPict, int maskPict, int dstPict,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   293
                        AffineTransform maskTrx, int maskWidth, int maskHeight,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   294
                        int lastMaskWidth, int lastMaskHeight,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   295
                        int sx, int sy, int dx, int dy, int w, int h) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   296
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   297
        padBlitNative(op, srcPict, maskPict, dstPict,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   298
                      XDoubleToFixed(maskTrx.getScaleX()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   299
                      XDoubleToFixed(maskTrx.getShearX()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   300
                      XDoubleToFixed(maskTrx.getTranslateX()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   301
                      XDoubleToFixed(maskTrx.getShearY()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   302
                      XDoubleToFixed(maskTrx.getScaleY()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   303
                      XDoubleToFixed(maskTrx.getTranslateY()),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   304
                      maskWidth, maskHeight, lastMaskWidth, lastMaskHeight,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   305
                      sx, sy, dx, dy, w, h);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   306
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   307
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   308
    private static native void padBlitNative(byte op, int srcPict,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   309
                                             int maskPict, int dstPict,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   310
                                             int m00, int m01, int m02,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   311
                                             int m10, int m11, int m12,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   312
                                             int maskWidth, int maskHeight,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   313
                                             int lastMaskWidth,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   314
                                             int lastMaskHeight,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   315
                                             int sx, int sy, int dx, int dy,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   316
                                             int w, int h);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   317
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   318
    public void renderCompositeTrapezoids(byte op, int src, int maskFormat,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   319
                                          int dst, int srcX, int srcY,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   320
                                          TrapezoidList trapList) {
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   321
        renderCompositeTrapezoidsNative(op, src, getFormatPtr(maskFormat),
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   322
                                        dst, srcX, srcY,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   323
                                        trapList.getTrapArray());
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   324
    }
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   325
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   326
    private static native void
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   327
        renderCompositeTrapezoidsNative(byte op, int src, long maskFormat,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   328
                                        int dst, int srcX, int srcY,
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   329
                                        int[] trapezoids);
1a5e995a710b 6307603: [X11] Use RENDER extension for complex operations done in software
ceisserer
parents:
diff changeset
   330
}