sventon subversion web client - http://www.sventon.org
[show recent changes]
 
  Go to revisionGo to path
Help
Rev: HEAD (658) - svn://greenwoodma.servehttp.com/open-source / SVGRoundTrip / trunk / src / old-tests / java / GradientTest.java
Show File - GradientTest.java  [show properties]
spinner
/**
 * This file is part of SVGRoundTrip.
 * Copyright (c) 2010 Mark A. Greenwood
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 
 * o Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
10   * 
11   * o Redistributions in binary form must reproduce the above copyright notice,
12   * this list of conditions and the following disclaimer in the documentation
13   * and/or other materials provided with the distribution.
14   * 
15   * o Neither the name Mark A. Greenwood nor the names of
16   * any contributors may be used to endorse or promote products derived
17   * from this software without specific prior written permission.
18   * 
19   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21   * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26   * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
28   * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
29   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30   */
31 
32  import java.awt.AlphaComposite;
33  import java.awt.Color;
34  import java.awt.Graphics;
35  import java.awt.Graphics2D;
36  import java.awt.LinearGradientPaint;
37  import java.awt.RadialGradientPaint;
38  import java.awt.RenderingHints;
39  import java.awt.Window;
40  import java.awt.MultipleGradientPaint.CycleMethod;
41  import java.awt.geom.AffineTransform;
42  import java.awt.geom.Point2D;
43  import java.io.File;
44  import java.lang.reflect.Method;
45 
46  import javax.swing.Action;
47  import javax.swing.JFrame;
48  import javax.swing.JPanel;
49  import javax.swing.SwingUtilities;
50 
51  public class GradientTest extends JFrame
52  {
53      public static void main(String args[]) throws Exception
54      {
55          JFrame.setDefaultLookAndFeelDecorated(true);
56          
57          final JFrame frame = new GradientTest();
58          
59          try
60          {
61              @SuppressWarnings("unchecked") Class<? extends Action> caClass = (Class<? extends Action>) GradientTest.class.getClassLoader().loadClass("englishcoffeedrinker.svg.out.CaptureAction");
62              Method iaMethod = caClass.getMethod("installAction", Window.class, File.class, String.class);
63              iaMethod.invoke(null, frame, new File("images"), "GradientTest");
64              System.err.println("SVG Screen Capture Is Enabled");
65          }
66          catch (ClassNotFoundException e)
67          {
68              // SVGRoundTrip isn't available
69          }
70                          
71          SwingUtilities.invokeLater(new Runnable() {
72              
73              @Override
74              public void run()
75              {
76                  frame.setVisible(true);             
77              }
78          });     
79      }
80      
81      public GradientTest()
82      {
83          super();
84 
85          setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
86 
87          add(new JPanel() {
88              public void paint(Graphics g)
89              {
90                  Graphics2D g2d = (Graphics2D) g;
91                  g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
92 
93                  Point2D start = new Point2D.Float(0, 0);
94                  Point2D end = new Point2D.Float(50, 50);
95                  float[] dist = { 0.0f, 0.2f, 1.0f };
96                  Color[] colors = { Color.RED, Color.BLUE, Color.YELLOW };
97                  LinearGradientPaint lp = new LinearGradientPaint(start, end, dist, colors);
98 
99                  g2d.setPaint(lp);
100                  g2d.fillRect(0, 0, getWidth(), getHeight());
101 
102                  Point2D center = new Point2D.Float(50, 50);
103                  float radius = 25;
104                  Point2D focus = new Point2D.Float(40, 40);
105                  float[] dist2 = { 0.0f, 0.2f, 1.0f };
106                  Color[] colors2 = { Color.RED, Color.WHITE, Color.BLUE };
107                  RadialGradientPaint rp = new RadialGradientPaint(center, radius, focus, dist2, colors2, CycleMethod.REFLECT);
108 
109                  g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.50f));
110 
111                  g2d.setPaint(rp);
112 
113                  AffineTransform transform = g2d.getTransform();
114                  
115                  g2d.rotate(0.1);
116                  g2d.translate(50, 50);
117                  g2d.scale(1.5, 1.5);
118                  g2d.setClip(0, 0, 50, 50);
119                  g2d.fillRect(0, 0, 100, 100);
120 
121                  g2d.setTransform(transform);
122              }
123          });
124 
125          setSize(200, 200);
126          setTitle("Gradient Test");
127      }
128  }

feed icon

sventon 2.1.4