96 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			96 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								let incId = 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const noop = function () { };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class GImage {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    static GBridge = null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    constructor() {
							 | 
						||
| 
								 | 
							
								        this._id = incId++;
							 | 
						||
| 
								 | 
							
								        this._width = 0;
							 | 
						||
| 
								 | 
							
								        this._height = 0;
							 | 
						||
| 
								 | 
							
								        this._src = undefined;
							 | 
						||
| 
								 | 
							
								        this._onload = noop;
							 | 
						||
| 
								 | 
							
								        this._onerror = noop;
							 | 
						||
| 
								 | 
							
								        this.complete = false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    get width() {
							 | 
						||
| 
								 | 
							
								        return this._width;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    set width(v) {
							 | 
						||
| 
								 | 
							
								        this._width = v;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    get height() {
							 | 
						||
| 
								 | 
							
								        return this._height;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    set height(v) {
							 | 
						||
| 
								 | 
							
								        this._height = v;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    get src() {
							 | 
						||
| 
								 | 
							
								        return this._src;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    set src(v) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (v.startsWith('//')) {
							 | 
						||
| 
								 | 
							
								            v = 'http:' + v;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        this._src = v;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        GImage.GBridge.perloadImage([this._src, this._id], (data) => {
							 | 
						||
| 
								 | 
							
								            if (typeof data === 'string') {
							 | 
						||
| 
								 | 
							
								                data = JSON.parse(data);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            if (data.error) {
							 | 
						||
| 
								 | 
							
								                var evt = { type: 'error', target: this };
							 | 
						||
| 
								 | 
							
								                this.onerror(evt);
							 | 
						||
| 
								 | 
							
								            } else {
							 | 
						||
| 
								 | 
							
								                this.complete = true;
							 | 
						||
| 
								 | 
							
								                this.width = typeof data.width === 'number' ? data.width : 0;
							 | 
						||
| 
								 | 
							
								                this.height = typeof data.height === 'number' ? data.height : 0;
							 | 
						||
| 
								 | 
							
								                var evt = { type: 'load', target: this };
							 | 
						||
| 
								 | 
							
								                this.onload(evt);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    addEventListener(name, listener) {
							 | 
						||
| 
								 | 
							
								        if (name === 'load') {
							 | 
						||
| 
								 | 
							
								            this.onload = listener;
							 | 
						||
| 
								 | 
							
								        } else if (name === 'error') {
							 | 
						||
| 
								 | 
							
								            this.onerror = listener;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    removeEventListener(name, listener) {
							 | 
						||
| 
								 | 
							
								        if (name === 'load') {
							 | 
						||
| 
								 | 
							
								            this.onload = noop;
							 | 
						||
| 
								 | 
							
								        } else if (name === 'error') {
							 | 
						||
| 
								 | 
							
								            this.onerror = noop;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    get onload() {
							 | 
						||
| 
								 | 
							
								        return this._onload;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    set onload(v) {
							 | 
						||
| 
								 | 
							
								        this._onload = v;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    get onerror() {
							 | 
						||
| 
								 | 
							
								        return this._onerror;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    set onerror(v) {
							 | 
						||
| 
								 | 
							
								        this._onerror = v;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export default GImage;
							 |