home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import java.awt.MediaTracker;
- import java.awt.image.ImageObserver;
- import java.awt.image.MemoryImageSource;
- import java.awt.image.PixelGrabber;
- import java.net.URL;
- import netscape.util.ClassInfo;
- import netscape.util.Codable;
- import netscape.util.CodingException;
- import netscape.util.Decoder;
- import netscape.util.Encoder;
-
- public class Bitmap extends Image {
- java.awt.Image awtImage;
- BitmapObserver bitmapObserver;
- Target updateTarget;
- Rect updateRect;
- String name;
- String updateCommand;
- int imageNumber;
- boolean loaded;
- boolean valid;
- boolean transparent;
- boolean loadIncrementally;
- boolean added;
- MediaTracker mediaTracker;
- static final int WIDTH = 0;
- static final int HEIGHT = 1;
- private static Class bitmapClass;
- static final String NAME_KEY = "name";
- static final String UPDATE_TARGET_KEY = "updateTarget";
- static final String UPDATE_COMMAND_KEY = "updateCommand";
- static final String TRANSPARENT_KEY = "transparent";
- static final String LOAD_INCREMENTALLY_KEY = "loadIncrementally";
-
- public static synchronized Bitmap bitmapNamed(String var0, boolean var1, boolean var2) {
- if (var0 != null && !var0.equals("")) {
- Application var3 = application();
- Bitmap var4 = (Bitmap)var3.bitmapByName.get(var0);
- if (var4 != null) {
- return var4;
- } else {
- var4 = systemBitmapNamed(var0);
- if (var4 != null) {
- if (var2) {
- var3.bitmapByName.put(var0, var4);
- var4.mediaTracker = Application.application().mediaTracker();
- }
-
- var4.name = var0;
- return var4;
- } else {
- URL var5 = var3._appResources.urlForBitmapNamed(var0);
- var4 = bitmapFromURL(var5);
- if (var4 == null) {
- return null;
- } else {
- if (var2) {
- var3.bitmapByName.put(var0, var4);
- var4.mediaTracker = Application.application().mediaTracker();
- }
-
- var4.name = var0;
- if (var1) {
- var4.startLoadingData();
- }
-
- return var4;
- }
- }
- }
- } else {
- return null;
- }
- }
-
- public static Bitmap bitmapNamed(String var0, boolean var1) {
- return bitmapNamed(var0, var1, true);
- }
-
- public static Bitmap bitmapNamed(String var0) {
- return bitmapNamed(var0, true, true);
- }
-
- public static Bitmap bitmapFromURL(URL var0) {
- java.awt.Image var1 = AWTCompatibility.awtApplet().getImage(var0);
- if (var1 == null) {
- return null;
- } else {
- Bitmap var2 = new Bitmap(var1);
- return var2;
- }
- }
-
- public Graphics createGraphics() {
- return Graphics.newGraphics(this);
- }
-
- public Bitmap() {
- this.loaded = false;
- this.valid = true;
- this.transparent = true;
- this.imageNumber = application().nextBitmapNumber();
- }
-
- public Bitmap(int var1, int var2) {
- this();
- if (var1 > 0 && var2 > 0) {
- this.awtImage = AWTCompatibility.awtApplet().createImage(var1, var2);
- this.setLoaded(true);
- } else {
- throw new IllegalArgumentException("Invalid bitmap size: " + var1 + "x" + var2);
- }
- }
-
- Bitmap(java.awt.Image var1) {
- this();
- this.awtImage = var1;
- }
-
- public Bitmap(int[] var1, int var2, int var3) {
- this(var1, var2, var3, 0, var2);
- }
-
- public Bitmap(int[] var1, int var2, int var3, int var4, int var5) {
- this();
- MemoryImageSource var6 = new MemoryImageSource(var2, var3, var1, var4, var5);
- this.awtImage = AWTCompatibility.awtApplet().createImage(var6);
- this.setLoaded(true);
- }
-
- public boolean grabPixels(int[] var1) {
- return this.grabPixels(var1, 0, 0, this.width(), this.height(), 0, this.width());
- }
-
- public boolean grabPixels(int[] var1, int var2, int var3, int var4, int var5, int var6, int var7) {
- java.awt.Image var9 = AWTCompatibility.awtImageForBitmap(this);
- PixelGrabber var8 = new PixelGrabber(var9, var2, var3, var4, var5, var1, var6, var7);
-
- boolean var10;
- try {
- var10 = var8.grabPixels();
- } catch (InterruptedException var11) {
- var10 = false;
- }
-
- return var10;
- }
-
- public String name() {
- return this.name;
- }
-
- BitmapObserver bitmapObserver() {
- if (this.bitmapObserver == null) {
- this.bitmapObserver = new BitmapObserver(application(), this);
- }
-
- return this.bitmapObserver;
- }
-
- int getWidthOrHeight(int var1) {
- int var3 = -1;
- boolean var4 = false;
- if (var1 != 0 && var1 != 1) {
- throw new IllegalArgumentException("Invalid dimension request: " + var1);
- } else if (this.hasLoadedData()) {
- return var1 == 0 ? this.awtImage.getWidth((ImageObserver)null) : this.awtImage.getHeight((ImageObserver)null);
- } else {
- BitmapObserver var2 = this.bitmapObserver();
- synchronized(var2){}
-
- try {
- while(!var4) {
- if (var1 == 0) {
- this.awtImage.getWidth(var2);
- var3 = this.awtImage.getWidth(var2);
- } else {
- this.awtImage.getHeight(var2);
- var3 = this.awtImage.getHeight(var2);
- }
-
- if (var3 != -1 || !this.isValid()) {
- break;
- }
-
- if ((var2.lastInfo & 64) == 0 && (var2.lastInfo & 128) == 0) {
- try {
- var2.wait();
- } catch (InterruptedException var8) {
- }
-
- if ((var2.lastInfo & 64) != 0 || (var2.lastInfo & 128) != 0) {
- this.valid = false;
- this.reportWhyInvalid();
- this.setLoaded(true);
- }
- } else {
- this.valid = false;
- this.reportWhyInvalid();
- this.setLoaded(true);
- }
- }
- } catch (Throwable var9) {
- throw var9;
- }
-
- return var3;
- }
- }
-
- public int width() {
- return this.getWidthOrHeight(0);
- }
-
- public int height() {
- return this.getWidthOrHeight(1);
- }
-
- public void setTransparent(boolean var1) {
- this.transparent = var1;
- }
-
- public boolean isTransparent() {
- return this.transparent;
- }
-
- public void drawAt(Graphics var1, int var2, int var3) {
- var1.drawBitmapAt(this, var2, var3);
- }
-
- public void drawScaled(Graphics var1, int var2, int var3, int var4, int var5) {
- var1.drawBitmapScaled(this, var2, var3, var4, var5);
- }
-
- public void drawTiled(Graphics var1, int var2, int var3, int var4, int var5) {
- if (!this.isValid()) {
- System.err.println("Graphics.drawBitmapTiled() - Invalid bitmap: " + this.name());
- } else {
- super.drawTiled(var1, var2, var3, var4, var5);
- }
- }
-
- boolean createScaledVersion(int var1, int var2) {
- if (!this.isValid()) {
- return false;
- } else {
- Application var3 = application();
- BitmapObserver var4 = this.bitmapObserver();
-
- while(!var3.applet.prepareImage(this.awtImage, var1, var2, var4)) {
- if (this.loadsIncrementally()) {
- return true;
- }
-
- try {
- Thread.sleep(40L);
- } catch (InterruptedException var5) {
- }
- }
-
- return true;
- }
- }
-
- boolean createScaledVersion(float var1, float var2) {
- return this.createScaledVersion((int)(var1 * (float)this.width()), (int)(var2 * (float)this.height()));
- }
-
- void startLoadingData() {
- MediaTracker var1 = this.tracker();
- if (!this.added) {
- var1.addImage(this.awtImage, this.imageNumber);
- this.added = true;
- }
-
- var1.checkID(this.imageNumber, true);
- }
-
- public void loadData() {
- if (!this.loaded) {
- MediaTracker var1 = this.tracker();
-
- while(!this.loaded) {
- try {
- this.startLoadingData();
- if (this.loadIncrementally) {
- break;
- }
-
- var1.waitForID(this.imageNumber);
- this.setLoaded(true);
- } catch (InterruptedException var3) {
- System.err.println("Bitmap.loadData() - " + var3);
- }
- }
-
- if (this.valid) {
- this.valid = !var1.isErrorID(this.imageNumber);
- }
-
- if (!this.valid) {
- this.reportWhyInvalid();
- this.setLoaded(true);
- }
-
- }
- }
-
- void setLoaded(boolean var1) {
- this.loaded = var1;
- }
-
- public boolean hasLoadedData() {
- return this.loaded;
- }
-
- public void setLoadsIncrementally(boolean var1) {
- this.loadIncrementally = var1;
- }
-
- public boolean loadsIncrementally() {
- return this.loadIncrementally;
- }
-
- public synchronized Rect updateRect() {
- Rect var1;
- if (this.updateRect == null) {
- var1 = new Rect();
- } else {
- var1 = this.updateRect;
- this.updateRect = null;
- }
-
- return var1;
- }
-
- public synchronized void setUpdateTarget(Target var1) {
- this.updateTarget = var1;
- }
-
- public synchronized Target updateTarget() {
- return this.updateTarget;
- }
-
- public synchronized void setUpdateCommand(String var1) {
- this.updateCommand = var1;
- }
-
- public synchronized String updateCommand() {
- return this.updateCommand;
- }
-
- void reportWhyInvalid() {
- String var1 = "";
- int var2 = this.tracker().statusID(this.imageNumber, false);
- if ((var2 & 2) != 0) {
- var1 = var1 + " ABORTED";
- } else if ((var2 & 8) != 0) {
- var1 = var1 + " COMPLETE";
- } else if ((var2 & 4) != 0) {
- var1 = var1 + " ERRORED";
- } else if ((var2 & 1) != 0) {
- var1 = var1 + " LOADING";
- }
-
- System.err.println("Invalid bitmap: " + this.name() + var1);
- }
-
- public boolean isValid() {
- return this.valid;
- }
-
- public void flush() {
- this.awtImage.flush();
- }
-
- public String toString() {
- return this.name != null ? "Bitmap(" + this.name + ")" : super.toString();
- }
-
- public void describeClassInfo(ClassInfo var1) {
- super.describeClassInfo(var1);
- var1.addClass("netscape.application.Bitmap", 1);
- var1.addField("name", (byte)16);
- var1.addField("updateTarget", (byte)18);
- var1.addField("updateCommand", (byte)16);
- var1.addField("transparent", (byte)0);
- var1.addField("loadIncrementally", (byte)0);
- }
-
- public void encode(Encoder var1) throws CodingException {
- super.encode(var1);
- if (this.name == null) {
- throw new CodingException("encoded Bitmaps must have a name");
- } else {
- var1.encodeString("name", this.name);
- var1.encodeObject("updateTarget", (Codable)this.updateTarget);
- var1.encodeString("updateCommand", this.updateCommand);
- var1.encodeBoolean("transparent", this.transparent);
- var1.encodeBoolean("loadIncrementally", this.loadIncrementally);
- }
- }
-
- public void decode(Decoder var1) throws CodingException {
- super.decode(var1);
- this.name = var1.decodeString("name");
- if (this.name == null) {
- throw new CodingException("encoded Bitmaps must have a name");
- } else {
- this.updateTarget = (Target)var1.decodeObject("updateTarget");
- this.updateCommand = var1.decodeString("updateCommand");
- this.transparent = var1.decodeBoolean("transparent");
- this.loadIncrementally = var1.decodeBoolean("loadIncrementally");
- Bitmap var2 = bitmapNamed(this.name);
- if (var2 == null) {
- throw new CodingException("unable to find bitmap named: " + this.name);
- } else if (this.getClass() == bitmapClass()) {
- var1.replaceObject(var2);
- } else {
- this.awtImage = var2.awtImage;
- }
- }
- }
-
- private static Class bitmapClass() {
- if (bitmapClass == null) {
- bitmapClass = (new Bitmap()).getClass();
- }
-
- return bitmapClass;
- }
-
- private static Application application() {
- return Application.application();
- }
-
- private static Bitmap systemBitmapNamed(String var0) {
- Bitmap var1 = null;
- if (var0 == null) {
- return null;
- } else if (!var0.startsWith("netscape/application/")) {
- return null;
- } else {
- String var2 = var0.substring("netscape/application/".length());
- if (var2.equals("RedGrad.gif")) {
- var1 = SystemImages.redGrad();
- } else if (var2.equals("GreenGrad.gif")) {
- var1 = SystemImages.greenGrad();
- } else if (var2.equals("BlueGrad.gif")) {
- var1 = SystemImages.blueGrad();
- } else if (var2.equals("CheckMark.gif")) {
- var1 = SystemImages.checkMark();
- } else if (var2.equals("CloseButton.gif")) {
- var1 = SystemImages.closeButton();
- } else if (var2.equals("CloseButtonActive.gif")) {
- var1 = SystemImages.closeButtonActive();
- } else if (var2.equals("ColorScrollKnob.gif")) {
- var1 = SystemImages.colorScrollKnob();
- } else if (var2.equals("PopupKnob.gif")) {
- var1 = SystemImages.popupKnob();
- } else if (var2.equals("PopupKnobH.gif")) {
- var1 = SystemImages.popupKnobH();
- } else if (var2.equals("RadioButtonOff.gif")) {
- var1 = SystemImages.radioButtonOff();
- } else if (var2.equals("RadioButtonOn.gif")) {
- var1 = SystemImages.radioButtonOn();
- } else if (var2.equals("ResizeLeft.gif")) {
- var1 = SystemImages.resizeLeft();
- } else if (var2.equals("ResizeRight.gif")) {
- var1 = SystemImages.resizeRight();
- } else if (var2.equals("ScrollDownArrow.gif")) {
- var1 = SystemImages.scrollDownArrow();
- } else if (var2.equals("ScrollDownArrowActive.gif")) {
- var1 = SystemImages.scrollDownArrowActive();
- } else if (var2.equals("ScrollKnobH.gif")) {
- var1 = SystemImages.scrollKnobH();
- } else if (var2.equals("ScrollKnobV.gif")) {
- var1 = SystemImages.scrollKnobV();
- } else if (var2.equals("ScrollLeftArrow.gif")) {
- var1 = SystemImages.scrollLeftArrow();
- } else if (var2.equals("ScrollLeftArrowActive.gif")) {
- var1 = SystemImages.scrollLeftArrowActive();
- } else if (var2.equals("ScrollRightArrow.gif")) {
- var1 = SystemImages.scrollRightArrow();
- } else if (var2.equals("ScrollRightArrowActive.gif")) {
- var1 = SystemImages.scrollRightArrowActive();
- } else if (var2.equals("ScrollTrayBottom.gif")) {
- var1 = SystemImages.scrollTrayBottom();
- } else if (var2.equals("ScrollTrayLeft.gif")) {
- var1 = SystemImages.scrollTrayLeft();
- } else if (var2.equals("ScrollTrayRight.gif")) {
- var1 = SystemImages.scrollTrayRight();
- } else if (var2.equals("ScrollTrayTop.gif")) {
- var1 = SystemImages.scrollTrayTop();
- } else if (var2.equals("ScrollUpArrow.gif")) {
- var1 = SystemImages.scrollUpArrow();
- } else if (var2.equals("ScrollUpArrowActive.gif")) {
- var1 = SystemImages.scrollUpArrowActive();
- } else if (var2.equals("TitleBarLeft.gif")) {
- var1 = SystemImages.titleBarLeft();
- } else if (var2.equals("TitleBarRight.gif")) {
- var1 = SystemImages.titleBarRight();
- } else if (var2.equals("alertNotification.gif")) {
- var1 = SystemImages.alertNotification();
- } else if (var2.equals("alertQuestion.gif")) {
- var1 = SystemImages.alertQuestion();
- } else if (var2.equals("alertWarning.gif")) {
- var1 = SystemImages.alertWarning();
- } else if (var2.equals("topLeftArrow.gif")) {
- var1 = SystemImages.topLeftArrow();
- } else if (var2.equals("topRightArrow.gif")) {
- var1 = SystemImages.topRightArrow();
- } else if (var2.equals("bottomRightArrow.gif")) {
- var1 = SystemImages.bottomRightArrow();
- } else if (var2.equals("bottomLeftArrow.gif")) {
- var1 = SystemImages.bottomLeftArrow();
- }
-
- return var1;
- }
- }
-
- public Image imageWithName(String var1) {
- return bitmapNamed(var1);
- }
-
- synchronized void unionWithUpdateRect(int var1, int var2, int var3, int var4) {
- if (this.updateRect == null) {
- this.updateRect = new Rect(var1, var2, var3, var4);
- } else {
- this.updateRect.unionWith(var1, var2, var3, var4);
- }
- }
-
- MediaTracker tracker() {
- if (this.mediaTracker == null) {
- this.mediaTracker = new MediaTracker(AWTCompatibility.awtApplet());
- }
-
- return this.mediaTracker;
- }
- }
-