home *** CD-ROM | disk | FTP | other *** search
- package com.next.gt;
-
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Rectangle;
- import java.util.Vector;
-
- public class DirtyRectSet {
- private Vector rects;
- final int GLUE = 64;
-
- public DirtyRectSet() {
- this.rects = new Vector();
- }
-
- public DirtyRectSet(int var1) {
- this.rects = new Vector(var1);
- }
-
- public void addRect(Rectangle var1) {
- int var2 = this.rects.size();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- Rectangle var4 = (Rectangle)this.rects.elementAt(var3);
- if (var1.x > var4.x) {
- this.rects.insertElementAt(var1, var3);
- return;
- }
- }
-
- this.rects.addElement(var1);
- }
-
- private final boolean closeEnough(Rectangle var1, Rectangle var2) {
- var1.width += 64;
- var1.height += 64;
- var2.width += 64;
- var2.height += 64;
- boolean var3 = var1.intersects(var2);
- var1.width -= 64;
- var1.height -= 64;
- var2.width -= 64;
- var2.height -= 64;
- return var3;
- }
-
- private void collapse() {
- int var1 = 0;
- if (this.rects.size() >= 2) {
- Rectangle var2 = (Rectangle)this.rects.elementAt(var1);
- Rectangle var3 = (Rectangle)this.rects.elementAt(var1 + 1);
-
- while(true) {
- while(!this.closeEnough(var2, var3)) {
- if (var1 + 2 >= this.rects.size()) {
- return;
- }
-
- var2 = var3;
- var3 = (Rectangle)this.rects.elementAt(var1 + 2);
- ++var1;
- }
-
- var2 = var2.union(var3);
- this.rects.setElementAt(var2, var1);
- this.rects.removeElementAt(var1 + 1);
- if (var1 + 1 >= this.rects.size()) {
- return;
- }
-
- var3 = (Rectangle)this.rects.elementAt(var1 + 1);
- }
- }
- }
-
- public void drawImage(Graphics var1, Image var2, Gamelication var3) {
- this.collapse();
-
- for(int var4 = 0; var4 < this.rects.size(); ++var4) {
- Rectangle var5 = (Rectangle)this.rects.elementAt(var4);
- Graphics var6 = var1.create(var5.x, var5.y, var5.width, var5.height);
- var6.drawImage(var2, -var5.x, -var5.y, var3);
- var6.dispose();
- }
-
- }
- }
-