/* Generate Gradients File... "Generate Gradients File" v4.3 Generate a gradients file (.grd) from a JSON text file containing an array of gradient objects in JSON simplified format. Utility script using the "JSON Action Manager" scripting library. © 2011-2015 Michel MARIANI. automate JSON Action Manager Gradients Utility */ //------------------------------------------------------------------------------ // File: Generate Gradients File.js // Version: 4.3 // Release Date: 2015-11-27 // Copyright: © 2011-2015 Michel MARIANI // Licence: GPL //------------------------------------------------------------------------------ // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . //------------------------------------------------------------------------------ // Version History: // 4.3: // - Used new version 4.4.4 of jamEngine scripting library module. // 4.2: // - Used new version 4.4.1 of scripting library modules. // 4.1: // - Used new version 4.3 of jamHelpers scripting library module. // 4.0: // - Fixed generation of output file name. // 3.9: // - Used new version 4.0 of scripting library modules. // 3.8: // - Used new version of scripting library modules. // - Used new explicit format if necessary. // 3.7: // - Used new version of scripting library modules. // 3.6: // - Used new version of scripting library modules. // 3.5: // - Improved handling of file extensions. // 3.4: // - Initial release. //------------------------------------------------------------------------------ // jamEngine.jsxinc v4.4.4 (minified) if(typeof jamEngine!=='object') {var jamEngine={};(function() {var that;jamEngine.meaningfulIds=false;jamEngine.parseFriendly=false;jamEngine.displayDialogs=DialogModes.ERROR;var conflictingStringIdStrs={"'Algn'":["align","alignment"],"'AntA'":["antiAlias","antiAliasedPICTAcquire"],"'BckL'":["backgroundLayer","backgroundLevel"],"'BlcG'":["blackGenerationType","blackGenerationCurve"],"'BlcL'":["blackLevel","blackLimit"],"'Blks'":["blacks","blocks"],"'BlrM'":["blurMethod","blurMore"],"'BrgC'":["brightnessEvent","brightnessContrast"],"'BrsD'":["brushDetail","brushesDefine"],"'Brsh'":["brush","brushes"],"'Clcl'":["calculation","calculations"],"'ClrP'":["colorPalette","coloredPencil"],"'Cnst'":["constant","constrain"],"'CntC'":["centerCropMarks","conteCrayon"],"'Cntr'":["center","contrast"],"'CrtD'":["createDroplet","createDuplicate"],"'CstP'":["customPalette","customPhosphors"],"'Cstm'":["custom","customPattern"],"'Drkn'":["darken","darkness"],"'Dstr'":["distort","distortion","distribute","distribution"],"'Dstt'":["desaturate","destWhiteMax"],"'FlIn'":["fileInfo","fillInverse"],"'Gd '":["good","guide"],"'GnrP'":["generalPreferences","generalPrefs","preferencesClass"],"'GrSt'":["grainStippled","graySetup"],"'Grdn'":["gradientClassEvent","gridMinor"],"'Grn '":["grain","green"],"'Grns'":["graininess","greens"],"'HstP'":["historyPreferences","historyPrefs"],"'HstS'":["historyState","historyStateSourceType"],"'ImgP'":["imageCachePreferences","imagePoint"],"'In '":["in","stampIn"],"'IntW'":["interfaceWhite","intersectWith"],"'Intr'":["interfaceIconFrameDimmed","interlace","interpolation","intersect"],"'JPEG'":["JPEG","JPEGFormat"],"'LghD'":["lightDirection","lightDirectional"],"'LghO'":["lightOmni","lightenOnly"],"'LghS'":["lightSource","lightSpot"],"'Lns '":["lens","lines"],"'Mgnt'":["magenta","magentas"],"'MrgL'":["mergeLayers","mergedLayers"],"'Mxm '":["maximum","maximumQuality"],"'NTSC'":["NTSC","NTSCColors"],"'NmbL'":["numberOfLayers","numberOfLevels"],"'PlgP'":["pluginPicker","pluginPrefs"],"'Pncl'":["pencilEraser","pencilWidth"],"'Pnt '":["paint","point"],"'Prsp'":["perspective","perspectiveIndex"],"'PrvM'":["previewMacThumbnail","previewMagenta"],"'Pstr'":["posterization","posterize"],"'RGBS'":["RGBSetup","RGBSetupSource"],"'Rds '":["radius","reds"],"'ScrD'":["scratchDisks","screenDot"],"'ShdI'":["shadingIntensity","shadowIntensity"],"'ShpC'":["shapeCurveType","shapingCurve"],"'ShrE'":["sharpenEdges","shearEd"],"'Shrp'":["sharpen","sharpness"],"'SplC'":["splitChannels","supplementalCategories"],"'Spot'":["spot","spotColor"],"'SprS'":["separationSetup","sprayedStrokes"],"'StrL'":["strokeLength","strokeLocation"],"'Strt'":["saturation","start"],"'TEXT'":["char","textType"],"'TIFF'":["TIFF","TIFFFormat"],"'TglO'":["toggleOptionsPalette","toggleOthers"],"'TrnG'":["transparencyGamutPreferences","transparencyGrid","transparencyGridSize"],"'TrnS'":["transferSpec","transparencyShape","transparencyStop"],"'Trns'":["transparency","transparent"],"'TxtC'":["textClickPoint","textureCoverage"],"'TxtF'":["textureFile","textureFill"],"'UsrM'":["userMaskEnabled","userMaskOptions"],"'c@#^'":["inherits","pInherits"],"'comp'":["comp","sInt64"],"'doub'":["floatType","IEEE64BitFloatingPoint","longFloat"],"'long'":["integer","longInteger","sInt32"],"'magn'":["magnitude","uInt32"],"'null'":["null","target"],"'shor'":["sInt16","sMInt","shortInteger"],"'sing'":["IEEE32BitFloatingPoint","sMFloat","shortFloat"]};jamEngine.getConflictingStringIdStrs=function(charIdStr) {return conflictingStringIdStrs[charIdStr]||null;};jamEngine.uniIdStrToId=function(uniIdStr) {var id=0;if(typeof uniIdStr==='string') {if((uniIdStr.length===(1+4+1))&&(uniIdStr.charAt(0)==="'")&&(uniIdStr.charAt(5)==="'")) {id=app.charIDToTypeID(uniIdStr.substring(1,5));} else {id=app.stringIDToTypeID(uniIdStr);}} return id;};var smallestHashValue=app.charIDToTypeID(" ");jamEngine.idToUniIdStrs=function(id) {var charIdStr="";var stringIdStr=app.typeIDToStringID(id);if(id>=smallestHashValue) {charIdStr="'"+app.typeIDToCharID(id)+"'";if(stringIdStr!=="") {if(charIdStr in conflictingStringIdStrs) {stringIdStr=conflictingStringIdStrs[charIdStr];}}} return[charIdStr,stringIdStr];};jamEngine.equivalentUniIdStrs=function(uniIdStr1,uniIdStr2) {return this.uniIdStrToId(uniIdStr1)===this.uniIdStrToId(uniIdStr2);};function putInReference(ref,containers) {if(containers.constructor===Array) {var count=containers.length;for(var i=0;i":ref.putClass(desiredClassId);break;case"":var enumerated=that.parseCompact(value);ref.putEnumerated(desiredClassId,that.uniIdStrToId(enumerated[0]),that.uniIdStrToId(enumerated[1]));break;case"":ref.putIdentifier(desiredClassId,value);break;case"":ref.putIndex(desiredClassId,value);break;case"":ref.putName(desiredClassId,value);break;case"":ref.putOffset(desiredClassId,value);break;case"":ref.putProperty(desiredClassId,that.uniIdStrToId(value));break;default:throw new Error("[jamEngine putInReference] Unknown reference form: "+form);break;}}} else {throw new Error("[jamEngine putInReference] JavaScript array expected");}} function putInList(list,items) {if(items.constructor===Array) {var count=items.length;for(var i=0;i":list.putBoolean(value);break;case"":list.putClass(that.uniIdStrToId(value));break;case"":list.putData(value);break;case"":list.putDouble(value);break;case"":var enumerated=that.parseCompact(value);list.putEnumerated(that.uniIdStrToId(enumerated[0]),that.uniIdStrToId(enumerated[1]));break;case"":list.putInteger(value);break;case"":list.putLargeInteger(value);break;case"":var actionList=new ActionList();putInList(actionList,value);list.putList(actionList);break;case"":var object=that.parseCompact(value);if(object[1]) {var actionDescriptor=new ActionDescriptor();putInDescriptor(actionDescriptor,object[1]);list.putObject(that.uniIdStrToId(object[0]),actionDescriptor);} else {list.putClass(that.uniIdStrToId(object[0]));} break;case"":var fileRef=new File(value);list.putPath(fileRef);break;case"":var actionReference=new ActionReference();putInReference(actionReference,value);list.putReference(actionReference);break;case"":list.putString(value);break;case"":var unitDouble=that.parseCompact(value);list.putUnitDouble(that.uniIdStrToId(unitDouble[0]),unitDouble[1]);break;default:throw new Error("[jamEngine putInList] Unknown list type: "+type);break;}}} else {throw new Error("[jamEngine putInList] JavaScript array expected");}} function putInDescriptor(desc,members) {if(members.constructor===Object) {for(var key in members) {if(members.hasOwnProperty(key)) {var keyID=that.uniIdStrToId(key);var member=that.parseCompact(members[key]);var type=member[0];var value=member[1];switch(type) {case"":desc.putBoolean(keyID,value);break;case"":desc.putClass(keyID,that.uniIdStrToId(value));break;case"":desc.putData(keyID,value);break;case"":desc.putDouble(keyID,value);break;case"":var enumerated=that.parseCompact(value);desc.putEnumerated(keyID,that.uniIdStrToId(enumerated[0]),that.uniIdStrToId(enumerated[1]));break;case"":desc.putInteger(keyID,value);break;case"":desc.putLargeInteger(keyID,value);break;case"":var actionList=new ActionList();putInList(actionList,value);desc.putList(keyID,actionList);break;case"":var object=that.parseCompact(value);if(object[1]) {var actionDescriptor=new ActionDescriptor();putInDescriptor(actionDescriptor,object[1]);desc.putObject(keyID,that.uniIdStrToId(object[0]),actionDescriptor);} else {desc.putClass(keyID,that.uniIdStrToId(object[0]));} break;case"":var fileRef=new File(value);desc.putPath(keyID,fileRef);break;case"":var actionReference=new ActionReference();putInReference(actionReference,value);desc.putReference(keyID,actionReference);break;case"":desc.putString(keyID,value);break;case"":var unitDouble=that.parseCompact(value);desc.putUnitDouble(keyID,that.uniIdStrToId(unitDouble[0]),unitDouble[1]);break;default:throw new Error("[jamEngine putInDescriptor] Unknown descriptor type: "+type);break;}}}} else {throw new Error("[jamEngine putInDescriptor] JavaScript object expected");}} var contextRules={"'Algn'":{"":{"bevelEmboss":"align","frameFX":"align","gradientFill":"align","gradientLayer":"align","patternFill":"align","patternLayer":"align"},"":"align","":"alignment"},"'AntA'":{"":"antiAliasedPICTAcquire","":"antiAlias"},"'BckL'":{"":"backgroundLayer","":"backgroundLevel"},"'BlcG'":{"":"blackGenerationType","":"blackGenerationCurve"},"'BlcL'":{"":{"'GEfc'":"blackLevel","CMYKSetup":"blackLimit"},"":{"reticulation":"blackLevel"}},"'Blks'":{"":{"colors":"blacks","extrudeType":"blocks"}},"'BlrM'":{"":"blurMethod","":"blurMore","":"blurMethod"},"'BrgC'":{"":"brightnessContrast","":"brightnessContrast"},"'BrsD'":{"":"brushesDefine","":"brushDetail"},"'Brsh'":{"":"brush","":"brushes"},"'Clcl'":{"":"calculation","":"calculations","":"calculation"},"'ClrP'":{"":{"'GEft'":"coloredPencil"},"":"colorPalette","":"coloredPencil"},"'Cnst'":{"":{"channelMatrix":"constant"},"":"constrain"},"'CntC'":{"":{"'GEft'":"conteCrayon"},"":"conteCrayon","":"centerCropMarks"},"'Cntr'":{"":{"'GEfc'":"contrast","brightnessContrast":"contrast","document":"center","polygon":"center","quadrilateral":"center"},"":{"adaptCorrect":"contrast","brightnessEvent":"contrast","grain":"contrast","halftoneScreen":"contrast","sumie":"contrast","tornEdges":"contrast","waterPaper":"contrast"},"":"center"},"'CrtD'":{"":"createDuplicate","":"createDroplet"},"'CstP'":{"":"customPhosphors","":"customPalette"},"'Cstm'":{"":"customPattern","":"custom","":"custom"},"'Drkn'":{"":"darken","":"darkness"},"'Dstr'":{"":{"'GEfc'":"distortion"},"":{"glass":"distortion","addNoise":"distribution"},"":"distribution","":"distort","":"distribute"},"'Dstt'":{"":"desaturate","":"desaturate","":"destWhiteMax"},"'FlIn'":{"":{"fillColor":"fillInverse","menuItemType":"fileInfo"},"":"fileInfo","":"fileInfo"},"'Gd '":{"":"guide","":"good"},"'GnrP'":{"":"preferencesClass","":"generalPreferences","":"generalPrefs"},"'GrSt'":{"":"graySetup","":"grainStippled","":"graySetup"},"'Grdn'":{"":"gradientClassEvent","":"gradientClassEvent","":"gridMinor"},"'Grn '":{"":{"'GEft'":"grain"},"":{"'GEfc'":"grain","RGBColor":"green","blackAndWhite":"green","channelMatrix":"green","channelMixer":"green"},"":{"blackAndWhite":"green","channelMixer":"green","filmGrain":"grain"},"":"green","":"grain"},"'Grns'":{"":"greens","":"graininess"},"'HstP'":{"":"historyPreferences","":"historyPrefs"},"'HstS'":{"":"historyState","":"historyStateSourceType"},"'ImgP'":{"":"imagePoint","":"imageCachePreferences"},"'In '":{"":"stampIn","":"in"},"'IntW'":{"":"intersectWith","":"interfaceWhite"},"'Intr'":{"":{"shapeOperation":"intersect"},"":{"GIFFormat":"interlace","SaveForWeb":"interlace","application":"interfaceIconFrameDimmed","computedBrush":"interpolation","dBrush":"interpolation","gradientClassEvent":"interpolation","photoshopEPSFormat":"interpolation","sampledBrush":"interpolation"},"":{"convertMode":"interpolation","imageSize":"interpolation","transform":"interpolation"},"":"intersect"},"'JPEG'":{"":"JPEGFormat","":"JPEG"},"'LghD'":{"":"lightDirection","":"lightDirectional","":"lightDirection"},"'LghO'":{"":{"diffuseMode":"lightenOnly","lightType":"lightOmni"}},"'LghS'":{"":"lightSource","":"lightSpot","":"lightSource"},"'Lns '":{"":"lens","":"lines","":"lens"},"'Mgnt'":{"":{"channel":"magenta","colors":"magentas","guideGridColor":"magenta"},"":"magenta"},"'MrgL'":{"":"mergedLayers","":"mergeLayers"},"'Mxm '":{"":"maximumQuality","":"maximum","":"maximum"},"'NTSC'":{"":"NTSC","":"NTSCColors"},"'NmbL'":{"":{"'GEfc'":"numberOfLevels","document":"numberOfLayers"},"":{"cutout":"numberOfLevels"}},"'PlgP'":{"":"pluginPrefs","":"pluginPicker","":"pluginPrefs"},"'Pncl'":{"":"pencilEraser","":"pencilWidth"},"'Pnt '":{"":{"textType":"point"},"":"point","":"paint"},"'Prsp'":{"":"perspective","":"perspectiveIndex"},"'PrvM'":{"":"previewMagenta","":"previewMacThumbnail"},"'Pstr'":{"":"posterize","":"posterize","":"posterization"},"'RGBS'":{"":"RGBSetupSource","":"RGBSetup"},"'Rds '":{"":"reds","":"radius"},"'ScrD'":{"":"screenDot","":"scratchDisks"},"'ShdI'":{"":{"'GEfc'":"shadowIntensity"},"":{"watercolor":"shadowIntensity"},"":"shadingIntensity"},"'ShpC'":{"":{"application":"shapingCurve"},"":"shapingCurve","":"shapeCurveType"},"'ShrE'":{"":"sharpenEdges","":"shearEd"},"'Shrp'":{"":"sharpen","":"sharpness"},"'SplC'":{"":"splitChannels","":"supplementalCategories"},"'Spot'":{"":"spotColor","":"spot"},"'SprS'":{"":{"'GEft'":"sprayedStrokes"},"":"separationSetup","":"sprayedStrokes"},"'StrL'":{"":"strokeLocation","":"strokeLength"},"'Strt'":{"":{"currentToolOptions":"saturation","fileNamingRules":"start","HSBColorClass":"saturation","hueSatAdjustment":"saturation","hueSatAdjustmentV2":"saturation","lineClass":"start","range":"start","vibrance":"saturation"},"":{"replaceColor":"saturation","variations":"saturation","vibrance":"saturation"},"":"saturation"},"'TEXT'":{"":"textType","":"textType"},"'TIFF'":{"":"TIFFFormat","":"TIFF"},"'TglO'":{"":"toggleOptionsPalette","":"toggleOthers"},"'TrnG'":{"":{"application":"transparencyGrid","transparencyPrefs":"transparencyGridSize"},"":"transparencyGridSize","":"transparencyGamutPreferences"},"'TrnS'":{"":{"bevelEmboss":"transparencyShape","dropShadow":"transparencyShape","innerGlow":"transparencyShape","innerShadow":"transparencyShape","outerGlow":"transparencyShape"},"":"transparencyStop","":"transferSpec"},"'Trns'":{"":"transparent","":"transparency"},"'TxtC'":{"":{"'GEfc'":"textureCoverage","textLayer":"textClickPoint"},"":{"underpainting":"textureCoverage"}},"'TxtF'":{"":"textureFill","":"textureFile"},"'UsrM'":{"":"userMaskOptions","":"userMaskEnabled"},"'null'":{"":"null","":"null","":"null","":"target"}};function getFromId(context,parentContext) {var uniIdStr;var kind=context[0];var id=context[1];if(id":if((parentContext[0]==="")&&(""in rule)) {resolvedIdStr=resolveIdStr(rule[""]);} else if((parentContext[0]==="")&&(""in rule)) {resolvedIdStr=resolveIdStr(rule[""]);} break;case"":if((parentContext[0]==="")&&(""in rule)) {resolvedIdStr=resolveIdStr(rule[""]);} break;}} if(resolvedIdStr!=="") {uniIdStr=resolvedIdStr;} else if(kind in rule) {uniIdStr=rule[kind];}} else {var stringIDStr=app.typeIDToStringID(id);if(stringIDStr!=="") {uniIdStr=stringIDStr;}}}} return uniIdStr;} var incompatiblePlatformPath="";var getEventId=app.stringIDToTypeID("get");var targetKeyId=app.stringIDToTypeID("target");var propertyClassId=app.stringIDToTypeID("property");function getFromReference(ref) {var propertyId=0;var arr=[];do {try{var desiredClassId=ref.getDesiredClass();}catch(e){break;} if(propertyId!==0) {var propertyCompact=that.buildCompact("",getFromId(["",propertyId],["",desiredClassId]));arr.push(that.buildCompact(getFromId(["",propertyClassId]),propertyCompact));propertyId=0;} var desiredCompact;var aFormID=ref.getForm();switch(aFormID) {case ReferenceFormType.CLASSTYPE:desiredCompact=that.buildCompact("",null);break;case ReferenceFormType.ENUMERATED:var enumTypeContext=["",ref.getEnumeratedType()];var enumValueContext=["",ref.getEnumeratedValue()];desiredCompact=that.buildCompact("",that.buildCompact(getFromId(enumTypeContext),getFromId(enumValueContext,enumTypeContext)));break;case ReferenceFormType.IDENTIFIER:desiredCompact=that.buildCompact("",ref.getIdentifier());break;case ReferenceFormType.INDEX:desiredCompact=that.buildCompact("",ref.getIndex());break;case ReferenceFormType.NAME:desiredCompact=that.buildCompact("",ref.getName());break;case ReferenceFormType.OFFSET:desiredCompact=that.buildCompact("",ref.getOffset());break;case ReferenceFormType.PROPERTY:if(desiredClassId===propertyClassId) {propertyId=ref.getProperty();} else {desiredCompact=that.buildCompact("",getFromId(["",ref.getProperty()],["",desiredClassId]));} break;default:throw new Error("[jamEngine getFromReference] Unknown reference form type: "+aFormID);break;} if(desiredClassId!==propertyClassId) {arr.push(that.buildCompact(getFromId(["",desiredClassId]),desiredCompact));} ref=ref.getContainer();} while(ref);return arr;} function getFromList(list) {var arr=[];var itemCount=list.count;for(var itemIndex=0;itemIndex",list.getBoolean(itemIndex));break;case DescValueType.CLASSTYPE:itemCompact=that.buildCompact("",getFromId(["",list.getClass(itemIndex)]));break;case DescValueType.DOUBLETYPE:itemCompact=that.buildCompact("",list.getDouble(itemIndex));break;case DescValueType.ENUMERATEDTYPE:var enumTypeContext=["",list.getEnumerationType(itemIndex)];var enumValueContext=["",list.getEnumerationValue(itemIndex)];itemCompact=that.buildCompact("",that.buildCompact(getFromId(enumTypeContext),getFromId(enumValueContext,enumTypeContext)));break;case DescValueType.INTEGERTYPE:itemCompact=that.buildCompact("",list.getInteger(itemIndex));break;case DescValueType.LISTTYPE:itemCompact=that.buildCompact("",getFromList(list.getList(itemIndex)));break;case DescValueType.OBJECTTYPE:var objectTypeContext=["",list.getObjectType(itemIndex)];var objectValue=list.getObjectValue(itemIndex);itemCompact=that.buildCompact("",that.buildCompact(getFromId(objectTypeContext),getFromDescriptor(objectValue,objectTypeContext)));break;case DescValueType.ALIASTYPE:try {var fileRef=list.getPath(itemIndex);itemCompact=that.buildCompact("",fileRef.fsName);} catch(e) {itemCompact=that.buildCompact("",incompatiblePlatformPath);} break;case DescValueType.REFERENCETYPE:itemCompact=that.buildCompact("",getFromReference(list.getReference(itemIndex)));break;case DescValueType.STRINGTYPE:itemCompact=that.buildCompact("",list.getString(itemIndex));break;case DescValueType.UNITDOUBLE:var unitTypeContext=["",list.getUnitDoubleType(itemIndex)];var doubleValue=list.getUnitDoubleValue(itemIndex);itemCompact=that.buildCompact("",that.buildCompact(getFromId(unitTypeContext),doubleValue));break;default:var isRawType;var isLargeIntegerType;try{isRawType=(typeID===DescValueType.RAWTYPE);}catch(e){} try{isLargeIntegerType=(typeID===DescValueType.LARGEINTEGERTYPE);}catch(e){} if(isRawType) {itemCompact=that.buildCompact("",list.getData(itemIndex));} else if(isLargeIntegerType) {itemCompact=that.buildCompact("",list.getLargeInteger(itemIndex));} else {throw new Error("[jamEngine getFromList] Unknown descriptor value type: "+typeID);} break;} arr[itemIndex]=itemCompact;} return arr;} function getFromDescriptor(desc,parentContext) {if(desc) {var obj={};var keyCount;try{keyCount=desc.count;}catch(e){return null;} for(var keyIndex=0;keyIndex",keyID],parentContext);var keyCompact;var typeID;try{typeID=desc.getType(keyID);}catch(e){continue;} switch(typeID) {case DescValueType.BOOLEANTYPE:keyCompact=that.buildCompact("",desc.getBoolean(keyID));break;case DescValueType.CLASSTYPE:keyCompact=that.buildCompact("",getFromId(["",desc.getClass(keyID)]));break;case DescValueType.DOUBLETYPE:keyCompact=that.buildCompact("",desc.getDouble(keyID));break;case DescValueType.ENUMERATEDTYPE:var enumTypeContext=["",desc.getEnumerationType(keyID)];var enumValueContext=["",desc.getEnumerationValue(keyID)];keyCompact=that.buildCompact("",that.buildCompact(getFromId(enumTypeContext),getFromId(enumValueContext,enumTypeContext)));break;case DescValueType.INTEGERTYPE:keyCompact=that.buildCompact("",desc.getInteger(keyID));break;case DescValueType.LISTTYPE:keyCompact=that.buildCompact("",getFromList(desc.getList(keyID)));break;case DescValueType.OBJECTTYPE:var objectTypeContext=["",desc.getObjectType(keyID)];var objectValue=desc.getObjectValue(keyID);keyCompact=that.buildCompact("",that.buildCompact(getFromId(objectTypeContext),getFromDescriptor(objectValue,objectTypeContext)));break;case DescValueType.ALIASTYPE:try {var fileRef=desc.getPath(keyID);keyCompact=that.buildCompact("",fileRef.fsName);} catch(e) {keyCompact=that.buildCompact("",incompatiblePlatformPath);} break;case DescValueType.REFERENCETYPE:keyCompact=that.buildCompact("",getFromReference(desc.getReference(keyID)));break;case DescValueType.STRINGTYPE:keyCompact=that.buildCompact("",desc.getString(keyID));break;case DescValueType.UNITDOUBLE:var unitTypeContext=["",desc.getUnitDoubleType(keyID)];var doubleValue=desc.getUnitDoubleValue(keyID);keyCompact=that.buildCompact("",that.buildCompact(getFromId(unitTypeContext),doubleValue));break;default:var isRawType;var isLargeIntegerType;try{isRawType=(typeID===DescValueType.RAWTYPE);}catch(e){} try{isLargeIntegerType=(typeID===DescValueType.LARGEINTEGERTYPE);}catch(e){} if(isRawType) {keyCompact=that.buildCompact("",desc.getData(keyID));} else if(isLargeIntegerType) {keyCompact=that.buildCompact("",desc.getLargeInteger(keyID));} else {throw new Error("[jamEngine getFromDescriptor] Unknown descriptor value type: "+typeID);} break;} obj[keyString]=keyCompact;} return obj;} else {return null;}} jamEngine.jsonToActionDescriptor=function(descriptorObj) {that=this;var actionDescriptor;if(descriptorObj) {actionDescriptor=new ActionDescriptor();putInDescriptor(actionDescriptor,descriptorObj);} return actionDescriptor;};jamEngine.jsonToActionReference=function(referenceArr) {that=this;var actionReference;if(referenceArr) {actionReference=new ActionReference();putInReference(actionReference,referenceArr);} return actionReference;};jamEngine.eventIdAndActionDescriptorToJson=function(eventId,actionDescriptor) {that=this;var eventIdContext=["",eventId];return{"":getFromId(eventIdContext),"":getFromDescriptor(actionDescriptor,eventIdContext)};};jamEngine.classIdAndActionDescriptorToJson=function(classId,actionDescriptor) {that=this;var classIdContext=["",classId];return{"":getFromId(classIdContext),"":getFromDescriptor(actionDescriptor,classIdContext)};};jamEngine.actionReferenceToJson=function(actionReference) {that=this;return getFromReference(actionReference);};function getReferenceClassId(ref) {classId=0;do {try{var desiredClassId=ref.getDesiredClass();}catch(e){break;} if(desiredClassId!==propertyClassId) {classId=desiredClassId;break;} ref=ref.getContainer();} while(ref);return classId;} jamEngine.jsonPlay=function(eventUniIdStr,descriptorObj,displayDialogs) {var eventId=this.uniIdStrToId(eventUniIdStr);var desc=this.jsonToActionDescriptor(descriptorObj);var parentContext;if(eventId===getEventId) {var ref=desc.getReference(targetKeyId);parentContext=["",getReferenceClassId(ref)];} else {parentContext=["",eventId];} return getFromDescriptor(app.executeAction(eventId,desc,displayDialogs||this.displayDialogs),parentContext);};jamEngine.jsonGet=function(referenceArr) {var ref=this.jsonToActionReference(referenceArr);return getFromDescriptor(app.executeActionGet(ref),["",getReferenceClassId(ref)]);};jamEngine.normalizeJsonItem=function(item,options) {function normalizeItem(item) {var explicit=that.parseCompact(item);var type=explicit[0];var value=explicit[1];var normalizedValue;switch(type) {case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":normalizedValue=value;break;case"":normalizedValue=value&&getFromId(["",that.uniIdStrToId(value)]);break;case"":var enumerated=that.parseCompact(value);var enumTypeContext=["",that.uniIdStrToId(enumerated[0])];var enumValueContext=["",that.uniIdStrToId(enumerated[1])];normalizedValue=that.buildCompact(getFromId(enumTypeContext),getFromId(enumValueContext,enumTypeContext));break;case"":normalizedValue=[];for(var i=0;i":var object=that.parseCompact(value);var objectClassContext=["",that.uniIdStrToId(object[0])];var objectDescriptor=object[1];var normalizedDescriptor;if(objectDescriptor===null) {normalizedDescriptor=null;} else {normalizedDescriptor={};for(var key in objectDescriptor) {if(objectDescriptor.hasOwnProperty(key)) {var objectKeyContext=["",that.uniIdStrToId(key)];normalizedDescriptor[getFromId(objectKeyContext,objectClassContext)]=normalizeItem(objectDescriptor[key]);}}} normalizedValue=that.buildCompact(getFromId(objectClassContext),normalizedDescriptor);break;case"":normalizedValue=getFromId(["",that.uniIdStrToId(value)]);break;case"":normalizedValue=[];for(var i=0;i",that.uniIdStrToId(container[0])]),normalizeItem(container[1])));} break;case"":var unitDouble=that.parseCompact(value);var unitTypeContext=["",that.uniIdStrToId(unitDouble[0])];normalizedValue=that.buildCompact(getFromId(unitTypeContext),unitDouble[1]);break;default:throw new Error("[jamEngine.normalizeJsonItem] Unknown item type: "+type);break;} return that.buildCompact(type,normalizedValue);} that=this;var saveMeaningfulIds=this.meaningfulIds;var saveParseFriendly=this.parseFriendly;if(options&&(options.constructor===Object)) {if(typeof options.meaningfulIds!=='undefined') {this.meaningfulIds=options.meaningfulIds;} if(typeof options.parseFriendly!=='undefined') {this.parseFriendly=options.parseFriendly;}} var normalizedItem=normalizeItem(item);this.meaningfulIds=saveMeaningfulIds;this.parseFriendly=saveParseFriendly;return normalizedItem;};function simplifyRef(ref) {var simplifiedRef=[];for(var i=0;i":case"":case"":case"":case"":case"":simplifiedElement[desiredClass]=value[1];break;default:throw new Error("[jamEngine simplifyRef] Unexpected element form: "+form);break;} simplifiedRef.push(simplifiedElement);} return simplifiedRef;} function simplifyItem(item,hook) {var simplifiedItem;var type=item[0];var value=item[1];switch(type) {case"":case"":case"":case"":case"":case"":case"":case"":simplifiedItem=value;break;case"":simplifiedItem=simplifyList(value,hook);break;case"":case"":simplifiedItem=value[1];break;case"":simplifiedItem=simplifyDesc(value[1],hook);break;case"":simplifiedItem=simplifyRef(value);break;default:throw new Error("[jamEngine simplifyItem] Unexpected item type: "+type);break;} return simplifiedItem;} function simplifyList(list,hook) {var simplifiedList=[];for(var i=0;i"]=typeValue[0];explicit[valueKey||""]=typeValue[1];return explicit;};jamEngine.buildCompact=function(type,value) {var compact;if(typeof type==='string') {if(this.parseFriendly) {compact=[type,value];} else {compact={};compact[type]=value;}} else {throw new Error("[jamEngine.buildCompact] String expected");} return compact;};jamEngine.explicitToCompact=function(explicit,typeKey,valueKey) {var compact;if(explicit.constructor===Object) {compact=this.buildCompact(explicit[typeKey||""],explicit[valueKey||""]);} else {throw new Error("[jamEngine.explicitToCompact] JavaScript object expected");} return compact;};for(var charIdStr in conflictingStringIdStrs) {if(conflictingStringIdStrs.hasOwnProperty(charIdStr)) {var stringIdStrs=conflictingStringIdStrs[charIdStr];for(var index=stringIdStrs.length-1;index>=0;index--) {var stringIdStr=stringIdStrs[index];if(!(app.charIDToTypeID(charIdStr.substring(1,5))===app.stringIDToTypeID(stringIdStr))) {stringIdStrs.splice(index,1);}} if(stringIdStrs.length<2) {delete conflictingStringIdStrs[charIdStr];}}} for(var charIdStr in contextRules) {if(contextRules.hasOwnProperty(charIdStr)) {if(charIdStr in conflictingStringIdStrs) {var rule=contextRules[charIdStr];for(var kind in rule) {if(rule.hasOwnProperty(kind)) {switch(kind) {case"":case"":case"":case"":case"":case"":if(app.charIDToTypeID(charIdStr.substring(1,5))!=app.stringIDToTypeID(rule[kind])) {throw new Error("[jamEngine] "+"\""+charIdStr+"\" and \""+rule[kind]+"\" are not equivalent ID strings");} break;case"":case"":case"":for(var parent in rule[kind]) {if(rule[kind].hasOwnProperty(parent)) {if(app.charIDToTypeID(charIdStr.substring(1,5))!=app.stringIDToTypeID(rule[kind][parent])) {throw new Error("[jamEngine] "+"\""+charIdStr+"\" and \""+rule[kind][parent]+"\" are not equivalent ID strings");}}} break;}}}} else {delete contextRules[charIdStr];}}}}());} // jamHelpers.jsxinc v4.4 (minified) if(typeof jamHelpers!=='object') {var jamHelpers={};(function() {jamHelpers.toColorObject=function(color) {var colorObject;if(color.constructor===Object) {function restoreDesc(desc) {var restoredDesc={};for(var key in desc) {if(desc.hasOwnProperty(key)) {var value=desc[key];var typedValue=null;switch(key) {case"book":case"name":typedValue=["",localize(value)];break;case"bookKey":typedValue=["",value];break;case"bookID":typedValue=["",value];break;case"a":case"b":case"black":case"blue":case"brightness":case"cyan":case"gray":case"green":case"luminance":case"magenta":case"red":case"saturation":case"yellowColor":typedValue=["",value];break;case"hue":typedValue=["",["angleUnit",value]];break;case"color":var colorClass;if((("book"in value)&&("name"in value))||(("bookID"in value)&&("bookKey"in value))) {colorClass="bookColor";} else if(("cyan"in value)&&("magenta"in value)&&("yellowColor"in value)&&("black"in value)) {colorClass="CMYKColorClass";} else if("gray"in value) {colorClass="grayscale";} else if(("hue"in value)&&("saturation"in value)&&("brightness"in value)) {colorClass="HSBColorClass";} else if(("luminance"in value)&&("a"in value)&&("b"in value)) {colorClass="labColor";} else if(("red"in value)&&("green"in value)&&("blue"in value)) {colorClass="RGBColor";} typedValue=["",[colorClass,restoreDesc(value)]];break;} if(typedValue) {restoredDesc[key]=typedValue;}}} return restoredDesc;} colorObject=restoreDesc({"color":color})["color"];} else if(color.constructor===Array) {var colorClass=color[0];switch(jamEngine.uniIdStrToId(colorClass)) {case jamEngine.uniIdStrToId("bookColor"):switch(color[1].length) {case 2:if(typeof color[1][0]==='string') {colorObject=["",["bookColor",{"book":["",color[1][0]],"name":["",color[1][1]]}]];} else if(typeof color[1][0]==='number') {colorObject=["",["bookColor",{"bookID":["",color[1][0]],"bookKey":["",color[1][1]]}]];} break;case 4:colorObject=["",["bookColor",{"book":["",color[1][0]],"name":["",color[1][1]],"bookID":["",color[1][2]],"bookKey":["",color[1][3]]}]];break;} break;case jamEngine.uniIdStrToId("CMYKColorClass"):colorObject=["",["CMYKColorClass",{"cyan":["",color[1][0]],"magenta":["",color[1][1]],"yellowColor":["",color[1][2]],"black":["",color[1][3]]}]];break;case jamEngine.uniIdStrToId("grayscale"):colorObject=["",["grayscale",{"gray":["",(color[1].constructor===Array)?color[1][0]:color[1]]}]];break;case jamEngine.uniIdStrToId("HSBColorClass"):colorObject=["",["HSBColorClass",{"hue":["",["angleUnit",color[1][0]]],"saturation":["",color[1][1]],"brightness":["",color[1][2]]}]];break;case jamEngine.uniIdStrToId("labColor"):colorObject=["",["labColor",{"luminance":["",color[1][0]],"a":["",color[1][1]],"b":["",color[1][2]]}]];break;case jamEngine.uniIdStrToId("RGBColor"):colorObject=["",["RGBColor",{"red":["",color[1][0]],"green":["",color[1][1]],"blue":["",color[1][2]]}]];break;default:throw new Error("[jamHelpers.toColorObject] Unrecognized color class: "+colorClass);break;}} return colorObject;};jamHelpers.fromColorObject=function(colorObject,explicit) {var color;if(explicit) {color=jamEngine.simplifyObject(colorObject);} else {var normalizedColorObject=jamEngine.normalizeJsonItem(colorObject,{meaningfulIds:true,parseFriendly:true});var colorClass=normalizedColorObject[1][0];var colorDesc=normalizedColorObject[1][1];switch(colorClass) {case"bookColor":var book=colorDesc["book"][1];var name=colorDesc["name"][1];if(("bookID"in colorDesc)&&("bookKey"in colorDesc)) {var bookID=colorDesc["bookID"][1];var bookKey=colorDesc["bookKey"][1];color=[colorClass,[book,name,bookID,bookKey]];} else {color=[colorClass,[book,name]];} break;case"CMYKColorClass":var cyan=colorDesc["cyan"][1];var magenta=colorDesc["magenta"][1];var yellowColor=colorDesc["yellowColor"][1];var black=colorDesc["black"][1];color=[colorClass,[cyan,magenta,yellowColor,black]];break;case"grayscale":var gray=colorDesc["gray"][1];color=[colorClass,[gray]];break;case"HSBColorClass":var hue=colorDesc["hue"][1][1];var saturation=colorDesc["saturation"][1];var brightness=colorDesc["brightness"][1];color=[colorClass,[hue,saturation,brightness]];break;case"labColor":var luminance=colorDesc["luminance"][1];var a=colorDesc["a"][1];var b=colorDesc["b"][1];color=[colorClass,[luminance,a,b]];break;case"RGBColor":var red=colorDesc["red"][1];var green=colorDesc["green"][1];var blue=colorDesc["blue"][1];color=[colorClass,[red,green,blue]];break;default:throw new Error("[jamHelpers.fromColorObject] Unrecognized color class: "+colorClass);break;}} return color;};jamHelpers.nameToColorObject=function(setName,colorName) {return this.toColorObject(jamColors.nameToColor(setName,colorName));};jamHelpers.hexToColorObject=function(hexColorString) {return this.toColorObject(["RGBColor",jamColors.hexToRgb(hexColorString)]);};jamHelpers.hexFromColorObject=function(colorObject,noSign,lowercase) {var color=this.fromColorObject(colorObject);return(color[0]==="RGBColor")?jamColors.rgbToHex(color[1],noSign,lowercase):null;};jamHelpers.toGradientObject=function(gradient) {var gradientObject;if(gradient.constructor===Object) {var that=this;function restoreDesc(desc) {var restoredDesc={};for(var key in desc) {if(desc.hasOwnProperty(key)) {var value=desc[key];var typedValue=null;var restoredList;switch(key) {case"showTransparency":case"vectorColor":typedValue=["",value];break;case"name":typedValue=["",localize(value)];break;case"gradientForm":typedValue=["",["gradientForm",value]];break;case"type":typedValue=["",["colorStopType",value]];break;case"colorSpace":typedValue=["",["colorSpace",value]];break;case"location":case"midpoint":case"randomSeed":case"smoothness":typedValue=["",value];break;case"interpolation":typedValue=["",value];break;case"opacity":typedValue=["",["percentUnit",value]];break;case"colors":restoredList=[];for(var i=0;i",["colorStop",restoreDesc(value[i])]]);} typedValue=["",restoredList];break;case"transparency":restoredList=[];for(var i=0;i",["transparencyStop",restoreDesc(value[i])]]);} typedValue=["",restoredList];break;case"minimum":case"maximum":restoredList=[];for(var i=0;i",value[i]]);} typedValue=["",restoredList];break;case"color":typedValue=that.toColorObject(value);break;case"gradient":typedValue=["",["gradientClassEvent",restoreDesc(value)]];break;} if(typedValue) {restoredDesc[key]=typedValue;}}} return restoredDesc;} gradientObject=restoreDesc({"gradient":gradient})["gradient"];} else if(gradient.constructor===Array) {var gradientObj={};var gradientName=gradient[0];if(gradientName) {gradientObj["name"]=["",gradientName];} var gradientForm=gradient[1];gradientObj["gradientForm"]=["",["gradientForm",gradientForm]];switch(jamEngine.uniIdStrToId(gradientForm)) {case jamEngine.uniIdStrToId("customStops"):gradientObj["interpolation"]=["",gradient[2]];var colorStops=gradient[3];var colorsArr=[];for(var i=0;i",colorStops[i][0]];colorStopObj["midpoint"]=["",colorStops[i][1]];var type=colorStops[i][2];colorStopObj["type"]=["",["colorStopType",type]];switch(jamEngine.uniIdStrToId(type)) {case jamEngine.uniIdStrToId("userStop"):colorStopObj["color"]=this.toColorObject(colorStops[i][3]);break;case jamEngine.uniIdStrToId("backgroundColor"):case jamEngine.uniIdStrToId("foregroundColor"):break;default:throw new Error("[jamHelpers.toGradientObject] Unrecognized color stop type: "+type);break;} colorsArr.push(["",["colorStop",colorStopObj]]);} gradientObj["colors"]=["",colorsArr];var transparencyStops=gradient[4];if(typeof transparencyStops!=='undefined') {var transparencyArr=[];for(var j=0;j",transparencyStops[j][0]];transparencyStopObj["midpoint"]=["",transparencyStops[j][1]];transparencyStopObj["opacity"]=["",["percentUnit",transparencyStops[j][2]]];transparencyArr.push(["",["transparencyStop",transparencyStopObj]]);} gradientObj["transparency"]=["",transparencyArr];} break;case jamEngine.uniIdStrToId("colorNoise"):gradientObj["randomSeed"]=["",gradient[2]];gradientObj["showTransparency"]=["",gradient[3]];gradientObj["vectorColor"]=["",gradient[4]];gradientObj["smoothness"]=["",gradient[5]];var colorSpace=gradient[6];gradientObj["colorSpace"]=["",["colorSpace",colorSpace]];switch(jamEngine.uniIdStrToId(colorSpace)) {case jamEngine.uniIdStrToId("RGBColor"):case jamEngine.uniIdStrToId("HSBColorEnum"):case jamEngine.uniIdStrToId("labColor"):break;default:throw new Error("[jamHelpers.toGradientObject] Unrecognized color space: "+colorSpace);break;} gradientObj["minimum"]=this.toIntegerList(gradient[7]);gradientObj["maximum"]=this.toIntegerList(gradient[8]);break;default:throw new Error("[jamHelpers.toGradientObject] Unrecognized gradient form: "+gradientForm);break;} gradientObject=["",["gradientClassEvent",gradientObj]];} return gradientObject;};jamHelpers.fromGradientObject=function(gradientObject,explicit) {var gradient;if(explicit) {gradient=jamEngine.simplifyObject(gradientObject);} else {gradient=[];var normalizedGradientObject=jamEngine.normalizeJsonItem(gradientObject,{meaningfulIds:true,parseFriendly:true});var gradientDesc=normalizedGradientObject[1][1];var name=gradientDesc["name"];gradient.push((name)?name[1]:null);var gradientForm=gradientDesc["gradientForm"][1][1];gradient.push(gradientForm);switch(gradientForm) {case"customStops":gradient.push(gradientDesc["interpolation"][1]);var colors=gradientDesc["colors"][1];var colorStops=[];for(var i=0;i",[["channel",["",["channel",curvesAdjustment[0]]]]]];var info=curvesAdjustment[1];var type=info[0];var points=info[1];var pointArr=[];switch(jamEngine.uniIdStrToId(type)) {case jamEngine.uniIdStrToId("mapping"):for(var j=0;j",points[j]]);} var mapping=["",pointArr];curvesAdjustmentListArr.push(["",["curvesAdjustment",{"channel":channel,"mapping":mapping}]]);break;case jamEngine.uniIdStrToId("curve"):for(var j=0;j",["point",{"horizontal":["",points[j][0]],"vertical":["",points[j][1]]}]];pointArr.push(point);} var curve=["",pointArr];curvesAdjustmentListArr.push(["",["curvesAdjustment",{"channel":channel,"curve":curve}]]);break;default:throw new Error("[jamHelpers.toCurvesAdjustmentList] Unrecognized curve type");break;}} return["",curvesAdjustmentListArr];};jamHelpers.toHueSatAdjustmentV2List=function(hueSatAdjustmentsArr) {var hueSatAdjustmentListArr=[];for(var i=0;i",hueSatAdjustmentArr[0]],"saturation":["",hueSatAdjustmentArr[1]],"lightness":["",hueSatAdjustmentArr[2]]};} else if(hueSatAdjustmentArr.length===(1+4+3)) {hueSatAdjustmentObj={"localRange":["",hueSatAdjustmentArr[0]],"beginRamp":["",hueSatAdjustmentArr[1]],"beginSustain":["",hueSatAdjustmentArr[2]],"endSustain":["",hueSatAdjustmentArr[3]],"endRamp":["",hueSatAdjustmentArr[4]],"hue":["",hueSatAdjustmentArr[5]],"saturation":["",hueSatAdjustmentArr[6]],"lightness":["",hueSatAdjustmentArr[7]]};} hueSatAdjustmentListArr.push(["",["hueSatAdjustmentV2",hueSatAdjustmentObj]]);} return["",hueSatAdjustmentListArr];};jamHelpers.toBlendRangeList=function(blendRanges) {var blendRangeListArr=[];var blendRangeObject;for(var i=0;i",[["channel",["",["channel",value]]]]];break;case"srcBlackMin":case"srcBlackMax":case"srcWhiteMin":case"srcWhiteMax":case"destBlackMin":case"destBlackMax":case"destWhiteMin":case"destWhiteMax":typedValue=["",value];break;case"blendRange":typedValue=["",["blendRange",restoreDesc(value)]];break;} if(typedValue) {restoredDesc[key]=typedValue;}}} return restoredDesc;} blendRangeObject=restoreDesc({"blendRange":blendRange})["blendRange"];} else if(blendRange.constructor===Array) {blendRangeObject=["",["blendRange",{"channel":["",[["channel",["",["channel",blendRange[0]]]]]],"srcBlackMin":["",blendRange[1]],"srcBlackMax":["",blendRange[2]],"srcWhiteMin":["",blendRange[3]],"srcWhiteMax":["",blendRange[4]],"destBlackMin":["",blendRange[5]],"destBlackMax":["",blendRange[6]],"destWhiteMin":["",blendRange[7]],"destWhiteMax":["",blendRange[8]]}]];} blendRangeListArr.push(blendRangeObject);} return["",blendRangeListArr];};jamHelpers.fromBlendRangeList=function(blendRangeList,explicit) {var blendRanges;if(explicit) {var replaceChannelHook=function(desc,key,getDefaultValue) {var replacedValue=undefined;if(key==="channel") {var value=getDefaultValue(desc,key);replacedValue=value[0]["channel"];} return replacedValue;};blendRanges=jamEngine.simplifyList(blendRangeList,replaceChannelHook);} else {blendRanges=[];var normalizedBlendRangeList=jamEngine.normalizeJsonItem(blendRangeList,{meaningfulIds:true,parseFriendly:true});for(index=0;index",integersArr[i]]);} return["",integerListArr];};jamHelpers.fromIntegerList=function(integerList) {var normalizedIntegerList=jamEngine.normalizeJsonItem(integerList,{meaningfulIds:true,parseFriendly:true});var integersArr=[];var integers=normalizedIntegerList[1];for(var i=0;i",value]:["",[unit,value]];} jamHelpers.toPointObject=function(pointArr) {var data=pointArr[0];var unit=pointArr[1];var pointObject=["",["point",{"horizontal":toUnitDouble(data[0],unit),"vertical":toUnitDouble(data[1],unit)}]];return pointObject;};jamHelpers.toPointList=function(pointsArr) {var data=pointsArr[0];var unit=pointsArr[1];var pointListArr=[];for(var i=0;i",["point",{"horizontal":toUnitDouble(data[i][0],unit),"vertical":toUnitDouble(data[i][1],unit)}]]);} return["",pointListArr];};jamHelpers.fromPointList=function(pointList) {var pointsArr=[];var normalizedPointList=jamEngine.normalizeJsonItem(pointList,{meaningfulIds:true,parseFriendly:true});var data=[];var unit;function getValue(coordinate) {var value;switch(coordinate[0]) {case"":unit=coordinate[1][0];value=coordinate[1][1];break;case"":unit=undefined;value=coordinate[1];break;} return value;} var pointListArr=normalizedPointList[1];for(var i=0;i",["offset",{"horizontal":toUnitDouble(data[0],unit),"vertical":toUnitDouble(data[1],unit)}]];return offsetObject;};jamHelpers.toRectangleObject=function(rectangleArr) {var data=rectangleArr[0];var unit=rectangleArr[1];var rectangleObj={"left":toUnitDouble(data[0],unit),"top":toUnitDouble(data[1],unit),"right":toUnitDouble(data[2],unit),"bottom":toUnitDouble(data[3],unit)};if(data.length===5) {rectangleObj["radius"]=toUnitDouble(data[4],unit);} return["",["rectangle",rectangleObj]];};jamHelpers.toEllipseObject=function(ellipseArr) {var data=ellipseArr[0];var unit=ellipseArr[1];var ellipseObject=["",["ellipse",{"left":toUnitDouble(data[0],unit),"top":toUnitDouble(data[1],unit),"right":toUnitDouble(data[2],unit),"bottom":toUnitDouble(data[3],unit)}]];return ellipseObject;};jamHelpers.toCustomShapeObject=function(customShapeArr) {var data=customShapeArr[0];var unit=customShapeArr[1];var customShapeObject=["",["customShape",{"name":["",data[0]],"left":toUnitDouble(data[1],unit),"top":toUnitDouble(data[2],unit),"right":toUnitDouble(data[3],unit),"bottom":toUnitDouble(data[4],unit)}]];return customShapeObject;};jamHelpers.toCurvePointList=function(curvePoints) {var curvePointListArr=[];var curvePointObject;for(var i=0;i",value];break;case"horizontal":case"vertical":typedValue=["",value];break;case"curvePoint":typedValue=["",["curvePoint",restoreDesc(value)]];break;} if(typedValue) {restoredDesc[key]=typedValue;}}} return restoredDesc;} curvePointObject=restoreDesc({"curvePoint":curvePoint})["curvePoint"];} else if(curvePoint.constructor===Array) {switch(curvePoint.length) {case 2:curvePointObject=["",["curvePoint",{"horizontal":["",curvePoint[0]],"vertical":["",curvePoint[1]]}]];break;case 3:curvePointObject=["",["curvePoint",{"horizontal":["",curvePoint[0]],"vertical":["",curvePoint[1]],"continuity":["",curvePoint[2]]}]];break;}} curvePointListArr.push(curvePointObject);} return["",curvePointListArr];};jamHelpers.fromCurvePointList=function(curvePointList,explicit) {var curvePoints;if(explicit) {curvePoints=jamEngine.simplifyList(curvePointList);} else {curvePoints=[];var normalizedCurvePointList=jamEngine.normalizeJsonItem(curvePointList,{meaningfulIds:true,parseFriendly:true});for(index=0;index",["rationalPoint",{"horizontal":toUnitDouble(data[i][0],unit),"vertical":toUnitDouble(data[i][1],unit)}]]);} return["",rationalPointListArr];};jamHelpers.toPathComponentList=function(pathComponents) {var pathComponentList;if(pathComponents.constructor===Object) {var unit;if("unit"in pathComponents) {unit=pathComponents["unit"];} var data=pathComponents["pathComponents"];function restoreDesc(desc) {var restoredDesc={};for(var key in desc) {if(desc.hasOwnProperty(key)) {var value=desc[key];var typedValue=null;var restoredList;switch(key) {case"closedSubpath":case"smooth":case"windingFill":typedValue=["",value];break;case"shapeOperation":typedValue=["",["shapeOperation",value]];break;case"horizontal":case"vertical":typedValue=toUnitDouble(value,unit);break;case"anchor":case"backward":case"forward":typedValue=["",["point",restoreDesc(value)]];break;case"subpathListKey":restoredList=[];for(var i=0;i",["subpathsList",restoreDesc(value[i])]]);} typedValue=["",restoredList];break;case"points":restoredList=[];for(var i=0;i",["pathPoint",restoreDesc(value[i])]]);} typedValue=["",restoredList];break;case"pathComponents":restoredList=[];for(var i=0;i",["pathComponent",restoreDesc(value[i])]]);} typedValue=["",restoredList];break;} if(typedValue) {restoredDesc[key]=typedValue;}}} return restoredDesc;} pathComponentList=restoreDesc({"pathComponents":data})["pathComponents"];} else if(pathComponents.constructor===Array) {var pathComponentListArr=[];var data=pathComponents[0];var unit=pathComponents[1];for(var i=0;i",["pathPoint",{"anchor":["",["point",{"horizontal":toUnitDouble(point[0][0],unit),"vertical":toUnitDouble(point[0][1],unit)}]]}]]);break;case 3:case 4:pointArr.push (["",["pathPoint",{"anchor":["",["point",{"horizontal":toUnitDouble(point[0][0],unit),"vertical":toUnitDouble(point[0][1],unit)}]],"forward":["",["point",{"horizontal":toUnitDouble(point[1][0],unit),"vertical":toUnitDouble(point[1][1],unit)}]],"backward":["",["point",{"horizontal":toUnitDouble(point[2][0],unit),"vertical":toUnitDouble(point[2][1],unit)}]],"smooth":["",point[3]||false]}]]);break;}} var subpath={};if(closedSubpath) {subpath["closedSubpath"]=["",closedSubpath];} subpath["points"]=["",pointArr];subpathArr.push(["",["subpathsList",subpath]]);} var pathComponent={};pathComponent["shapeOperation"]=["",["shapeOperation",shapeOperation]];if(windingFill) {pathComponent["windingFill"]=["",windingFill];} pathComponent["subpathListKey"]=["",subpathArr];pathComponentListArr.push(["",["pathComponent",pathComponent]]);} pathComponentList=["",pathComponentListArr];} return pathComponentList;};jamHelpers.fromPathComponentList=function(pathComponentList,explicit) {var pathComponents;if(explicit) {pathComponents={};var unit;var done=false;function getUnitHook(desc,key) {if(!done) {if(key==="horizontal") {var value=desc[key];if(value[0]==="") {unit=value[1][0];} done=true;}} return undefined;} pathComponents["pathComponents"]=jamEngine.simplifyList(pathComponentList,getUnitHook);if(unit) {pathComponents["unit"]=unit;}} else {pathComponents=[];var normalizedPathComponentList=jamEngine.normalizeJsonItem(pathComponentList,{meaningfulIds:true,parseFriendly:true});var data=[];var unit;function getValue(coordinate) {var value;switch(coordinate[0]) {case"":unit=coordinate[1][0];value=coordinate[1][1];break;case"":unit=undefined;value=coordinate[1];break;} return value;} var pathComponentListArr=normalizedPathComponentList[1];for(var i=0;i","fontList"]],["application",["",["ordinal","targetEnum"]]]]);var fontPostScriptNameArr=resultDescriptorObj["fontList"][1][1]["fontPostScriptName"][1];for(var i=0;i",action]],["actionSet",["",actionSet]]]);var found=true;} catch(e) {var found=false;} if(!found) {jamEngine.jsonPlay("open",{"target":["",actionsFilePath]});}};jamUtils.loadActionSet=function(actionSet,actionsFilePath) {try {jamEngine.jsonGet([["actionSet",["",actionSet]]]);var found=true;} catch(e) {var found=false;} if(!found) {jamEngine.jsonPlay("open",{"target":["",actionsFilePath]});}};jamUtils.loadPreset=function(presetProperty,presetName,presetFilePath) {var useDOM=false;var useOpen=true;var classes={"brush":"brush","colors":"color","gradientClassEvent":"gradientClassEvent","style":"styleClass","pattern":"'PttR'","shapingCurve":"shapingCurve","customShape":"customShape","toolPreset":"toolPreset"};var presetClass=classes[presetProperty];var saveMeaningfulIds=jamEngine.meaningfulIds;var saveParseFriendly=jamEngine.parseFriendly;jamEngine.meaningfulIds=true;jamEngine.parseFriendly=true;var found=false;var resultDescriptorObj=jamEngine.jsonGet ([["property",["","presetManager"]],["application",["",["ordinal","targetEnum"]]]]);var presetManagerArr=resultDescriptorObj["presetManager"][1];for(var i=0;i",presetFilePath]});} else {jamEngine.jsonPlay ("set",{"target":["",[["property",["",presetProperty]],["application",["",["ordinal","targetEnum"]]]]],"to":["",presetFilePath],"append":["",true]});}} jamEngine.meaningfulIds=saveMeaningfulIds;jamEngine.parseFriendly=saveParseFriendly;};function getFileObject(file) {var fileObject;if(file instanceof File) {fileObject=file;} else if(typeof file==='string') {fileObject=new File(file);} else {throw new Error('[jamUtils getFileObject] Invalid argument');} return fileObject;} jamUtils.readTextFile=function(textFile) {var text=null;var file=getFileObject(textFile);if(file.open("r")) {text=file.read();file.close();} return text;};jamUtils.readJsonFile=function(jsonFile) {return jamJSON.parse(this.readTextFile(jsonFile),true);};jamUtils.writeTextFile=function(textFile,text) {var file=getFileObject(textFile);if(file.open('w','TEXT')) {file.encoding='UTF-8';file.lineFeed='unix';file.write('\uFEFF');file.write(text);file.close();}};jamUtils.writeJsonFile=function(jsonFile,data,space) {this.writeTextFile(jsonFile,jamJSON.stringify(data,space));};jamUtils.cloneData=function(data) {var clone;if(data===null) {clone=data;} else if(data.constructor===Object) {clone={};for(var k in data) {if(data.hasOwnProperty(k)) {clone[k]=this.cloneData(data[k]);}}} else if(data.constructor===Array) {clone=[];for(var i=0;i"][jsonCustomOptionsStringKey][""],true)} catch(e) {var customOptions={};} jamEngine.meaningfulIds=saveMeaningfulIds;jamEngine.parseFriendly=saveParseFriendly;return this.mergeData(customOptions,defaultOptions);};jamUtils.putCustomOptions=function(signature,customOptions,persistent) {var descriptorObj={};descriptorObj[jsonCustomOptionsStringKey]=["",jamJSON.stringify(customOptions)];app.putCustomOptions(signature,jamEngine.jsonToActionDescriptor(descriptorObj),persistent);};jamUtils.eraseCustomOptions=function(signature) {app.eraseCustomOptions(signature);};jamUtils.dataToHexaString=function(dataString,lowercase) {var hexaDigits=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];var hexaString="";var length=dataString.length;for(var index=0;index=0x00)&&(dataByte<=0xFF)) {hexaString+=hexaDigits[(dataByte&0xF0)>>4]+hexaDigits[dataByte&0x0F];} else {throw new Error("[jamUtils.dataToHexaString] Invalid data string");}} if(lowercase) {hexaString=hexaString.toLowerCase();} return hexaString;};jamUtils.hexaToDataString=function(hexaString) {var dataString="";var length=hexaString.length;if(((length%2)===0)&&(/^[0-9A-Fa-f]*$/.test(hexaString))) {for(var index=0;index": { "gradientClassEvent": { "gradient": gradientObject } } }); } var descriptor = jamEngine.jsonToActionDescriptor ({ "'GrdL'": { "": gradientObjectList } }); outFile.write (descriptor.toStream ()); outFile.close (); } if (openOutputFolder) { outFile.parent.execute (); } } } else { alert ("Invalid JSON text file!"); } } return true; } //------------------------------------------------------------------------------ var appVersion = parseInt (app.version); if (appVersion >= 10) // CS3 { var signature = "json-action-manager-generate-gradients-file-options"; var defaultOptions = { defaultInFolder: "~/Desktop", defaultOutFolder: "~/Desktop" }; var customOptions = jamUtils.getCustomOptions (signature, defaultOptions); if (getParameters ()) { jamUtils.putCustomOptions (signature, customOptions, true); } } else { alert ("Sorry, this script requires Photoshop CS3 or later."); } //------------------------------------------------------------------------------