KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > businesslogic > ireport > util > Java2DUtil


1 /*
2  * Copyright (C) 2005 - 2006 JasperSoft Corporation. All rights reserved.
3  * http://www.jaspersoft.com.
4  *
5  * Unless you have purchased a commercial license agreement from JasperSoft,
6  * the following license terms apply:
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as published by
10  * the Free Software Foundation.
11  *
12  * This program is distributed WITHOUT ANY WARRANTY; and without the
13  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
18  * or write to:
19  *
20  * Free Software Foundation, Inc.,
21  * 59 Temple Place - Suite 330,
22  * Boston, MA USA 02111-1307
23  *
24  *
25  *
26  *
27  * Java2DUtil.java
28  *
29  */

30
31 package it.businesslogic.ireport.util;
32
33 import java.awt.*;
34 import java.awt.geom.*;
35 import java.util.*;
36
37 public class Java2DUtil
38 {
39   private static Stack clipBoundsStack = new Stack();
40   private static Stack transforms = new Stack();
41
42   public static void setClip(Graphics g, int x, int y, int width, int height)
43   {
44     setClip(g, new Rectangle(x, y, width, height));
45   }
46
47   public static void setClip(Graphics g, Rectangle clipBounds)
48   {
49     Rectangle currentClipBounds;
50
51     clipBounds = new Rectangle(clipBounds);
52     clipBounds.width += 1;
53     clipBounds.height += 1;
54
55     currentClipBounds = g.getClipBounds();
56     if(currentClipBounds != null)
57     {
58       clipBounds = clipBounds.intersection(g.getClipBounds());
59     }
60
61     clipBoundsStack.push(currentClipBounds);
62     g.setClip(clipBounds);
63   }
64
65   public static void resetClip(Graphics g)
66   {
67     g.setClip((Shape) clipBoundsStack.pop());
68   }
69   
70     public static void setTransform(Graphics2D g2, AffineTransform transform)
71   {
72     AffineTransform current;
73
74
75     current = g2.getTransform();
76     transforms.push(current);
77     g2.setTransform(transform);
78   }
79
80
81   public static void resetTransform(Graphics2D g2)
82   {
83     if(transforms.empty())
84     {
85       return;
86     }
87
88
89     g2.setTransform((AffineTransform) transforms.pop());
90   }
91 }
92
Popular Tags