⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mediatracker.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
字号:
package java.awt;import java.awt.image.ImageObserver;import java.io.Serializable;/** * MediaTracker -  * * Copyright (c) 1998 *      Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution  * of this file.  * */public class MediaTracker  implements Serializable{	private MediaTrackerEntry images;	final private static long serialVersionUID = -483174189758638095L;	final public static int LOADING = 1;	final public static int ABORTED = 2;	final public static int ERRORED = 4;	final public static int COMPLETE = 8;	final static int LOADED = ImageObserver.ALLBITS | ImageObserver.FRAMEBITS | ImageObserver.ABORT;public MediaTracker(Component comp){}public void addImage(Image image, int id){	addImage(image, id, -1, -1);}public synchronized void addImage(Image image, int id, int w, int h){	if ( image != null ) {		MediaTrackerEntry entry = new MediaTrackerEntry(image, id, w, h);		entry.next = images;		images = entry;	}}public boolean checkAll(){	return (checkAll(false));}public synchronized boolean checkAll ( boolean load ) {	for ( MediaTrackerEntry e = images; e != null; e = e.next) {		if ((e.img.checkImage( e.w, e.h, e, load) & (ImageObserver.ALLBITS|ImageObserver.FRAMEBITS)) == 0) {			return (false);		}	}	return (true);}public boolean checkID(int id){	return (checkID(id, false));}public synchronized boolean checkID ( int id, boolean load ) {	for ( MediaTrackerEntry e = getNextEntry( id, null); e != null; e= getNextEntry( id, e) ) {		if ( (e.img.checkImage( e.w, e.h, e, load) & (ImageObserver.ALLBITS|ImageObserver.FRAMEBITS)) == 0)			return false;	}	return true;}public synchronized Object[] getErrorsAny() {	MediaTrackerEntry   e;	int                 n = 0, i;	Object[]            a = null;		// most MediaTrackers are used for a small number of images, iterating twice is less	// expensive than creating temp. object arrays	for ( e = images; e != null; e = e.next) {		if ((e.img.checkImage( e.w, e.h, e, false) & (ImageObserver.ERROR|ImageObserver.ABORT)) != 0)			n++;	}		if ( n > 0 ) {		a = new Object[n];				for ( e = images, i=0; (i < n); e = e.next) {			if ((e.img.checkImage( e.w, e.h, e, false) & (ImageObserver.ERROR|ImageObserver.ABORT)) != 0)				a[i++] = e.img;		}	}			return a;}public synchronized Object[] getErrorsID ( int id ) {	MediaTrackerEntry   e;	int                 n = 0, i;	Object[]            a = null;		// would be nice if we could use a certain id value as "don't care" so that we can unify this	// with getErrorsAny()	for ( e = images; e != null; e = e.next) {		if ( (e.id == id) && 		     (e.img.checkImage( e.w, e.h, e, false) & (ImageObserver.ERROR|ImageObserver.ABORT)) != 0)			n++;	}		if ( n > 0 ) {		a = new Object[n];				for ( e = images, i=0; (i < n); e = e.next) {			if ( (e.id == id) &&			     (e.img.checkImage( e.w, e.h, e, false) & (ImageObserver.ERROR|ImageObserver.ABORT)) != 0)				a[i++] = e.img;		}	}			return a;}MediaTrackerEntry getNextEntry ( int id, MediaTrackerEntry prev ) {	MediaTrackerEntry e = (prev != null) ? prev.next : images;	for ( ; e != null; e = e.next ) {		if ( e.id == id )			return e;	}		return null;}public synchronized boolean isErrorAny() {	for ( MediaTrackerEntry e = images; e != null; e = e.next) {		if ((e.img.checkImage( e.w, e.h, e, false) & (ImageObserver.ERROR|ImageObserver.ABORT)) != 0)			return true;	}	return (false);}public synchronized boolean isErrorID ( int id ) {	for ( MediaTrackerEntry e = images; e != null; e = e.next) {		if ( (e.id == id) &&		     (e.img.checkImage( e.w, e.h, e, false) & (ImageObserver.ERROR|ImageObserver.ABORT)) != 0)			return true;	}		return false;}public synchronized void removeImage(Image image){	MediaTrackerEntry prev = null;	MediaTrackerEntry curr = images;	while (curr != null) {		if (curr.img == image) {			if (prev != null) {				prev.next = curr.next;			}			else {				images = curr.next;			}		}		else {			prev = curr;		}		curr = curr.next;	}}public synchronized void removeImage(Image image, int id){	MediaTrackerEntry prev = null;	MediaTrackerEntry curr = images;	while (curr != null) {		if (curr.img == image && curr.id == id) {			if (prev != null) {				prev.next = curr.next;			}			else {				images = curr.next;			}		}		else {			prev = curr;		}		curr = curr.next;	}}public synchronized void removeImage(Image image, int id, int w, int h){	MediaTrackerEntry prev = null;	MediaTrackerEntry curr = images;	while (curr != null) {		if (curr.img == image && curr.id == id && curr.w == w && curr.h == h) {			if (prev != null) {				prev.next = curr.next;			}			else {				images = curr.next;			}		}		else {			prev = curr;		}		curr = curr.next;	}}public synchronized int statusAll ( boolean load ) {	int ic, ret = 0;	for ( MediaTrackerEntry e = images; e != null; e = e.next ) {		ic = e.img.checkImage( e.w, e.h, e, load);		if ( (ic & ImageObserver.ALLBITS) != 0 )			ret |= COMPLETE;		else if ( (ic & ImageObserver.ABORT) != 0 )			ret |= ABORTED;		else if ( (ic & Image.PRODUCING) != 0 )			ret |= LOADING;					if ( (ic & ImageObserver.ERROR) != 0 )			ret |= ERRORED;	}		return ret;}public synchronized int statusID ( int id, boolean load ) {	int ic, ret = 0;	for ( MediaTrackerEntry e = getNextEntry( id, null); e != null; e = getNextEntry( id, e) ) {		ic = e.img.checkImage( e.w, e.h, e, load);		if ( (ic & (ImageObserver.ALLBITS|ImageObserver.FRAMEBITS)) != 0 )			ret |= COMPLETE;		else if ( (ic & ImageObserver.ABORT) != 0 )			ret |= ABORTED;		else if ( (ic & Image.PRODUCING) != 0 )			ret |= LOADING;					if ( (ic & ImageObserver.ERROR) != 0 )			ret |= ERRORED;	}	return ret;}public synchronized void waitForAll() throws InterruptedException {	for ( MediaTrackerEntry e = images; e != null; e = e.next ) {		if ((e.img.checkImage( e.w, e.h, e, true) & LOADED) == 0) {			synchronized ( e ) {				e.wait();			}		}	}}public synchronized boolean waitForAll ( long ms ) throws InterruptedException {	long now = System.currentTimeMillis();	long end = now + ms;		for ( MediaTrackerEntry e = images; e != null; e = e.next ) {		if ( now > end )			return false;			if ((e.img.checkImage( e.w, e.h, e, true) & LOADED) == 0) {			synchronized ( e ) {				e.wait( ms);			}		}		now = System.currentTimeMillis();	}	return true;}public synchronized void waitForID ( int id ) throws InterruptedException {	for ( MediaTrackerEntry e = getNextEntry( id, null); e != null; e = getNextEntry( id, e) ) {		if ((e.img.checkImage( e.w, e.h, e, true) & LOADED) == 0) {			synchronized ( e ) {				e.wait();			}		}	}}public synchronized boolean waitForID ( int id, long ms) throws InterruptedException {	long now = System.currentTimeMillis();	long end = now + ms;		for (MediaTrackerEntry e = getNextEntry( id, null); e != null; e = getNextEntry( id, e) ) {		if ( now > end ) {			return false;		}			synchronized ( e ) {			if ((e.img.checkImage(e.w, e.h, e, true) & (ImageObserver.FRAMEBITS|ImageObserver.ALLBITS|ImageObserver.ERROR)) == 0) {				e.wait( ms);			}		}		now = System.currentTimeMillis();	}	return true;}}class MediaTrackerEntry  implements ImageObserver{	Image img;	int id;	int w;	int h;	MediaTrackerEntry next;MediaTrackerEntry(Image img, int id, int w, int h){	this.img = img;	this.id = id;	this.w = w;	this.h = h;}public boolean imageUpdate ( Image img, int infoflags, int x, int y, int width, int height ) {	/* sync moved from method for GCJ */	synchronized (this) {		if ( (infoflags & (ImageObserver.WIDTH | ImageObserver.HEIGHT )) != 0 ) {			w = width;			h = height;		}		if ( (infoflags & (ALLBITS | FRAMEBITS | ABORT | ImageObserver.ERROR)) != 0 ) {			notify();			return (false);		}			return (true);	}}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -