UIZE JavaScript Framework

MODULES Uize.Color.xUtil

1. Introduction

The Uize.Color.xUtil module is an extension module that extends the Uize.Color object by adding various instance and static utility methods.

DEVELOPERS: Chris van Rensburg

1.1. Examples

There are no dedicated showcase example pages for the Uize.Color.xUtil module.

SEARCH FOR EXAMPLES

Use the link below to search for example pages on the UIZE Web site that reference the Uize.Color.xUtil module...

SEARCH

1.2. Implementation Info

The Uize.Color.xUtil module defines the Uize.Color.xUtil extension module under the Uize.Color namespace.

1.2.1. Features Introduced in This Module

The features listed in this section have been introduced in this module.

STATIC PROPERTIES

Uize.Color.xUtil.moduleName | Uize.Color.xUtil.pathToResources

1.2.2. Features Overridden in This Module

No features have been overridden in this module.

1.2.3. Features Inherited From Other Modules

This module has no inherited features.

1.2.4. Modules Directly Under This Namespace

There are no modules directly under this namespace.

1.2.5. Unit Tests

There is no dedicated unit tests module for the Uize.Color.xUtil module.

2. Instance Methods

2.1. blend

Blends between the two specified colors using the specified blend amount, and sets the current color of the instance to the new blended color.

SYNTAX

colorOBJ.blend (color1ANYTYPE,color2ANYTYPE,blendFRACTION);

The blendFRACTION parameter should be a floating point number in the range of 0 to 1, where a value of 0 will result in colorOBJ being set to the color represented by the color1ANYTYPE parameter, the value 1 will result in colorOBJ being set to the color represented by the color2ANYTYPE parameter, and the value .5 will result in colorOBJ being set to a color that is an equal blend of the colors represented by the color1ANYTYPE and color2ANYTYPE parameters.

Different values between 0 and 1 for the blendFRACTION parameter give you different blends between color one and color two...

EXAMPLES

// a range of blends between black and white

myColor.blend ('000000','ffffff',0);    // myColor now #000000, encoding "hex"
myColor.blend ('000000','ffffff',.25);  // myColor now #404040, encoding "hex"
myColor.blend ('000000','ffffff',.5);   // myColor now #808080, encoding "hex"
myColor.blend ('000000','ffffff',.75);  // myColor now #bfbfbf, encoding "hex"
myColor.blend ('000000','ffffff',1);    // myColor now #ffffff, encoding "hex"

VARIATION

colorOBJ.blend (color1ANYTYPE,color2ANYTYPE);

When no blendFRACTION parameter is specified, the value for this parameter is defaulted to .5, producing an equal mix between color1ANYTYPE and color2ANYTYPE.

EXAMPLE

myColor.blend ('black','white');  // myColor now #808080 (gray), encoding "name"

Color one and color two - the source colors for the blending operation - can be specified using any of the many supported color encodings...

EXAMPLES

// equal blend of black and white, specified using different encodings

myColor.blend ('000000','ffffff');      // myColor now #808080, encoding "hex"
myColor.blend ('black','white');        // myColor now #808080, encoding "name"
myColor.blend (0x000000,0xffffff);      // myColor now #808080, encoding "RGB int"
myColor.blend ([0,0,0],[255,255,255]);  // myColor now #808080, encoding "RGB array"
myColor.blend ('#000','#fff');          // myColor now #808080, encoding "#hex"
myColor.blend ('#0','#f');              // myColor now #808080, encoding "#hex"

The color encodings for color one and color two do not have to be the same...

EXAMPLES

// equal blend of black and white, using mixed encodings for source colors

myColor.blend ('#000000',0xffffff);   // myColor now #808080, encoding "#hex"
myColor.blend ('black','#fff');       // myColor now #808080, encoding "name"
myColor.blend ([0,0,0],'ffffff');     // myColor now #808080, encoding "RGB array"

To blend the instance's current color value with a different color, simply pass a reference to the color object instance as one of the colors to blend, as in...

EXAMPLE

