Using zColor Library : Color « Development « JavaScript Tutorial

JavaScript Tutorial
1. Language Basics
2. Operators
3. Statement
4. Development
5. Number Data Type
6. String
7. Function
8. Global
9. Math
10. Form
11. Array
12. Date
13. Dialogs
14. Document
15. Event
16. Location
17. Navigator
18. Screen
19. Window
20. History
21. HTML Tags
22. Style
23. DOM Node
24. Drag Drop
25. Object Oriented
26. Regular Expressions
27. XML
28. GUI Components
29. Dojo toolkit
30. jQuery
31. Animation
32. MS JScript
Java
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
JavaScript Tutorial » Development » Color 
4. 3. 1. Using zColor Library
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
    <head>
        <title>zColor Example</title>
        <script type="text/javascript">
/*------------------------------------------------------------------------------
 * JavaScript zColor Library
 * Version 0.1
 * by Nicholas C. Zakas, http://www.nczonline.net/
 * Copyright (c) 2004-2005 Nicholas C. Zakas. All Rights Reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 *------------------------------------------------------------------------------
 */

 
/**
 * Represents an RGB color.
 * @class
 * @scope public
 * @constructor
 @param iRed The red value for the color (0-255)
 @param iGreen The green value for the color (0-255)
 @param iBlue The blue value for the color (0-255)
 */
function zRGB(iRed, iGreen, iBlue) {

    /**
     * The red value for the color.
     * @scope public
     */
    this.r /*:int */ = parseInt(iRed,10);
    
    /**
     * The green value for the color.
     * @scope public
     */    
    this.g /*:int */ = parseInt(iGreen,10);
    
    /**
     * The blue value for the color.
     * @scope public
     */    
    this.b /*:int */= parseInt(iBlue,10);
}

/**
 * Creates an RGB color from a hex string.
 * @scope public
 @param sHex The hex string.
 @return The RGB object for the hex string.
 */
