Java2DUtils.java Source code

Java tutorial

Introduction

Here is the source code for Java2DUtils.java

Source

/*
 * 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 {
    private static Stack clipBoundsStack = new Stack();
    private static Stack transforms = new Stack();

    public static void setClip(Graphics g, int x, int y, int width, int height) {
        setClip(g, new Rectangle(x, y, width, height));
    }

    @SuppressWarnings("unchecked")
    public static void setClip(Graphics g, Rectangle clipBounds) {
        Rectangle currentClipBounds;

        clipBounds = new Rectangle(clipBounds);
        clipBounds.width += 1;
        clipBounds.height += 1;

        currentClipBounds = g.getClipBounds();
        if (currentClipBounds != null) {
            clipBounds = clipBounds.intersection(g.getClipBounds());
        }

        clipBoundsStack.push(currentClipBounds);
        g.setClip(clipBounds);
    }

    public static void resetClip(Graphics g) {
        g.setClip((Shape) clipBoundsStack.pop());
    }

    @SuppressWarnings("unchecked")
    public static void setTransform(Graphics2D g2, AffineTransform transform) {
        AffineTransform current;

        current = g2.getTransform();
        transforms.push(current);
        g2.setTransform(transform);
    }

    public static void resetTransform(Graphics2D g2) {
        if (transforms.empty()) {
            return;
        }

        g2.setTransform((AffineTransform) transforms.pop());
    }

}