myColor.blend (myColor,'white',.1);  // blend in some white to lighten the color

NOTES

see the related Uize.Color.blend static method

2.2. equal

Returns a boolean, indicating whether or not the specified color is equivalent to the color of the instance.

SYNTAX

isEqualBOOL = myColor.equal (colorANYTYPE);

EXAMPLES

var fuchsia = Uize.Color ('fuchsia');
fuchsia.equal (Uize.Color ('fuchsia'));                 // produces true
fuchsia.equal ('ff00ff');                               // produces true
fuchsia.equal ('#ff00ff');                              // produces true
fuchsia.equal ('fuchsia');                              // produces true
fuchsia.equal ([255,0,255]);                            // produces true
fuchsia.equal (16711935);                               // produces true
fuchsia.equal ({red:255,green:0,blue:255});             // produces true
fuchsia.equal ('rgb(255,0,255)');                       // produces true
fuchsia.equal ({'HSL array':[300,100,50]});             // produces true
fuchsia.equal ({hue:300,saturation:100,lightness:50});  // produces true
fuchsia.equal ('hsl(300,100,50)');                      // produces true

In the above example, all the statements produce the result true. That's because all the colors that the fuchsia color object is being compared to are equivalent to the color "fuchsia" - regardless of the encoding used to specify them.

MORE EXAMPLES

Uize.Color.Util.mix (['black','red']).equal ('maroon');                // produces true
Uize.Color.Util.mix (['rgb(0,0,0)','#f00']).equal ('hsl(0,100%,25%)'); // produces true

NOTES

see the companion Uize.Color.equal static method

2.3. random

Randomizes the color of the instance in the color space of the instance's current encoding.

SYNTAX

myColor.random ();

NOTES

see the related Uize.Color.random static method

3. Static Methods

3.1. Uize.Color.blend

Blends between the two specified colors using the specified blend amount, and returns the blended color encoded using the specified encoding.

SYNTAX

colorANYTYPE = Uize.Color.blend (color1ANYTYPE,color2ANYTYPE,blendFRACTION);

The blendFRACTION parameter should be a floating point number in the range of 0 to 1, where a value of 0 will result in returning the color represented by the color1ANYTYPE parameter, the value 1 will result in returning the color represented by the color2ANYTYPE parameter, and the value .5 will result in returning a color that is an equal blend of the colors represented by the color1ANYTYPE and color2ANYTYPE parameters.

Different values between 0 and 1 for the blendFRACTION parameter give you different blends between color one and color two...

EXAMPLES

// a range of blends between black and white

Uize.Color.blend ('000000','ffffff',0);     // returns '000000'
Uize.Color.blend ('000000','ffffff',.25);   // returns '404040'
Uize.Color.blend ('000000','ffffff',.5);    // returns '808080'
Uize.Color.blend ('000000','ffffff',.75);   // returns 'bfbfbf'
Uize.Color.blend ('000000','ffffff',1);     // returns 'ffffff'

VARIATION 1

colorANYTYPE = Uize.Color.blend (color1ANYTYPE,color2ANYTYPE,blendFRACTION,encodingSTR);

The resulting blended color can be encoded in any of the many supported color encodings, by using the optional encodingSTR parameter, as follows...

EXAMPLES

// equal blend of black and white, different encodings for the result

Uize.Color.blend ('black','white',.5,'color');       // new Uize.Color
Uize.Color.blend ('black','white',.5,'hex');         // 808080
Uize.Color.blend ('black','white',.5,'#hex');        // #808080
Uize.Color.blend ('black','white',.5,'name');        // gray
Uize.Color.blend ('black','white',.5,'RGB array');   // [128,128,128]
Uize.Color.blend ('black','white',.5,'RGB int');     // 8421504
Uize.Color.blend ('black','white',.5,'RGB string');  // rgb(128,128,128}

VARIATION 2

colorHexSTR = Uize.Color.blend (color1ANYTYPE,color2ANYTYPE);

