jdk/src/share/native/sun/java2d/loops/FillParallelogram.c
author ohair
Tue, 28 Dec 2010 15:53:50 -0800
changeset 7668 d4a77089c587
parent 7487 9b031d062ede
child 7762 6e45e1e87347
permissions -rw-r--r--
6962318: Update copyright year Reviewed-by: xdono
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7487
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
     1
/*
7668
d4a77089c587 6962318: Update copyright year
ohair
parents: 7487
diff changeset
     2
 * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
7487
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
     4
 *
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    10
 *
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    15
 * accompanied this code).
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    16
 *
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    20
 *
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    23
 * questions.
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    24
 */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    25
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    26
#include "math.h"
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    27
#include "GraphicsPrimitiveMgr.h"
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    28
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    29
#include "sun_java2d_loops_FillParallelogram.h"
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    30
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    31
#define PGRAM_MIN_MAX(bmin, bmax, v0, dv1, dv2) \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    32
    do { \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    33
        double vmin, vmax; \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    34
        if (dv1 < 0) { \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    35
            vmin = v0+dv1; \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    36
            vmax = v0; \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    37
        } else { \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    38
            vmin = v0; \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    39
            vmax = v0+dv1; \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    40
        } \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    41
        if (dv2 < 0) { \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    42
            vmin -= dv2; \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    43
        } else { \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    44
            vmax += dv2; \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    45
        } \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    46
        bmin = (jint) floor(vmin + 0.5); \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    47
        bmax = (jint) floor(vmax + 0.5); \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    48
    } while(0)
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    49
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    50
#define PGRAM_INIT_X(starty, x, y, slope) \
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    51
    (DblToLong((x) + (slope) * ((starty)+0.5 - (y))) + LongOneHalf - 1)
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    52
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    53
/*
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    54
 * Class:     sun_java2d_loops_FillParallelogram
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    55
 * Method:    FillParallelogram
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    56
 * Signature: (Lsun/java2d/SunGraphics2D;Lsun/java2d/SurfaceData;DDDDDD)V
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    57
 */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    58
