home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / Gamelicator / examples / Boink / com / next / gt / DirtyRectSet.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-15  |  1.9 KB  |  88 lines

  1. package com.next.gt;
  2.  
  3. import java.awt.Graphics;
  4. import java.awt.Image;
  5. import java.awt.Rectangle;
  6. import java.util.Vector;
  7.  
  8. public class DirtyRectSet {
  9.    private Vector rects;
  10.    final int GLUE = 64;
  11.  
  12.    public DirtyRectSet() {
  13.       this.rects = new Vector();
  14.    }
  15.  
  16.    public DirtyRectSet(int var1) {
  17.       this.rects = new Vector(var1);
  18.    }
  19.  
  20.    public void addRect(Rectangle var1) {
  21.       int var2 = this.rects.size();
  22.  
  23.       for(int var3 = 0; var3 < var2; ++var3) {
  24.          Rectangle var4 = (Rectangle)this.rects.elementAt(var3);
  25.          if (var1.x > var4.x) {
  26.             this.rects.insertElementAt(var1, var3);
  27.             return;
  28.          }
  29.       }
  30.  
  31.       this.rects.addElement(var1);
  32.    }
  33.  
  34.    private final boolean closeEnough(Rectangle var1, Rectangle var2) {
  35.       var1.width += 64;
  36.       var1.height += 64;
  37.       var2.width += 64;
  38.       var2.height += 64;
  39.       boolean var3 = var1.intersects(var2);
  40.       var1.width -= 64;
  41.       var1.height -= 64;
  42.       var2.width -= 64;
  43.       var2.height -= 64;
  44.       return var3;
  45.    }
  46.  
  47.    private void collapse() {
  48.       int var1 = 0;
  49.       if (this.rects.size() >= 2) {
  50.          Rectangle var2 = (Rectangle)this.rects.elementAt(var1);
  51.          Rectangle var3 = (Rectangle)this.rects.elementAt(var1 + 1);
  52.  
  53.          while(true) {
  54.             while(!this.closeEnough(var2, var3)) {
  55.                if (var1 + 2 >= this.rects.size()) {
  56.                   return;
  57.                }
  58.  
  59.                var2 = var3;
  60.                var3 = (Rectangle)this.rects.elementAt(var1 + 2);
  61.                ++var1;
  62.             }
  63.  
  64.             var2 = var2.union(var3);
  65.             this.rects.setElementAt(var2, var1);
  66.             this.rects.removeElementAt(var1 + 1);
  67.             if (var1 + 1 >= this.rects.size()) {
  68.                return;
  69.             }
  70.  
  71.             var3 = (Rectangle)this.rects.elementAt(var1 + 1);
  72.          }
  73.       }
  74.    }
  75.  
  76.    public void drawImage(Graphics var1, Image var2, Gamelication var3) {
  77.       this.collapse();
  78.  
  79.       for(int var4 = 0; var4 < this.rects.size(); ++var4) {
  80.          Rectangle var5 = (Rectangle)this.rects.elementAt(var4);
  81.          Graphics var6 = var1.create(var5.x, var5.y, var5.width, var5.height);
  82.          var6.drawImage(var2, -var5.x, -var5.y, var3);
  83.          var6.dispose();
  84.       }
  85.  
  86.    }
  87. }
  88.