• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Custom Swatch Palette (beta)

Valorous Hero ,
Jan 18, 2014 Jan 18, 2014

Copy link to clipboard

Copied

Hi yall,

I created this custom swatch palette which allows a person to keep swatch info in this palette and instantiate it in documents.  The palette can store notes about a particular swatch and there is a save button somewhere which will save your palette state as an xml file.

//==================================================HOBO SWATCHES by Vasily ===========================================//

// BETA

/**

* @@@BUILDINFO@@@ Hobo Swatches_v1.jsx !Version! Sat Jan 18 2014 22:36:40 GMT-0600

*/

function swatchPalette(){

//===================================================Icon Resources========================//

var infoBtnSrc='({total:2, '+

'shape_1:{fillColor:[0.11, 0.18, 1], name:"", tag:"", strokeColor:null, pathPoints:[10, 3, 5, 5], ellipsePath:true, closed:true}, '+

'shape_0:{fillColor:[0.11, 0.18, 1], name:"", tag:"", strokeColor:null, pathPoints:[[15, 15], [15, 11], [18, 11], [18, 9], [13, 9], [8, 9], [8, 11], [11, 11], [11, 15], [7, 15], [7, 17], [19, 17], [19, 15]], ellipsePath:false, closed:true}})';

var addBtnSrc='({total:1, '+

'group_0:{'+

'shape_1:{fillColor:null, name:"", tag:"", strokeColor:[0, 0.14, 1], pathPoints:[[19, 9], [14, 9], [14, 4], [12, 4], [12, 9], [7, 9], [7, 11], [12, 11], [12, 16], [14, 16], [14, 11], [19, 11]], ellipsePath:false, closed:true, strokeWidth:2}, '+

'shape_0:{fillColor:[1, 1, 0], name:"", tag:"", strokeColor:null, pathPoints:[[19, 9], [14, 9], [14, 4], [12, 4], [12, 9], [7, 9], [7, 11], [12, 11], [12, 16], [14, 16], [14, 11], [19, 11]], ellipsePath:false, closed:true}, total:2}})';

var rmvBtnSrc='({total:2, '+

'shape_1:{fillColor:null, name:"", tag:"", strokeColor:[0, 0.22, 0], pathPoints:[[20, 9], [6, 9], [6, 11], [20, 11]], ellipsePath:false, closed:true, strokeWidth:3}, '+

'shape_0:{fillColor:[0.27, 1, 0], name:"", tag:"", strokeColor:null, pathPoints:[[20, 9], [6, 9], [6, 11], [20, 11]], ellipsePath:false, closed:true}})';

var rstBtnSrc='({total:2, '+

'group_1:{'+

'shape_1:{fillColor:[1, 0, 0], name:"", tag:"", strokeColor:[0.14, 0.12, 0.13], pathPoints:[45, 4, 12, 12], ellipsePath:true, closed:true, strokeWidth:2}, '+

'shape_0:{fillColor:null, name:"", tag:"", strokeColor:[0.14, 0.12, 0.13], pathPoints:[[51, 12], [51, 2]], ellipsePath:false, closed:false, strokeWidth:3}, total:2}, '+

'group_0:{'+

'shape_7:{fillColor:null, name:"", tag:"", strokeColor:[0.75, 0.36, 0], pathPoints:[[5, 16], [5, 5], [11, 5], [11, 10], [7, 10], [12, 15]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_6:{fillColor:null, name:"", tag:"", strokeColor:[0.75, 0.36, 0], pathPoints:[[20, 5], [15, 5], [15, 15], [19, 15]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_5:{fillColor:null, name:"", tag:"", strokeColor:[0.75, 0.36, 0], pathPoints:[[14, 10], [18, 10]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_4:{fillColor:null, name:"", tag:"", strokeColor:[0.75, 0.36, 0], pathPoints:[[34, 5], [29, 5], [29, 15], [34, 15]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_3:{fillColor:null, name:"", tag:"", strokeColor:[0.75, 0.36, 0], pathPoints:[[29, 10], [32, 10]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_2:{fillColor:null, name:"", tag:"", strokeColor:[0.75, 0.36, 0], pathPoints:[[21, 15], [26, 15], [26, 10], [22, 10], [22, 5], [27, 5]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_1:{fillColor:null, name:"", tag:"", strokeColor:[0.75, 0.36, 0], pathPoints:[[39, 16], [39, 5]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_0:{fillColor:null, name:"", tag:"", strokeColor:[0.75, 0.36, 0], pathPoints:[[35, 5], [42, 5]], ellipsePath:false, closed:false, strokeWidth:2}, total:8}})';

var labModelSrc='({total:3, '+

'shape_2:{fillColor:null, name:"", tag:"", strokeColor:[1, 1, 1], pathPoints:[[4, 2], [4, 8], [7, 8]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_1:{fillColor:null, name:"", tag:"", strokeColor:[0, 1, 1], pathPoints:[[12, 3], [12, 8], [9, 8], [9, 5], [12, 5]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_0:{fillColor:null, name:"", tag:"", strokeColor:[1, 1, 0], pathPoints:[[15, 2], [15, 8], [18, 8], [18, 5], [15, 5]], ellipsePath:false, closed:false, strokeWidth:2}})';

var cmykModelSrc='({total:4, '+

'shape_3:{fillColor:[0, 1, 1], name:"", tag:"", strokeColor:null, pathPoints:[[2, 9], [5, 9], [5, 8], [3, 8], [3, 3], [5, 3], [5, 2], [2, 2]], ellipsePath:false, closed:true}, '+

'shape_2:{fillColor:[1, 0, 1], name:"", tag:"", strokeColor:null, pathPoints:[[10, 3], [9, 3], [9, 4], [8, 4], [8, 3], [7, 3], [7, 2], [6, 2], [6, 3], [6, 5], [6, 9], [7, 9], [7, 5], [8, 5], [8, 6], [9, 6], [9, 5], [10, 5], [10, 9], [11, 9], [11, 2], [10, 2]], ellipsePath:false, closed:true}, '+

'shape_1:{fillColor:[1, 1, 0], name:"", tag:"", strokeColor:null, pathPoints:[[16, 2], [16, 3], [15, 3], [15, 4], [14, 4], [14, 3], [13, 3], [13, 2], [12, 2], [12, 4], [13, 4], [13, 5], [14, 5], [14, 9], [15, 9], [15, 5], [16, 5], [16, 4], [17, 4], [17, 2]], ellipsePath:false, closed:true}, '+

'group_0:{'+

'shape_4:{fillColor:[0, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[19, 5], [19, 2], [18, 2], [18, 9], [19, 9], [19, 6], [20, 6], [20, 5]], ellipsePath:false, closed:true}, '+

'shape_3:{fillColor:[0, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[20, 8], [21, 8], [21, 6], [20, 6]], ellipsePath:false, closed:true}, '+

'shape_2:{fillColor:[0, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[22, 9], [22, 8], [21, 8], [21, 9]], ellipsePath:false, closed:true}, '+

'shape_1:{fillColor:[0, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[21, 3], [20, 3], [20, 5], [21, 5]], ellipsePath:false, closed:true}, '+

'shape_0:{fillColor:[0, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[22, 2], [21, 2], [21, 3], [22, 3]], ellipsePath:false, closed:true}, total:5}})';

var rgbModelSrc='({total:5, '+

'shape_4:{fillColor:[1, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[2, 2], [2, 9], [3, 9], [3, 3], [5, 3], [5, 5], [3, 5], [3, 7], [4, 7], [4, 6], [6, 6], [6, 2]], ellipsePath:false, closed:true}, '+

'shape_3:{fillColor:[1, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[5, 8], [5, 7], [4, 7], [4, 8]], ellipsePath:false, closed:true}, '+

'shape_2:{fillColor:[1, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[6, 9], [6, 8], [5, 8], [5, 9]], ellipsePath:false, closed:true}, '+

'shape_1:{fillColor:[0, 1, 0], name:"", tag:"", strokeColor:null, pathPoints:[[7, 9], [11, 9], [11, 6], [9, 6], [9, 7], [10, 7], [10, 8], [8, 8], [8, 3], [10, 3], [10, 4], [11, 4], [11, 2], [7, 2]], ellipsePath:false, closed:true}, '+

'shape_0:{fillColor:[0, 0, 1], name:"", tag:"", strokeColor:null, pathPoints:[[13, 5], [13, 3], [15, 3], [15, 5], [16, 5], [16, 2], [12, 2], [12, 9], [16, 9], [16, 6], [15, 6], [15, 8], [13, 8], [13, 6], [15, 6], [15, 5]], ellipsePath:false, closed:true}})';

var grayModelSrc='({total:7, '+

'shape_6:{fillColor:[0.57, 0.58, 0.59], name:"", tag:"", strokeColor:null, pathPoints:[[7, 2], [7, 9], [8, 9], [8, 3], [10, 3], [10, 5], [8, 5], [8, 7], [9, 7], [9, 6], [11, 6], [11, 2]], ellipsePath:false, closed:true}, '+

'shape_5:{fillColor:[0.57, 0.58, 0.59], name:"", tag:"", strokeColor:null, pathPoints:[[10, 8], [10, 7], [9, 7], [9, 8]], ellipsePath:false, closed:true}, '+

'shape_4:{fillColor:[0.57, 0.58, 0.59], name:"", tag:"", strokeColor:null, pathPoints:[[11, 9], [11, 8], [10, 8], [10, 9]], ellipsePath:false, closed:true}, '+

'shape_3:{fillColor:[0.82, 0.82, 0.83], name:"", tag:"", strokeColor:null, pathPoints:[[2, 9], [6, 9], [6, 6], [4, 6], [4, 7], [5, 7], [5, 8], [3, 8], [3, 3], [5, 3], [5, 4], [6, 4], [6, 2], [2, 2]], ellipsePath:false, closed:true}, '+

'shape_2:{fillColor:[0.35, 0.36, 0.38], name:"", tag:"", strokeColor:null, pathPoints:[[15, 3], [13, 3], [13, 2], [15, 2]], ellipsePath:false, closed:true}, '+

'shape_1:{fillColor:[0.35, 0.36, 0.38], name:"", tag:"", strokeColor:null, pathPoints:[[15, 3], [15, 5], [13, 5], [13, 3], [12, 3], [12, 9], [13, 9], [13, 6], [15, 6], [15, 9], [16, 9], [16, 3]], ellipsePath:false, closed:true}, '+

'shape_0:{fillColor:[0.2, 0.22, 0.24], name:"", tag:"", strokeColor:null, pathPoints:[[21, 2], [21, 3], [20, 3], [20, 4], [19, 4], [19, 3], [18, 3], [18, 2], [17, 2], [17, 4], [18, 4], [18, 5], [19, 5], [19, 9], [20, 9], [20, 5], [21, 5], [21, 4], [22, 4], [22, 2]], ellipsePath:false, closed:true}})';

var noteMarkSrc='({total:4, '+

'shape_3:{fillColor:[0.53, 0.33, 0.26], name:"", tag:"", strokeColor:[0.14, 0.12, 0.13], pathPoints:[[11, 21], [11, 14], [4, 14]], ellipsePath:false, closed:true, strokeWidth:1}, '+

'shape_2:{fillColor:[1, 0.97, 0.62], name:"", tag:"", strokeColor:[0.14, 0.12, 0.13], pathPoints:[[11, 21], [1, 21], [1, 14], [7, 14], [11, 19]], ellipsePath:false, closed:true, strokeWidth:1}, '+

'shape_1:{fillColor:null, name:"", tag:"", strokeColor:[0.14, 0.12, 0.13], pathPoints:[[1, 17], [6, 17]], ellipsePath:false, closed:false, strokeWidth:1}, '+

'shape_0:{fillColor:null, name:"", tag:"", strokeColor:[0.14, 0.12, 0.13], pathPoints:[[1, 19], [6, 19]], ellipsePath:false, closed:false, strokeWidth:1}})';

var okBtnSrc='({total:2, '+

'group_1:{'+

'shape_5:{fillColor:null, name:"", tag:"", strokeColor:[0.39, 0.31, 0], pathPoints:[[11, 5], [5, 5], [5, 15], [11, 15]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_4:{fillColor:null, name:"", tag:"", strokeColor:[0.39, 0.31, 0], pathPoints:[[28, 5], [22, 5], [22, 15], [28, 15]], ellipsePath:false, closed:true, strokeWidth:2}, '+

'shape_3:{fillColor:null, name:"", tag:"", strokeColor:[0.39, 0.31, 0], pathPoints:[[14, 4], [14, 15], [19, 15]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_2:{fillColor:null, name:"", tag:"", strokeColor:[0.39, 0.31, 0], pathPoints:[[45, 5], [40, 5], [40, 15], [45, 15]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_1:{fillColor:null, name:"", tag:"", strokeColor:[0.39, 0.31, 0], pathPoints:[[40, 10], [43, 10]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_0:{fillColor:null, name:"", tag:"", strokeColor:[0.39, 0.31, 0], pathPoints:[[31, 15], [36, 15], [36, 10], [32, 10], [32, 5], [37, 5]], ellipsePath:false, closed:false, strokeWidth:2}, total:6}, '+

'group_0:{'+

'shape_2:{fillColor:[0, 0, 0], name:"", tag:"", strokeColor:[0.57, 0.58, 0.59], pathPoints:[47, 2, 15, 15], ellipsePath:true, closed:true, strokeWidth:1}, '+

'shape_1:{fillColor:null, name:"", tag:"", strokeColor:[0.93, 0.11, 0.14], pathPoints:[[51, 13], [58, 6]], ellipsePath:false, closed:false, strokeWidth:2}, '+

'shape_0:{fillColor:null, name:"", tag:"", strokeColor:[0.93, 0.11, 0.14], pathPoints:[[58, 13], [51, 6]], ellipsePath:false, closed:false, strokeWidth:2}, total:3}})';

var addToDocBtnSrc='({total:5, '+

'shape_4:{fillColor:[1, 1, 0.59], name:"", tag:"", strokeColor:[0.14, 0.12, 0.13], pathPoints:[[22, 16], [13, 16], [13, 9], [17, 5], [22, 5]], ellipsePath:false, closed:true, strokeWidth:2}, '+

'shape_3:{fillColor:[0.14, 0.12, 0.13], name:"", tag:"", strokeColor:null, pathPoints:[[11, 13], [8, 13], [8, 4], [11, 4]], ellipsePath:false, closed:true}, '+

'shape_2:{fillColor:[0.14, 0.12, 0.13], name:"", tag:"", strokeColor:null, pathPoints:[[5, 10], [5, 7], [14, 7], [14, 10]], ellipsePath:false, closed:true}, '+

'shape_1:{fillColor:[1, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[13, 9], [6, 9], [6, 8], [13, 8]], ellipsePath:false, closed:true}, '+

'shape_0:{fillColor:[1, 0, 0], name:"", tag:"", strokeColor:null, pathPoints:[[10, 5], [10, 12], [9, 12], [9, 5]], ellipsePath:false, closed:true}})';

//===================================================Basic Functions========================//

    var UIElements=[Window,Group,EditText,Panel];

    for(var i=0; i<UIElements.length; i++){

        UIElements.prototype.setBg=function(rgb){

            this.graphics.backgroundColor=this.graphics.newBrush(this.graphics.BrushType.SOLID_COLOR,[rgb[0],rgb[1],rgb[2]]);

        }

    }

    function round2(num){

        return Math.round(num*100)/100;

    }

    var env=ScriptUI.environment;

   

    function convertAppColor(src,dest,clrArr){

        return app.convertSampleColor(ImageColorSpace[src], clrArr, ImageColorSpace[dest], ColorConvertPurpose.defaultpurpose);

    }

    function currentTime(){

        var time=new Date();

        var hours=time.getHours();

        var minutes=time.getMinutes();

        var seconds=time.getSeconds();

        if(seconds<10){seconds='0'+seconds;}

        if(minutes<10){minutes='0'+minutes;}

        var ampm=function(){

            if(hours>12){

                hours-=12;

                return 'pm';

            } else {

                if(hours==0){hours=1;}

                return 'am';

            }

        }();

        return (hours)+":"+minutes+":"+seconds+" "+ampm;

    }

    function getUIRGB(type, clr){

        for(var x=0; x<clr.length; x++){

            clr=clr*1;

        }

        if(type=="RGB"){

            return [round2(clr[0]/255),round2(clr[1]/255),round2(clr[2]/255)];

        } else if(type=="CMYK"){

            var newArr=convertAppColor("CMYK","RGB",[clr[0],clr[1],clr[2],clr[3]]);

            return [round2(newArr[0]/255),round2(newArr[1]/255),round2(newArr[2]/255)];

        } else if(type=="GRAY"){

            var newArr=convertAppColor("GrayScale","RGB",[clr[0]]);

            return [round2(newArr[0]/255),round2(newArr[1]/255),round2(newArr[2]/255)];

        } else if(type=="LAB"){

            var newArr=convertAppColor("LAB","RGB",[clr[0],clr[1],clr[2]]);

            return [round2(newArr[0]/255),round2(newArr[1]/255),round2(newArr[2]/255)];

        } else {

            return [0.5,0.5,0.5];

        }

    }

//===================================================Advanced Functions========================//

    //===================================XML=============//

    function wrapCDATA(str, propNm){

        str = '<data>'+str+'</data>';

        str = str.replace(/(\<data\>)/g, '<'+propNm+'><![CDATA[');

        str = str.replace(/(\<\/data\>)/g,']]\>'+'</'+propNm+'>');

        return XML(str);

    }

    function stringXmlSafe(str){

        str=str.toString();

        str=str.replace(/&(?!(amp;|gt;|lt;|quot;|apos;))/g,"&");

        str=str.replace(/</g,"&lt;");

        str=str.replace(/>/g,"&gt;");

        str=str.replace(/'/g,"&apos;");

        str=str.replace(/"/g,"&quot;");

        return str;

    }

    function getXmlSwatchesArr(xmlFile){

        var myFile=xmlFile;

        myFile.open('r');

        myFile.seek(0,0);

        var fileStr=myFile.read();

        myFile.close();

        var xmlObj=XML(fileStr);

        var swatchArr=[];

        for(var x=0, ln=xmlObj.children().length(); x<ln; x++){

            var sw={};

            var thisSw=xmlObj.children();

            sw.name=thisSw.descendants("name").toString();

            sw.aiSwatchKind=thisSw.descendants("aiswatchkind").toString();

            var comp=thisSw.descendants("colorcomp");

            sw.colorComp={};

            sw.colorComp.mode=comp.descendants("mode").toString();

            sw.colorComp.comp=[];

            for(var y=0, ln_2=thisSw.descendants("colorcomp").descendants("colorvalues").children().length(); y<ln_2; y++){

                sw.colorComp.comp.push(thisSw.descendants("colorcomp").descendants("colorvalues").children()*1);

            }

            sw.notes=thisSw.descendants("notes");

            sw.originDoc=thisSw.descendants("origindoc").toString();

            swatchArr.push(sw);

        }

        return swatchArr;

    }

    function getXmlSwatchesXML(swatchArr){

        XML.prettyIndent=4;

        var xmlBody=new XML('<swatches></swatches>');

        for(var i=0; i<swatchArr.length; i++){

            var thisSw=swatchArr;

            xmlBody.appendChild(new XML("<swatch></swatch>")); xmlBody.swatch.@order=i+1;

            xmlBody.swatch.appendChild(new XML("<name>"+stringXmlSafe(thisSw.name)+"</name>"));

            if(thisSw.name!='none'){

                if(thisSw.info && thisSw.info.plating){

                    thisSw.aiSwatchKind=thisSw.info.plating;

                    thisSw.colorComp.mode=thisSw.colorComp.typename;

                    thisSw.originDoc=thisSw.info.originDoc;

                    thisSw.notes=thisSw.info.notes;

                }

                xmlBody.swatch.appendChild(new XML("<aiswatchkind>"+stringXmlSafe(thisSw.aiSwatchKind)+"</aiswatchkind>"));

                xmlBody.swatch.appendChild(new XML("<colorcomp></colorcomp>"));

                xmlBody.swatch.colorcomp[0].appendChild(new XML("<mode>"+stringXmlSafe(thisSw.colorComp.mode)+"</mode>"));

                xmlBody.swatch.colorcomp[0].appendChild(new XML("<colorvalues></colorvalues>"));

                for(var j=0; j<thisSw.colorComp.comp.length; j++){

                    xmlBody.swatch.colorcomp[0].colorvalues[0].appendChild(new XML("<value>"+stringXmlSafe(thisSw.colorComp.comp)+"</value>"));

                }

                xmlBody.swatch.notes=wrapCDATA(thisSw.notes, 'notes');

                xmlBody.swatch.origindoc=stringXmlSafe(thisSw.originDoc);

            }

        }

        return xmlBody;

    }

    //===================================end XML=============//

   

    // gets type and color array from swatch in swatch palette - for BT

    function getAISwatchColor(processColorOrSpot,name){

        function round2(num){

            return Math.round(num*100)/100;

        }

        var result={type:null, name:null, colorArr:null, uiColor:null, plating:null, originDoc:null, creDt:null, rgbClr:null, cmykClr:null, grayClr:null, labClr:null};

        var clr=processColorOrSpot;

        result.name=name;

        if(clr=="[RGBColor]"){

            result.type="RGB"; result.colorArr=[round2(clr.red),round2(clr.green),round2(clr.blue)];

            result.uiColor=[clr.red/255,clr.green/255,clr.blue/255]; result.plating='Process';

        } else if(clr=="[CMYKColor]"){

            result.type="CMYK"; result.colorArr=[round2(clr.cyan),round2(clr.magenta),round2(clr.yellow),round2(clr.black)]; result.uiColor=function(){

                var newArr=convertAppColor("CMYK","RGB",[clr.cyan,clr.magenta,clr.yellow,clr.black]);

                return [newArr[0]/255,newArr[1]/255,newArr[2]/255,];

            }(); result.plating='Process';

        } else if(clr=="[GrayColor]"){

            result.type="GRAY"; result.colorArr=[round2(clr.gray)]; result.uiColor=function(){

                var newArr=convertAppColor("GrayScale","RGB",[clr.gray]);

                return [newArr[0]/255,newArr[1]/255,newArr[2]/255,];

            }(); result.plating='Process';

        } else if(clr=="[SpotColor]"){

            clr=clr.spot;

            if(clr.colorType==ColorModel.SPOT){

                result.plating='Spot';

            } else if(clr.colorType==ColorModel.PROCESS){

                result.plating='GlobalProcess';

            } else if(clr.colorType==ColorModel.REGISTRATION){

                result.plating='Registration';

            } else {

                result.plating="Process";

            }

            var intClr=clr.getInternalColor();

            for(var i=0; i<intClr.length; i++){

                intClr=round2(intClr);

            }

            if(clr.spotKind==SpotColorKind.SPOTLAB){

                result.type="LAB"; result.colorArr=intClr; result.uiColor=function(){

                    var newArr=convertAppColor("LAB","RGB",[intClr[0],intClr[1],intClr[2]]);

                    return [newArr[0]/255,newArr[1]/255,newArr[2]/255,];

                }();

            } else if(clr.spotKind==SpotColorKind.SPOTRGB){

                result.type="RGB"; result.colorArr=intClr; result.uiColor=[intClr[0]/255,intClr[1]/255,intClr[2]/255];

            } else if(clr.spotKind==SpotColorKind.SPOTCMYK){

                result.type="CMYK"; result.colorArr=intClr; result.uiColor=function(){

                    var newArr=convertAppColor("CMYK","RGB",[intClr[0],intClr[1],intClr[2],intClr[3]]);

                    return [newArr[0]/255,newArr[1]/255,newArr[2]/255,];

                }();

            }

        }

        var colorMode=result.type;

        if(colorMode=="GRAY"){

            colorMode="GrayScale";

        }

        var altClrs=[

            result.rgbClr=convertAppColor(colorMode, "RGB", result.colorArr),

            result.cmykClr=convertAppColor(colorMode, "CMYK", result.colorArr),

            result.grayClr=convertAppColor(colorMode, "GrayScale", result.colorArr),

            result.labClr=convertAppColor(colorMode, "LAB", result.colorArr),

        ];

        for(var c=0; c<altClrs.length; c++){

            for(var d=0; d<altClrs.length; d++){

                altClrs=round2(altClrs);

            }

        }

        result.originDoc=app.activeDocument.name;

        result.creDt=currentTime();

        return result;

    }

    function drawPath(shp, canvas){

        var thisShp=shp;

        if(thisShp.ellipsePath!=true){

            var vectorPts=thisShp.pathPoints;

            canvas.newPath(); canvas.moveTo(thisShp.pathPoints[0][0],thisShp.pathPoints[0][1]);

            for(var j=0; j<vectorPts.length; j++){

                var thisAnchor=vectorPts;

                var x=thisAnchor[0], y=thisAnchor[1];

                canvas.lineTo(x,y);

            }

            if(thisShp.closed==true){

                canvas.closePath();

            }

        } else {

            var cirPts=thisShp.pathPoints;

            canvas.newPath();

            canvas.ellipsePath(round2(cirPts[0]), round2(cirPts[1]), round2(cirPts[2]), round2(cirPts[3]));

            canvas.closePath();

        }

        if(thisShp.fillColor!=null){

            var clr=thisShp.fillColor;

            var myBrush=canvas.newBrush(canvas.BrushType.SOLID_COLOR,clr);

            canvas.fillPath(myBrush);

        }

        if(thisShp.strokeColor!=null){

            var clr=thisShp.strokeColor;

            var myPen=canvas.newPen(canvas.PenType.SOLID_COLOR,[clr[0],clr[1],clr[2],1], thisShp.strokeWidth);

            canvas.strokePath(myPen);

        }

    }

    function drawImg(objString, canvasArea){

        // using drawPath();

        var obj=eval(objString.replace(/(^'|';$)/g,''));

        var canvas=canvasArea.graphics;

        var counter=obj.total;

        while(counter>=0){

            for(all in obj){

                if(all.match(/\d{1,2}$/g) && all.match(/\d{1,2}$/g)==counter){

                    var thisShp=obj[all];

                    if(all.match('group')){

                        var ctr=obj[all].total;

                        while(ctr>=0){

                            for(paths in obj[all]){

                                if(paths.match(/\d{1,2}$/g) && paths.match(/\d{1,2}$/g)==ctr){

                                    drawPath(obj[all][paths], canvas);

                                }

                            }

                        ctr--;

                        }

                    } else {

                        drawPath(thisShp, canvas);

                    }

                }

            }

        counter-=1;

        } 

    }

    function btnSkin(elem,aClr,w,h){

        var g=elem.graphics; var brush=g.newBrush(g.BrushType.SOLID_COLOR,aClr);

        g.newPath(); g.moveTo(1,1); g.lineTo(w-1,1); g.lineTo(w-1,h-1); g.lineTo(1,h-1); g.closePath(); g.fillPath(brush);

        var ltr=[aClr[0]*1.2,aClr[1]*1.2,aClr[2]*1.2];

        for(var c=0; c<ltr.length; c++){

            if(ltr>1){

                ltr=1;

            }

        }

        brush=g.newBrush(g.BrushType.SOLID_COLOR,ltr); g.newPath(); g.rectPath(0,0,w,h/2); g.fillPath(brush);

        var pen=g.newPen(g.PenType.SOLID_COLOR,[1,1,1,1],2);

        g.newPath(); g.moveTo(1,1); g.lineTo(w-1,1); g.lineTo(w-1,h-1); g.lineTo(1,h-1); g.closePath();

        g.strokePath(pen);

    }

    function createAltDisp(swObj, uiParent){

        var altClrs=swObj.info.altClrs;

        var modes=['CMYK','RGB','LAB','GRAY'];

        for(var m=0; m<modes.length; m++){

            if(swObj.colorComp.typename!=modes){

                var altG=uiParent.add('panel',undefined,modes); altG.margins=[2,6,2,2];

                altG.size=[80,88]; altG.spacing=2; altG.alignChildren='left';

                if(modes=="RGB"){

                    altG.add('statictext',undefined,'R: '+altClrs.rgbClr[0]);

                    altG.add('statictext',undefined,'G: '+altClrs.rgbClr[1]);

                    altG.add('statictext',undefined,'B: '+altClrs.rgbClr[2]);

                } else if(modes=="CMYK"){

                    altG.add('statictext',undefined,'C: '+altClrs.cmykClr[0]);

                    altG.add('statictext',undefined,'M: '+altClrs.cmykClr[1]);

                    altG.add('statictext',undefined,'Y: '+altClrs.cmykClr[2]);

                    altG.add('statictext',undefined,'K: '+altClrs.cmykClr[3]);

                } else if(modes=="LAB"){

                    altG.add('statictext',undefined,'L: '+altClrs.labClr[0]);

                    altG.add('statictext',undefined,'A: '+altClrs.labClr[1]);

                    altG.add('statictext',undefined,'B: '+altClrs.labClr[2]);

                } else if(modes=="GRAY"){

                    altG.add('statictext',undefined,'Black: '+altClrs.grayClr[0]);

                }

            }

        }

    }

    function swatchInfoBox(swObj, uiParent){

        var baseG=uiParent; // usually a group

        var g_1=baseG.add("panel",undefined,"Swatch Info"); g_1.size=[340,340]; g_1.spacing=2; g_1.margins=[4,12,4,4];

        var nameD=g_1.add('edittext',undefined,swObj.name,{readonly:true}); nameD.characters=20; nameD.justify='center';

        if(swObj.name!='none'){

            var mode=swObj.colorComp.typename;

            var sep=g_1.add('panel'); sep.size=[310,2];

            var g_1_0=g_1.add('group');

                var txtG=g_1_0.add('group'); txtG.orientation='column'; txtG.spacing=2; txtG.margins=[2,2,2,2]; txtG.alignChildren='left';

                    txtG.add('statictext',undefined,'Color Model: '+swObj.colorComp.typename);

                    txtG.add('statictext',undefined,'Illustrator Swatch Type: '+swObj.info.plating);

                var swD=g_1_0.add('panel'); swD.size=[34,34]; swD.setBg(swObj.fillColor);

            var sep_1=g_1.add('panel'); sep_1.size=[310,2];

            var g_1_1=g_1.add('group'); g_1_1.spacing=2;

            if(mode=="RGB"){

                var rD=g_1_1.add('statictext',undefined,'Red: '+swObj.colorComp.comp[0]+',');

                var gD=g_1_1.add('statictext',undefined,'Green: '+swObj.colorComp.comp[1]+',');

                var bD=g_1_1.add('statictext',undefined,'Blue: '+swObj.colorComp.comp[2]);

            } else if(mode=="CMYK"){

                var cD=g_1_1.add('statictext',undefined,'Cyan: '+swObj.colorComp.comp[0]+',');

                var mD=g_1_1.add('statictext',undefined,'Magenta: '+swObj.colorComp.comp[1]+',');

                var yD=g_1_1.add('statictext',undefined,'Yellow: '+swObj.colorComp.comp[2]+',');

                var kD=g_1_1.add('statictext',undefined,'Black: '+swObj.colorComp.comp[3]);

            } else if(mode=="LAB"){

                var lD=g_1_1.add('statictext',undefined,'Luminance: '+swObj.colorComp.comp[0]+',');

                var aD=g_1_1.add('statictext',undefined,'a: '+swObj.colorComp.comp[1]+',');

                var bD=g_1_1.add('statictext',undefined,'b: '+swObj.colorComp.comp[2]);

            } else if(mode=="GRAY"){

                var gD=g_1_1.add('statictext',undefined,'Gray-Scale Black: '+swObj.colorComp.comp[0]);

            }

            var g_1_2=g_1.add('group');

            createAltDisp(swObj, g_1_2);

            var sep_2=g_1.add('panel'); sep_2.size=[310,2];

            var originDocG=g_1.add('group'); originDocG.orientation='row';

                var originDocH=originDocG.add('statictext',undefined,"Originating Document");

                var originDocE=originDocG.add('edittext',undefined,swObj.info.originDoc,{readonly:true}); originDocE.characters=18;

            var g_1_3=g_1.add('panel',undefined,'Notes'); g_1_3.margins=[2,8,2,2]; g_1_3.spacing=2;

                var notesE=g_1_3.add('edittext',undefined,'',{readonly:true, multiline:true}); notesE.size=[310,60];

                if(swObj.info && swObj.info.notes && swObj.info.notes!=''){

                    notesE.text=swObj.info.notes;

                }

                var notesBtnG=g_1_3.add('group');

                    var viewBigBtn=notesBtnG.add('button',undefined,"View Big");

                    var editBtn=notesBtnG.add('button',undefined,"Edit Notes");

                    var clearBtn=notesBtnG.add('button',undefined,"Clear Notes");

            viewBigBtn.onClick=function(){

                if(notesE.text!=''){

                    var notesW=new Window('dialog',"Notes in a bigger window:"); notesW.margins=[4,4,4,4];

                    var bignotesE=notesW.add('edittext',undefined,notesE.text,{multiline:true, readonly:true}); bignotesE.size=[300,360];

                    var closeNotes=notesW.add('button',undefined,"Ok");

                    notesW.show();

                } else {

                    alert("There are no notes here.");

                }

            }

            editBtn.onClick=function(){

                var editResult=function(){

                    var newNotes=null;

                    var w=new Window('dialog','Edit Notes');

                        var inst=w.add('statictext',undefined,"Tip: use Ctrl+Return to enter in a carriage-return.");

                        var editE=w.add('edittext',undefined,notesE.text,{multiline:true}); editE.size=[310,160]; editE.active=true;

                        var btnG=w.add('group');

                            var okBtn=btnG.add('button',undefined,'Set Notes (OK)');

                            var cclBtn=btnG.add('button',undefined,'Cancel');

                    okBtn.onClick=function(){

                        if(editE.text.replace(/\s/g)!=''){

                            newNotes=editE.text;

                        } else {

                            newNotes='';

                        }

                        w.close();

                    }

                    w.show();

                    return newNotes;

                }();

                if(editResult!=null){

                    notesE.text=editResult;

                    swObj.info.notes=editResult;

                    swObj.noteChange=currentTime();

                }

            }

            clearBtn.onClick=function(){

                if(confirm("Are you sure you want to clear the notes?")==true){

                    notesE.text='';

                    swObj.info.notes='';

                    swObj.noteChange=currentTime();

                }

            }

        }

    }

    function infoWindow(SESSION){ //======================================MINI UI

        var noteChange;

        var userChoice={showMode:SESSION.options.showMode, showNotes:SESSION.options.showNotes, noteChange:false};

        var swatchBox=function(){

            if(SESSION.selection.length==0){

                return null;

            } else if(SESSION.selection.length==1){

                return SESSION.selection[0];

            } else if(SESSION.selection.length>1){

                return "--Multiple Selection--";

            }

        }();

        var w=new Window('dialog',"Swatch Info & Preferences"); w.margins=[4,4,4,4];

            var g_0=w.add('group'); g_0.orientation='column'; g_0.spacing=4;

                var g_0_1=g_0.add("group");

                if(swatchBox!=null){

                    if(swatchBox=="--Multiple Selection--"){ // Multi

                        var msg=g_0_1.add('statictext',undefined,swatchBox);

                    } else { //Single

                        if(swatchBox.name!='none'){

                            noteChange=swatchBox.noteChange;

                            swatchInfoBox(swatchBox, g_0_1);

                        } else {

                            var msg=g_0_1.add('statictext',undefined,"Empty Cell");

                        }

                    }

                } else { // NONE

                    //var msg=g_0_1.add('statictext',undefined,"NONE");

                }

                var g_0_1=g_0.add("panel",undefined,"Main Window Prefrences"); g_0_1.size=[340,44]; g_0_1.orientation='column';

                    var boxGrp=g_0_1.add('group');

                        var modelBx=boxGrp.add('checkbox',undefined,"Show Color Mode"); modelBx.value=SESSION.options.showMode;

                        var noteBx=boxGrp.add('checkbox',undefined,"Show Note Marker"); noteBx.value=SESSION.options.showNotes;

                var g_0_2=g_0.add("panel",undefined,"Persistence Options"); g_0_2.size=[340,54];

                    var saveBtn=g_0_2.add('button',undefined,"Save Current Session");

            var okBtn=w.add('button',undefined,'Ok'); okBtn.size=[340,20]; okBtn.margins=[0,0,0,0];

            okBtn.onClick=function(){

                w.close();

            }

            saveBtn.onClick=function(){

                var swcs=SESSION.swatchBoxes, swcsLn=SESSION.swatchBoxes.length;

                var dir=SESSION.presetFolder;

                var saveFl=File(dir+"/HoboSwatchSession.xml");

                var blank=function(){

                    for(var s=0; s<swcsLn; s++){

                        if(swcs.name!='none'){

                            return false;

                        }

                    }

                    return true;

                }();

                var go=false;

                if(blank==true){

                    if(confirm('Set saved session to all blanks?',true,'Confirm this action:')==true){

                        go=true;

                    }

                } else if(confirm('Save current session?',true,'Confirm this action:')==true){

                    go=true;

                }

                if(go==true){

                    if(!dir.exists){

                        dir.create();

                    }

                    saveFl.open('w');

                    saveFl.write('<?xml version="1.0"?>\r'+getXmlSwatchesXML(swcs));

                    saveFl.close();

                    if(saveFl.exists){

                        alert("Successfully Saved in: "+decodeURI(saveFl),'SUCCESS!');

                    } else {

                        alert("Sorry, "+decodeURI(saveFl)+"'s save operation was NOT successful!",'Failure... Horrible abysmal failure. :\'(');

                    }

                }

            }

        w.show();

        userChoice.showMode=modelBx.value;

        userChoice.showNotes=noteBx.value;

        userChoice.noteChange=function(){

            if(swatchBox!=null && (swatchBox.noteChange != noteChange)){

                return true;

            }

            return false;

        }();

        return userChoice;

    }

//===================================================For Bridge Talk========================//

    function asSourceString(func, withArgs){

        if(withArgs!=undefined && withArgs==true){

            return func.toSource().toString().replace("(","").replace(/\)$/,"");

        } else {

            return func.toSource().toString().replace("(function "+func.name+"(){","").replace(/}\)$/,"");

        }

    }

    function sendBTmsg(func, updateObj, resultFunc, resultFuncArgs){

        if(updateObj==undefined){updateObj={self: 'nothing'}};

        var updateObjName=updateObj.self;

        if(updateObjName!=undefined){

            var bt=new BridgeTalk;

            bt.target='illustrator';

            var btMsg=asSourceString(func);

            for(all in updateObj){

                if(all!='self'){

                    var rx=new RegExp(updateObjName+'\\.'+all,'g');

                    btMsg=btMsg.replace(rx,updateObj[all]);

                }

            }

            bt.body=btMsg;

            //$.write(btMsg);

            if(resultFunc!=undefined){

                bt.onResult=function(result){

                    resultFunc(result.body, resultFuncArgs);

                }

            }

            bt.send();

        } else {

            $.writeln("Error, function 'sendBTmsg(func, updateOb)': the update object should have a 'self' property, indentifying its' name.");

        }

    }

    function doNothing(){

        var nothing=function(){

            return;

        }()

    }

    function initSwatch(SESSION, sw, name, mode, clrArr, uiClr, info){ // Result of getting document swatches.

        sw.fillColor=uiClr;

        sw.name=name;

        if(mode=="RGB" || mode=="LAB"){

            sw.colorComp={typename:ColorComp[mode].typename,comp:[clrArr[0],clrArr[1],clrArr[2]]};

        } else if(mode=="CMYK"){

            sw.colorComp={typename:ColorComp[mode].typename,comp:[clrArr[0],clrArr[1],clrArr[2],clrArr[3]]};

        } else if(mode=="GRAY"){

            sw.colorComp={typename:ColorComp[mode].typename,comp:[clrArr[0]]};

        }

        sw.colorComp.name=sw.name;

        SESSION.nameDisplay.text=sw.name;

        sw.info=info;

        sw.addDrawPhase(sw.coloredState);

        if(info.plating=="Spot"){

            sw.addDrawPhase(sw.spotMark);

        } else if(info.plating=="GlobalProcess"){

            sw.addDrawPhase(sw.globalMark);

        }

        if(SESSION.options.showMode==true){

            sw.addDrawPhase(sw[mode+'Model']);

        }

        if(SESSION.options.showNotes==true && sw.info && sw.info.notes!=''){

            sw.addDrawPhase(sw.noteMark);

        }

        if(sw.selected==true){

            sw.removeDrawPhase(sw.selectedMark);

            sw.addDrawPhase(sw.selectedMark);

        }

        sw.refresh();

        sw.instantiated=true;

        sw.elem.helpTip=sw.getInfo();

    }

//=========<<<<<<<<<<<<<<<BT Function

    function bt_func(){

        var outcome={swatches:[],};

        if(app.documents.length>0){

            var doc=app.activeDocument;

            var swcs=doc.swatches.getSelected();

            if(swcs.length>0){

                BTOBJ.func_convertAppColor;

                BTOBJ.func_currentTime;

                BTOBJ.func_getAISwatchColor;

                for(var s=0; s<swcs.length; s++){

                    var thisSw=swcs;

                    if(thisSw.color!="[PatternColor]" && thisSw.color!="[GradientColor]"

                        && thisSw.name!="[Registration]" && thisSw.name!="[None]"){

                        outcome.swatches.push(getAISwatchColor(thisSw.color, thisSw.name));

                    }

                }

                outcome=outcome.toSource();

            } else {

                alert("Please select some swatches from the document's swatches palette.");

            }

        } else {

            alert("Please open a document with swatches.");

        }

    }

    function bt_func_rt(objString, args){ //puts swatches into palette.

        var docSws=eval(objString).swatches; var SESSION=args[0];

        for(var s=0; s<docSws.length; s++){

            var thisSw=docSws;

            if(SESSION.selection!=undefined){

                if(thisSw.name!='none'){

                    var sw=SESSION.selection;

                    var info={plating: thisSw.plating, originDoc: thisSw.originDoc,

                        altClrs:{rgbClr:thisSw.rgbClr,cmykClr:thisSw.cmykClr,labClr:thisSw.labClr,grayClr:thisSw.grayClr},

                        notes: '',

                    };

                    initSwatch(SESSION, sw, thisSw.name, thisSw.type, thisSw.colorArr, thisSw.uiColor, info);

                } else {

                    alert("Sorry, can't have a swatch by the name of '"+thisSw.name+"'");

                }

            }

        }

    }

    function bt_func_2(){

        BTOBJ.func_currentTime;

        var outcome={};

        if(app.documents.length>0){

            var doc=app.activeDocument;

            var swcs=eval(BTOBJ.sessionSelection);

            var nonConflictingSwatches=[];

            for(var s=0; s<swcs.length; s++){

                var thisSw=swcs;

                try{

                    doc.swatches.getByName(thisSw.name);

                    continue;

                } catch(e){

                    nonConflictingSwatches.push(thisSw);

                }

            }

            for(var s=0; s<nonConflictingSwatches.length; s++){

                var thisSw=nonConflictingSwatches;

                for(var t=0; t<nonConflictingSwatches.length; t++){

                    var thisOtherSw=nonConflictingSwatches;

                    if(t!=s && thisSw.name==thisOtherSw.name){

                        nonConflictingSwatches.splice(s,1);

                        s=0;

                        break;

                    }

                }

            }

            if(nonConflictingSwatches.length>0){

                var swG=doc.swatchGroups.add(); var d=new Date();

                swG.name="Added at "+((d.getMonth()+1)+"/"+d.getDate()+"/"+d.getFullYear()+" "+currentTime());

            }

            for(var s=0; s<nonConflictingSwatches.length; s++){

                var thisSw=nonConflictingSwatches;

                if(thisSw.plating!='Process'){

                    var dsw=doc.spots.add();

                    if(thisSw.colorComp.typename=="LAB"){

                        dsw.colorType=ColorModel.SPOT;

                    }

                    dsw.color=function(){

                        if(thisSw.colorComp.typename=="RGB"){

                            var c=new RGBColor();

                            c.red=thisSw.colorComp.comp[0];

                            c.green=thisSw.colorComp.comp[1];

                            c.blue=thisSw.colorComp.comp[2];

                            return c;

                        } else if(thisSw.colorComp.typename=="CMYK"){

                            var c=new CMYKColor();

                            c.cyan=thisSw.colorComp.comp[0];

                            c.magenta=thisSw.colorComp.comp[1];

                            c.yellow=thisSw.colorComp.comp[2];

                            c.black=thisSw.colorComp.comp[3];

                            return c;

                        } else if(thisSw.colorComp.typename=="LAB"){

                            var c=new LabColor();

                            c.l=thisSw.colorComp.comp[0];

                            c.a=thisSw.colorComp.comp[1];

                            c.b=thisSw.colorComp.comp[2];

                            return c;

                        } else if(thisSw.colorComp.typename=="GRAY"){

                            var c=new CMYKColor();

                            c.cyan=0;

                            c.magenta=0;

                            c.yellow=0;

                            c.black=thisSw.colorComp.comp[0];

                            return c;

                        }

                    }();

                    dsw.name=thisSw.name;

                    if(thisSw.plating=="Spot"){

                        dsw.colorType=ColorModel.SPOT;

                    } else if(thisSw.plating=="GlobalProcess"){

                        dsw.colorType=ColorModel.PROCESS;

                    }

                    swG.addSpot(dsw);

                } else {

                    var dsw=doc.swatches.add();

                    var color=function(){

                        if(thisSw.colorComp.typename=="RGB"){

                            var c=new RGBColor();

                            c.red=thisSw.colorComp.comp[0];

                            c.green=thisSw.colorComp.comp[1];

                            c.blue=thisSw.colorComp.comp[2];

                            return c;

                        } else if(thisSw.colorComp.typename=="CMYK"){

                            var c=new CMYKColor();

                            c.cyan=thisSw.colorComp.comp[0];

                            c.magenta=thisSw.colorComp.comp[1];

                            c.yellow=thisSw.colorComp.comp[2];

                            c.black=thisSw.colorComp.comp[3];

                            return c;

                        } else if(thisSw.colorComp.typename=="GRAY"){

                            var c=new GrayColor();

                            c.gray=thisSw.colorComp.comp[0];

                            return c;

                        }

                    }();

                    dsw.color=color;

                    dsw.name=thisSw.name;

                    swG.addSwatch(dsw);

                }

            }

            outcome=outcome.toSource();

        } else {

            alert("Please open a document with swatches.");

        }

    }

