jdk/test/java/awt/Graphics/LineClipTest.java
author goetz
Tue, 14 Jun 2016 10:44:59 +0200
changeset 39056 d99e63b6d962
parent 23010 6dadb192ad81
permissions -rw-r--r--
8159690: [TESTBUG] Mark headful tests with @key headful. Reviewed-by: simonis, alexsch
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20419
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
     1
/*
39056
d99e63b6d962 8159690: [TESTBUG] Mark headful tests with @key headful.
goetz
parents: 23010
diff changeset
     2
 * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
20419
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
     4
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
     7
 * published by the Free Software Foundation.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
     8
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    13
 * accompanied this code).
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    14
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    18
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    21
 * questions.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    22
 */
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    23
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    24
/**
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    25
 * @test
39056
d99e63b6d962 8159690: [TESTBUG] Mark headful tests with @key headful.
goetz
parents: 23010
diff changeset
    26
 * @key headful
20419
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    27
 * @bug   4780022 4862193 7179526
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    28
 * @summary  Tests that clipped lines are drawn over the same pixels
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    29
 * as unclipped lines (within the clip bounds)
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    30
 * @run main/timeout=600/othervm -Dsun.java2d.ddforcevram=true LineClipTest
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    31
 * @run main/timeout=600/othervm LineClipTest
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    32
 */
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    33
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    34
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    35
/**
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    36
 * This app tests whether we are drawing clipped lines the same
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    37
 * as unclipped lines.  The problem occurred when we started
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    38
 * clipping d3d lines using simple integer clipping, which did not
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    39
 * account for sub-pixel precision and ended up drawing very different
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    40
 * pixels than the same line drawn unclipped.  A supposed fix
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    41
 * to that problem used floating-point clipping instead, but there
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    42
 * was some problem with very limited precision inside of d3d
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    43
 * (presumably in hardware) that caused some variation in pixels.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    44
 * We decided that whatever the fix was, we needed a serious
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    45
 * line check test to make sure that all kinds of different
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    46
 * lines would be drawn exactly the same inside the clip area,
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    47
 * regardless of whether clipping was enabled.  This test should
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    48
 * check all kinds of different cases, such as lines that fall
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    49
 * completely outside, completely inside, start outside and
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    50
 * end inside, etc., and lines should end and originate in
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    51
 * all quadrants of the space divided up by the clip box.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    52
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    53
 * The test works as follows:
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    54
 * We create nine quadrants using the spaces bisected by the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    55
 * edges of the clip bounds (note that only one of these
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    56
 * quadrants is actually visible when clipping is enabled).
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    57
 * We create several points in each of these quadrants
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    58
 * (three in each of the invisible quadrants, nine in the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    59
 * center/visible quadrant).  Our resulting grid looks like
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    60
 * this:
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    61
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    62
 *  x         x|x    x    x|x         x
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    63
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    64
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    65
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    66
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    67
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    68
 *  x          |           |          x
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    69
 *  -----------------------------------
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    70
 *  x          |x    x    x|          x
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    71
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    72
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    73
 *  x          |x    x    x|          x
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    74
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    75
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    76
 *  x          |x    x    x|          x
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    77
 *  -----------------------------------
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    78
 *  x          |           |          x
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    79
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    80
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    81
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    82
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    83
 *             |           |
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    84
 *  x         x|x    x    x|x         x
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    85
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    86
 * The test then draws lines from every point to every other
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    87
 * point.  First, we draw unclipped lines in blue and
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    88
 * then we draw clipped lines in red.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    89
 * At certain times (after every point during the default
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    90
 * test, after every quadrant of lines if you run with the -quick
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    91
 * option), we check for errors and draw the current image
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    92
 * to the screen.  Error checking consists of copying the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    93
 * VolatileImage to a BufferedImage (because we need access
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    94
 * to the pixels directly) and checking every pixel in the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    95
 * image.  The check is simple: everything outside the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    96
 * clip bounds should be blue (or the background color) and
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    97
 * everything inside the clip bounds should be red (or the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    98
 * background color).  So any blue pixel inside or red
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
    99
 * pixel outside means that there was a drawing error and
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   100
 * the test fails.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   101
 * There are 4 modes that the test can run in (dynamic mode is
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   102
 * exclusive to the other modes, but the other modes are combinable):
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   103
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   104
 *      (default): the clip is set
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   105
 *      to a default size (100x100) and the test is run.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   106
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   107
 *      -quick: The error
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   108
 *      check is run only after every quadrant of lines is
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   109
 *      drawn.  This speeds up the test considerably with
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   110
 *      some less accuracy in error checking (because pixels
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   111
 *      from some lines may overdrawn pixels from other lines
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   112
 *      before we have verified the correctness of those
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   113
 *      pixels).
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   114
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   115
 *      -dynamic: There is no error checking, but this version
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   116
 *      of the test automatically resizes the clip bounds and
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   117
 *      reruns the test over and over.  Nothing besides the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   118
 *      visual check verifies that the test is running correctly.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   119
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   120
 *      -rect: Instead of drawing lines, the test draws rectangles
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   121
 *      to/from all points in all quadrants.  This tests similar
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   122
 *      clipping functionality for drawRect().
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   123
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   124
 *      n (where "n" is a number): sets the clip size to the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   125
 *      given value.  Just like the default test except that
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   126
 *      the clip size is as specified.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   127
 *
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   128
 * Note: this test must be run with the -Dsun.java2d.ddforcevram=true
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   129
 * option to force the test image to stay in VRAM.  We currently
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   130
 * punt VRAM images to system memory when we detect lots of
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   131
 * reads.  Since we read the whole buffer on every error check
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   132
 * to copy it to the BufferedImage), this causes us to punt the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   133
 * buffer.  A system memory surface will have no d3d capabilities,
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   134
 * thus we are not testing the d3d line quality when this happens.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   135
 * By using the ddforcevram flag, we make sure the buffer
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   136
 * stays put in VRAM and d3d is used to draw the lines.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   137
 */
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   138
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   139
import javax.swing.*;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   140
import java.awt.*;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   141
import java.awt.image.*;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   142
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   143
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   144
public class LineClipTest extends Component implements Runnable {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   145
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   146
    int clipBumpVal = 5;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   147
    static int clipSize = 100;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   148
    int clipX1;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   149
    int clipY1;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   150
    static final int NUM_QUADS = 9;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   151
    Point quadrants[][] = new Point[NUM_QUADS][];
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   152
    static boolean dynamic = false;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   153
    BufferedImage imageChecker = null;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   154
    Color unclippedColor = Color.blue;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   155
    Color clippedColor = Color.red;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   156
    int testW = -1, testH = -1;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   157
    VolatileImage testImage = null;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   158
    static boolean keepRunning = false;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   159
    static boolean quickTest = false;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   160
    static boolean rectTest = false;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   161
    static boolean runTestDone = false;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   162
    static Frame f = null;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   163
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   164
    /**
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   165
     * Check for errors in the grid.  This error check consists of
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   166
     * copying the buffer into a BufferedImage and reading all pixels
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   167
     * in that image.  No pixel outside the clip bounds should be
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   168
     * of the color clippedColor and no pixel inside should be
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   169
     * of the color unclippedColor.  Any wrong color returns an error.
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   170
     */
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   171
    boolean gridError(Graphics g) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   172
        boolean error = false;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   173
        if (imageChecker == null || (imageChecker.getWidth() != testW) ||
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   174
            (imageChecker.getHeight() != testH))
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   175
        {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   176
            // Recreate BufferedImage as necessary
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   177
            GraphicsConfiguration gc = getGraphicsConfiguration();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   178
            ColorModel cm = gc.getColorModel();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   179
            WritableRaster wr =
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   180
                cm.createCompatibleWritableRaster(getWidth(), getHeight());
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   181
            imageChecker =
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   182
                new BufferedImage(cm, wr,
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   183
                                  cm.isAlphaPremultiplied(), null);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   184
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   185
        // Copy buffer to BufferedImage
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   186
        Graphics gChecker = imageChecker.getGraphics();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   187
        gChecker.drawImage(testImage, 0, 0, this);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   188
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   189
        // Set up pixel colors to check against
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   190
        int clippedPixelColor = clippedColor.getRGB();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   191
        int unclippedPixelColor = unclippedColor.getRGB();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   192
        int wrongPixelColor = clippedPixelColor;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   193
        boolean insideClip = false;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   194
        for (int row = 0; row < getHeight(); ++row) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   195
            for (int col = 0; col < getWidth(); ++col) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   196
                if (row >= clipY1 && row < (clipY1 + clipSize) &&
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   197
                    col >= clipX1 && col < (clipX1 + clipSize))
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   198
                {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   199
                    // Inside clip bounds - should not see unclipped color
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   200
                    wrongPixelColor = unclippedPixelColor;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   201
                } else {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   202
                    // Outside clip - should not see clipped color
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   203
                    wrongPixelColor = clippedPixelColor;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   204
                }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   205
                int pixel = imageChecker.getRGB(col, row);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   206
                if (pixel == wrongPixelColor) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   207
                    System.out.println("FAILED: pixel = " +
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   208
                                       Integer.toHexString(pixel) +
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   209
                                       " at (x, y) = " + col + ", " + row);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   210
                    // Draw magenta rectangle around problem pixel in buffer
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   211
                    // for visual feedback to user
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   212
                    g.setColor(Color.magenta);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   213
                    g.drawRect(col - 1, row - 1, 2, 2);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   214
                    error = true;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   215
                }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   216
            }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   217
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   218
        return error;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   219
    }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   220
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   221
    /**
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   222
     * Draw all test lines and check for errors (unless running
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   223
     * with -dynamic option)
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   224
     */
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   225
    void drawLineGrid(Graphics screenGraphics, Graphics g) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   226
        // Fill buffer with background color
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   227
        g.setColor(Color.white);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   228
        g.fillRect(0, 0, getWidth(), getHeight());
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   229
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   230
        // Now, iterate through all quadrants
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   231
        for (int srcQuad = 0; srcQuad < NUM_QUADS; ++srcQuad) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   232
            // Draw lines to all other quadrants
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   233
            for (int dstQuad = 0; dstQuad < NUM_QUADS; ++dstQuad) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   234
                for (int srcPoint = 0;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   235
                     srcPoint < quadrants[srcQuad].length;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   236
                     ++srcPoint)
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   237
                {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   238
                    // For every point in the source quadrant
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   239
                    int sx = quadrants[srcQuad][srcPoint].x;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   240
                    int sy = quadrants[srcQuad][srcPoint].y;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   241
                    for (int dstPoint = 0;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   242
                         dstPoint < quadrants[dstQuad].length;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   243
                         ++dstPoint)
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   244
                    {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   245
                        int dx = quadrants[dstQuad][dstPoint].x;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   246
                        int dy = quadrants[dstQuad][dstPoint].y;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   247
                        if (!rectTest) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   248
                            // Draw unclipped/clipped lines to every
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   249
                            // point in the dst quadrant
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   250
                            g.setColor(unclippedColor);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   251
                            g.drawLine(sx, sy, dx, dy);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   252
                            g.setClip(clipX1, clipY1, clipSize, clipSize);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   253
                            g.setColor(clippedColor);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   254
                            g.drawLine(sx,sy, dx, dy);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   255
                        } else {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   256
                            // Draw unclipped/clipped rectangles to every
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   257
                            // point in the dst quadrant
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   258
                            g.setColor(unclippedColor);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   259
                            int w = dx - sx;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   260
                            int h = dy - sy;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   261
                            g.drawRect(sx, sy, w, h);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   262
                            g.setClip(clipX1, clipY1, clipSize, clipSize);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   263
                            g.setColor(clippedColor);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   264
                            g.drawRect(sx, sy, w, h);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   265
                        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   266
                        g.setClip(null);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   267
                    }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   268
                    if (!dynamic) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   269
                        // Draw screen update for visual feedback
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   270
                        screenGraphics.drawImage(testImage, 0, 0, this);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   271
                        // On default test, check for errors after every
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   272
                        // src point
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   273
                        if (!quickTest && gridError(g)) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   274
                            throw new java.lang.RuntimeException("Failed");
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   275
                        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   276
                    }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   277
                }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   278
            }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   279
            if (!dynamic && quickTest && gridError(g)) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   280
                // On quick test, check for errors only after every
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   281
                // src quadrant
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   282
                throw new java.lang.RuntimeException("Failed");
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   283
                //return;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   284
            }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   285
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   286
        if (!dynamic) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   287
            System.out.println("PASSED");
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   288
            if (!keepRunning) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   289
                f.dispose();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   290
            }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   291
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   292
    }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   293
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   294
    /**
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   295
     * If we have not yet run the test, or if the window size has
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   296
     * changed, or if we are running the test in -dynamic mode,
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   297
     * run the test.  Then draw the test buffer to the screen
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   298
     */
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   299
    public void paint(Graphics g) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   300
        if (dynamic || testImage == null ||
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   301
            getWidth() != testW || getHeight() != testH)
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   302
        {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   303
            runTest(g);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   304
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   305
        if (testImage != null) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   306
            g.drawImage(testImage, 0, 0, this);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   307
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   308
    }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   309
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   310
    /*
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   311
     * Create the quadrant of points and run the test to draw all the lines
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   312
     */
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   313
    public void runTest(Graphics screenGraphics) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   314
        if (getWidth() == 0 || getHeight() == 0) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   315
            // May get here before window is really ready
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   316
            return;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   317
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   318
        clipX1 = (getWidth() - clipSize) / 2;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   319
        clipY1 = (getHeight() - clipSize) / 2;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   320
        int clipX2 = clipX1 + clipSize;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   321
        int clipY2 = clipY1 + clipSize;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   322
        int centerX = getWidth()/2;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   323
        int centerY = getHeight()/2;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   324
        int leftX = 0;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   325
        int topY = 0;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   326
        int rightX = getWidth() - 1;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   327
        int bottomY = getHeight() - 1;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   328
        int quadIndex = 0;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   329
        // Offsets are used to force diagonal (versus hor/vert) lines
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   330
        int xOffset = 0;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   331
        int yOffset = 0;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   332
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   333
        if (quadrants[0] == null) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   334
            for (int i = 0; i < 9; ++i) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   335
                int numPoints = (i == 4) ? 9 : 3;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   336
                quadrants[i] = new Point[numPoints];
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   337
            }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   338
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   339
        // Upper-left
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   340
        quadrants[quadIndex] = new Point[] {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   341
            new Point(leftX + xOffset,          clipY1 - 1 - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   342
            new Point(leftX + xOffset,          topY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   343
            new Point(clipX1 - 1 - xOffset,     topY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   344
        };
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   345
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   346
        quadIndex++;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   347
        yOffset++;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   348
        // Upper-middle
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   349
        quadrants[quadIndex] = new Point[] {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   350
            new Point(clipX1 + 1 + xOffset,     topY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   351
            new Point(centerX + xOffset,        topY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   352
            new Point(clipX2 - 1 - xOffset,     topY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   353
        };
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   354
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   355
        quadIndex++;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   356
        ++yOffset;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   357
        // Upper-right
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   358
        quadrants[quadIndex] = new Point[] {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   359
            new Point(clipX2 + 1 + xOffset,     topY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   360
            new Point(rightX - xOffset,         topY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   361
            new Point(rightX - xOffset,         clipY1 - 1 - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   362
        };
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   363
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   364
        quadIndex++;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   365
        yOffset = 0;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   366
        ++xOffset;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   367
        // Middle-left
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   368
        quadrants[quadIndex] = new Point[] {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   369
            new Point(leftX + xOffset,          clipY1 + 1 + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   370
            new Point(leftX + xOffset,          centerY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   371
            new Point(leftX + xOffset,          clipY2 - 1 - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   372
        };
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   373
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   374
        quadIndex++;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   375
        ++yOffset;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   376
        // Middle-middle
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   377
        quadrants[quadIndex] = new Point[] {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   378
            new Point(clipX1 + 1 + xOffset,     clipY1 + 1 + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   379
            new Point(centerX + xOffset,        clipY1 + 1 + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   380
            new Point(clipX2 - 1 - xOffset,     clipY1 + 1 + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   381
            new Point(clipX1 + 1 + xOffset,     centerY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   382
            new Point(centerX + xOffset,        centerY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   383
            new Point(clipX2 - 1 - xOffset,     centerY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   384
            new Point(clipX1 + 1 + xOffset,     clipY2 - 1 - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   385
            new Point(centerX + xOffset,        clipY2 - 1 - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   386
            new Point(clipX2 - 1 - xOffset,     clipY2 - 1 - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   387
        };
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   388
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   389
        quadIndex++;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   390
        ++yOffset;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   391
        // Middle-right
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   392
        quadrants[quadIndex] = new Point[] {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   393
            new Point(rightX - xOffset,         clipY1 + 1 + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   394
            new Point(rightX - xOffset,         centerY + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   395
            new Point(rightX - xOffset,         clipY2 - 1 - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   396
        };
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   397
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   398
        quadIndex++;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   399
        yOffset = 0;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   400
        ++xOffset;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   401
        // Lower-left
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   402
        quadrants[quadIndex] = new Point[] {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   403
            new Point(leftX + xOffset,          clipY2 + 1 + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   404
            new Point(leftX + xOffset,          bottomY - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   405
            new Point(clipX1 - 1 - xOffset,     bottomY - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   406
        };
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   407
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   408
        quadIndex++;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   409
        ++yOffset;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   410
        // Lower-middle
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   411
        quadrants[quadIndex] = new Point[] {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   412
            new Point(clipX1 + 1 + xOffset,     bottomY - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   413
            new Point(centerX + xOffset,        bottomY - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   414
            new Point(clipX2 - 1 - xOffset,     bottomY - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   415
        };
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   416
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   417
        quadIndex++;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   418
        ++yOffset;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   419
        // Lower-right
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   420
        quadrants[quadIndex] = new Point[] {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   421
            new Point(clipX2 + 1 + xOffset,     bottomY - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   422
            new Point(rightX - xOffset,         bottomY - yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   423
            new Point(rightX - xOffset,         clipY2 + 1 + yOffset),
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   424
        };
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   425
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   426
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   427
        if (testImage != null) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   428
            testImage.flush();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   429
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   430
        testW = getWidth();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   431
        testH = getHeight();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   432
        testImage = createVolatileImage(testW, testH);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   433
        Graphics g = testImage.getGraphics();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   434
        do {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   435
            int valCode = testImage.validate(getGraphicsConfiguration());
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   436
            if (valCode == VolatileImage.IMAGE_INCOMPATIBLE) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   437
                testImage.flush();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   438
                testImage = createVolatileImage(testW, testH);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   439
                g = testImage.getGraphics();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   440
            }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   441
            drawLineGrid(screenGraphics, g);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   442
        } while (testImage.contentsLost());
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   443
        if (dynamic) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   444
            // Draw clip box if dynamic
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   445
            g.setClip(null);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   446
            g.setColor(Color.black);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   447
            g.drawRect(clipX1, clipY1, clipSize, clipSize);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   448
            screenGraphics.drawImage(testImage, 0, 0, this);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   449
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   450
        runTestDone = true;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   451
    }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   452
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   453
    /**
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   454
     * When running -dynamic, resize the clip bounds and run the test
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   455
     * over and over
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   456
     */
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   457
    public void run() {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   458
        while (true) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   459
            clipSize += clipBumpVal;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   460
            if (clipSize > getWidth() || clipSize < 0) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   461
                clipBumpVal = -clipBumpVal;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   462
                clipSize += clipBumpVal;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   463
            }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   464
            update(getGraphics());
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   465
            try {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   466
                Thread.sleep(50);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   467
            } catch (Exception e) {}
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   468
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   469
    }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   470
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   471
    public static void main(String args[]) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   472
        for (int i = 0; i < args.length; ++i) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   473
            if (args[i].equals("-dynamic")) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   474
                dynamic = true;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   475
            } else if (args[i].equals("-rect")) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   476
                rectTest = true;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   477
            } else if (args[i].equals("-quick")) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   478
                quickTest = true;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   479
            } else if (args[i].equals("-keep")) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   480
                keepRunning = true;
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   481
            } else {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   482
                // could be clipSize
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   483
                try {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   484
                    clipSize = Integer.parseInt(args[i]);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   485
                } catch (Exception e) {}
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   486
            }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   487
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   488
        f = new Frame();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   489
        f.setSize(500, 500);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   490
        LineClipTest test = new LineClipTest();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   491
        f.add(test);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   492
        if (dynamic) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   493
            Thread t = new Thread(test);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   494
            t.start();
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   495
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   496
        f.setVisible(true);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   497
        while (!runTestDone) {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   498
            // need to make sure jtreg doesn't exit before the
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   499
            // test is done...
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   500
            try {
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   501
                Thread.sleep(50);
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   502
            } catch (Exception e) {}
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   503
        }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   504
    }
be660188e0b4 7179526: xrender : closed/sun/java2d/volatileImage/LineClipTest.java failed since jdk8b36
prr
parents:
diff changeset
   505
}