Fnykis
4/29/2020 - 7:29 AM

Make a gradient

Make a gradient from percentage of document

function makeGradient(gradientStart, gradientEnd, gradientStartColor, gradientEndColor, gradientType) {
    var type;
    switch (gradientType) {
        case "linear": type = "Lnr "; break;
        case "reflect": type = "Rflc"; break; // Start value is center
        case "radial": type = "Rdl "; break; // Start value is center
        default: type = "Lnr ";
    }
    var coordinatesStart = gradientStart; // Float array in percent [10.3502, 87.501]
    var coordinatesEnd = gradientEnd;
    var hsbaStart = gradientStartColor; // Float array [359.0, 100.0, 100.0, 100.0] Hue, Saturation, Brightness, Alpha/Opacity
    var hsbaEnd = gradientEndColor;

    var idGrdn = charIDToTypeID( "Grdn" );
        var desc182 = new ActionDescriptor();
        var idFrom = charIDToTypeID( "From" );
            var desc183 = new ActionDescriptor();
            var idHrzn = charIDToTypeID( "Hrzn" );
            var idPrc = charIDToTypeID( "#Prc" );
            desc183.putUnitDouble( idHrzn, idPrc, coordinatesStart[0].toFixed(4) );
            var idVrtc = charIDToTypeID( "Vrtc" );
            var idPrc = charIDToTypeID( "#Prc" );
            desc183.putUnitDouble( idVrtc, idPrc, coordinatesStart[1].toFixed(4) );
        var idPnt = charIDToTypeID( "Pnt " );
        desc182.putObject( idFrom, idPnt, desc183 );
        var idT = charIDToTypeID( "T   " );
            var desc184 = new ActionDescriptor();
            var idHrzn = charIDToTypeID( "Hrzn" );
            var idPrc = charIDToTypeID( "#Prc" );
            desc184.putUnitDouble( idHrzn, idPrc, coordinatesEnd[0].toFixed(4) );
            var idVrtc = charIDToTypeID( "Vrtc" );
            var idPrc = charIDToTypeID( "#Prc" );
            desc184.putUnitDouble( idVrtc, idPrc, coordinatesEnd[1].toFixed(4) );
        var idPnt = charIDToTypeID( "Pnt " );
        desc182.putObject( idT, idPnt, desc184 );
        var idType = charIDToTypeID( "Type" );
        var idGrdT = charIDToTypeID( "GrdT" );
        var idTypeStr = charIDToTypeID( type );
        desc182.putEnumerated( idType, idGrdT, idTypeStr );
        var idDthr = charIDToTypeID( "Dthr" );
        desc182.putBoolean( idDthr, true );
        var idUsMs = charIDToTypeID( "UsMs" );
        desc182.putBoolean( idUsMs, true );
        var idRvrs = charIDToTypeID( "Rvrs" );
        desc182.putBoolean( idRvrs, true );
        var idGrad = charIDToTypeID( "Grad" );
            var desc185 = new ActionDescriptor();
            var idNm = charIDToTypeID( "Nm  " );
            desc185.putString( idNm, """Custom""" );
            var idGrdF = charIDToTypeID( "GrdF" );
            var idGrdF = charIDToTypeID( "GrdF" );
            var idCstS = charIDToTypeID( "CstS" );
            desc185.putEnumerated( idGrdF, idGrdF, idCstS );
            var idIntr = charIDToTypeID( "Intr" );
            desc185.putDouble( idIntr, 4096.000000 );
            var idClrs = charIDToTypeID( "Clrs" );
                var list68 = new ActionList();
                    var desc186 = new ActionDescriptor();
                    var idClr = charIDToTypeID( "Clr " );
                        var desc187 = new ActionDescriptor();
                        var idH = charIDToTypeID( "H   " );
                        var idAng = charIDToTypeID( "#Ang" );
                        desc187.putUnitDouble( idH, idAng, hsbaEnd[0].toFixed(4) );
                        var idStrt = charIDToTypeID( "Strt" );
                        desc187.putDouble( idStrt, hsbaEnd[1].toFixed(4) );
                        var idBrgh = charIDToTypeID( "Brgh" );
                        desc187.putDouble( idBrgh, hsbaEnd[2].toFixed(4) );
                    var idHSBC = charIDToTypeID( "HSBC" );
                    desc186.putObject( idClr, idHSBC, desc187 );
                    var idType = charIDToTypeID( "Type" );
                    var idClry = charIDToTypeID( "Clry" );
                    var idUsrS = charIDToTypeID( "UsrS" );
                    desc186.putEnumerated( idType, idClry, idUsrS );
                    var idLctn = charIDToTypeID( "Lctn" );
                    desc186.putInteger( idLctn, 0 );
                    var idMdpn = charIDToTypeID( "Mdpn" );
                    desc186.putInteger( idMdpn, 50 );
                var idClrt = charIDToTypeID( "Clrt" );
                list68.putObject( idClrt, desc186 );
                    var desc188 = new ActionDescriptor();
                    var idClr = charIDToTypeID( "Clr " );
                        var desc189 = new ActionDescriptor();
                        var idH = charIDToTypeID( "H   " );
                        var idAng = charIDToTypeID( "#Ang" );
                        desc189.putUnitDouble( idH, idAng, hsbaStart[0].toFixed(4) );
                        var idStrt = charIDToTypeID( "Strt" );
                        desc189.putDouble( idStrt, hsbaStart[1].toFixed(4) );
                        var idBrgh = charIDToTypeID( "Brgh" );
                        desc189.putDouble( idBrgh, hsbaStart[2].toFixed(4) );
                    var idHSBC = charIDToTypeID( "HSBC" );
                    desc188.putObject( idClr, idHSBC, desc189 );
                    var idType = charIDToTypeID( "Type" );
                    var idClry = charIDToTypeID( "Clry" );
                    var idUsrS = charIDToTypeID( "UsrS" );
                    desc188.putEnumerated( idType, idClry, idUsrS );
                    var idLctn = charIDToTypeID( "Lctn" );
                    desc188.putInteger( idLctn, 4096 );
                    var idMdpn = charIDToTypeID( "Mdpn" );
                    desc188.putInteger( idMdpn, 50 );
                var idClrt = charIDToTypeID( "Clrt" );
                list68.putObject( idClrt, desc188 );
            desc185.putList( idClrs, list68 );
            var idTrns = charIDToTypeID( "Trns" );
                var list69 = new ActionList();
                    var desc190 = new ActionDescriptor();
                    var idOpct = charIDToTypeID( "Opct" );
                    var idPrc = charIDToTypeID( "#Prc" );
                    desc190.putUnitDouble( idOpct, idPrc, hsbaEnd[3].toFixed(4) );
                    var idLctn = charIDToTypeID( "Lctn" );
                    desc190.putInteger( idLctn, 0 );
                    var idMdpn = charIDToTypeID( "Mdpn" );
                    desc190.putInteger( idMdpn, 50 );
                var idTrnS = charIDToTypeID( "TrnS" );
                list69.putObject( idTrnS, desc190 );
                    var desc191 = new ActionDescriptor();
                    var idOpct = charIDToTypeID( "Opct" );
                    var idPrc = charIDToTypeID( "#Prc" );
                    desc191.putUnitDouble( idOpct, idPrc, hsbaStart[3].toFixed(4) );
                    var idLctn = charIDToTypeID( "Lctn" );
                    desc191.putInteger( idLctn, 4096 );
                    var idMdpn = charIDToTypeID( "Mdpn" );
                    desc191.putInteger( idMdpn, 50 );
                var idTrnS = charIDToTypeID( "TrnS" );
                list69.putObject( idTrnS, desc191 );
            desc185.putList( idTrns, list69 );
        var idGrdn = charIDToTypeID( "Grdn" );
        desc182.putObject( idGrad, idGrdn, desc185 );
    executeAction( idGrdn, desc182, DialogModes.NO );
}