//===================================================Used Objects========================//

    var BTOBJ={

        self: "BTOBJ",

        doNothing: asSourceString(doNothing),

        func_getAISwatchColor: asSourceString(getAISwatchColor, true),

        func_convertAppColor: asSourceString(convertAppColor, true),

        func_currentTime: asSourceString(currentTime, true),

        func_round2: asSourceString(round2, true),

        sessionSelection: null,

    };

    var ColorComp={

        CMYK:{typename:'CMYK', name:'', comp: [0,0,0,0]},

        RGB:{typename:'RGB', name:'', comp: [0,0,0]},

        LAB:{typename:'LAB', name:'', comp: [0,0,0]},

        GRAY:{typename:'GRAY', name:'', comp: [0]},

        NULL:{typename:'NULL', name:'None', comp:null},

    };

    function SwatchBox(elem){

        this.uiOrder=elem.order;

        this.name='none';

        this.elem=elem;

        this.colorComp=ColorComp.NULL;

        this.elem.parentObj=this; // access constructor through UI element.

        this.selected=false;

        this.instantiated=false;

        this.refresh=function(){

            this.assignOnDraw(this.currentDrawingState);

            this.elem.hide();  this.elem.show();

        }

        this.elem.helpTip='none';

        this.fillColor=[0.4,0.4,0.4];

        this.selectedMark={id: 'selected',

            func:function(elem){

                var g = elem.graphics;

                var pen=g.newPen(g.PenType.SOLID_COLOR,[0,0,0,0.7],3);

                g.rectPath(2, 2, 19, 19); g.strokePath(pen);

                pen=g.newPen(g.PenType.SOLID_COLOR,[1,1,1,1],2);

                g.newPath(); g.moveTo(2,7); g.lineTo(2,2); g.lineTo(7,2); g.strokePath(pen);

                g.newPath(); g.moveTo(21,7); g.lineTo(21,2); g.lineTo(16,2); g.strokePath(pen);

                g.newPath(); g.moveTo(2,16); g.lineTo(2,21); g.lineTo(7,21); g.strokePath(pen);

                g.newPath(); g.moveTo(21,16); g.lineTo(21,21); g.lineTo(16,21); g.strokePath(pen);

            }

        };

        this.coloredState={id:'colored',

            func:function(elem){

                var g = elem.graphics;

                var pen=g.newPen(g.PenType.SOLID_COLOR,[0.7,0.7,0.7,1],1);

                var brush=g.newBrush(g.BrushType.SOLID_COLOR,elem.parentObj.fillColor);

                g.newPath(); g.moveTo(1,1); g.lineTo(22,1); g.lineTo(22,22); g.lineTo(1,22); g.closePath();

                g.fillPath(brush); g.strokePath(pen);

            }

        };

        this.noneState={id:'none',

            func:function(elem){

                var g = elem.graphics;

                var pen=g.newPen(g.PenType.SOLID_COLOR,[0.7,0.7,0.7,1],1);

                var brush=g.newBrush(g.BrushType.SOLID_COLOR,[0.4,0.4,0.4]);

                g.newPath(); g.moveTo(1,1); g.lineTo(22,1); g.lineTo(22,22); g.lineTo(1,22); g.closePath();

                g.strokePath(pen); g.fillPath(brush);

            }

        };

        this.spotMark={id:'spot',

            func:function(elem){

                var g = elem.graphics;

                var brush=g.newBrush(g.BrushType.SOLID_COLOR,[1,1,1]), pen=g.newPen(g.PenType.SOLID_COLOR,[0.7,0.7,0.7,1],1);

                g.newPath(); g.moveTo(22,13); g.lineTo(22,22); g.lineTo(13,22); g.closePath();

                g.fillPath(brush); g.strokePath(pen);

                g.newPath();

                brush=g.newBrush(g.BrushType.SOLID_COLOR,[0,0,0]);

                g.ellipsePath(18,18,2,2); g.fillPath(brush);

            }

        };

        this.globalMark={id:'global',

            func:function(elem){

                var g = elem.graphics;

                var brush=g.newBrush(g.BrushType.SOLID_COLOR,[1,1,1]), pen=g.newPen(g.PenType.SOLID_COLOR,[0.7,0.7,0.7,1],1);

                g.newPath(); g.moveTo(22,13); g.lineTo(22,22); g.lineTo(13,22); g.closePath();

                g.fillPath(brush); g.strokePath(pen);

            }

        };

        this.noteMark={id:'notes',

            func:function(elem){

                drawImg(noteMarkSrc, elem);

            }

        };

        this.LABModel={id:'labmodel',

            func:function(elem){

                drawImg(labModelSrc, elem);

            }

        };

        this.GRAYModel={id:'graymodel',

            func:function(elem){

                drawImg(grayModelSrc, elem);

            }

        };

        this.CMYKModel={id:'cmykmodel',

            func:function(elem){

                drawImg(cmykModelSrc, elem);

            }

        };

        this.RGBModel={id:'rgbmodel',

            func:function(elem){

                drawImg(rgbModelSrc, elem);

            }

        };

        this.addDrawPhase=function(newPhase){

            for(var x=0, ln=this.currentDrawingState.length; x<ln; x++){

                if(this.currentDrawingState.id!=newPhase.id && x==ln-1){

                    this.currentDrawingState.push(newPhase);

                }

            }

        }

        this.removeDrawPhase=function(oldPhase){

            for(var x=this.currentDrawingState.length-1; x>-1; x--){

                if(this.currentDrawingState.id==oldPhase.id){

                    this.currentDrawingState.splice(x,1);

                }

            }

        }

        this.currentDrawingState=[this.noneState];

        this.assignOnDraw=function(aDrawings){

            this.elem.onDraw=function(){

                for(var d=0; d<aDrawings.length; d++){

                    aDrawings.func(this);

                }

            }

        }

        this.select=function(){

            this.removeDrawPhase(this.selectedMark);

            this.addDrawPhase(this.selectedMark);

            this.selected=true;

            this.refresh();

        }

        this.unselect=function(){

            this.removeDrawPhase(this.selectedMark);

            this.selected=false;

            this.refresh();

        }

        this.reset=function(){

            this.currentDrawingState=[this.noneState];

            this.info={};

            this.name='none';

            this.elem.helpTip='none';

            this.instantiated=false;

            this.colorComp=ColorComp.NULL;

            this.selected=false;

            this.refresh();

        }

        this.getInfo=function(){

            var msg='';

            msg+='Name: '+this.name+"\rColor Model: "+this.colorComp.typename+"\r";

            var clrCmp=this.colorComp;

            var cmp=function(){

                var cmp=clrCmp;

                if(cmp.typename=="RGB"|| cmp.typename=="LAB"){

                    return 'Color Values: '+cmp.comp[0]+" , "+cmp.comp[1]+" , "+cmp.comp[2];

                } else if(cmp.typename=="CMYK"){

                    return 'Color Values: '+cmp.comp[0]+" , "+cmp.comp[1]+" , "+cmp.comp[2]+" , "+cmp.comp[3];

                } else if(cmp.typename=="GRAY"){

                    return 'Color Values: '+cmp.comp[0];

                }

                return '';

            }();

            msg+=cmp;

            return msg;

        }

        this.info={};

        this.noteChange=currentTime();

    }

    var allSwatchBoxes=[];

    var SESSION={ //========================================================<<< SESSION object

        selection: [],

        options: {

           showMode: true,

           showNotes: true,

        },

        lastSelection: null,

        swatchBoxes: allSwatchBoxes,

        presetFolder: function(){

            var dir;

            if($.os.match('Windows')){

                dir=Folder("~\\Documents\\Adobe Scripts\\Hobo Swatches");

            } else {

                dir=Folder(app.path+"/Hobo Swatches");

            }

            return dir;

        }(),

    };

