2013-11-26 16:26:03 -05:00
|
|
|
(function () {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Levels Filter. Adjusts the channels so that there are no more
|
|
|
|
* than n different values for that channel. This is also applied
|
|
|
|
* to the alpha channel.
|
|
|
|
* @function
|
|
|
|
* @author ippo615
|
|
|
|
* @memberof Kinetic.Filters
|
2014-01-02 22:58:36 -08:00
|
|
|
* @param {Object} imageData
|
2013-11-26 16:26:03 -05:00
|
|
|
*/
|
|
|
|
|
2014-01-02 22:58:36 -08:00
|
|
|
Kinetic.Filters.Levels = function (imageData) {
|
|
|
|
// level must be between 1 and 255
|
|
|
|
var level = Math.round(this.level() * 254) + 1,
|
|
|
|
data = imageData.data,
|
|
|
|
len = data.length,
|
|
|
|
scale = (255 / level),
|
|
|
|
i;
|
2013-11-26 16:26:03 -05:00
|
|
|
|
2014-01-02 22:58:36 -08:00
|
|
|
for (i = 0; i < len; i += 1) {
|
|
|
|
data[i] = Math.floor(data[i] / scale) * scale;
|
2013-12-03 19:59:43 -05:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2014-01-02 22:58:36 -08:00
|
|
|
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'level', 0.5);
|
2013-12-03 19:59:43 -05:00
|
|
|
|
2014-01-03 21:26:07 -08:00
|
|
|
/**
|
|
|
|
* get/set levels. Must be a number between 0 and 1
|
|
|
|
* @name level
|
|
|
|
* @method
|
|
|
|
* @memberof Kinetic.Node.prototype
|
|
|
|
* @param {Number} level between 0 and 1
|
|
|
|
* @returns {Number}
|
|
|
|
*/
|
2013-11-26 16:26:03 -05:00
|
|
|
})();
|