mirror of
https://github.com/konvajs/konva.git
synced 2025-09-19 10:47:59 +08:00
added pixastic Solarize filter
This commit is contained in:
@@ -25,6 +25,7 @@ module.exports = function(grunt) {
|
||||
'src/filters/Polar.js',
|
||||
'src/filters/Threshold.js',
|
||||
'src/filters/Sepia.js',
|
||||
'src/filters/Solarize.js',
|
||||
|
||||
// core
|
||||
'src/Animation.js',
|
||||
|
40
src/filters/Solarize.js
Normal file
40
src/filters/Solarize.js
Normal file
@@ -0,0 +1,40 @@
|
||||
(function () {
|
||||
/**
|
||||
* Solarize Filter
|
||||
* @function
|
||||
* @memberof Kinetic.Filters
|
||||
* @param {Object} imageData
|
||||
* Pixastic Lib - Solarize filter - v0.1.0
|
||||
* Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/
|
||||
* License: [http://www.pixastic.com/lib/license.txt]
|
||||
*/
|
||||
Kinetic.Filters.Solarize = function (imageData) {
|
||||
var data = imageData.data,
|
||||
w = imageData.width,
|
||||
h = imageData.height,
|
||||
w4 = w*4,
|
||||
y = h;
|
||||
|
||||
do {
|
||||
var offsetY = (y-1)*w4;
|
||||
var x = w;
|
||||
do {
|
||||
var offset = offsetY + (x-1)*4;
|
||||
var r = data[offset];
|
||||
var g = data[offset+1];
|
||||
var b = data[offset+2];
|
||||
|
||||
if (r > 127) r = 255 - r;
|
||||
if (g > 127) g = 255 - g;
|
||||
if (b > 127) b = 255 - b;
|
||||
|
||||
data[offset] = r;
|
||||
data[offset+1] = g;
|
||||
data[offset+2] = b;
|
||||
|
||||
} while (--x);
|
||||
} while (--y);
|
||||
};
|
||||
})();
|
||||
|
||||
|
@@ -83,9 +83,7 @@
|
||||
<script src="unit/filters/Brighten-test.js"></script>
|
||||
<script src="unit/filters/RGB-test.js"></script>
|
||||
<script src="unit/filters/HSV-test.js"></script>
|
||||
|
||||
<script src="unit/filters/Invert-test.js"></script>
|
||||
|
||||
<script src="unit/filters/Mask-test.js"></script>
|
||||
<script src="unit/filters/Grayscale-test.js"></script>
|
||||
<script src="unit/filters/Enhance-test.js"></script>
|
||||
@@ -94,9 +92,9 @@
|
||||
<script src="unit/filters/Noise-test.js"></script>
|
||||
<script src="unit/filters/Threshold-test.js"></script>
|
||||
<script src="unit/filters/Posterize-test.js"></script>
|
||||
|
||||
<script src="unit/filters/Sepia-test.js"></script>
|
||||
<script src="unit/filters/Emboss-test.js"></script>
|
||||
<script src="unit/filters/Solarize-test.js"></script>
|
||||
|
||||
|
||||
<!--=============== functional tests ================-->
|
||||
|
34
test/unit/filters/Solarize-test.js
Normal file
34
test/unit/filters/Solarize-test.js
Normal file
@@ -0,0 +1,34 @@
|
||||
suite('Solarize', function() {
|
||||
|
||||
// ======================================================
|
||||
test('solarize', function(done) {
|
||||
var stage = addStage();
|
||||
|
||||
var imageObj = new Image();
|
||||
imageObj.onload = function() {
|
||||
var layer = new Kinetic.Layer();
|
||||
darth = new Kinetic.Image({
|
||||
x: 10,
|
||||
y: 10,
|
||||
image: imageObj,
|
||||
draggable: true
|
||||
});
|
||||
|
||||
layer.add(darth);
|
||||
stage.add(layer);
|
||||
darth.cache();
|
||||
darth.filters([Kinetic.Filters.Solarize]);
|
||||
|
||||
|
||||
layer.draw();
|
||||
|
||||
|
||||
done();
|
||||
|
||||
};
|
||||
imageObj.src = 'assets/darth-vader.jpg';
|
||||
//imageObj.src = 'assets/lion.png';
|
||||
|
||||
});
|
||||
|
||||
});
|
Reference in New Issue
Block a user