//===================================================UI Window========================//

    function ShowPalette(name){

        var w= new Window('palette',name,undefined,{closeButton:false}); w.margins=[1,1,1,1]; w.spacing=2; w.setBg([0.2,0.2,0.2]);

            var g_0=w.add('group'); g_0.orientation='column'; g_0.margins=[1,1,1,1]; g_0.spacing=1;

                var g_0_1=g_0.add('panel',undefined,'',{borderStyle:'sunken'}); g_0_1.size=[140,160]; g_0_1.margins=[0,1,1,0];

                g_0_1.orientation='row'; g_0_1.spacing=1; g_0_1.alignChildren='top';

                var swatchContainer=g_0_1.add('group'); swatchContainer.spacing=1;

                swatchContainer.size=[123,260]; swatchContainer.margins=[0,0,0,0]; swatchContainer.orientation='column';

                var swatchContObj={

                    swG_0: swatchContainer.add('group'),

                    swG_1: swatchContainer.add('group'),

                    swG_2: swatchContainer.add('group'),

                    swG_3: swatchContainer.add('group'),

                    swG_4: swatchContainer.add('group'),

                    swG_5: swatchContainer.add('group'),

                    swG_6: swatchContainer.add('group'),

                    swG_7: swatchContainer.add('group'),

                    swG_8: swatchContainer.add('group'),

                    swG_9: swatchContainer.add('group'),

                }

                for(all in swatchContObj){

                    swatchContObj[all].spacing=1;

                }

                for(var i=0; i<50; i++){// Setting up all 50 swatch slots.

                    var swP = swatchContObj[('swG_'+Math.floor((i/5)))].add('group'); swP.size=[24,24]; swP.order=i;

                    var thisSwatch=new SwatchBox(swP);

                    thisSwatch.assignOnDraw(thisSwatch.currentDrawingState);

                    thisSwatch.elem.addEventListener('mousedown',function(ev){

                        var subj=this.parentObj;

                        var keyState=env.keyboardState;

                        if(keyState.ctrlKey==false && keyState.shiftKey==false && keyState.metaKey==false && keyState.altKey==false){

                            nameD.text=subj.name;

                            subj.select();

                            SESSION.selection=[subj];

                            for(var j=0; j<allSwatchBoxes.length; j++){

                                var thisBox=allSwatchBoxes;

                                if(thisBox.selected==true && thisBox!=subj){

                                    thisBox.unselect();

                                }

                            }

                        } else if(keyState.shiftKey==true){

                            SESSION.nameDisplay.text=subj.name;

                            if(subj.selected==false){

                                subj.select();

                                SESSION.selection.push(subj);

                                SESSION.selection.sort(function(a,b){return a.uiOrder-b.uiOrder});

                            }

                            if(SESSION.lastSelection!=null){

                                if(ev.target.parentObj.uiOrder > SESSION.lastSelection.uiOrder){

                                    var indA = SESSION.lastSelection.uiOrder, indB = ev.target.parentObj.uiOrder;

                                } else {

                                    var indA = ev.target.parentObj.uiOrder, indB = SESSION.lastSelection.uiOrder;

                                }

                                for(var s=0; s<allSwatchBoxes.length; s++){

                                    if(s>indA && s<indB){

                                        var thisBox=allSwatchBoxes;

                                        if(thisBox.selected==false){

                                            thisBox.select();

                                            SESSION.selection.push(thisBox);

                                        }

                                    }

                                }

                            SESSION.selection.sort(function(a,b){return a.uiOrder-b.uiOrder});

                            }

                        } else if(keyState.ctrlKey==true || keyState.metaKey==true){

                            if(subj.selected==false){

                                nameD.text=subj.name;

                                subj.select();

                                SESSION.selection.push(subj);

                                SESSION.lastSelection=subj;

                            } else if(subj.selected==true){

                                subj.unselect();

                                for(var j=0; j<SESSION.selection.length; j++){

                                    var thisBox=SESSION.selection;

                                    if(thisBox==subj){

                                        SESSION.selection.splice(j,1);

                                        break;

                                    }

                                }

                            }

                        } else if(keyState.altKey==true && subj.selected==true && subj.name!='none'){

                            var infoDisp=function(){

                                var w=new Window('dialog',subj.name+" Swatch Info"); w.margins=[4,8,4,4]; w.spacing=2;

                                swatchInfoBox(subj, w);

                                var okBtn=w.add('button',undefined,'Ok'); okBtn.size=[340,22];

                                okBtn.onClick=function(){

                                    w.close();

                                };

                                w.show();

                            }();

                            if(subj.info.notes!='' && SESSION.options.showNotes==true){

                                for(var i=0; i<subj.currentDrawingState.length; i++){

                                    if(subj.currentDrawingState.id=='notes'){

                                        break;

                                    } else if(i==subj.currentDrawingState.length-1 && subj.currentDrawingState.id!='notes'){

                                        subj.addDrawPhase(subj.noteMark);

                                        subj.refresh();

                                    }

                                }

                            } else if(SESSION.options.showNotes==false || subj.info.notes==''){

                                for(var i=0; i<subj.currentDrawingState.length; i++){

                                    if(subj.currentDrawingState.id=='notes'){

                                        subj.removeDrawPhase(subj.currentDrawingState);

                                        subj.refresh();

                                        break;

                                    }

                                }

                            }

                        }

                        if(SESSION.selection.length>1){

                            nameD.text="--Multi-Selection: "+SESSION.selection.length+"--"; SESSION.lastSelection=SESSION.selection[0];

                        } else if(SESSION.selection.length==1){

                            nameD.text=SESSION.selection[0].name; SESSION.lastSelection=SESSION.selection[0];

                        }  else if(SESSION.selection.length==0){

                            nameD.text=''; SESSION.lastSelection=null;

                        }

                    });

                    allSwatchBoxes.push(thisSwatch);

                }

                var g_0_1_scrl=g_0_1.add('scrollbar'); g_0_1_scrl.size=[10,152];

        var g_0_2=g_0.add('group'); g_0_2.indent=1;

            var nameD=g_0_2.add('edittext',undefined,'',{readonly:true}); nameD.size=[140,20]; nameD.setBg([1,1,1]);

            SESSION.nameDisplay=nameD;

        var btnG=g_0.add('group'); btnG.margins=[1,1,1,1]; btnG.spacing=2;

            var infoBtn=btnG.add('button',undefined,'I'); infoBtn.size=[26,20];

                infoBtn.helpTip='Get swatch info';

                infoBtn.onDraw=function(){

                    btnSkin(this,[0.9,0.8,0.3],26,20);

                    drawImg(infoBtnSrc, this);

                }

            var addToDocBtn=btnG.add('button',undefined,'T'); addToDocBtn.size=[26,20];

                addToDocBtn.helpTip='Add selected swatches to current document';

                addToDocBtn.onDraw=function(){

                    btnSkin(this,[0.3,0.8,0.9],26,20);

                    drawImg (addToDocBtnSrc, this)

                }

            var addBtn=btnG.add('button',undefined,'A'); addBtn.size=[26,20];

                addBtn.helpTip='Add swatch from current document to this palette';

                addBtn.onDraw=function(){

                    btnSkin(this,[0.4,0.8,0.4],26,20);

                    drawImg(addBtnSrc, this);

                }

            var rmvBtn=btnG.add('button',undefined,'R'); rmvBtn.size=[26,20];

                rmvBtn.helpTip='Remove current selected swatch from this palette';

                rmvBtn.onDraw=function(){

                    btnSkin(this,[0.6,0.2,0.3],26,20);

                    drawImg(rmvBtnSrc, this);

                }

        var btnG_2=g_0.add('group'); btnG_2.margins=[1,1,1,1]; btnG_2.spacing=2;

            var rstBtn=btnG_2.add('button',undefined,'Reset'); rstBtn.size=[65,20];

                rstBtn.helpTip='RESET all Hobo Swatches to "none"';

                rstBtn.onDraw=function(){

                    btnSkin(this,[1,0.6,0.2],65,20);

                    drawImg(rstBtnSrc,this);

                }

            var okBtn=btnG_2.add('button',undefined,'Close'); okBtn.size=[65,20];

                okBtn.helpTip='Close this palette';

                okBtn.onDraw=function(){

                    btnSkin(this,[0.8,0.2,0.2],65,20);

                    drawImg(okBtnSrc,this);

                }

        g_0_1_scrl.onChange=function(){ // Need both of them for mousewheels and clicks.

            swatchContainer.location=[0,1-(this.value/100*96)];

        }

        g_0_1_scrl.onChanging=function(){

            swatchContainer.location=[0,1-(this.value/100*96)];

        }

        addBtn.onClick=function(){

            if(SESSION.selection.length>0){

                sendBTmsg(bt_func, BTOBJ, bt_func_rt, [SESSION]);

                SESSION.nameDisplay.text=SESSION.selection[0].name;

            } else {

                alert("Please allocate cells to fill with your document swatches.");

            }

        }

        rmvBtn.onClick=function(){

            if(SESSION.selection.length>0){

                if(SESSION.selection.length<2){

                    var sw=SESSION.selection[0];

                    sw.reset(); sw.selected=true; sw.addDrawPhase(sw.selectedMark); sw.refresh; nameD.text=sw.name; sw.elem.helpTip=sw.name;

                } else {

                    for(var s=SESSION.selection.length-1; s>-1; s--){

                        var sw=SESSION.selection;

                        sw.reset(); sw.selected=true; sw.addDrawPhase(sw.selectedMark); sw.refresh; sw.elem.helpTip=sw.name;

                    }

                    nameD.text=sw.name;

                }

            }

        }

        infoBtn.onClick=function(){

            var sessionUpdate=infoWindow(SESSION);

            if(sessionUpdate.showMode!=SESSION.options.showMode || sessionUpdate.showNotes != SESSION.options.showNotes || sessionUpdate.noteChange==true){

                SESSION.options.showMode=sessionUpdate.showMode;

                SESSION.options.showNotes=sessionUpdate.showNotes;

                for(var s=allSwatchBoxes.length-1; s>-1; s--){

                    var thisBox=allSwatchBoxes;

                    var dState=thisBox.currentDrawingState;

                    if(SESSION.options.showMode==false){

                        for(var c=dState.length-1; c>-1; c--){

                            if(dState.id.match('model')){

                                thisBox.removeDrawPhase(dState);

                            }

                        }

                    } else {

                        for(var c=dState.length-1; c>-1; c--){

                            if(dState.id.match('model')){

                                thisBox.removeDrawPhase(dState);

                            }

                        }

                        if(thisBox.colorComp.typename!="NULL"){

                            thisBox.addDrawPhase(thisBox[thisBox.colorComp.typename+"Model"]);

                        }

                    }

                    if(thisBox.info && thisBox.info.hasOwnProperty('notes')){

                        if(SESSION.options.showNotes==false || thisBox.info.notes==''){

                            for(var c=dState.length-1; c>-1; c--){

                                if(dState.id=='notes'){

                                    thisBox.removeDrawPhase(dState);

                                }

                            }

                        } else if(SESSION.options.showNotes==true && thisBox.info.notes!=''){

                            for(var c=dState.length-1; c>-1; c--){

                                if(dState.id=='notes'){

                                    break;

                                } else if(dState.id!='notes' && c==0){

                                    thisBox.addDrawPhase(thisBox.noteMark);

                                }

                            }

                        }

                    }

                    thisBox.refresh();

                }

            }

        }

        rstBtn.onClick=function(){

            if(confirm('Are you sure you want to reset the whole Hobo Swatch palette?',true,'Confirm this action:')==true){

                for(var i=0; i<allSwatchBoxes.length; i++){

                    var thisBox=allSwatchBoxes;

                    thisBox.reset();

                }

                nameD.text='';

                SESSION.selection=[];

            }

        }

        addToDocBtn.onClick=function(){

            var validOnes=function(){

                var arr=[];

                for(var s=0; s<SESSION.selection.length; s++){

                    if(SESSION.selection.instantiated==true){

                        arr.push(SESSION.selection);

                    }

                }

                return arr;

            }();

            if(validOnes.length>0){

                BTOBJ.sessionSelection=function(){

                    var arr=[];

                    for(var s=0; s<validOnes.length; s++){

                        var sw=validOnes;

                        arr.push({

                            name: sw.name, colorComp: sw.colorComp, plating: sw.info.plating,

                        });

                    }

                    return arr.toSource();

                }();

                sendBTmsg(bt_func_2, BTOBJ);

            } else {

                alert("Please select some existing swatches first.");

            }

        }

        okBtn.onClick=function(){

            if(confirm('Are you sure you want completely close the Hobo Swatch palette?',true,'Confirm this action:')==true){

                w.close();

            }

        }

        this.show=function(){w.show()};

    };

    var mainWindow = new ShowPalette('Hobo Swatches™');

    mainWindow.show();

    // Load from Preset XML on startup.

    var presetFile=File(SESSION.presetFolder+"/HoboSwatchSession.xml");

    if(presetFile.exists){

        try{

            var swXmlArr=getXmlSwatchesArr(presetFile);

            for(var i=0; i<swXmlArr.length; i++){

                if(allSwatchBoxes && swXmlArr.name!='none'){

                    var thisSw=allSwatchBoxes, thisInfo=swXmlArr;

                    var colorMode=thisInfo.colorComp.mode.toString(), colorArr=thisInfo.colorComp.comp;

                    var altClrs=[

                        thisSw.rgbClr=convertAppColor(colorMode, "RGB", colorArr),

                        thisSw.cmykClr=convertAppColor(colorMode, "CMYK", colorArr),

                        thisSw.grayClr=convertAppColor(colorMode, "GrayScale", colorArr),

                        thisSw.labClr=convertAppColor(colorMode, "LAB", colorArr),

                    ];

                    for(var c=0; c<altClrs.length; c++){

                        for(var d=0; d<altClrs.length; d++){

                            altClrs=round2(altClrs);

                        }

                    }

                    initSwatch(SESSION, thisSw, thisInfo.name, thisInfo.colorComp.mode,

                    thisInfo.colorComp.comp, getUIRGB(colorMode,colorArr),

                        {plating: thisInfo.aiSwatchKind,

                            originDoc: thisInfo.originDoc,

                            altClrs:{rgbClr:thisSw.rgbClr,cmykClr:thisSw.cmykClr,labClr:thisSw.labClr,grayClr:thisSw.grayClr},

                            notes: thisInfo.notes,

                        }

                    );

                    SESSION.selection=[];

                    SESSION.nameDisplay.text='';

                }

            }

        } catch(e){

            alert(e,'Uhoh!');

        }

    }

}

