added pixastic Solarize filter

This commit is contained in:
Eric Rowell
2014-01-04 05:34:36 -08:00
parent 0d944aac27
commit 67f71e4785
4 changed files with 76 additions and 3 deletions

View File

@@ -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
View 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);
};
})();

View File

@@ -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 ================-->

View 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';
});
});