/** * color-utils for jQuery * * Copyright (c) 2008 Yoshiomi KURISU * Licensed under the MIT (MIT-LICENSE.txt) licenses. * */ (function($){ $.isHexadecimalColor = function(color){ if(color && color.match && ( color.match(/^#[0-9a-fA-F]{3}$/) || color.match(/^#[0-9a-fA-F]{6}$/)) ) return true; else return false; } $.isRGBColor = function(color){ if(color && color.match && color.match(/^rgb\(([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]),[ ]{0,1}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]),[ ]{0,1}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\)$/) ) return true; else return false; } $.isColor = function(color){ var $ = jQuery; if($.isHexadecimalColor(color) || $.isRGBColor(color)) return true; else return false; } $.RGB = function(color){ var $ = jQuery; if(typeof color == 'string'){ if($.isRGBColor($.fmtColor(color,'rgb'))){ return [parseInt(RegExp.$1),parseInt(RegExp.$2),parseInt(RegExp.$3)]; } return []; }else if(color instanceof Array && color.length == 3 && isFinite(color[0]-0) && isFinite(color[1]-0) && isFinite(color[2]-0) && ( 0 <= color[0]-0 && color[0] -0 <= 255) && ( 0 <= color[1]-0 && color[1] -0 <= 255) && ( 0 <= color[2]-0 && color[2] -0 <= 255)){ return 'rgb('+color[0]+', '+color[1] + ', ' + color[2]+')'; } return color; } $.colorVectorValue = function(color){ var $ = jQuery; var c = $.RGB(color); if(c.length == 3){ var r = c[0],g = c[1],b = c[2]; return Math.sqrt( (r*r)+(g*g)+(b*b) ).toFixed(2); } return 0; } $.colorDecimalValue = function(color){ var $ = jQuery; if($.isColor(color)){ color = $.fmtColor(color,'hexadecimal'); return parseInt(color.substr(1,6),16); } return 0; } $.fmtColor = function(color,fmt){ var $ = jQuery; if($.isColor(color) == false) return color; var pad = function(str){ if(str.length < 2){ for(var i = 0,len = 2 - str.length ; i 255)?v-255:v; v = (v < 0)?v+255:v; }else{ v = (v > 255)?255:v; v = (v < 0)?0:v; } return v; } if($.isRGBColor(tmp)){ var r = parseInt(RegExp.$1); var g = parseInt(RegExp.$2); var b = parseInt(RegExp.$3); if(type=='r'){ r = gc(RegExp.$1,value,rotate); }else if(type=='g'){ g = gc(RegExp.$2,value,rotate); }else if(type=='b'){ b = gc(RegExp.$3,value,rotate); } color = $.RGB([r,g,b]); } } return color; } if(type instanceof Array && type.length == 3){ type = {'r':type[0],'g':type[1],'b':type[2]}; } if(type instanceof Object){ rotate = value; var params = ['r','g','b']; for(var i = 0,len = params.length ; i 0); if (i >= j) break; var tmp = jq[i]; jq[i] = jq[j]; jq[j] = tmp; } if (h < i - 1) q(jq, h, i - 1,prop); if (j + 1 < t) q(jq, j + 1, t,prop); return jq; } return q(this, 0, this.length - 1,prop); } })(jQuery);