home *** CD-ROM | disk | FTP | other *** search
- package sun.awt;
-
- import java.awt.Component;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.util.LinkedList;
- import java.util.ListIterator;
-
- public class RepaintArea extends Rectangle {
- private LinkedList rectangleList;
-
- public RepaintArea() {
- this.rectangleList = new LinkedList();
- }
-
- private RepaintArea(RepaintArea var1) {
- super(var1);
- this.rectangleList = (LinkedList)var1.rectangleList.clone();
- }
-
- public synchronized void add(Rectangle var1) {
- if (!var1.isEmpty()) {
- if (!this.contains(var1)) {
- this.rectangleList.add(var1);
- if (((Rectangle)this).isEmpty()) {
- ((Rectangle)this).setBounds(var1);
- } else {
- super.add(var1);
- }
-
- }
- }
- }
-
- public boolean contains(int var1, int var2) {
- if (super.contains(var1, var2)) {
- ListIterator var3 = this.rectangleList.listIterator(0);
-
- while(var3.hasNext()) {
- if (((Rectangle)var3.next()).contains(var1, var2)) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- public boolean contains(Point var1) {
- return this.contains(var1.x, var1.y);
- }
-
- public boolean contains(int var1, int var2, int var3, int var4) {
- if (super.contains(var1, var2, var3, var4)) {
- ListIterator var5 = this.rectangleList.listIterator(0);
-
- while(var5.hasNext()) {
- if (((Rectangle)var5.next()).contains(var1, var2, var3, var4)) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- public boolean contains(Rectangle var1) {
- return this.contains(var1.x, var1.y, var1.width, var1.height);
- }
-
- public boolean intersects(int var1, int var2, int var3, int var4) {
- if (super.intersects((double)var1, (double)var2, (double)var3, (double)var4)) {
- ListIterator var5 = this.rectangleList.listIterator(0);
-
- while(var5.hasNext()) {
- if (((Rectangle)var5.next()).intersects((double)var1, (double)var2, (double)var3, (double)var4)) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- public boolean intersects(Rectangle var1) {
- return this.intersects(var1.x, var1.y, var1.width, var1.height);
- }
-
- public Object clone() {
- return new RepaintArea(this);
- }
-
- private synchronized RepaintArea cloneAndReset() {
- RepaintArea var1 = (RepaintArea)this.clone();
- this.rectangleList.clear();
- ((Rectangle)this).setBounds(0, 0, 0, 0);
- return var1;
- }
-
- public void paint(Object var1, boolean var2) {
- Graphics var3 = ((Component)var1).getGraphics();
- if (var3 != null) {
- try {
- RepaintArea var4 = this.cloneAndReset();
- int var5 = var4.rectangleList.size();
- if (var5 != 0) {
- if (var5 == 2) {
- Rectangle var6 = (Rectangle)var4.rectangleList.removeFirst();
- Rectangle var7 = (Rectangle)var4.rectangleList.removeFirst();
- if (!var6.intersects(var7)) {
- var3.setClip(var6);
- if (var2) {
- var3.clearRect(var6.x, var6.y, var6.width, var6.height);
- }
-
- ((Component)var1).paint(var3);
- var3.setClip(var7);
- if (var2) {
- var3.clearRect(var7.x, var7.y, var7.width, var7.height);
- }
-
- ((Component)var1).paint(var3);
- return;
- }
- }
-
- var3.setClip(var4);
- if (var2) {
- var3.clearRect(var4.x, var4.y, var4.width, var4.height);
- }
-
- ((Component)var1).paint(var3);
- return;
- }
- } finally {
- var3.dispose();
- }
-
- }
- }
-
- public void update(Object var1) {
- Graphics var2 = ((Component)var1).getGraphics();
- if (var2 != null) {
- try {
- RepaintArea var3 = this.cloneAndReset();
- int var4 = var3.rectangleList.size();
- if (var4 != 0) {
- if (var4 == 2) {
- Rectangle var5 = (Rectangle)var3.rectangleList.removeFirst();
- Rectangle var6 = (Rectangle)var3.rectangleList.removeFirst();
- if (!var5.intersects(var6)) {
- var2.setClip(var5);
- ((Component)var1).update(var2);
- var2.setClip(var6);
- ((Component)var1).update(var2);
- return;
- }
- }
-
- var2.setClip(var3);
- ((Component)var1).update(var2);
- return;
- }
- } finally {
- var2.dispose();
- }
-
- }
- }
- }
-