JNIEXPORT void JNICALL
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    59
Java_sun_java2d_loops_FillParallelogram_FillParallelogram
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    60
    (JNIEnv *env, jobject self,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    61
     jobject sg2d, jobject sData,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    62
     jdouble x0, jdouble y0,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    63
     jdouble dx1, jdouble dy1,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    64
     jdouble dx2, jdouble dy2)
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    65
{
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    66
    SurfaceDataOps *sdOps;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    67
    SurfaceDataRasInfo rasInfo;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    68
    NativePrimitive *pPrim;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    69
    CompositeInfo compInfo;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    70
    jint pixel;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    71
    jint ix1, iy1, ix2, iy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    72
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    73
    if ((dy1 == 0 && dx1 == 0) || (dy2 == 0 && dx2 == 0)) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    74
        return;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    75
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    76
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    77
    /*
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    78
     * Sort parallelogram by y values, ensure that each delta vector
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    79
     * has a non-negative y delta, and eliminate degenerate parallelograms.
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    80
     */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    81
    if (dy1 < 0) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    82
        x0 += dx1;  y0 += dy1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    83
        dx1 = -dx1; dy1 = -dy1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    84
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    85
    if (dy2 < 0) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    86
        x0 += dx2;  y0 += dy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    87
        dx2 = -dx2; dy2 = -dy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    88
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    89
    /* Sort delta vectors so dxy1 is left of dxy2. */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    90
    if (dx1 * dy2 > dx2 * dy1) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    91
        double v = dx1; dx1 = dx2; dx2 = v;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    92
               v = dy1; dy1 = dy2; dy2 = v;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    93
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    94
    PGRAM_MIN_MAX(ix1, ix2, x0, dx1, dx2);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    95
    iy1 = (jint) floor(y0 + 0.5);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    96
    iy2 = (jint) floor(y0 + dy1 + dy2 + 0.5);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    97
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    98
    pPrim = GetNativePrim(env, self);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
    99
    if (pPrim == NULL) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   100
        return;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   101
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   102
    pixel = GrPrim_Sg2dGetPixel(env, sg2d);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   103
    if (pPrim->pCompType->getCompInfo != NULL) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   104
        GrPrim_Sg2dGetCompInfo(env, sg2d, pPrim, &compInfo);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   105
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   106
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   107
    sdOps = SurfaceData_GetOps(env, sData);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   108
    if (sdOps == NULL) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   109
        return;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   110
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   111
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   112
    GrPrim_Sg2dGetClip(env, sg2d, &rasInfo.bounds);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   113
    SurfaceData_IntersectBoundsXYXY(&rasInfo.bounds, ix1, iy1, ix2, iy2);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   114
    if (rasInfo.bounds.y2 <= rasInfo.bounds.y1 ||
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   115
        rasInfo.bounds.x2 <= rasInfo.bounds.x1)
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   116
    {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   117
        return;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   118
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   119
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   120
    if (sdOps->Lock(env, sdOps, &rasInfo, pPrim->dstflags) != SD_SUCCESS) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   121
        return;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   122
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   123
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   124
    ix1 = rasInfo.bounds.x1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   125
    iy1 = rasInfo.bounds.y1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   126
    ix2 = rasInfo.bounds.x2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   127
    iy2 = rasInfo.bounds.y2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   128
    if (ix2 > ix1 && iy2 > iy1) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   129
        sdOps->GetRasInfo(env, sdOps, &rasInfo);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   130
        if (rasInfo.rasBase) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   131
            jdouble lslope = (dy1 == 0) ? 0 : dx1 / dy1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   132
            jdouble rslope = (dy2 == 0) ? 0 : dx2 / dy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   133
            jlong ldx = DblToLong(lslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   134
            jlong rdx = DblToLong(rslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   135
            jint cy1, cy2, loy, hiy;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   136
            dx1 += x0;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   137
            dy1 += y0;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   138
            dx2 += x0;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   139
            dy2 += y0;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   140
            cy1 = (jint) floor(dy1 + 0.5);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   141
            cy2 = (jint) floor(dy2 + 0.5);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   142
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   143
            /* Top triangular portion. */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   144
            loy = iy1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   145
            hiy = (cy1 < cy2) ? cy1 : cy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   146
            if (hiy > iy2) hiy = iy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   147
            if (loy < hiy) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   148
                jlong lx = PGRAM_INIT_X(loy, x0, y0, lslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   149
                jlong rx = PGRAM_INIT_X(loy, x0, y0, rslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   150
                (*pPrim->funcs.fillparallelogram)(&rasInfo,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   151
                                                  ix1, loy, ix2, hiy,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   152
                                                  lx, ldx, rx, rdx,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   153
                                                  pixel, pPrim, &compInfo);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   154
            }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   155
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   156
            /* Middle parallelogram portion, which way does it slant? */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   157
            if (cy1 < cy2) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   158
                /* Middle parallelogram portion, slanted to right. */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   159
                /* left leg turned a corner at y0+dy1 */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   160
                /* right leg continuing on its initial trajectory from y0 */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   161
                loy = cy1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   162
                hiy = cy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   163
                if (loy < iy1) loy = iy1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   164
                if (hiy > iy2) hiy = iy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   165
                if (loy < hiy) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   166
                    jlong lx = PGRAM_INIT_X(loy, dx1, dy1, rslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   167
                    jlong rx = PGRAM_INIT_X(loy,  x0,  y0, rslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   168
                    (*pPrim->funcs.fillparallelogram)(&rasInfo,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   169
                                                      ix1, loy, ix2, hiy,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   170
                                                      lx, rdx, rx, rdx,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   171
                                                      pixel, pPrim, &compInfo);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   172
                }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   173
            } else if (cy2 < cy1) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   174
                /* Middle parallelogram portion, slanted to left. */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   175
                /* left leg continuing on its initial trajectory from y0 */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   176
                /* right leg turned a corner at y0+dy2 */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   177
                loy = cy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   178
                hiy = cy1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   179
                if (loy < iy1) loy = iy1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   180
                if (hiy > iy2) hiy = iy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   181
                if (loy < hiy) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   182
                    jlong lx = PGRAM_INIT_X(loy,  x0,  y0, lslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   183
                    jlong rx = PGRAM_INIT_X(loy, dx2, dy2, lslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   184
                    (*pPrim->funcs.fillparallelogram)(&rasInfo,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   185
                                                      ix1, loy, ix2, hiy,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   186
                                                      lx, ldx, rx, ldx,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   187
                                                      pixel, pPrim, &compInfo);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   188
                }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   189
            }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   190
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   191
            /* Bottom triangular portion. */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   192
            loy = (cy1 > cy2) ? cy1 : cy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   193
            if (loy < iy1) loy = iy1;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   194
            hiy = iy2;
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   195
            if (loy < hiy) {
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   196
                /* left leg turned its corner at y0+dy1, now moving right */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   197
                /* right leg turned its corner at y0+dy2, now moving left */
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   198
                jlong lx = PGRAM_INIT_X(loy, dx1, dy1, rslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   199
                jlong rx = PGRAM_INIT_X(loy, dx2, dy2, lslope);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   200
                (*pPrim->funcs.fillparallelogram)(&rasInfo,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   201
                                                  ix1, loy, ix2, hiy,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   202
                                                  lx, rdx, rx, ldx,
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   203
                                                  pixel, pPrim, &compInfo);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   204
            }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   205
        }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   206
        SurfaceData_InvokeRelease(env, sdOps, &rasInfo);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   207
    }
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   208
    SurfaceData_InvokeUnlock(env, sdOps, &rasInfo);
9b031d062ede 6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff changeset
   209
}