mirror of
https://github.com/konvajs/konva.git
synced 2025-09-18 09:50:05 +08:00
removed HSV hueShift attribute because it's not techncially needed. cleaned up other filter docs
This commit is contained in:
@@ -343,7 +343,7 @@
|
||||
* get/set blur radius
|
||||
* @name blurRadius
|
||||
* @method
|
||||
* @memberof Kinetic.Image.prototype
|
||||
* @memberof Kinetic.Node.prototype
|
||||
* @param {Integer} radius
|
||||
* @returns {Integer}
|
||||
*/
|
||||
|
@@ -1,33 +1,20 @@
|
||||
(function () {
|
||||
|
||||
/**
|
||||
* HSV Filter. Adjusts the hue, saturation and value of an image.
|
||||
* Performs w*h pixel reads and w*h pixel writes.
|
||||
* HSV Filter. Adjusts the hue, saturation and value
|
||||
* @function
|
||||
* @author ippo615
|
||||
* @memberof Kinetic.Filters
|
||||
* @param {ImageData} src, the source image data (what will be transformed)
|
||||
* @param {ImageData} dst, the destination image data (where it will be saved)
|
||||
* @param {Object} opt
|
||||
* @param {Number} [opt.hue] amount to shift to the hue (in degrees)
|
||||
* 0 represents no shift, while 360 is the maximum. Default: 0
|
||||
* @param {Number} [opt.saturation] amount to scale the saturation.
|
||||
* 1 means no change, 0.5 halves (more gray), 2.0 doubles
|
||||
* (more color), etc... Default is 1.
|
||||
* @param {Number} [opt.value] amount to scale the value.
|
||||
* 1 means no change, 0.5 halves (darker), 2.0 doubles (lighter), etc..
|
||||
* Default is 1.
|
||||
* @param {Object} imageData
|
||||
* @author ippo615
|
||||
*/
|
||||
|
||||
var HSV = function (src, dst, opt) {
|
||||
var srcPixels = src.data,
|
||||
dstPixels = dst.data,
|
||||
nPixels = srcPixels.length,
|
||||
i;
|
||||
|
||||
var v = opt.value || 1,
|
||||
s = opt.saturation || 1,
|
||||
h = Math.abs((opt.hue || 0) + 360) % 360;
|
||||
Kinetic.Filters.HSV = function (imageData) {
|
||||
var data = imageData.data,
|
||||
nPixels = data.length,
|
||||
v = this.value(),
|
||||
s = this.saturation(),
|
||||
h = Math.abs((this.hue()) + 360) % 360,
|
||||
i;
|
||||
|
||||
// Basis for the technique used:
|
||||
// http://beesbuzz.biz/code/hsv_color_transforms.php
|
||||
@@ -57,47 +44,20 @@
|
||||
var r,g,b,a;
|
||||
|
||||
for (i = 0; i < nPixels; i += 4) {
|
||||
r = srcPixels[i+0];
|
||||
g = srcPixels[i+1];
|
||||
b = srcPixels[i+2];
|
||||
a = srcPixels[i+3];
|
||||
r = data[i+0];
|
||||
g = data[i+1];
|
||||
b = data[i+2];
|
||||
a = data[i+3];
|
||||
|
||||
dstPixels[i+0] = rr*r + rg*g + rb*b;
|
||||
dstPixels[i+1] = gr*r + gg*g + gb*b;
|
||||
dstPixels[i+2] = br*r + bg*g + bb*b;
|
||||
dstPixels[i+3] = a; // alpha
|
||||
data[i+0] = rr*r + rg*g + rb*b;
|
||||
data[i+1] = gr*r + gg*g + gb*b;
|
||||
data[i+2] = br*r + bg*g + bb*b;
|
||||
data[i+3] = a; // alpha
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Kinetic.Filters.HSV = function(src,dst,opt){
|
||||
if( this === Kinetic.Filters ){
|
||||
HSV(src, dst||src, opt );
|
||||
}else{
|
||||
HSV.call(this, src, dst||src, opt || {
|
||||
hue: this.hue(),
|
||||
saturation: this.saturation(),
|
||||
value: this.value()
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// For compatibility with older hue shift stuff
|
||||
Kinetic.Filters.ShiftHue = function(src,dst,opt){
|
||||
if( this === Kinetic.Filters ){
|
||||
HSV(src, dst||src, opt );
|
||||
}else{
|
||||
HSV.call(this, src, dst||src, opt || {
|
||||
hue: this.hueShiftDeg()
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'hue', 0);
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'hueShift', 0);
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'saturation', 1);
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'value', 1);
|
||||
|
||||
/**
|
||||
* get/set hsv hue in degrees
|
||||
* @name hue
|
||||
@@ -107,15 +67,7 @@
|
||||
* @returns {Number}
|
||||
*/
|
||||
|
||||
/**
|
||||
* get/set hsv hueShift in degrees
|
||||
* @name hueShift
|
||||
* @method
|
||||
* @memberof Kinetic.Node.prototype
|
||||
* @param {Number} hue value between 0 and 359
|
||||
* @returns {Number}
|
||||
*/
|
||||
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'saturation', 1);
|
||||
/**
|
||||
* get/set hsv saturation
|
||||
* @name saturation
|
||||
@@ -125,6 +77,7 @@
|
||||
* @returns {Number}
|
||||
*/
|
||||
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'value', 1);
|
||||
/**
|
||||
* get/set hsv value
|
||||
* @name value
|
||||
|
@@ -24,9 +24,6 @@
|
||||
};
|
||||
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'red', 255);
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'green', 0);
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'blue', 0);
|
||||
|
||||
/**
|
||||
* get/set filter red value
|
||||
* @name red
|
||||
@@ -36,6 +33,7 @@
|
||||
* @returns {Integer}
|
||||
*/
|
||||
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'green', 0);
|
||||
/**
|
||||
* get/set filter green value
|
||||
* @name green
|
||||
@@ -45,6 +43,7 @@
|
||||
* @returns {Integer}
|
||||
*/
|
||||
|
||||
Kinetic.Factory.addFilterGetterSetter(Kinetic.Node, 'blue', 0);
|
||||
/**
|
||||
* get/set filter blue value
|
||||
* @name blue
|
||||
|
Reference in New Issue
Block a user