test/jdk/sanity/client/lib/SwingSet3/src/com/sun/swingset3/demos/colorchooser/BezierAnimationPanel.java
author chegar
Thu, 17 Oct 2019 20:53:35 +0100
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 53672 f024302abefd
child 58679 9c3209ff7550
permissions -rw-r--r--
datagramsocketimpl-branch: update to default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
     1
/*
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
     2
* Copyright (c) 2007, 2019, Oracle and/or its affiliates. All rights reserved.
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
     3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
     4
*
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
     5
* This code is free software; you can redistribute it and/or modify it
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
     6
* under the terms of the GNU General Public License version 2 only, as
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
     7
* published by the Free Software Foundation.
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
     8
*
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
     9
* This code is distributed in the hope that it will be useful, but WITHOUT
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    11
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    12
* version 2 for more details (a copy is included in the LICENSE file that
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    13
* accompanied this code).
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    14
*
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    15
* You should have received a copy of the GNU General Public License version
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    16
* 2 along with this work; if not, write to the Free Software Foundation,
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    18
*
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    20
* or visit www.oracle.com if you need additional information or have any
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    21
* questions.
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    22
*/
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    23
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    24
package com.sun.swingset3.demos.colorchooser;
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    25
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    26
import java.awt.*;
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    27
import java.awt.event.HierarchyEvent;
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    28
import java.awt.event.HierarchyListener;
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    29
import java.awt.geom.GeneralPath;
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    30
import java.awt.image.BufferedImage;
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    31
import java.lang.reflect.InvocationTargetException;
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    32
import java.util.Hashtable;
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    33
import java.util.Map;
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    34
import javax.swing.*;
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    35
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    36
import static com.sun.swingset3.demos.colorchooser.BezierAnimationPanel.BezierColor.*;
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    37
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    38
/**
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    39
 * BezierAnimationPanel
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    40
 *
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    41
 * @author Jim Graham
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    42
 * @author Jeff Dinkins (removed dynamic setting changes, made swing friendly)
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    43
 * @version 1.16 11/17/05
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    44
 */
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    45
public class BezierAnimationPanel extends JPanel implements Runnable {
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    46
    public static enum BezierColor {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    47
        BACKGROUND, OUTER, GRADIENT_A, GRADIENT_B
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    48
    }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    49
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    50
    private final Map<BezierColor, Color> colors = new Hashtable<BezierColor, Color>();
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    51
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    52
    private GradientPaint gradient = null;
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    53
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    54
    private static final int NUMPTS = 6;
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    55
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    56
    private final float[] animpts = new float[NUMPTS * 2];
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    57
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    58
    private final float[] deltas = new float[NUMPTS * 2];
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    59
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    60
    private BufferedImage img;
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    61
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    62
    private Thread anim;
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    63
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    64
    private final Object lock = new Object();
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    65
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    66
    /**
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    67
     * BezierAnimationPanel Constructor
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    68
     */
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    69
    public BezierAnimationPanel() {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    70
        setOpaque(true);
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    71
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    72
        colors.put(BACKGROUND, new Color(0, 0, 153));
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    73
        colors.put(OUTER, new Color(255, 255, 255));
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    74
        colors.put(GRADIENT_A, new Color(255, 0, 101));
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    75
        colors.put(GRADIENT_B, new Color(255, 255, 0));
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    76
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    77
        addHierarchyListener(new HierarchyListener() {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    78
            public void hierarchyChanged(HierarchyEvent e) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    79
                if (isShowing()) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    80
                    start();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    81
                } else {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    82
                    stop();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    83
                }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    84
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    85
        });
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    86
    }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    87
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    88
    public Color getBezierColor(BezierColor bezierColor) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    89
        return colors.get(bezierColor);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    90
    }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    91
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    92
    public void setBezierColor(BezierColor bezierColor, Color value) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    93
        if (value != null) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    94
            colors.put(bezierColor, value);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    95
        }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    96
    }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
    97
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    98
    public void start() {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
    99
        Dimension size = getSize();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   100
        for (int i = 0; i < animpts.length; i += 2) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   101
            animpts[i] = (float) (Math.random() * size.width);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   102
            animpts[i + 1] = (float) (Math.random() * size.height);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   103
            deltas[i] = (float) (Math.random() * 4.0 + 2.0);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   104
            deltas[i + 1] = (float) (Math.random() * 4.0 + 2.0);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   105
            if (animpts[i] > size.width / 6.0f) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   106
                deltas[i] = -deltas[i];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   107
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   108
            if (animpts[i + 1] > size.height / 6.0f) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   109
                deltas[i + 1] = -deltas[i + 1];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   110
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   111
        }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   112
        anim = new Thread(this);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   113
        anim.setPriority(Thread.MIN_PRIORITY);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   114
        anim.start();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   115
    }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
   116
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   117
    public synchronized void stop() {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   118
        anim = null;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   119
        notify();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   120
    }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
   121
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   122
    private static void animate(float[] pts, float[] deltas, int index, int limit) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   123
        float newpt = pts[index] + deltas[index];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   124
        if (newpt <= 0) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   125
            newpt = -newpt;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   126
            deltas[index] = (float) (Math.random() * 3.0 + 2.0);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   127
        } else if (newpt >= (float) limit) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   128
            newpt = 2.0f * limit - newpt;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   129
            deltas[index] = -(float) (Math.random() * 3.0 + 2.0);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   130
        }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   131
        pts[index] = newpt;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   132
    }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
   133
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   134
    public void run() {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   135
        Thread me = Thread.currentThread();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   136
        while (getSize().width <= 0) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   137
            try {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   138
                Thread.sleep(500);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   139
            } catch (InterruptedException e) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   140
                return;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   141
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   142
        }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
   143
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   144
        Graphics2D g2d = null;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   145
        Graphics2D bufferG2D = null;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   146
        BasicStroke solid = new BasicStroke(9.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 9.0f);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   147
        GeneralPath gp = new GeneralPath(GeneralPath.WIND_NON_ZERO);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   148
        int rule = AlphaComposite.SRC_OVER;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   149
        AlphaComposite opaque = AlphaComposite.SrcOver;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   150
        AlphaComposite blend = AlphaComposite.getInstance(rule, 0.9f);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   151
        AlphaComposite set = AlphaComposite.Src;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   152
        Dimension oldSize = getSize();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   153
        Shape clippath = null;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   154
        while (anim == me) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   155
            Dimension size = getSize();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   156
            if (size.width != oldSize.width || size.height != oldSize.height) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   157
                img = null;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   158
                clippath = null;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   159
                if (bufferG2D != null) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   160
                    bufferG2D.dispose();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   161
                    bufferG2D = null;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   162
                }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   163
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   164
            oldSize = size;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   165
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   166
            if (img == null) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   167
                img = (BufferedImage) createImage(size.width, size.height);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   168
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   169
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   170
            if (bufferG2D == null) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   171
                bufferG2D = img.createGraphics();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   172
                bufferG2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_DEFAULT);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   173
                bufferG2D.setClip(clippath);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   174
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   175
            g2d = bufferG2D;
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
   176
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   177
            float[] ctrlpts;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   178
            for (int i = 0; i < animpts.length; i += 2) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   179
                animate(animpts, deltas, i, size.width);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   180
                animate(animpts, deltas, i + 1, size.height);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   181
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   182
            ctrlpts = animpts;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   183
            int len = ctrlpts.length;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   184
            gp.reset();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   185
            float prevx = ctrlpts[len - 2];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   186
            float prevy = ctrlpts[len - 1];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   187
            float curx = ctrlpts[0];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   188
            float cury = ctrlpts[1];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   189
            float midx = (curx + prevx) / 2.0f;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   190
            float midy = (cury + prevy) / 2.0f;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   191
            gp.moveTo(midx, midy);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   192
            for (int i = 2; i <= ctrlpts.length; i += 2) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   193
                float x1 = (midx + curx) / 2.0f;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   194
                float y1 = (midy + cury) / 2.0f;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   195
                prevx = curx;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   196
                prevy = cury;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   197
                if (i < ctrlpts.length) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   198
                    curx = ctrlpts[i];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   199
                    cury = ctrlpts[i + 1];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   200
                } else {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   201
                    curx = ctrlpts[0];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   202
                    cury = ctrlpts[1];
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   203
                }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   204
                midx = (curx + prevx) / 2.0f;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   205
                midy = (cury + prevy) / 2.0f;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   206
                float x2 = (prevx + midx) / 2.0f;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   207
                float y2 = (prevy + midy) / 2.0f;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   208
                gp.curveTo(x1, y1, x2, y2, midx, midy);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   209
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   210
            gp.closePath();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   211
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   212
            synchronized (lock) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   213
                g2d.setComposite(set);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   214
                g2d.setBackground(getBezierColor(BACKGROUND));
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   215
                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
   216
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   217
                // g2d.clearRect(bounds.x-5, bounds.y-5, bounds.x + bounds.width
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   218
                // + 5, bounds.y + bounds.height + 5);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   219
                g2d.clearRect(0, 0, getWidth(), getHeight());
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   220
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   221
                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   222
                g2d.setColor(getBezierColor(OUTER));
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   223
                g2d.setComposite(opaque);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   224
                g2d.setStroke(solid);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   225
                g2d.draw(gp);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   226
                g2d.setPaint(gradient);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   227
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   228
                Rectangle bounds = gp.getBounds();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   229
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   230
                gradient = new GradientPaint(bounds.x, bounds.y, getBezierColor(GRADIENT_A), bounds.x + bounds.width,
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   231
                        bounds.y + bounds.height, getBezierColor(GRADIENT_B), true);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   232
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   233
                g2d.setComposite(blend);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   234
                g2d.fill(gp);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   235
            }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
   236
58678
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   237
            try {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   238
                SwingUtilities.invokeAndWait(new Runnable() {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   239
                    @Override
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   240
                    public void run() {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   241
                        repaint();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   242
                    }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   243
                });
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   244
            } catch (InvocationTargetException | InterruptedException e) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   245
                e.printStackTrace();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   246
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   247
        }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   248
        if (g2d != null) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   249
            g2d.dispose();
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   250
        }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   251
    }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   252
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   253
    public void paint(Graphics g) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   254
        synchronized (lock) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   255
            Graphics2D g2d = (Graphics2D) g;
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   256
            if (img != null) {
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   257
                g2d.setComposite(AlphaComposite.Src);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   258
                g2d.drawImage(img, null, 0, 0);
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   259
            }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   260
        }
9cf78a70fa4f datagramsocketimpl-branch: update to default
chegar
parents: 53672
diff changeset
   261
    }
53672
f024302abefd 8217235: Create automated test for SwingSet ColorChooserDemoTest
akolarkunnu
parents:
diff changeset
   262
}