home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import java.awt.Color;
- import java.awt.Font;
- import netscape.util.InconsistencyException;
- import netscape.util.Vector;
-
- public class Graphics {
- Vector graphicsStates = new Vector();
- java.awt.Graphics primaryAwtGraphics;
- java.awt.Graphics currentAwtGraphics;
- static int graphicsCount;
- int graphicsID;
- Rect primaryClipRect;
- Bitmap buffer;
- public static final int LEFT_JUSTIFIED = 0;
- public static final int CENTERED = 1;
- public static final int RIGHT_JUSTIFIED = 2;
-
- public Graphics(View var1) {
- this.graphicsID = graphicsCount++;
- Rect var2 = var1.convertRectToView((View)null, var1.bounds);
- var2.x -= var1.bounds.x;
- var2.y -= var1.bounds.y;
- this.buffer = null;
- this.init(var2, var1.rootView().panel.getGraphics());
- }
-
- public Graphics(Bitmap var1) {
- this.graphicsID = graphicsCount++;
- this.buffer = var1;
- this.init(new Rect(0, 0, var1.width(), var1.height()), var1.awtImage.getGraphics());
- }
-
- Graphics(Rect var1, java.awt.Graphics var2) {
- this.graphicsID = graphicsCount++;
- this.init(new Rect(var1), var2);
- }
-
- static Graphics newGraphics(View var0) {
- return (Graphics)(debugViewCount() == 0 ? new Graphics(var0) : new DebugGraphics(var0));
- }
-
- static Graphics newGraphics(Bitmap var0) {
- return (Graphics)(debugViewCount() == 0 ? new Graphics(var0) : new DebugGraphics(var0));
- }
-
- void init(Rect var1, java.awt.Graphics var2) {
- GraphicsState var3 = new GraphicsState();
- this.graphicsStates.addElement(var3);
- var3.absoluteClipRect = var1;
- this.primaryAwtGraphics = var2;
- this.currentAwtGraphics = this.primaryAwtGraphics;
- this.primaryAwtGraphics.clipRect(var1.x, var1.y, var1.width, var1.height);
- this.primaryClipRect = var1;
- var3.xOffset = var1.x;
- var3.yOffset = var1.y;
- }
-
- public void pushState() {
- GraphicsState var1 = this.state();
- GraphicsState var2;
- if (var1 != null) {
- var2 = (GraphicsState)var1.clone();
- } else {
- var2 = new GraphicsState();
- }
-
- this.graphicsStates.addElement(var2);
- }
-
- final void restoreAwtGraphics(java.awt.Graphics var1, GraphicsState var2) {
- if (var2.font != null) {
- if (var2.font.wasDownloaded()) {
- var1.setFont((Font)null);
- } else {
- var1.setFont(var2.font._awtFont);
- }
- }
-
- if (var2.color == null) {
- var1.setColor((Color)null);
- } else {
- var1.setColor(var2.color._color);
- if (var2.xorColor != null) {
- var1.setXORMode(var2.xorColor._color);
- } else {
- var1.setPaintMode();
- }
- }
- }
-
- public void popState() {
- GraphicsState var1 = this.state();
- this.graphicsStates.removeLastElement();
- if (var1.awtGraphics != null) {
- var1.awtGraphics.dispose();
- this.currentAwtGraphics = this.awtGraphics();
- }
-
- var1 = this.state();
- if (var1 != null) {
- this.restoreAwtGraphics(this.currentAwtGraphics, var1);
- }
-
- }
-
- final GraphicsState state() {
- return (GraphicsState)this.graphicsStates.lastElement();
- }
-
- java.awt.Graphics awtGraphics() {
- int var1 = this.graphicsStates.count();
-
- while(var1-- > 0) {
- GraphicsState var2 = (GraphicsState)this.graphicsStates.elementAt(var1);
- if (var2.awtGraphics != null) {
- return var2.awtGraphics;
- }
- }
-
- return this.primaryAwtGraphics;
- }
-
- public void setFont(netscape.application.Font var1) {
- GraphicsState var2 = this.state();
- var2.font = var1;
- if (var1 != null && !var1.wasDownloaded()) {
- this.currentAwtGraphics.setFont(var1._awtFont);
- } else {
- this.currentAwtGraphics.setFont((Font)null);
- }
- }
-
- public netscape.application.Font font() {
- return this.state().font;
- }
-
- public void setColor(netscape.application.Color var1) {
- GraphicsState var2 = this.state();
- var2.color = var1;
- this.currentAwtGraphics.setColor(var1 == null ? null : var1._color);
- }
-
- public netscape.application.Color color() {
- return this.state().color;
- }
-
- public void translate(int var1, int var2) {
- GraphicsState var3 = this.state();
- var3.xOffset += var1;
- var3.yOffset += var2;
- var3.clipRect = null;
- }
-
- public int xTranslation() {
- GraphicsState var1 = this.state();
- return var1.xOffset;
- }
-
- public int yTranslation() {
- GraphicsState var1 = this.state();
- return var1.yOffset;
- }
-
- public Point translation() {
- GraphicsState var1 = this.state();
- return new Point(var1.xOffset, var1.yOffset);
- }
-
- public void setClipRect(Rect var1, boolean var2) {
- GraphicsState var3 = this.state();
- Rect var5 = this.absoluteClipRect();
- Rect var7;
- if (var1 == null) {
- var7 = this.primaryClipRect;
- var7 = new Rect(var7);
- } else {
- var7 = new Rect(var1);
- var7.moveBy(var3.xOffset, var3.yOffset);
- }
-
- if (var2) {
- var7.intersectWith(var5);
- }
-
- if (!var7.equals(var5)) {
- if (!var2 && var3.awtGraphics != null) {
- var3.awtGraphics.dispose();
- var3.awtGraphics = null;
- }
-
- if (var3.awtGraphics == null) {
- var3.awtGraphics = this.primaryAwtGraphics.create();
- this.currentAwtGraphics = var3.awtGraphics;
- if (var3.color != null) {
- this.currentAwtGraphics.setColor(netscape.application.Color.white._color);
- this.currentAwtGraphics.setColor(var3.color._color);
- }
- }
-
- this.currentAwtGraphics.clipRect(var7.x, var7.y, var7.width, var7.height);
- var3.absoluteClipRect = var7;
- var3.clipRect = null;
- this.restoreAwtGraphics(this.currentAwtGraphics, var3);
- }
-
- }
-
- public void setClipRect(Rect var1) {
- this.setClipRect(var1, true);
- }
-
- public Rect clipRect() {
- GraphicsState var1 = this.state();
- if (var1.clipRect != null) {
- return var1.clipRect;
- } else {
- int var2 = this.graphicsStates.count();
-
- while(var2-- > 0) {
- GraphicsState var3 = (GraphicsState)this.graphicsStates.elementAt(var2);
- if (var3.absoluteClipRect != null) {
- var1.clipRect = new Rect(var3.absoluteClipRect);
- var1.clipRect.moveBy(-var1.xOffset, -var1.yOffset);
- return var1.clipRect;
- }
- }
-
- return null;
- }
- }
-
- Rect absoluteClipRect() {
- int var1 = this.graphicsStates.count();
-
- while(var1-- > 0) {
- GraphicsState var2 = (GraphicsState)this.graphicsStates.elementAt(var1);
- if (var2.absoluteClipRect != null) {
- return var2.absoluteClipRect;
- }
- }
-
- return null;
- }
-
- public void clearClipRect() {
- this.setClipRect((Rect)null, false);
- }
-
- public Bitmap buffer() {
- return this.buffer;
- }
-
- public boolean isDrawingBuffer() {
- return this.buffer != null;
- }
-
- public void dispose() {
- int var1 = this.graphicsStates.count();
-
- while(var1-- > 0) {
- GraphicsState var2 = (GraphicsState)this.graphicsStates.elementAt(var1);
- if (var2.awtGraphics != null) {
- var2.awtGraphics.dispose();
- }
- }
-
- this.graphicsStates.removeAllElements();
- this.primaryAwtGraphics.dispose();
- this.primaryAwtGraphics = null;
- this.currentAwtGraphics = null;
- }
-
- public void sync() {
- Application.application().syncGraphics();
- }
-
- public void setPaintMode() {
- GraphicsState var1 = this.state();
- var1.xorColor = null;
- this.currentAwtGraphics.setPaintMode();
- }
-
- public void setXORMode(netscape.application.Color var1) {
- if (var1 == null) {
- this.setPaintMode();
- } else {
- GraphicsState var2 = this.state();
- var2.xorColor = var1;
- this.currentAwtGraphics.setXORMode(var1._color);
- }
- }
-
- public void drawRect(Rect var1) {
- this.drawRect(var1.x, var1.y, var1.width, var1.height);
- }
-
- public void drawRect(int var1, int var2, int var3, int var4) {
- GraphicsState var5 = this.state();
- var1 += var5.xOffset;
- var2 += var5.yOffset;
- this.currentAwtGraphics.drawRect(var1, var2, var3 - 1, var4 - 1);
- }
-
- public void fillRect(Rect var1) {
- this.fillRect(var1.x, var1.y, var1.width, var1.height);
- }
-
- public void fillRect(int var1, int var2, int var3, int var4) {
- GraphicsState var5 = this.state();
- var1 += var5.xOffset;
- var2 += var5.yOffset;
- this.currentAwtGraphics.fillRect(var1, var2, var3, var4);
- }
-
- public void drawRoundedRect(Rect var1, int var2, int var3) {
- this.drawRoundedRect(var1.x, var1.y, var1.width, var1.height, var2, var3);
- }
-
- public void drawRoundedRect(int var1, int var2, int var3, int var4, int var5, int var6) {
- GraphicsState var7 = this.state();
- var1 += var7.xOffset;
- var2 += var7.yOffset;
- this.currentAwtGraphics.drawRoundRect(var1, var2, var3 - 1, var4 - 1, var5, var6);
- }
-
- public void fillRoundedRect(Rect var1, int var2, int var3) {
- this.fillRoundedRect(var1.x, var1.y, var1.width, var1.height, var2, var3);
- }
-
- public void fillRoundedRect(int var1, int var2, int var3, int var4, int var5, int var6) {
- GraphicsState var7 = this.state();
- var1 += var7.xOffset;
- var2 += var7.yOffset;
- this.currentAwtGraphics.fillRoundRect(var1, var2, var3, var4, var5, var6);
- }
-
- public void drawLine(int var1, int var2, int var3, int var4) {
- GraphicsState var5 = this.state();
- var1 += var5.xOffset;
- var2 += var5.yOffset;
- var3 += var5.xOffset;
- var4 += var5.yOffset;
- this.currentAwtGraphics.drawLine(var1, var2, var3, var4);
- }
-
- public void drawPoint(int var1, int var2) {
- GraphicsState var3 = this.state();
- var1 += var3.xOffset;
- var2 += var3.yOffset;
- this.currentAwtGraphics.drawLine(var1, var2, var1, var2);
- }
-
- public void drawOval(Rect var1) {
- this.drawOval(var1.x, var1.y, var1.width - 1, var1.height - 1);
- }
-
- public void drawOval(int var1, int var2, int var3, int var4) {
- GraphicsState var5 = this.state();
- var1 += var5.xOffset;
- var2 += var5.yOffset;
- this.currentAwtGraphics.drawOval(var1, var2, var3, var4);
- }
-
- public void fillOval(Rect var1) {
- this.fillOval(var1.x, var1.y, var1.width, var1.height);
- }
-
- public void fillOval(int var1, int var2, int var3, int var4) {
- GraphicsState var5 = this.state();
- var1 += var5.xOffset;
- var2 += var5.yOffset;
- this.currentAwtGraphics.fillOval(var1, var2, var3, var4);
- }
-
- public void drawArc(Rect var1, int var2, int var3) {
- this.drawArc(var1.x, var1.y, var1.width, var1.height, var2, var3);
- }
-
- public void drawArc(int var1, int var2, int var3, int var4, int var5, int var6) {
- GraphicsState var7 = this.state();
- var1 += var7.xOffset;
- var2 += var7.yOffset;
- this.currentAwtGraphics.drawArc(var1, var2, var3, var4, var5, var6);
- }
-
- public void fillArc(Rect var1, int var2, int var3) {
- this.fillArc(var1.x, var1.y, var1.width, var1.height, var2, var3);
- }
-
- public void fillArc(int var1, int var2, int var3, int var4, int var5, int var6) {
- GraphicsState var7 = this.state();
- var1 += var7.xOffset;
- var2 += var7.yOffset;
- this.currentAwtGraphics.fillArc(var1, var2, var3, var4, var5, var6);
- }
-
- public void drawPolygon(int[] var1, int[] var2, int var3) {
- GraphicsState var4 = this.state();
- if (var4.xOffset == 0 && var4.yOffset == 0) {
- this.currentAwtGraphics.drawPolygon(var1, var2, var3);
- } else {
- this.currentAwtGraphics.translate(var4.xOffset, var4.yOffset);
- this.currentAwtGraphics.drawPolygon(var1, var2, var3);
- this.currentAwtGraphics.translate(-var4.xOffset, -var4.yOffset);
- }
- }
-
- public void drawPolygon(Polygon var1) {
- this.drawPolygon(var1.xPoints, var1.yPoints, var1.numPoints);
- }
-
- public void fillPolygon(int[] var1, int[] var2, int var3) {
- GraphicsState var4 = this.state();
- if (var4.xOffset == 0 && var4.yOffset == 0) {
- this.currentAwtGraphics.fillPolygon(var1, var2, var3);
- } else {
- this.currentAwtGraphics.translate(var4.xOffset, var4.yOffset);
- this.currentAwtGraphics.fillPolygon(var1, var2, var3);
- this.currentAwtGraphics.translate(-var4.xOffset, -var4.yOffset);
- }
- }
-
- public void fillPolygon(Polygon var1) {
- this.fillPolygon(var1.xPoints, var1.yPoints, var1.numPoints);
- }
-
- public void drawBitmapAt(Bitmap var1, int var2, int var3) {
- GraphicsState var4 = this.state();
- var2 += var4.xOffset;
- var3 += var4.yOffset;
- if (var1 != null) {
- if (!var1.loadsIncrementally()) {
- var1.loadData();
- }
-
- if (!var1.isValid()) {
- System.err.println("Graphics.drawBitmapAt() - Invalid bitmap: " + var1.name());
- } else {
- this.currentAwtGraphics.drawImage(var1.awtImage, var2, var3, var1.bitmapObserver());
- }
- }
- }
-
- public void drawBitmapScaled(Bitmap var1, int var2, int var3, int var4, int var5) {
- GraphicsState var6 = this.state();
- if (var1 != null) {
- var2 += var6.xOffset;
- var3 += var6.yOffset;
- var1.createScaledVersion(var4, var5);
- if (!var1.isValid()) {
- System.err.println("Graphics.drawBitmapScaled() - Invalid bitmap: " + var1.name());
- } else {
- this.currentAwtGraphics.drawImage(var1.awtImage, var2, var3, var4, var5, var1.bitmapObserver());
- }
- }
- }
-
- public void drawStringInRect(String var1, int var2, int var3, int var4, int var5, int var6) {
- if (this.font() == null) {
- throw new InconsistencyException("No font set");
- } else {
- FontMetrics var7 = this.font().fontMetrics();
- if (var7 == null) {
- throw new InconsistencyException("No metrics for Font " + this.font());
- } else {
- int var8 = var7.stringWidth(var1);
- if (var8 > var4) {
- var8 = var4;
- }
-
- int var9;
- if (var6 == 1) {
- var9 = var2 + (var4 - var8) / 2;
- } else if (var6 == 2) {
- var9 = var2 + var4 - var8;
- } else {
- var9 = var2;
- }
-
- int var11 = (var5 - var7.ascent() - var7.descent()) / 2;
- if (var11 < 0) {
- var11 = 0;
- }
-
- int var10 = var3 + var5 - var11 - var7.descent();
- this.drawString(var1, var9, var10);
- }
- }
- }
-
- public void drawStringInRect(String var1, Rect var2, int var3) {
- if (var2 == null) {
- throw new InconsistencyException("Null Rect passed to drawStringInRect.");
- } else {
- this.drawStringInRect(var1, var2.x, var2.y, var2.width, var2.height, var3);
- }
- }
-
- public void drawString(String var1, int var2, int var3) {
- if (var1 == null) {
- throw new InconsistencyException("Null String passed to drawString.");
- } else {
- netscape.application.Font var4 = this.font();
- if (var4 != null && var4.wasDownloaded()) {
- FontMetrics var5 = var4.fontMetrics();
- int[] var7 = var5.widthsArray();
- int var9 = var5.widthsArrayBase();
- Vector var6 = var4.glyphVector();
- var3 -= var5.ascent();
-
- for(int var8 = 0; var8 < var1.length(); ++var8) {
- int var10 = var1.charAt(var8) - var9;
- if (var10 >= 0 && var10 < var7.length - var9) {
- this.drawBitmapAt((Bitmap)var6.elementAt(var10), var2, var3);
- var2 += var7[var1.charAt(var8)];
- } else if (var1.charAt(var8) == ' ') {
- var2 += var7[32];
- }
- }
-
- } else {
- GraphicsState var11 = this.state();
- var2 += var11.xOffset;
- var3 += var11.yOffset;
- this.currentAwtGraphics.drawString(var1, var2, var3);
- }
- }
- }
-
- public void drawBytes(byte[] var1, int var2, int var3, int var4, int var5) {
- netscape.application.Font var6 = this.font();
- if (var6 != null && var6.wasDownloaded()) {
- FontMetrics var7 = var6.fontMetrics();
- int[] var9 = var7.widthsArray();
- int var11 = var7.widthsArrayBase();
- Vector var8 = var6.glyphVector();
- var5 -= var7.ascent();
-
- for(int var10 = 0; var10 < var3; ++var10) {
- int var12 = var1[var10] - var11;
- if (var12 >= 0 && var12 < var9.length - var11) {
- this.drawBitmapAt((Bitmap)var8.elementAt(var12), var4, var5);
- var4 += var9[var1[var10]];
- } else if ((char)var1[var10] == ' ') {
- var4 += var9[32];
- }
- }
-
- } else {
- GraphicsState var13 = this.state();
- var4 += var13.xOffset;
- var5 += var13.yOffset;
- this.currentAwtGraphics.drawBytes(var1, var2, var3, var4, var5);
- }
- }
-
- public void drawChars(char[] var1, int var2, int var3, int var4, int var5) {
- netscape.application.Font var6 = this.font();
- if (var6 != null) {
- if (!var6.wasDownloaded()) {
- GraphicsState var13 = this.state();
- var4 += var13.xOffset;
- var5 += var13.yOffset;
- this.currentAwtGraphics.drawChars(var1, var2, var3, var4, var5);
- } else {
- FontMetrics var7 = var6.fontMetrics();
- int[] var9 = var7.widthsArray();
- int var11 = var7.widthsArrayBase();
- Vector var8 = var6.glyphVector();
- var5 -= var7.ascent();
-
- for(int var10 = 0; var10 < var3; ++var10) {
- int var12 = var1[var10] - var11;
- if (var12 >= 0 && var12 < var9.length - var11) {
- this.drawBitmapAt((Bitmap)var8.elementAt(var12), var4, var5);
- var4 += var9[var1[var10]];
- } else if (var1[var10] == ' ') {
- var4 += var9[32];
- }
- }
-
- }
- }
- }
-
- void copyArea(int var1, int var2, int var3, int var4, int var5, int var6) {
- GraphicsState var7 = this.state();
- var1 += var7.xOffset;
- var2 += var7.yOffset;
- var5 += var7.xOffset;
- var6 += var7.yOffset;
- this.currentAwtGraphics.copyArea(var1, var2, var3, var4, var5 - var1, var6 - var2);
- }
-
- public String toString() {
- int var3 = this.graphicsStates.count();
- String var2 = this.buffer != null ? " for Bitmap " : " ";
- StringBuffer var1 = new StringBuffer("Graphics" + var2 + var3 + " states:\n");
-
- while(var3-- > 0) {
- GraphicsState var4 = (GraphicsState)this.graphicsStates.elementAt(var3);
- var1.append(var4.toString());
- var1.append("\n");
- }
-
- return var1.toString();
- }
-
- String toShortString() {
- StringBuffer var1 = new StringBuffer("Graphics" + (this.isDrawingBuffer() ? "<B>" : "") + "(" + this.graphicsID + ")");
- int var2 = this.graphicsStates.count();
-
- while(var2-- > 0) {
- var1.append("-");
- }
-
- var1.append(">");
- return var1.toString();
- }
-
- public void setDebugOptions(int var1) {
- if (var1 != 0) {
- throw new InconsistencyException("Can't set non zero debugOptions on a Graphics. Use DebugGraphics instead.");
- }
- }
-
- public int debugOptions() {
- return 0;
- }
-
- static DebugGraphicsInfo info() {
- Application var0 = Application.application();
- if (var0.debugGraphicsInfo == null) {
- var0.debugGraphicsInfo = new DebugGraphicsInfo();
- }
-
- return var0.debugGraphicsInfo;
- }
-
- void setDebug(View var1) {
- }
-
- static void setViewDebug(View var0, int var1) {
- DebugGraphicsInfo var2 = info();
- var2.setViewDebug(var0, var1);
- }
-
- static int shouldViewDebug(View var0) {
- Application var1 = Application.application();
- if (var1.debugGraphicsInfo == null) {
- return 0;
- } else {
- DebugGraphicsInfo var2 = var1.debugGraphicsInfo;
-
- int var3;
- for(var3 = 0; var0 != null; var0 = var0._superview) {
- var3 |= var2.viewDebug(var0);
- }
-
- return var3;
- }
- }
-
- static int viewDebug(View var0) {
- Application var1 = Application.application();
- if (var1.debugGraphicsInfo == null) {
- return 0;
- } else {
- DebugGraphicsInfo var2 = var1.debugGraphicsInfo;
- return var2.viewDebug(var0);
- }
- }
-
- static int debugViewCount() {
- Application var0 = Application.application();
- return var0 != null && var0.debugGraphicsInfo != null && var0.debugGraphicsInfo.viewToDebug != null ? var0.debugGraphicsInfo.viewToDebug.count() : 0;
- }
- }
-