UNPKG

@awayjs/stage

Version:
109 lines (108 loc) 4.21 kB
var ImageUtils = /** @class */ (function () { function ImageUtils() { } ImageUtils.getImageBuffer = function (img) { var canvas = this.CANVAS || (this.CANVAS = document.createElement('canvas')); var context = this.CONTEXT || (this.CONTEXT = canvas.getContext('2d', { willReadFrequently: true })); if (img instanceof HTMLImageElement) { canvas.width = img.naturalWidth; canvas.height = img.naturalHeight; } else { canvas.width = img.width; canvas.height = img.height; } context.drawImage(img, 0, 0); return context.getImageData(0, 0, canvas.width, canvas.height).data; }; /** * */ ImageUtils.imageToBitmapImage2D = function (img, factory, powerOfTwo) { if (powerOfTwo === void 0) { powerOfTwo = true; } var width; var height; if (img instanceof HTMLImageElement) { width = img.naturalWidth; height = img.naturalHeight; } else { width = img.width; height = img.height; } var image2D = factory.createImage2D(width, height, true, null, powerOfTwo); image2D.addLazySymbol({ needParse: true, definition: { width: width, height: height, isPMA: true, data: null }, lazyParser: function () { this.needParse = false; this.definition.data = ImageUtils.getImageBuffer(img); this.lazyParser = null; return this; } }); return image2D; }; ImageUtils.isImage2DValid = function (image2D) { if (image2D == null) return true; return this.isDimensionValid(image2D.width, image2D.powerOfTwo) && this.isDimensionValid(image2D.height, image2D.powerOfTwo); }; ImageUtils.isHTMLImageElementValid = function (image) { if (image == null) return true; return this.isDimensionValid(image.width) && this.isDimensionValid(image.height); }; ImageUtils.isDimensionValid = function (d, powerOfTwo) { if (powerOfTwo === void 0) { powerOfTwo = true; } return d >= 1 && d <= this.MAX_SIZE && (!powerOfTwo || this.isPowerOfTwo(d)); }; ImageUtils.isPowerOfTwo = function (value) { return value ? ((value & -value) == value) : false; }; ImageUtils.getBestPowerOf2 = function (value) { var p = 1; while (p < value) p <<= 1; if (p > this.MAX_SIZE) p = this.MAX_SIZE; return p; }; ImageUtils.getDefaultImage2D = function () { return this._defaultImage2D || (this._defaultImage2D = this._defaultImage2DFactory()); }; ImageUtils.getDefaultImageCube = function () { return this._defaultImageCube || (this._defaultImageCube = this._defaultImageCubeFactory()); }; ImageUtils.getDefaultImageSampler = function () { return this._defaultImageSampler || (this._defaultImageSampler = this._defaultImageSamplerFactory()); }; ImageUtils.registerDefaults = function (defaultImage2DFactory, defaultImageCubeFactory, defaultImageSamplerFactory, defaultFactory) { if (defaultImage2DFactory === void 0) { defaultImage2DFactory = null; } if (defaultImageCubeFactory === void 0) { defaultImageCubeFactory = null; } if (defaultImageSamplerFactory === void 0) { defaultImageSamplerFactory = null; } if (defaultFactory === void 0) { defaultFactory = null; } if (defaultImage2DFactory) { this._defaultImage2DFactory = defaultImage2DFactory; } if (defaultImageCubeFactory) { this._defaultImageCubeFactory = defaultImageCubeFactory; } if (defaultImageSamplerFactory) { this._defaultImageSamplerFactory = defaultImageSamplerFactory; } if (defaultFactory) { this._defaultFactory = defaultFactory; } }; ImageUtils.MAX_SIZE = 8192; return ImageUtils; }()); export { ImageUtils }; export default ImageUtils;