home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / WIN95 / IAVAZIP.EXE / DATA.Z / HtmlCanvas.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-18  |  3.4 KB  |  179 lines

  1. package com.sfs.html;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Component;
  5. import java.awt.Graphics;
  6. import java.awt.Image;
  7. import java.awt.image.ImageObserver;
  8. import java.net.URL;
  9. import java.util.Hashtable;
  10.  
  11. public class HtmlCanvas extends Canvas {
  12.    private HtmlDocument document;
  13.    private int start;
  14.    private int width = 300;
  15.    private int[] heights;
  16.    private Href[] hrefs;
  17.    private Hashtable names;
  18.    private Image image;
  19.    private HtmlImage[] imgs;
  20.  
  21.    public HtmlCanvas() {
  22.       this.document = null;
  23.    }
  24.  
  25.    public HtmlCanvas(HtmlDocument var1) {
  26.       this.changeDocument(var1);
  27.    }
  28.  
  29.    public void changeDocument(HtmlDocument var1) {
  30.       var1.draw(new HtmlPager(this, this.width));
  31.       this.document = var1;
  32.       this.start = 0;
  33.    }
  34.  
  35.    public int setStart(String var1) {
  36.       if (this.names != null && var1 != null) {
  37.          Integer var2 = (Integer)this.names.get(var1);
  38.          if (var2 == null) {
  39.             this.start = 0;
  40.          } else {
  41.             this.start = this.heights[var2 - 1];
  42.          }
  43.       } else {
  44.          this.start = 0;
  45.       }
  46.  
  47.       ((Component)this).repaint();
  48.       return this.start;
  49.    }
  50.  
  51.    public void setStart(int var1) {
  52.       this.start = var1;
  53.       ((Component)this).repaint();
  54.    }
  55.  
  56.    public synchronized void paint(Graphics var1) {
  57.       var1.setColor(((Component)this).getBackground());
  58.       if (this.document == null) {
  59.          var1.fillRect(0, 0, ((Component)this).getSize().width, ((Component)this).getSize().height);
  60.       } else {
  61.          if (this.image == null) {
  62.             this.document.draw(new HtmlPager(this, this.width));
  63.          }
  64.  
  65.          Graphics var2 = this.image.getGraphics();
  66.  
  67.          for(int var3 = 0; var3 < this.imgs.length; ++var3) {
  68.             var2.drawImage(this.imgs[var3].img, this.imgs[var3].x, this.imgs[var3].y, this.imgs[var3].w, this.imgs[var3].h, this);
  69.          }
  70.  
  71.          var1.drawImage(this.image, 0, -this.start, this);
  72.          int var5 = this.image.getWidth((ImageObserver)null);
  73.          if (var5 < ((Component)this).getSize().width) {
  74.             var1.fillRect(var5, 0, ((Component)this).getSize().width - var5, ((Component)this).getSize().height);
  75.          }
  76.  
  77.          int var4 = this.image.getHeight((ImageObserver)null) - this.start;
  78.          if (var4 < ((Component)this).getSize().height) {
  79.             var1.fillRect(0, var4, ((Component)this).getSize().width, ((Component)this).getSize().height - var4);
  80.          }
  81.  
  82.       }
  83.    }
  84.  
  85.    protected synchronized void setData(int[] var1, Href[] var2, Hashtable var3, HtmlImage[] var4, Image var5) {
  86.       this.heights = var1;
  87.       this.hrefs = var2;
  88.       this.names = var3;
  89.       this.imgs = var4;
  90.       this.image = var5;
  91.    }
  92.  
  93.    public void update(Graphics var1) {
  94.       this.paint(var1);
  95.    }
  96.  
  97.    private int lineAt(int var1) {
  98.       for(int var2 = 0; var2 < this.heights.length - 1; ++var2) {
  99.          if (var1 >= this.heights[var2] && var1 < this.heights[var2 + 1]) {
  100.             return var2;
  101.          }
  102.       }
  103.  
  104.       return -1;
  105.    }
  106.  
  107.    public URL getHref(int var1, int var2) {
  108.       if (this.hrefs == null) {
  109.          return null;
  110.       } else {
  111.          int var3 = this.lineAt(var2 + this.start);
  112.  
  113.          for(int var4 = 0; var4 < this.hrefs.length; ++var4) {
  114.             Href var5 = this.hrefs[var4];
  115.             if ((var3 != var5.startLine || var1 >= var5.startOffset) && (var3 != var5.endLine || var1 < var5.endOffset) && var3 >= var5.startLine && var3 <= var5.endLine) {
  116.                return var5.url;
  117.             }
  118.          }
  119.  
  120.          return null;
  121.       }
  122.    }
  123.  
  124.    public int getVirtualHeight() {
  125.       return this.heights[this.heights.length - 1];
  126.    }
  127.  
  128.    public int setWidth(int var1) {
  129.       if (this.document == null) {
  130.          this.width = var1;
  131.          return 0;
  132.       } else {
  133.          if (var1 != this.width) {
  134.             this.width = var1;
  135.             this.document.draw(new HtmlPager(this, var1));
  136.          }
  137.  
  138.          return this.heights[this.heights.length - 1];
  139.       }
  140.    }
  141.  
  142.    private String statusString(int var1) {
  143.       String var2 = "";
  144.       if ((var1 & 128) != 0) {
  145.          var2 = var2 + "ABORT ";
  146.       }
  147.  
  148.       if ((var1 & 32) != 0) {
  149.          var2 = var2 + "ALLBITS ";
  150.       }
  151.  
  152.       if ((var1 & 64) != 0) {
  153.          var2 = var2 + "ERROR ";
  154.       }
  155.  
  156.       if ((var1 & 16) != 0) {
  157.          var2 = var2 + "FRAMEBITS ";
  158.       }
  159.  
  160.       if ((var1 & 2) != 0) {
  161.          var2 = var2 + "HEIGHT ";
  162.       }
  163.  
  164.       if ((var1 & 4) != 0) {
  165.          var2 = var2 + "PROPERTIES ";
  166.       }
  167.  
  168.       if ((var1 & 8) != 0) {
  169.          var2 = var2 + "SOMEBITS ";
  170.       }
  171.  
  172.       if ((var1 & 1) != 0) {
  173.          var2 = var2 + "WIDTH ";
  174.       }
  175.  
  176.       return var2 + var1;
  177.    }
  178. }
  179.