home *** CD-ROM | disk | FTP | other *** search
- package com.sfs.html;
-
- import java.awt.Canvas;
- import java.awt.Component;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.image.ImageObserver;
- import java.net.URL;
- import java.util.Hashtable;
-
- public class HtmlCanvas extends Canvas {
- private HtmlDocument document;
- private int start;
- private int width = 300;
- private int[] heights;
- private Href[] hrefs;
- private Hashtable names;
- private Image image;
- private HtmlImage[] imgs;
-
- public HtmlCanvas() {
- this.document = null;
- }
-
- public HtmlCanvas(HtmlDocument var1) {
- this.changeDocument(var1);
- }
-
- public void changeDocument(HtmlDocument var1) {
- var1.draw(new HtmlPager(this, this.width));
- this.document = var1;
- this.start = 0;
- }
-
- public int setStart(String var1) {
- if (this.names != null && var1 != null) {
- Integer var2 = (Integer)this.names.get(var1);
- if (var2 == null) {
- this.start = 0;
- } else {
- this.start = this.heights[var2 - 1];
- }
- } else {
- this.start = 0;
- }
-
- ((Component)this).repaint();
- return this.start;
- }
-
- public void setStart(int var1) {
- this.start = var1;
- ((Component)this).repaint();
- }
-
- public synchronized void paint(Graphics var1) {
- var1.setColor(((Component)this).getBackground());
- if (this.document == null) {
- var1.fillRect(0, 0, ((Component)this).getSize().width, ((Component)this).getSize().height);
- } else {
- if (this.image == null) {
- this.document.draw(new HtmlPager(this, this.width));
- }
-
- Graphics var2 = this.image.getGraphics();
-
- for(int var3 = 0; var3 < this.imgs.length; ++var3) {
- var2.drawImage(this.imgs[var3].img, this.imgs[var3].x, this.imgs[var3].y, this.imgs[var3].w, this.imgs[var3].h, this);
- }
-
- var1.drawImage(this.image, 0, -this.start, this);
- int var5 = this.image.getWidth((ImageObserver)null);
- if (var5 < ((Component)this).getSize().width) {
- var1.fillRect(var5, 0, ((Component)this).getSize().width - var5, ((Component)this).getSize().height);
- }
-
- int var4 = this.image.getHeight((ImageObserver)null) - this.start;
- if (var4 < ((Component)this).getSize().height) {
- var1.fillRect(0, var4, ((Component)this).getSize().width, ((Component)this).getSize().height - var4);
- }
-
- }
- }
-
- protected synchronized void setData(int[] var1, Href[] var2, Hashtable var3, HtmlImage[] var4, Image var5) {
- this.heights = var1;
- this.hrefs = var2;
- this.names = var3;
- this.imgs = var4;
- this.image = var5;
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
-
- private int lineAt(int var1) {
- for(int var2 = 0; var2 < this.heights.length - 1; ++var2) {
- if (var1 >= this.heights[var2] && var1 < this.heights[var2 + 1]) {
- return var2;
- }
- }
-
- return -1;
- }
-
- public URL getHref(int var1, int var2) {
- if (this.hrefs == null) {
- return null;
- } else {
- int var3 = this.lineAt(var2 + this.start);
-
- for(int var4 = 0; var4 < this.hrefs.length; ++var4) {
- Href var5 = this.hrefs[var4];
- if ((var3 != var5.startLine || var1 >= var5.startOffset) && (var3 != var5.endLine || var1 < var5.endOffset) && var3 >= var5.startLine && var3 <= var5.endLine) {
- return var5.url;
- }
- }
-
- return null;
- }
- }
-
- public int getVirtualHeight() {
- return this.heights[this.heights.length - 1];
- }
-
- public int setWidth(int var1) {
- if (this.document == null) {
- this.width = var1;
- return 0;
- } else {
- if (var1 != this.width) {
- this.width = var1;
- this.document.draw(new HtmlPager(this, var1));
- }
-
- return this.heights[this.heights.length - 1];
- }
- }
-
- private String statusString(int var1) {
- String var2 = "";
- if ((var1 & 128) != 0) {
- var2 = var2 + "ABORT ";
- }
-
- if ((var1 & 32) != 0) {
- var2 = var2 + "ALLBITS ";
- }
-
- if ((var1 & 64) != 0) {
- var2 = var2 + "ERROR ";
- }
-
- if ((var1 & 16) != 0) {
- var2 = var2 + "FRAMEBITS ";
- }
-
- if ((var1 & 2) != 0) {
- var2 = var2 + "HEIGHT ";
- }
-
- if ((var1 & 4) != 0) {
- var2 = var2 + "PROPERTIES ";
- }
-
- if ((var1 & 8) != 0) {
- var2 = var2 + "SOMEBITS ";
- }
-
- if ((var1 & 1) != 0) {
- var2 = var2 + "WIDTH ";
- }
-
- return var2 + var1;
- }
- }
-