zRGB.fromHexString = function (sHex /*: String *//*:zRGB */ {

    //eliminate the pound sign
    if (sHex.charAt(0== "#") {
        sHex = sHex.substring(1);
    //ENd: if (sHex.charAt(0) == "#")
    
    //extract and convert the red, green, and blue values
    var iRed = parseInt(sHex.substring(0,2),16);
    var iGreen = parseInt(sHex.substring(2,4),16);
    var iBlue = parseInt(sHex.substring(4,6),16);
    
    //return an array
    return new zRGB(iRed,iGreen,iBlue);
};

/**
 * Returns a hex representation of the color.
 * @scope public
 @return A hex representation of the color.
 */
zRGB.prototype.toHexString = function () /*:String */ {

    //extract and convert the red, green, and blue values
    var sRed = this.r.toString(16).toUpperCase();
    var sGreen = this.g.toString(16).toUpperCase();
    var sBlue = this.b.toString(16).toUpperCase();
    
    //make sure there are two digits in each code
    if (sRed.length == 1) {
            sRed = "0" + sRed;
    //End: if (sRed.length == 1)    
    if (sGreen.length == 1) {
            sGreen = "0" + sGreen;
    //End: if (sGreen.length == 1)    
    if (sBlue.length == 1) {
            sBlue = "0" + sBlue;
    //End: if (sBlue.length == 1)    
    
    //return the hex code
    return "#" + sRed + sGreen + sBlue;
};

/**
 * Returns an HSL representation of the color.
 * @scope public
 @return An HSL representation of the color.
 */
zRGB.prototype.toHSL = function () /*:zHSL */ {
    
    var iMax = Math.max(this.r, this.g, this.b);
    var iMin = Math.min(this.r, this.g, this.b);
    var iDelta = iMax-iMin;

    var iLum = Math.round((iMax+iMin)/2);
    var iHue = 0;
    var iSat = 0;
    
    if (iDelta > 0) {
        iSat = Math.ceil(((iLum < (0.5*255)) ? iDelta/(iMax + iMin: iDelta/((2*255)-iMax-iMin))*255);

        var iRedC = (iMax-this.r)/iDelta;
        var iGreenC = (iMax-this.g)/iDelta;
        var iBlueC = (iMax-this.b)/iDelta;
        
        if (this.r == iMax) {
            iHue = iBlueC - iGreenC;                
        else if (this.g == iMax) {
            iHue = 2.0 + iRedC - iBlueC;
        else {
            iHue = 4.0 + iGreenC - iRedC;
        }
        
        iHue /= 6.0;
        
        if (iHue < 0) {
            iHue += 1.0;
        }

        iHue = Math.round(iHue * 255);
    }
    
    return new zHSL(iHue,iSat,iLum);
};

/**
 * Returns the color in a string form.
 * @scope public
 @return The color in a string form.
 */
zRGB.prototype.toString = function () /*:String */ {
    return "rgb(" this.r + "," this.g + "," this.b + ")";
};

/**
 * Represents an HSL color.
 * @class
 * @scope public
 * @constructor
 @param iHue The hue value for the color (0-255)
 @param iSat The saturation value for the color (0-255)
 @param iLum The luminosity value for the color (0-255)
 */
function zHSL(iHue, iSat, iLum) {

    /**
     * The hue value for the color.
     * @scope public
     */
    this.h /*:int */ = parseInt(iHue,10);
    
    /**
     * The saturation value for the color.
     * @scope public
     */    
    this.s /*:int */ = parseInt(iSat,10);
    
    /**
     * The luminosity value for the color.
     * @scope public
     */    
    this.l /*:int */= parseInt(iLum,10);
}

/**
 * Converts the color into RGB form.
 * @scope public
 @return An RGB version of the color.
 */
zHSL.prototype.toRGB = function () /*:zRGB */ {

    iHue = this.h/255;
    iSat = this.s/255;
    iLum = this.l/255;

    var iRed, iGreen, iBlue;
    
    if (iSat == 0) {
        iRed = iGreen = iBlue = iLum;        
    else {

        var m1, m2;
        
        if (iLum <= 0.5) {
            m2 = iLum * (1+iSat);
        else {
            m2 = iLum + iSat - (iLum * iSat);
        }
            
        m1 = 2.0 * iLum - m2;
        
        hf2 = iHue + 1/3;
        if (hf2 < 0hf2 = hf2 + 1;
        if (hf2 > 1hf2 = hf2 - 1;
        if (* hf2 < 1) {
            iRed = (m1+(m2-m1)*hf2*6);
        else {
            if (* hf2 < 1) {
                iRed = m2;
            else {
                if (3.0*hf2 < 2.0) {
                    iRed = (m1+(m2-m1)*((2.0/3.0)-hf2)*6.0);
                else {
                    iRed = m1;
                }
            }
        }

        //Calculate Green                    
        if (iHue < 0) {iHue = iHue + 1.0;}
        if (iHue > 1) {iHue = iHue - 1.0;}
        if (6.0 * iHue < 1){
            iGreen = (m1+(m2-m1)*iHue*6.0);}
        else {
            if (2.0 * iHue < 1){
                iGreen = m2;
            else {
                if (3.0*iHue < 2.0) {
                    iGreen = (m1+(m2-m1)*((2.0/3.0)-iHue)*6.0);
                else {
                    iGreen = m1;
                }
            
        }
        
        //Calculate Blue
        hf2=iHue-1.0/3.0;                    
        if (hf2 < 0) {hf2 = hf2 + 1.0;}
        if (hf2 > 1) {hf2 = hf2 - 1.0;}
        if (6.0 * hf2 < 1) {
             iBlue = (m1+(m2-m1)*hf2*6.0);
        else {
             if (2.0 * hf2 < 1){
                 iBlue = m2;
             else {
                 if (3.0*hf2 < 2.0) {
                     iBlue = (m1+(m2-m1)*((2.0/3.0)-hf2)*6.0);
                 else {
                     iBlue = m1;
                 }
             
        }
    
    }    
    return new zRGB(Math.round(iRed*255),Math.round(iGreen*255),Math.round(iBlue*255));
};

/**
 * Returns the color in a string form.
 * @scope public
 @return The color in a string form.
 */
zHSL.prototype.toString = function () /*:String */ {
    return "hsl(" this.h + "," this.s + "," this.l + ")";
};

        </script>
        <script type="text/javascript">
        
            function convertToHSL() {
                var iRed = parseInt(document.getElementById("txtRed").value);
                var iBlue = parseInt(document.getElementById("txtBlue").value);
                var iGreen = parseInt(document.getElementById("txtGreen").value);
                
                var oRGB = new zRGB(iRed, iGreen, iBlue);
                var oHSL = oRGB.toHSL();

                document.getElementById("txtHue").value = oHSL.h;
                document.getElementById("txtSat").value = oHSL.s;
                document.getElementById("txtLum").value = oHSL.l;
                
            }
            
            function convertToRGB() {
                var iHue = parseInt(document.getElementById("txtHue").value);
                var iSat = parseInt(document.getElementById("txtSat").value);
                var iLum = parseInt(document.getElementById("txtLum").value);
                
                var oHSL = new zHSL(iHue, iSat, iLum);
                var oRGB = oHSL.toRGB();
                
                document.getElementById("txtRed").value = oRGB.r;
                document.getElementById("txtGreen").value = oRGB.g;
                document.getElementById("txtBlue").value = oRGB.b;
                
            }
                     
        </script>
    </head>
    <body>
        <form>
            <table border="0">
            <tr>
                <td>
                    R: <input type="text" id="txtRed" /><br />
                    G: <input type="text" id="txtGreen" /><br />
                    B: <input type="text" id="txtBlue" /><br />
                    <input type="button" value="to HSL -&gt;" onclick="convertToHSL()"/>
                </td>
                <td>
                    H: <input type="text" id="txtHue" /><br />
                    S: <input type="text" id="txtSat" /><br />
                    L: <input type="text" id="txtLum" /><br />
                    <input type="button" value="&lt;- to RGB" onclick="convertToRGB()"/>
                </td>
            </tr>
            </table>
        </form>

    </body>
</html>
4. 3. Color
4. 3. 1. Using zColor Library
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.