| <test title="GradientPaint Testing"> |
| <description> |
| This test validates the convertion of Java 2D GradientPaints |
| into SVG linearGradient definition and reference. |
| </description> |
| <description> |
| The test validates that a GradientPaint is properly converted |
| with regards to its color values (including opacity), its |
| start and end points, its cycling strategy and its behavior |
| under transformation. |
| </description> |
| <javaCode> |
| <![CDATA[ |
| g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, |
| RenderingHints.VALUE_ANTIALIAS_ON); |
| |
| AffineTransform defaultTransform = g.getTransform(); |
| Color labelColor = Color.black; |
| |
| // |
| // First, define cross hair marker |
| // |
| GeneralPath crossHair = new GeneralPath(); |
| crossHair.moveTo(-5, 0); |
| crossHair.lineTo(5, 0); |
| crossHair.moveTo(0, -5); |
| crossHair.lineTo(0, 5); |
| |
| // |
| // Simple test checking color values and start |
| // and end points |
| // |
| GradientPaint gradient = new GradientPaint(30, 40, Color.red, |
| 30, 120, Color.yellow); |
| g.setPaint(labelColor); |
| g.drawString("Simple vertical gradient", 10, 20); |
| g.setPaint(gradient); |
| g.fillRect(10, 30, 100, 100); |
| g.setPaint(labelColor); |
| g.translate(30, 40); |
| g.draw(crossHair); |
| g.setTransform(defaultTransform); |
| g.translate(30, 120); |
| g.draw(crossHair); |
| |
| g.setTransform(defaultTransform); |
| g.translate(0, 140); |
| |
| // |
| // Now, test cycling behavior |
| // |
| GradientPaint nonCyclicGradient = new GradientPaint(0, 0, Color.red, |
| 20, 0, Color.yellow); |
| GradientPaint cyclicGradient = new GradientPaint(0, 0, Color.red, |
| 20, 0, Color.yellow, true); |
| |
| g.setPaint(labelColor); |
| g.drawString("Non Cyclic / Cyclic Gradients", 10, 20); |
| |
| g.translate(10, 30); |
| |
| g.setPaint(nonCyclicGradient); |
| g.fillRect(0, 0, 100, 30); |
| |
| g.translate(0, 30); |
| g.setPaint(cyclicGradient); |
| g.fillRect(0, 0, 100, 30); |
| |
| g.setPaint(labelColor); |
| g.drawLine(0, 0, 100, 0); |
| |
| g.setTransform(defaultTransform); |
| g.translate(0, 240); |
| |
| // |
| // Now, test transformations |
| // |
| g.setPaint(labelColor); |
| g.drawString("Sheared GradientPaint", 10, 20); |
| g.translate(10, 25); |
| |
| GradientPaint shearedGradient = new GradientPaint(0, 0, Color.red, |
| 100, 0, Color.yellow); |
| g.setPaint(shearedGradient); |
| g.shear(0.5, 0); |
| |
| g.fillRect(0, 0, 100, 40); |
| |
| g.setTransform(defaultTransform); |
| g.translate(0, 320); |
| |
| g.setPaint(labelColor); |
| g.drawString("Opacity in stop color", 10, 20); |
| |
| GradientPaint transparentGradient = new GradientPaint(10, 30, new Color(255, 0, 0, 0), |
| 110, 30, Color.yellow); |
| |
| g.setPaint(transparentGradient); |
| g.fillRect(10, 30, 100, 30); |
| |
| ]]> |
| </javaCode> |
| </test> |