1 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 |