⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hsv.js

📁 dojo-0.3.0-ajax开 源 项 目
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.graphics.color.hsv");dojo.require("dojo.lang.array");dojo.lang.extend(dojo.graphics.color.Color, {	toHsv: function() {		return dojo.graphics.color.rgb2hsv(this.toRgb());	}});dojo.graphics.color.rgb2hsv = function(r, g, b){	if (dojo.lang.isArray(r)) {		b = r[2] || 0;		g = r[1] || 0;		r = r[0] || 0;	}	// r,g,b, each 0 to 255, to HSV.	// h = 0.0 to 360.0 (corresponding to 0..360.0 degrees around hexcone)	// s = 0.0 (shade of gray) to 1.0 (pure color)	// v = 0.0 (black) to 1.0 {white)	//	// Based on C Code in "Computer Graphics -- Principles and Practice,"	// Foley et al, 1996, p. 592. 	//	// our calculatuions are based on 'regular' values (0-360, 0-1, 0-1) 	// but we return bytes values (0-255, 0-255, 0-255)	var h = null;	var s = null;	var v = null;	var min = Math.min(r, g, b);	v = Math.max(r, g, b);	var delta = v - min;	// calculate saturation (0 if r, g and b are all 0)	s = (v == 0) ? 0 : delta/v;	if (s == 0){		// achromatic: when saturation is, hue is undefined		h = 0;	}else{		// chromatic		if (r == v){			// between yellow and magenta			h = 60 * (g - b) / delta;		}else{			if (g == v){				// between cyan and yellow				h = 120 + 60 * (b - r) / delta;			}else{				if (b == v){					// between magenta and cyan					h = 240 + 60 * (r - g) / delta;				}			}		}		if (h < 0){			h += 360;		}	}	h = (h == 0) ? 360 : Math.ceil((h / 360) * 255);	s = Math.ceil(s * 255);	return [h, s, v];}dojo.graphics.color.hsv2rgb = function(h, s, v){ 	if (dojo.lang.isArray(h)) {		v = h[2] || 0;		s = h[1] || 0;		h = h[0] || 0;	}	h = (h / 255) * 360;	if (h == 360){ h = 0;}	s = s / 255;	v = v / 255;	// Based on C Code in "Computer Graphics -- Principles and Practice,"	// Foley et al, 1996, p. 593.	//	// H = 0.0 to 360.0 (corresponding to 0..360 degrees around hexcone) 0 for S = 0	// S = 0.0 (shade of gray) to 1.0 (pure color)	// V = 0.0 (black) to 1.0 (white)	var r = null;	var g = null;	var b = null;	if (s == 0){		// color is on black-and-white center line		// achromatic: shades of gray		r = v;		g = v;		b = v;	}else{		// chromatic color		var hTemp = h / 60;		// h is now IN [0,6]		var i = Math.floor(hTemp);	// largest integer <= h		var f = hTemp - i;		// fractional part of h		var p = v * (1 - s);		var q = v * (1 - (s * f));		var t = v * (1 - (s * (1 - f)));		switch(i){			case 0: r = v; g = t; b = p; break;			case 1: r = q; g = v; b = p; break;			case 2: r = p; g = v; b = t; break;			case 3: r = p; g = q; b = v; break;			case 4: r = t; g = p; b = v; break;			case 5: r = v; g = p; b = q; break;		}	}	r = Math.ceil(r * 255);	g = Math.ceil(g * 255);	b = Math.ceil(b * 255);	return [r, g, b];}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -