Permalink
Browse files

Finished adding all of the presets and plugins

  • Loading branch information...
1 parent f90f7b0 commit 076850fd50415c9e95a18d2dc96cf945f98f3226 @meltingice committed Jan 17, 2012
Showing with 707 additions and 2 deletions.
  1. +331 −0 dist/caman.full.js
  2. +9 −1 dist/caman.full.min.js
  3. +129 −1 src/plugins/presets.coffee
  4. +238 −0 src/plugins/stackBlur.coffee
View
@@ -2289,6 +2289,337 @@
if (vignette) return this.vignette("45%", 20);
});
+ Caman.Filter.register("hazyDays", function() {
+ this.gamma(1.2);
+ this.newLayer(function() {
+ this.setBlendingMode("overlay");
+ this.opacity(60);
+ this.copyParent();
+ this.filter.channels({
+ red: 5
+ });
+ return this.filter.stackBlur(15);
+ });
+ this.newLayer(function() {
+ this.setBlendingMode("addition");
+ this.opacity(40);
+ return this.fillColor("#6899ba");
+ });
+ this.newLayer(function() {
+ this.setBlendingMode("multiply");
+ this.opacity(35);
+ this.copyParent();
+ this.filter.brightness(40);
+ this.filter.vibrance(40);
+ this.filter.exposure(30);
+ this.filter.contrast(15);
+ this.filter.curves('r', [0, 40], [128, 128], [128, 128], [255, 215]);
+ this.filter.curves('g', [0, 40], [128, 128], [128, 128], [255, 215]);
+ this.filter.curves('b', [0, 40], [128, 128], [128, 128], [255, 215]);
+ return this.filter.stackBlur(5);
+ });
+ this.curves('r', [20, 0], [128, 158], [128, 128], [235, 255]);
+ this.curves('g', [20, 0], [128, 128], [128, 128], [235, 255]);
+ this.curves('b', [20, 0], [128, 108], [128, 128], [235, 255]);
+ return this.vignette("45%", 20);
+ });
+
+ Caman.Filter.register("herMajesty", function() {
+ this.brightness(40);
+ this.colorize("#ea1c5d", 10);
+ this.curves('b', [0, 10], [128, 180], [190, 190], [255, 255]);
+ this.newLayer(function() {
+ this.setBlendingMode('overlay');
+ this.opacity(50);
+ this.copyParent();
+ this.filter.gamma(0.7);
+ return this.newLayer(function() {
+ this.setBlendingMode('normal');
+ this.opacity(60);
+ return this.fillColor('#ea1c5d');
+ });
+ });
+ this.newLayer(function() {
+ this.setBlendingMode('multiply');
+ this.opacity(60);
+ this.copyParent();
+ this.filter.saturation(50);
+ this.filter.hue(90);
+ return this.filter.contrast(10);
+ });
+ this.gamma(1.4);
+ this.vibrance(-30);
+ this.newLayer(function() {
+ this.opacity(10);
+ return this.fillColor('#e5f0ff');
+ });
+ return this;
+ });
+
+ Caman.Filter.register("nostalgia", function() {
+ this.saturation(20);
+ this.gamma(1.4);
+ this.greyscale();
+ this.contrast(5);
+ this.sepia(100);
+ this.channels({
+ red: 8,
+ blue: 2,
+ green: 4
+ });
+ this.gamma(0.8);
+ this.contrast(5);
+ this.exposure(10);
+ this.newLayer(function() {
+ this.setBlendingMode('overlay');
+ this.copyParent();
+ this.opacity(55);
+ return this.filter.stackBlur(10);
+ });
+ return this.vignette("50%", 30);
+ });
+
+ Caman.Filter.register("hemingway", function() {
+ this.greyscale();
+ this.contrast(10);
+ this.gamma(0.9);
+ this.newLayer(function() {
+ this.setBlendingMode("multiply");
+ this.opacity(40);
+ this.copyParent();
+ this.filter.exposure(15);
+ this.filter.contrast(15);
+ return this.filter.channels({
+ green: 10,
+ red: 5
+ });
+ });
+ this.sepia(30);
+ this.curves('rgb', [0, 10], [120, 90], [180, 200], [235, 255]);
+ this.channels({
+ red: 5,
+ green: -2
+ });
+ return this.exposure(15);
+ });
+
+ Caman.Filter.register("concentrate", function() {
+ this.sharpen(40);
+ this.saturation(-50);
+ this.channels({
+ red: 3
+ });
+ this.newLayer(function() {
+ this.setBlendingMode("multiply");
+ this.opacity(80);
+ this.copyParent();
+ this.filter.sharpen(5);
+ this.filter.contrast(50);
+ this.filter.exposure(10);
+ return this.filter.channels({
+ blue: 5
+ });
+ });
+ return this.brightness(10);
+ });
+
+ /*
+ StackBlur - a fast almost Gaussian Blur For Canvas v0.31 modified for CamanJS
+
+ Version: 0.31
+ Author: Mario Klingemann
+ Contact: mario@quasimondo.com
+ Website: http://www.quasimondo.com/StackBlurForCanvas
+ Twitter: @quasimondo
+ Modified By: Ryan LeFevre (@meltingice)
+
+ In case you find this class useful - especially in commercial projects -
+ I am not totally unhappy for a small donation to my PayPal account
+ mario@quasimondo.de
+
+ Or support me on flattr:
+ https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript
+
+ Copyright (c) 2010 Mario Klingemann
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+ (function() {
+ var BlurStack, mul_table, shg_table;
+ mul_table = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];
+ shg_table = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];
+ BlurStack = function() {
+ this.r = 0;
+ this.g = 0;
+ this.b = 0;
+ this.a = 0;
+ return this.next = null;
+ };
+ Caman.Plugin.register("stackBlur", function(radius) {
+ var b_in_sum, b_out_sum, b_sum, div, g_in_sum, g_out_sum, g_sum, height, heightMinus1, i, mul_sum, p, pb, pg, pixels, pr, r_in_sum, r_out_sum, r_sum, radiusPlus1, rbs, shg_sum, stack, stackEnd, stackIn, stackOut, stackStart, sumFactor, w4, width, widthMinus1, x, y, yi, yp, yw;
+ if (isNaN(radius) || radius < 1) return;
+ radius |= 0;
+ pixels = this.pixelData;
+ width = this.dimensions.width;
+ height = this.dimensions.height;
+ div = radius + radius + 1;
+ w4 = width << 2;
+ widthMinus1 = width - 1;
+ heightMinus1 = height - 1;
+ radiusPlus1 = radius + 1;
+ sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;
+ stackStart = new BlurStack();
+ stack = stackStart;
+ for (i = 1; 1 <= div ? i < div : i > div; 1 <= div ? i++ : i--) {
+ stack = stack.next = new BlurStack();
+ if (i === radiusPlus1) stackEnd = stack;
+ }
+ stack.next = stackStart;
+ stackIn = null;
+ stackOut = null;
+ yw = yi = 0;
+ mul_sum = mul_table[radius];
+ shg_sum = shg_table[radius];
+ for (y = 0; 0 <= height ? y < height : y > height; 0 <= height ? y++ : y--) {
+ r_in_sum = g_in_sum = b_in_sum = r_sum = g_sum = b_sum = 0;
+ r_out_sum = radiusPlus1 * (pr = pixels[yi]);
+ g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);
+ b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);
+ r_sum += sumFactor * pr;
+ g_sum += sumFactor * pg;
+ b_sum += sumFactor * pb;
+ stack = stackStart;
+ for (i = 0; 0 <= radiusPlus1 ? i < radiusPlus1 : i > radiusPlus1; 0 <= radiusPlus1 ? i++ : i--) {
+ stack.r = pr;
+ stack.g = pg;
+ stack.b = pb;
+ stack = stack.next;
+ }
+ for (i = 1; 1 <= radiusPlus1 ? i < radiusPlus1 : i > radiusPlus1; 1 <= radiusPlus1 ? i++ : i--) {
+ p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);
+ r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);
+ g_sum += (stack.g = (pg = pixels[p + 1])) * rbs;
+ b_sum += (stack.b = (pb = pixels[p + 2])) * rbs;
+ r_in_sum += pr;
+ g_in_sum += pg;
+ b_in_sum += pb;
+ stack = stack.next;
+ }
+ stackIn = stackStart;
+ stackOut = stackEnd;
+ for (x = 0; 0 <= width ? x < width : x > width; 0 <= width ? x++ : x--) {
+ pixels[yi] = (r_sum * mul_sum) >> shg_sum;
+ pixels[yi + 1] = (g_sum * mul_sum) >> shg_sum;
+ pixels[yi + 2] = (b_sum * mul_sum) >> shg_sum;
+ r_sum -= r_out_sum;
+ g_sum -= g_out_sum;
+ b_sum -= b_out_sum;
+ r_out_sum -= stackIn.r;
+ g_out_sum -= stackIn.g;
+ b_out_sum -= stackIn.b;
+ p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;
+ r_in_sum += (stackIn.r = pixels[p]);
+ g_in_sum += (stackIn.g = pixels[p + 1]);
+ b_in_sum += (stackIn.b = pixels[p + 2]);
+ r_sum += r_in_sum;
+ g_sum += g_in_sum;
+ b_sum += b_in_sum;
+ stackIn = stackIn.next;
+ r_out_sum += (pr = stackOut.r);
+ g_out_sum += (pg = stackOut.g);
+ b_out_sum += (pb = stackOut.b);
+ r_in_sum -= pr;
+ g_in_sum -= pg;
+ b_in_sum -= pb;
+ stackOut = stackOut.next;
+ yi += 4;
+ }
+ yw += width;
+ }
+ for (x = 0; 0 <= width ? x < width : x > width; 0 <= width ? x++ : x--) {
+ g_in_sum = b_in_sum = r_in_sum = g_sum = b_sum = r_sum = 0;
+ yi = x << 2;
+ r_out_sum = radiusPlus1 * (pr = pixels[yi]);
+ g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);
+ b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);
+ r_sum += sumFactor * pr;
+ g_sum += sumFactor * pg;
+ b_sum += sumFactor * pb;
+ stack = stackStart;
+ for (i = 0; 0 <= radiusPlus1 ? i < radiusPlus1 : i > radiusPlus1; 0 <= radiusPlus1 ? i++ : i--) {
+ stack.r = pr;
+ stack.g = pg;
+ stack.b = pb;
+ stack = stack.next;
+ }
+ yp = width;
+ for (i = 1; 1 <= radius ? i <= radius : i >= radius; 1 <= radius ? i++ : i--) {
+ yi = (yp + x) << 2;
+ r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);
+ g_sum += (stack.g = (pg = pixels[yi + 1])) * rbs;
+ b_sum += (stack.b = (pb = pixels[yi + 2])) * rbs;
+ r_in_sum += pr;
+ g_in_sum += pg;
+ b_in_sum += pb;
+ stack = stack.next;
+ if (i < heightMinus1) yp += width;
+ }
+ yi = x;
+ stackIn = stackStart;
+ stackOut = stackEnd;
+ for (y = 0; 0 <= height ? y < height : y > height; 0 <= height ? y++ : y--) {
+ p = yi << 2;
+ pixels[p] = (r_sum * mul_sum) >> shg_sum;
+ pixels[p + 1] = (g_sum * mul_sum) >> shg_sum;
+ pixels[p + 2] = (b_sum * mul_sum) >> shg_sum;
+ r_sum -= r_out_sum;
+ g_sum -= g_out_sum;
+ b_sum -= b_out_sum;
+ r_out_sum -= stackIn.r;
+ g_out_sum -= stackIn.g;
+ b_out_sum -= stackIn.b;
+ p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;
+ r_sum += (r_in_sum += (stackIn.r = pixels[p]));
+ g_sum += (g_in_sum += (stackIn.g = pixels[p + 1]));
+ b_sum += (b_in_sum += (stackIn.b = pixels[p + 2]));
+ stackIn = stackIn.next;
+ r_out_sum += (pr = stackOut.r);
+ g_out_sum += (pg = stackOut.g);
+ b_out_sum += (pb = stackOut.b);
+ r_in_sum -= pr;
+ g_in_sum -= pg;
+ b_in_sum -= pb;
+ stackOut = stackOut.next;
+ yi += width;
+ }
+ }
+ return this;
+ });
+ return Caman.Filter.register("stackBlur", function(radius) {
+ return this.processPlugin("stackBlur", [radius]);
+ });
+ })();
+
Caman.Filter.register("threshold", function(adjust) {
return this.process("threshold", function(rgba) {
var luminance;
Oops, something went wrong.

0 comments on commit 076850f

Please sign in to comment.