home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / text / html / StyleSheet$BackgroundImagePainter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.0 KB  |  153 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.awt.Rectangle;
  6. import java.io.Serializable;
  7. import javax.swing.ImageIcon;
  8. import javax.swing.text.AttributeSet;
  9. import javax.swing.text.View;
  10. import javax.swing.text.html.CSS.Attribute;
  11. import javax.swing.text.html.CSS.Value;
  12.  
  13. class StyleSheet$BackgroundImagePainter implements Serializable {
  14.    ImageIcon backgroundImage;
  15.    float hPosition;
  16.    float vPosition;
  17.    short flags;
  18.    private int paintX;
  19.    private int paintY;
  20.    private int paintMaxX;
  21.    private int paintMaxY;
  22.  
  23.    StyleSheet$BackgroundImagePainter(AttributeSet var1, CSS var2, StyleSheet var3) {
  24.       this.backgroundImage = var3.getBackgroundImage(var1);
  25.       CSS.BackgroundPosition var4 = (CSS.BackgroundPosition)var1.getAttribute(Attribute.BACKGROUND_POSITION);
  26.       if (var4 != null) {
  27.          this.hPosition = var4.getHorizontalPosition();
  28.          this.vPosition = var4.getVerticalPosition();
  29.          if (var4.isHorizontalPositionRelativeToSize()) {
  30.             this.flags = (short)(this.flags | 4);
  31.          } else if (var4.isHorizontalPositionRelativeToSize()) {
  32.             this.hPosition *= (float)CSS.getFontSize(var1, 12);
  33.          }
  34.  
  35.          if (var4.isVerticalPositionRelativeToSize()) {
  36.             this.flags = (short)(this.flags | 8);
  37.          } else if (var4.isVerticalPositionRelativeToFontSize()) {
  38.             this.vPosition *= (float)CSS.getFontSize(var1, 12);
  39.          }
  40.       }
  41.  
  42.       CSS.Value var5 = (CSS.Value)var1.getAttribute(Attribute.BACKGROUND_REPEAT);
  43.       if (var5 != null && var5 != Value.BACKGROUND_REPEAT) {
  44.          if (var5 == Value.BACKGROUND_REPEAT_X) {
  45.             this.flags = (short)(this.flags | 1);
  46.          } else if (var5 == Value.BACKGROUND_REPEAT_Y) {
  47.             this.flags = (short)(this.flags | 2);
  48.          }
  49.       } else {
  50.          this.flags = (short)(this.flags | 3);
  51.       }
  52.  
  53.    }
  54.  
  55.    void paint(Graphics var1, float var2, float var3, float var4, float var5, View var6) {
  56.       Rectangle var7 = var1.getClipRect();
  57.       if (var7 != null) {
  58.          var1.clipRect((int)var2, (int)var3, (int)var4, (int)var5);
  59.       }
  60.  
  61.       if ((this.flags & 3) == 0) {
  62.          int var8 = this.backgroundImage.getIconWidth();
  63.          int var9 = this.backgroundImage.getIconWidth();
  64.          if ((this.flags & 4) == 4) {
  65.             this.paintX = (int)(var2 + var4 * this.hPosition - (float)var8 * this.hPosition);
  66.          } else {
  67.             this.paintX = (int)var2 + (int)this.hPosition;
  68.          }
  69.  
  70.          if ((this.flags & 8) == 8) {
  71.             this.paintY = (int)(var3 + var5 * this.vPosition - (float)var9 * this.vPosition);
  72.          } else {
  73.             this.paintY = (int)var3 + (int)this.vPosition;
  74.          }
  75.  
  76.          if (var7 == null || this.paintX + var8 > var7.x && this.paintY + var9 > var7.y && this.paintX < var7.x + var7.width && this.paintY < var7.y + var7.height) {
  77.             this.backgroundImage.paintIcon((Component)null, var1, this.paintX, this.paintY);
  78.          }
  79.       } else {
  80.          int var11 = this.backgroundImage.getIconWidth();
  81.          int var12 = this.backgroundImage.getIconHeight();
  82.          if (var11 > 0 && var12 > 0) {
  83.             this.paintX = (int)var2;
  84.             this.paintY = (int)var3;
  85.             this.paintMaxX = (int)(var2 + var4);
  86.             this.paintMaxY = (int)(var3 + var5);
  87.             if (this.updatePaintCoordinates(var7, var11, var12)) {
  88.                while(this.paintX < this.paintMaxX) {
  89.                   for(int var10 = this.paintY; var10 < this.paintMaxY; var10 += var12) {
  90.                      this.backgroundImage.paintIcon((Component)null, var1, this.paintX, var10);
  91.                   }
  92.  
  93.                   this.paintX += var11;
  94.                }
  95.             }
  96.          }
  97.       }
  98.  
  99.       if (var7 != null) {
  100.          var1.setClip(var7.x, var7.y, var7.width, var7.height);
  101.       }
  102.  
  103.    }
  104.  
  105.    private boolean updatePaintCoordinates(Rectangle var1, int var2, int var3) {
  106.       if ((this.flags & 3) == 1) {
  107.          this.paintMaxY = this.paintY + 1;
  108.       } else if ((this.flags & 3) == 2) {
  109.          this.paintMaxX = this.paintX + 1;
  110.       }
  111.  
  112.       if (var1 != null) {
  113.          if ((this.flags & 3) == 1 && (this.paintY + var3 <= var1.y || this.paintY > var1.y + var1.height)) {
  114.             return false;
  115.          }
  116.  
  117.          if ((this.flags & 3) == 2 && (this.paintX + var2 <= var1.x || this.paintX > var1.x + var1.width)) {
  118.             return false;
  119.          }
  120.  
  121.          if ((this.flags & 1) == 1) {
  122.             if (var1.x + var1.width < this.paintMaxX) {
  123.                if ((var1.x + var1.width - this.paintX) % var2 == 0) {
  124.                   this.paintMaxX = var1.x + var1.width;
  125.                } else {
  126.                   this.paintMaxX = ((var1.x + var1.width - this.paintX) / var2 + 1) * var2 + this.paintX;
  127.                }
  128.             }
  129.  
  130.             if (var1.x > this.paintX) {
  131.                this.paintX += (var1.x - this.paintX) / var2 * var2;
  132.             }
  133.          }
  134.  
  135.          if ((this.flags & 2) == 2) {
  136.             if (var1.y + var1.height < this.paintMaxY) {
  137.                if ((var1.y + var1.height - this.paintY) % var3 == 0) {
  138.                   this.paintMaxY = var1.y + var1.height;
  139.                } else {
  140.                   this.paintMaxY = ((var1.y + var1.height - this.paintY) / var3 + 1) * var3 + this.paintY;
  141.                }
  142.             }
  143.  
  144.             if (var1.y > this.paintY) {
  145.                this.paintY += (var1.y - this.paintY) / var3 * var3;
  146.             }
  147.          }
  148.       }
  149.  
  150.       return true;
  151.    }
  152. }
  153.