When no blendFRACTION or encodingSTR parameters are specified, then the colors specified by the color1ANYTYPE and color2ANYTYPE parameters will be blended equally and the resulting color will be encoded using the encoding of the first color, as specified by the color1ANYTYPE parameter.

EXAMPLE

var myColorHex = Uize.Color.blend ('fuchsia','olive');  // myColorHex is 'c04080'

Color one and color two - the source colors for the blending operation - can be specified using any of the many supported color encodings...

EXAMPLES

// equal blend of black and white, specified using different encodings

Uize.Color.blend ('000000','ffffff');                // returns '808080'
Uize.Color.blend ('black','white');                  // returns 'gray'
Uize.Color.blend (0x000000,0xffffff);                // returns 8421504
Uize.Color.blend ([0,0,0],[255,255,255]);            // returns [127.5,127.5,127.5]
Uize.Color.blend ('#000','#fff');                    // returns '#808080'
Uize.Color.blend ('#0','#f');                        // returns '#808080'
Uize.Color.blend ('hsl(0,0%,0%)','hsl(0,0%,100%)');  // returns 'hsl(0,0%,50%)'

The color encodings for color one and color two do not have to be the same...

EXAMPLES

// equal blend of black and white, using mixed encodings for source colors

Uize.Color.blend ('#000000',0xffffff);   // returns '#808080'
Uize.Color.blend ('black','#fff');       // returns 'gray'
Uize.Color.blend ([0,0,0],'ffffff');     // returns [127.5,127.5,127.5]

In the above example, notice how the encoding of the first color is used for encoding the result.

NOTES

see the related blend instance method

3.2. Uize.Color.equal

Returns a boolean, indicating whether or not the two specified colors are equivalent.

SYNTAX

areEqualBOOL = Uize.Color.equal (color1ANYTYPE,color2ANYTYPE);

EXAMPLES

Uize.Color.equal ('fuchsia',Uize.Color ('fuchsia'));                 // true
Uize.Color.equal ('ff00ff','#ff00ff');                               // true
Uize.Color.equal ([255,0,255],'hsl(300,100,50)');                    // true
Uize.Color.equal (16711935,{red:255,green:0,blue:255});              // true
Uize.Color.equal ('rgb(255,0,255)',{'HSL array':[300,100,50]});      // true
Uize.Color.equal ('fuchsia',{hue:300,saturation:100,lightness:50});  // true

In the above example, all the statements produce the result true. That's because all of the colors specified for the color1ANYTYPE and color2ANYTYPE parameters are equivalent to the color "fuchsia" - regardless of the encoding used to specify them.

MORE EXAMPLES

Uize.Color.equal (Uize.Color.blend ('red','black'),'maroon');  // produces true
Uize.Color.equal (Uize.Color.blend ('white','black'),'gray');  // produces true
Uize.Color.equal (Uize.Color.blend ('red','blue'),'purple');   // produces true

NOTES

see the companion equal instance method

3.3. Uize.Color.random

Generates a random color with the specified encoding.

SYNTAX

colorANYTYPE = Uize.Color.random (encodingSTR);

EXAMPLE

Uize.Dom.Basics.setStyle (
  'myNodeId',
  {color:Uize.Color.random ('#hex'),backgroundColor:Uize.Color.random ('#hex')}
);

In the above example, the text color and background color for the DOM node with the id "myNodeId" are being randomized.

VARIATION

colorRgbHexSTR = Uize.Color.random ();

When no encodingSTR parameter is specified, the default value 'hex' will be used and the method will return a string value, being a hex formatted random RGB color value.

NOTES

when the value 'color' is specified for the encodingSTR parameter, then this method will return an instance of the Uize.Color object with its encoding set to 'hex' (i.e. in the sRGB color space)
see the related random instance method

4. Static Properties

4.1. Uize.Color.xUtil.moduleName

IMPLEMENTATION INFO

this feature was introduced in this module

4.2. Uize.Color.xUtil.pathToResources

IMPLEMENTATION INFO

this feature was introduced in this module