📄 colorutil.js
字号:
// a string constant used for decimal-hex-conversion (see helper functions at the bottom)var HEXVALUES = "0123456789ABCDEF";// ---------------------------------------------------------------------------/* * Color * A simple object to store a color and perform Hex/RGB conversions. * *//* * Color * Constructs a new Color object to store the color you provide * * Parameters * String hex - Hex representation of the color, e.g. #FF0000 for pure red * * Returns * A new Color object with the specified color * */function Color(hex) { // if the hex parameter is omitted, black is used this.hex = (Color.arguments.length > 0) ? hex : "000000"; // validate and assign color rgb = hexToRGB(this.hex); this.r = rgb[0]; this.g = rgb[1]; this.b = rgb[2]; // assign object methods this.setHex = ColorSetHex; this.getHex = ColorGetHex; this.setRGB = ColorSetRGB; this.toString = ColorToString; return this;}/* * Color.setRGB * Sets the color using RGB values (0-255). * * Parameters * byte r - red value * byte g - green value * byte b - blue value * */function ColorSetRGB(r,g, b) { if (r >= 0 && r < 256 && g >= 0 && g < 256 && b >= 0 && b < 256 ) { this.r = r; this.g = g; this.b = b; this.hex = RGBToHex(r,g,b); }}/* * Color.getHex * Returns the current color in hex format. * * Returns * String - the hex color, with a leading #, e.g. #FF0000 * */function ColorGetHex() { return "#" + this.hex;}/* * Color.setHex * Sets the current color in hex format * * Parameters * String hex - the new color, works with or without a leading # * */function ColorSetHex(hex) { rgb = hexToRGB(hex); // set color using the setRGB() method which does the errorchecking as well this.setRGB(rgb[0], rgb[1], rgb[2]);}/* * Color.toString * Returns a string representation of the object * * Returns * a string representation of the color as both Hex and RGB. * */function ColorToString() { return "#" + this.hex + " = (" + this.r + ", " + this.g + ", " + this.b + ")";}// ---------------------------------------------------------------------------/* * ColorBlend * Blends between two colors *//* * ColorBlend * Constructs a new ColorBlend object * * Parameters * Color colorFrom - color to blend from * Color colorTo - color to blend to * * Returns * A ColorBlend object with the two colors * */function ColorBlend(colorFrom, colorTo) { // assign object variables this.from = colorFrom; this.to = colorTo; // assign object methods this.getColor = ColorBlendGetColor; this.toString = ColorBlendToString; return this;}/* * ColorBlend.getColor * Calculates the color mixed by colorForm and colorTo. * * Parameters * double alpha - The blend factor (a real value between 0 and 1) * */function ColorBlendGetColor(alpha) { a = alpha; b = 1 - alpha; c = new Color(); c.setRGB(Math.round(this.from.r * a + this.to.r * b), Math.round(this.from.g * a + this.to.g * b), Math.round(this.from.b * a + this.to.b * b)); return c;}/* * Color.toString * Returns a string representation of the object * * Returns * a string representation of the ColorBlend object, * e.g. ColorBlend(#FF0000, #000000) (blending from * pure red to black). * */function ColorBlendToString() { return "ColorBlend(" + this.from + ", " + this.to + ")";}// ---------------------------------------------------------------------------/* * RGBToHex * Rectangle with color and size depending on depth (z value) * * Input Parameters * byte r - red value * byte g - green value * byte b - blue value * * Returns * A hex representation of the given RGB color * */function RGBToHex(r, g, b) { return "" + HEXVALUES.charAt(Math.floor(r / 16)) + HEXVALUES.charAt(r % 16) + HEXVALUES.charAt(Math.floor(g / 16)) + HEXVALUES.charAt(g % 16) + HEXVALUES.charAt(Math.floor(b / 16)) + HEXVALUES.charAt(b % 16);}/* * hexToRGB * returns a RGB representation of the hex value in a 3-element array (r,g,b) * * Input Parameters * String hex - the new color, works with or without a leading # * * Returns * A new preconfigured Material. */function hexToRGB(hex) { hex += ""; // turn hex into uppercase and cut out the interesting part hex = hex.toUpperCase().substr( (hex.charAt(0) == "#") ? 1 : 0, 6); var rgb = new Array(0,0,0); // convert the values for (j = 0; j < 3; j++) { rgb[j] = HEXVALUES.indexOf( hex.charAt(j*2) ) * 16 + HEXVALUES.indexOf( hex.charAt(j*2+1) ); } return rgb;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -