///////////////////////////////////////////////////////////////// // Shift Hues ////////////////////////////////////////////////////////////////// //Inspired by John Wundes ( john@wundes.com ) www.wundes.com "Vary hues" script : http://www.wundes.com/JS4AI/vary_hues.js //Copyleft Laurent Jégou, jegou@univ-tlse2.fr, 10/09 var ad = app.activeDocument; var len = ad.selection.length; var hues = false; if (len == 0) { alert("One or more object must be selected."); } else { ob = app.activeDocument.selection; var text = "To shift hues, enter the shift value (on a scale of 360) such as: 20 (could be negative)\n" var data = prompt(text, ""); if ( data == null || data.length ==0 ) { //User canceled process or didn't enter anything, so do nothing and end nicely. } else{ //Value detection action = Number(data); hues = true; for (j=0; j=-max && num<=max) { return true; } return false; } function setLegal(num, max) { if (max == undefined) { max = 100; } if (num<-max) { return -num%max; } else if (num>max) { return max-(num%max); } else { return num; } } function setHue(obj, dev) { if (obj == undefined) { alert ("Error : object undefined."); } else if (obj.typename == "RGBColor") { var trgb = new rgbc(); trgb.r = obj.red; trgb.g = obj.green; trgb.b = obj.blue; var thsv = new hsvc(); thsv = RGB2HSV(trgb); thsv.h += dev; if (thsv.h < 0) { thsv.h += 360; } if (thsv.h > 360) { thsv.h -= 360; } var trgb = HSV2RGB(thsv); obj.red = trgb.r; obj.green = trgb.g; obj.blue = trgb.b; } else if (obj.typename == "SpotColor") { alert("Object has a spot color, please use RGB colors."); } else if (obj.typename == "GrayColor") { alert("Object has a greyscale color, please use RGB colors."); } else if (obj.typename == "CMYKColor") { alert("Object has a CYMK color, please use RGB colors."); } else if (gradAlert != 1 && (obj.typename == "PatternColor" || obj.typename == "GradientColor")) { var gradAlert = 1; alert("Patterns and Gradients will not be transformed."); } } function hsvc() { this.h = 0; this.s = 0; this.v = 0; } function rgbc() { this.r = 0; this.g = 0; this.b = 0; } function cymkc() { this.c = 0; this.y = 0; this.m = 0; this.k = 0; } function cymc() { this.c = 0; this.y = 0; this.m = 0; } function RGB2HSV(obj) { var rhsv = new hsvc(); var var_R = ( obj.r / 255 ); //RGB from 0 to 255 var var_G = ( obj.g / 255 ); var var_B = ( obj.b / 255 ); var minRG = Math.min(var_R, var_G); var var_Min = Math.min(minRG, var_B); //Min. value of RGB var maxRG = Math.max(var_R, var_G); var var_Max = Math.max(maxRG, var_B); //Max. value of RGB var del_Max = var_Max - var_Min; //Delta RGB value rhsv.v = var_Max; if ( del_Max == 0 ) //This is a gray, no chroma... { rhsv.h = 0; //HSV results from 0 to 1 rhsv.s = 0; } else //Chromatic data... { rhsv.s = del_Max / var_Max; var del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max; var del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max; var del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max; if ( var_R == var_Max ) { rhsv.h = del_B - del_G; } else if ( var_G == var_Max ) { rhsv.h = ( 1 / 3 ) + del_R - del_B; } else if ( var_B == var_Max ) { rhsv.h = ( 2 / 3 ) + del_G - del_R; } if ( rhsv.h < 0 ) {rhsv.h += 1;} if ( rhsv.h > 1 ) {rhsv.h -= 1;} } rhsv.h *= 360; rhsv.s *= 100; rhsv.v *= 100; return rhsv; } function HSV2RGB(obj) { var argb = new rgbc(); if (obj.s == 0) { argb.r = obj.v; argb.g = obj.v; argb.b = obj.v; return argb; } obj.h /= 360; obj.s /= 100; obj.v /= 100; var var_r = 0; var var_g = 0; var var_b = 0; var var_h = obj.h * 6; if ( var_h == 6 ) var_h = 0; //H must be < 1 var var_i = Math.floor( var_h ); //Or ... var_i = floor( var_h ) var var_1 =obj.v * ( 1 - obj.s ) var var_2 = obj.v * ( 1 - obj.s * ( var_h - var_i ) ) var var_3 = obj.v * ( 1 - obj.s * ( 1 - ( var_h - var_i ) ) ) if (var_i == 0) { var_r = obj.v; var_g = var_3; var_b = var_1; } else if (var_i == 1) { var_r = var_2; var_g = obj.v; var_b = var_1; } else if (var_i == 2) { var_r = var_1; var_g = obj.v; var_b = var_3; } else if (var_i == 3) { var_r = var_1; var_g = var_2; var_b = obj.v; } else if (var_i == 4) { var_r = var_3; var_g = var_1; var_b = obj.v; } else { var_r = obj.v; var_g = var_1; var_b = var_2; } argb.r = var_r * 255; argb.g = var_g * 255; argb.b = var_b * 255; return argb; } }