#target illustrator

#targetengine main

swatchPalette();

TOPICS
Scripting

Views

2.0K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe
Community Expert ,
Jan 18, 2014 Jan 18, 2014

Copy link to clipboard

Copied

great job!! thanks for sharing

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jan 19, 2014 Jan 19, 2014

Copy link to clipboard

Copied

Wow, you've put a lot of work into this. Echoing Carlos - great job! And thanks for sharing too!  -TT

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Valorous Hero ,
Jan 19, 2014 Jan 19, 2014

Copy link to clipboard

Copied

Thank you folks, and please let me know if there are any bugs, etc.  I'm grateful for all the feedback!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Mentor ,
Jan 20, 2014 Jan 20, 2014

Copy link to clipboard

Copied

Wow! That's impressive on so many levels, outstanding work and effort on your part that's really awesome. I love how your drawing the buttons, did you extract the path data to come up with that? Thanks so much for sharing, that's really awesome and full of nuggets of goodness.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Valorous Hero ,
Jan 25, 2014 Jan 25, 2014

Copy link to clipboard

Copied

Thank you W_J_T  and here is the place where I got my drawing from:

http://forums.adobe.com/message/5819478#5819478

* I posted the latest update at the bottom on Jan 25 2014.

The principles of this method are to draw by reading the string object and that;s how you can change colors and things by changing the eval-led objects and redrawing them with putting an updating function into OnDraw and hiding/showing the element to force the OnDraw.  If you end up using this , I'd like to see some examples!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Mentor ,
Jan 25, 2014 Jan 25, 2014

