2016-12-06 16:18:28 +00:00
|
|
|
|
2017-07-04 12:23:58 +00:00
|
|
|
var Class = require('../utils/Class');
|
2017-01-20 18:51:20 +00:00
|
|
|
var CONST = require('../const');
|
2016-12-08 16:21:16 +00:00
|
|
|
var IsSizePowerOfTwo = require('../math/pow2/IsSizePowerOfTwo');
|
2017-07-04 12:23:58 +00:00
|
|
|
var ScaleModes = require('../renderer/ScaleModes');
|
2016-12-06 16:18:28 +00:00
|
|
|
|
2017-07-04 12:23:58 +00:00
|
|
|
var TextureSource = new Class({
|
2016-12-06 16:18:28 +00:00
|
|
|
|
2017-07-04 12:23:58 +00:00
|
|
|
initialize:
|
2017-06-07 23:12:22 +00:00
|
|
|
|
2017-07-04 12:23:58 +00:00
|
|
|
function TextureSource (texture, source, width, height)
|
|
|
|
{
|
|
|
|
this.texture = texture;
|
|
|
|
|
|
|
|
this.image = source;
|
|
|
|
|
|
|
|
this.compressionAlgorithm = null;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The Resolution of the texture.
|
|
|
|
*
|
|
|
|
* @property resolution
|
|
|
|
* @type Number
|
|
|
|
*/
|
|
|
|
this.resolution = 1;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The width of the Texture.
|
|
|
|
*
|
|
|
|
* @property width
|
|
|
|
* @type Number
|
|
|
|
* @readOnly
|
|
|
|
*/
|
|
|
|
this.width = width || source.naturalWidth || source.width || 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The height of the Texture.
|
|
|
|
*
|
|
|
|
* @property height
|
|
|
|
* @type Number
|
|
|
|
* @readOnly
|
|
|
|
*/
|
|
|
|
this.height = height || source.naturalHeight || source.height || 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The scale mode to apply when scaling this texture.
|
|
|
|
* NEAREST or DEFAULT
|
|
|
|
*
|
|
|
|
* @property scaleMode
|
|
|
|
* @type {Number}
|
|
|
|
* @default Phaser.scaleModes.DEFAULT;
|
|
|
|
*/
|
|
|
|
this.scaleMode = ScaleModes.DEFAULT;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Controls if RGB channels should be pre-multiplied by Alpha (WebGL only)
|
|
|
|
*
|
|
|
|
* @property premultipliedAlpha
|
|
|
|
* @type Boolean
|
|
|
|
* @default true
|
|
|
|
*/
|
|
|
|
this.premultipliedAlpha = true;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set this to true if a mipmap of this texture needs to be generated. This value needs to be set before the texture is used
|
|
|
|
* Also the texture must be a power of two size to work
|
|
|
|
*
|
|
|
|
* @property mipmapLevel
|
|
|
|
* @type {integer}
|
|
|
|
*/
|
|
|
|
this.mipmapLevel = 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A BaseTexture can be set to skip the rendering phase in the WebGL Sprite Batch.
|
|
|
|
*
|
|
|
|
* You may want to do this if you have a parent Sprite with no visible texture (i.e. uses the internal `__default` texture)
|
|
|
|
* that has children that you do want to render, without causing a batch flush in the process.
|
|
|
|
*
|
|
|
|
* @property renderable
|
|
|
|
* @type Boolean
|
|
|
|
*/
|
|
|
|
this.renderable = true;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @property isPowerOf2
|
|
|
|
* @type boolean
|
|
|
|
*/
|
|
|
|
this.isPowerOf2 = IsSizePowerOfTwo(this.width, this.height);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @property glTexture
|
|
|
|
*/
|
|
|
|
this.glTexture = null;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The multi texture batching index number.
|
|
|
|
* @property glTextureIndex
|
|
|
|
* @type Number
|
|
|
|
*/
|
|
|
|
this.glTextureIndex = 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The timestamp when this texture was last used by the WebGL renderer.
|
|
|
|
* Can be used to purge out 'dead' textures from GPU memory.
|
|
|
|
* @property glLastUsed
|
|
|
|
* @type Number
|
|
|
|
*/
|
|
|
|
this.glLastUsed = 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @property glDirty
|
|
|
|
*/
|
|
|
|
this.glDirty = true;
|
|
|
|
|
|
|
|
var game = texture.manager.game;
|
|
|
|
|
|
|
|
if (game.config.renderType === CONST.WEBGL)
|
|
|
|
{
|
|
|
|
game.renderer.createTexture(this, width, height);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (game.config.pixelArt)
|
|
|
|
{
|
|
|
|
this.setFilter(1);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
setFilter: function (filterMode)
|
2017-05-20 01:16:45 +00:00
|
|
|
{
|
2017-07-04 12:23:58 +00:00
|
|
|
var game = this.texture.manager.game;
|
|
|
|
|
|
|
|
if (game.config.renderType === CONST.WEBGL)
|
|
|
|
{
|
|
|
|
game.renderer.setTextureFilterMode(this.glTexture, filterMode);
|
|
|
|
}
|
2017-05-20 01:16:45 +00:00
|
|
|
}
|
2017-07-04 12:23:58 +00:00
|
|
|
|
|
|
|
});
|
2017-05-20 01:16:45 +00:00
|
|
|
|
2016-12-06 16:18:28 +00:00
|
|
|
module.exports = TextureSource;
|