Mega Code Archive
Cancel the effects of the zoom on a particular Stroke
/*
* Java2DUtils.java
*
* Created on Aug 30, 2007, 11:40:18 AM
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
//Revised from jaspersoft ireport designer
import java.awt.BasicStroke;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.AffineTransform;
import java.util.Stack;
/**
*
* @author gtoffoli
*/
public class Java2DUtils
{
/**
* This function provides a way to cancel the effects of the zoom on a particular Stroke.
* All the stroke values (as line width, dashes, etc...) are divided by the zoom factor.
* This allow to have essentially a fixed Stroke independent by the zoom.
* The returned Stroke is a copy.
* Remember to restore the right stroke in the graphics when done.
*
* It works only with instances of BasicStroke
*
* zoom is the zoom factor.
*/
public static Stroke getInvertedZoomedStroke(Stroke stroke, double zoom)
{
if (stroke == null || !(stroke instanceof BasicStroke )) return stroke;
BasicStroke bs = (BasicStroke)stroke;
float[] dashArray = bs.getDashArray();
float[] newDashArray = null;
if (dashArray != null)
{
newDashArray = new float[dashArray.length];
for (int i=0; i