Copy link to clipboard

Copied

Silly-V, wow that's awesome I cant believe I never saw or came across that thread when searching before. Great stuff thanks for sharing. Somewhat reminds me of "Trace vector to script". Awesome thanks again for sharing. Thus far I have never included graphics in my UI but I have researched it previously, I will keep you posted if I use it.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 20, 2014 Jan 20, 2014

Copy link to clipboard

Copied

Great job!

Now I know why you solve the „CDATA-problem“ had to. And I see you also utilizes the same kind for the Math.round(x*100)/100 like me too.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Valorous Hero ,
Jan 20, 2014 Jan 20, 2014

Copy link to clipboard

Copied

Oh I'm so rude, sorry: there should have been credits!  Big credit to you pixxxel, for without you I would not have been able to do the essential CDATA..  seriously- it is so obscure, I could not have figured it out otherwise.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 20, 2014 Jan 20, 2014

Copy link to clipboard

Copied

No, you do not have to apologize.

On the contrary. I am thrilled (or better excited?) that I can see the finished result.

Always keep it up.


Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Apr 22, 2023 Apr 22, 2023

Copy link to clipboard

Copied

I get an error now from line 86

Undefined is not an object

UIEelements.prototype is not a function

ewrror-line86.png

EDIT
fixed it by add [i] after UIElements

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Apr 22, 2023 Apr 22, 2023

Copy link to clipboard

Copied

LATEST

Just change it to

UIElements[i].prototype.setBg=function(rgb){

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines