Skip to content

Colors And Swatches

fabiantheblind edited this page May 4, 2016 · 3 revisions

###colors and swatches

There's two types of colors in InDesign: named colors, and unnamed colors. Named colors show in the swatches panel, and unnamed colors don't.
There's no way to apply a unnamed color directly via scripting.
Harbs. Adobe Forums

That means you always have to create a swatch.

    /**
     *  Lets play with colors
     *  to use colors you NEED to create a swatch 
     */
    
    main();
    function main (){
    
    // make a document
    var pw = 300;
    var ph = 30;
    var doc = app.documents.add({
                documentPreferences:{
                    pageHeight:ph,
                    pageWidth:pw
                }
        });
    
    // inspect the existing swatches
    var random_num = parseInt(Math.random()*doc.swatches.length);
    var random_swatch = doc.swatches[random_num];
    alert("the swatch with the number "+
            random_num +" is always\n[" + random_swatch.name + "]");
    
    
    // now lets create some colors
    var cols = new Array();
    var num_of_colors = 42*5;
    // lets do it randomly
    for(var j = 0; j < num_of_colors; j++){
        var r = Math.random() * 10;
        var g = Math.random() * 255;
        var b = Math.random() * 255;
        // important a color needs a unique name
        // color_add function is from indisnip.wordpress.com
        // go down to inspect what she does
        // push the swatches into an array
        cols.push(color_add (doc, "random rgb color"+j, ColorModel.PROCESS, [r,g,b]));
        }; // end of loop
    
    // make some colors by "hand"
    cols.push(color_add (doc, "cmyk color", ColorModel.PROCESS, [100,50,0,0]));
    cols.push(color_add (doc, "rgb color", ColorModel.PROCESS, [10,0,100]));
    cols.push(color_add (doc, "hex color", ColorModel.PROCESS, ["ffffff"]));
    
    // this is how you create colors without that nice function
    var color_by_hand =doc.colors.add();
        color_by_hand.properties = {
            name:"color by hand", 
            model:ColorModel.PROCESS,
            space:ColorSpace.RGB,
            colorValue:[100,10,100]};
        
    // now we apply them
    
    var pg = doc.pages.item(0); // get the page
    var step = pw / cols.length; // calc the number of steps we have. one by color
    // coordinates
    var x1 = 0;
    var y1 = 0;
    var x2 = step;
    var y2 = ph;
    // loop the colors
    for(var i = 0; i < cols.length;i++){
        // add a rectangle
        var rect = pg.rectangles.add({geometricBounds:[y1,x1,y2,x2]});
        rect.fillColor = cols[i];
        rect.strokeWeight = 0;
        x1 = x2;
        x2 = x2 + step;
        }; // end of loop
    
    }; // end of function main
    
    // found on http://bit.ly/h5EobK indisnip.wordpress.com ->
    // how to apply:
    
    // add CMYK color
    //myColorAdd(app.activeDocument, "My Custom Color", ColorModel.PROCESS, [80,50,30,10]);
    
    // add RGB color
    //myColorAdd(app.activeDocument, "My Custom Color", ColorModel.PROCESS, [33,66,99]);
    
    // add HEX color
    //myColorAdd(app.activeDocument, "My Custom Color", ColorModel.PROCESS, "ABCDEF");
    
    // add color directly
    // add CMYK color to document
    // and asign it to selected object
    //app.selection[0].fillColor = myColorAdd(app.activeDocument, "My Custom Color", ColorModel.PROCESS, [80,50,30,10]);
    
    function color_add(myDocument, myColorName, myColorModel, myColorValue){
        if(myColorValue instanceof Array == false){
            myColorValue = [(parseInt(myColorValue, 16) >> 16 ) & 0xff, (parseInt(myColorValue, 16) >> 8 ) & 0xff,    parseInt(myColorValue, 16 ) & 0xff ];
            myColorSpace = ColorSpace.RGB;
        }else{
            if(myColorValue.length == 3)
              myColorSpace = ColorSpace.RGB;
            else
              myColorSpace = ColorSpace.CMYK;
        }
        try{
            myColor = myDocument.colors.item(myColorName);
            myName = myColor.name;
        }
        catch (myError){
            myColor = myDocument.colors.add();
            myColor.properties = {name:myColorName, model:myColorModel, space:myColorSpace ,colorValue:myColorValue};
        }
        return myColor;
    }
Clone this wiki locally