home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / RepaintArea.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.3 KB  |  173 lines

  1. package sun.awt;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.awt.Point;
  6. import java.awt.Rectangle;
  7. import java.util.LinkedList;
  8. import java.util.ListIterator;
  9.  
  10. public class RepaintArea extends Rectangle {
  11.    private LinkedList rectangleList;
  12.  
  13.    public RepaintArea() {
  14.       this.rectangleList = new LinkedList();
  15.    }
  16.  
  17.    private RepaintArea(RepaintArea var1) {
  18.       super(var1);
  19.       this.rectangleList = (LinkedList)var1.rectangleList.clone();
  20.    }
  21.  
  22.    public synchronized void add(Rectangle var1) {
  23.       if (!var1.isEmpty()) {
  24.          if (!this.contains(var1)) {
  25.             this.rectangleList.add(var1);
  26.             if (((Rectangle)this).isEmpty()) {
  27.                ((Rectangle)this).setBounds(var1);
  28.             } else {
  29.                super.add(var1);
  30.             }
  31.  
  32.          }
  33.       }
  34.    }
  35.  
  36.    public boolean contains(int var1, int var2) {
  37.       if (super.contains(var1, var2)) {
  38.          ListIterator var3 = this.rectangleList.listIterator(0);
  39.  
  40.          while(var3.hasNext()) {
  41.             if (((Rectangle)var3.next()).contains(var1, var2)) {
  42.                return true;
  43.             }
  44.          }
  45.       }
  46.  
  47.       return false;
  48.    }
  49.  
  50.    public boolean contains(Point var1) {
  51.       return this.contains(var1.x, var1.y);
  52.    }
  53.  
  54.    public boolean contains(int var1, int var2, int var3, int var4) {
  55.       if (super.contains(var1, var2, var3, var4)) {
  56.          ListIterator var5 = this.rectangleList.listIterator(0);
  57.  
  58.          while(var5.hasNext()) {
  59.             if (((Rectangle)var5.next()).contains(var1, var2, var3, var4)) {
  60.                return true;
  61.             }
  62.          }
  63.       }
  64.  
  65.       return false;
  66.    }
  67.  
  68.    public boolean contains(Rectangle var1) {
  69.       return this.contains(var1.x, var1.y, var1.width, var1.height);
  70.    }
  71.  
  72.    public boolean intersects(int var1, int var2, int var3, int var4) {
  73.       if (super.intersects((double)var1, (double)var2, (double)var3, (double)var4)) {
  74.          ListIterator var5 = this.rectangleList.listIterator(0);
  75.  
  76.          while(var5.hasNext()) {
  77.             if (((Rectangle)var5.next()).intersects((double)var1, (double)var2, (double)var3, (double)var4)) {
  78.                return true;
  79.             }
  80.          }
  81.       }
  82.  
  83.       return false;
  84.    }
  85.  
  86.    public boolean intersects(Rectangle var1) {
  87.       return this.intersects(var1.x, var1.y, var1.width, var1.height);
  88.    }
  89.  
  90.    public Object clone() {
  91.       return new RepaintArea(this);
  92.    }
  93.  
  94.    private synchronized RepaintArea cloneAndReset() {
  95.       RepaintArea var1 = (RepaintArea)this.clone();
  96.       this.rectangleList.clear();
  97.       ((Rectangle)this).setBounds(0, 0, 0, 0);
  98.       return var1;
  99.    }
  100.  
  101.    public void paint(Object var1, boolean var2) {
  102.       Graphics var3 = ((Component)var1).getGraphics();
  103.       if (var3 != null) {
  104.          try {
  105.             RepaintArea var4 = this.cloneAndReset();
  106.             int var5 = var4.rectangleList.size();
  107.             if (var5 != 0) {
  108.                if (var5 == 2) {
  109.                   Rectangle var6 = (Rectangle)var4.rectangleList.removeFirst();
  110.                   Rectangle var7 = (Rectangle)var4.rectangleList.removeFirst();
  111.                   if (!var6.intersects(var7)) {
  112.                      var3.setClip(var6);
  113.                      if (var2) {
  114.                         var3.clearRect(var6.x, var6.y, var6.width, var6.height);
  115.                      }
  116.  
  117.                      ((Component)var1).paint(var3);
  118.                      var3.setClip(var7);
  119.                      if (var2) {
  120.                         var3.clearRect(var7.x, var7.y, var7.width, var7.height);
  121.                      }
  122.  
  123.                      ((Component)var1).paint(var3);
  124.                      return;
  125.                   }
  126.                }
  127.  
  128.                var3.setClip(var4);
  129.                if (var2) {
  130.                   var3.clearRect(var4.x, var4.y, var4.width, var4.height);
  131.                }
  132.  
  133.                ((Component)var1).paint(var3);
  134.                return;
  135.             }
  136.          } finally {
  137.             var3.dispose();
  138.          }
  139.  
  140.       }
  141.    }
  142.  
  143.    public void update(Object var1) {
  144.       Graphics var2 = ((Component)var1).getGraphics();
  145.       if (var2 != null) {
  146.          try {
  147.             RepaintArea var3 = this.cloneAndReset();
  148.             int var4 = var3.rectangleList.size();
  149.             if (var4 != 0) {
  150.                if (var4 == 2) {
  151.                   Rectangle var5 = (Rectangle)var3.rectangleList.removeFirst();
  152.                   Rectangle var6 = (Rectangle)var3.rectangleList.removeFirst();
  153.                   if (!var5.intersects(var6)) {
  154.                      var2.setClip(var5);
  155.                      ((Component)var1).update(var2);
  156.                      var2.setClip(var6);
  157.                      ((Component)var1).update(var2);
  158.                      return;
  159.                   }
  160.                }
  161.  
  162.                var2.setClip(var3);
  163.                ((Component)var1).update(var2);
  164.                return;
  165.             }
  166.          } finally {
  167.             var2.dispose();
  168.          }
  169.  
  170.       }
  171.    }
  172. }
  173.