Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2017
1,670
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // basic var initialisation
  2. var project = app.project;
  3. var comp = project.activeItem;
  4. var currentLine;
  5. var maskCounter = 0;
  6. var layerMask;
  7. var allStuff = new Array();
  8. var exportArray = new Array();
  9. var allVertices = new Array();
  10. var allInTangents = new Array();
  11. var allOutTangents = new Array();
  12.  
  13. var maskShape = new Shape();
  14. var importShape = new Shape();
  15.  
  16. // UI
  17. var mainWindow = new Window("palette", "Mask Importer/Exporter", undefined);
  18. mainWindow.orientation = "column";
  19.  
  20. var groupOne = mainWindow.add("group", undefined, "groupOne");
  21. groupOne.orientation = "row";
  22. var importButton = groupOne.add("button", undefined, "Import Mask");
  23. var exportButton = groupOne.add("button", undefined, "Export Mask");
  24.  
  25. mainWindow.center();
  26. mainWindow.show();
  27.  
  28. // Importing mask information
  29. importButton.onClick = function(){
  30.     app.beginUndoGroup("Import Mask");
  31.     var importFile = new File;
  32.     importFile = importFile.openDlg("Choose Mask Text File", "Text File:*.txt");
  33.    
  34.     var fpath = importFile.absoluteURI;
  35.     readDocument(importFile);
  36.    
  37.     var newComp = project.items.addComp("Import Mask", 1920, 1080, 1, 10, 30);
  38.     newComp.openInViewer();
  39.     var vParse;
  40.     var vArray;
  41.     var allVs = [];
  42.     var allIs = [];
  43.     var allOs = [];
  44.     var iParse;
  45.     var iArray;
  46.     var oParse;
  47.     var oArray;
  48.     var importLayer = newComp.layers.addSolid([1, 1, 1], "Mask Layer", 1920, 1080, 1, 10);
  49.     // generate and apply masks
  50.     for(var e = 0; e < maskCounter; e++){
  51.         vParse = allVertices[e].toString();
  52.         vArray = vParse.split(",");
  53.         while(vArray.length > 0){
  54.             allVs.push(vArray.splice(0, 2));
  55.             }
  56.         //alert(allInTangents[e]);
  57.         iParse = allInTangents[e].toString();
  58.         iArray = iParse.split(",");
  59.         while(iArray.length > 0){
  60.             allIs.push(iArray.splice(0, 2));
  61.             }
  62.         oParse = allOutTangents[e].toString();
  63.         oArray = oParse.split(",");
  64.         while(oArray.length > 0){
  65.             allOs.push(oArray.splice(0, 2));
  66.             }
  67.        
  68.         importShape.vertices = allVs;
  69.         importShape.inTangents = allIs;
  70.         importShape.outTangents = allOs;
  71.        
  72.         layerMask = importLayer.Masks.addProperty("Mask");
  73.         layerMask.property("ADBE Mask Shape").setValue(importShape);
  74.         }
  75.     app.endUndoGroup();
  76.     alert("Import Successful");
  77.     }
  78.  
  79.  
  80. // exporint mask information
  81. exportButton.onClick = function(){
  82.     app.beginUndoGroup("Export Mask");
  83.    
  84.     var layer = comp.layer(1);
  85.     var numMasks = layer.property("Masks").numProperties;
  86.     for(var q = 1; q <= numMasks; q++){
  87.        
  88.        
  89.     var myPath = layer.property("Masks").property("Mask " + q).property("Mask Path");
  90.    
  91.     var myVertices = layer.property("Masks").property("Mask " + q).property("Mask Path").value.vertices;
  92.     var myInTangents = layer.property("Masks").property("Mask " + q).property("Mask Path").value.inTangents;
  93.     var myOutTangents = layer.property("Masks").property("Mask " + q).property("Mask Path").value.outTangents;
  94.     maskShape.vertices = myVertices;
  95.     maskShape.inTangents = myInTangents;
  96.     maskShape.outTangents = myOutTangents;
  97.    
  98.     var mainString = "mask " + q + "\r\n" + "vertices = " + maskShape.vertices.toString() + "\r\n" + "intangents = " + maskShape.inTangents.toString() + "\r\n" + "outtangents = " + maskShape.outTangents.toString() + "\r\n";
  99.     exportArray.push(mainString);
  100.     }
  101.    
  102.    exportArray = exportArray.join("\r\n");
  103.    
  104.     var myFile = new File("~/Desktop/mask.txt");
  105.         myFile.open("w")
  106.         myFile.encoding = "UTF-8";
  107.         myFile.write(exportArray);
  108.         myFile.close();
  109.        
  110.         app.endUndoGroup();
  111.         alert("Export Successful");
  112.     }
  113.  
  114. // reading, parsing, and storing info in text file
  115. function readDocument(inputDoc){
  116.         var thisDoc = new File(inputDoc);
  117.         if(thisDoc.exists){
  118.                 thisDoc.open("r");
  119.                 while(!thisDoc.eof){
  120.                         currentLine = thisDoc.readln();
  121.                         allStuff.push(currentLine);
  122.                     }
  123.                 thisDoc.close();
  124.             }
  125.        
  126.         var thisLine;
  127.         var equalsCharIndex;
  128.         var tempLine;
  129.             for(var i = 0; i < allStuff.length; i++){
  130.                     thisLine = allStuff[i];
  131.                     //alert(thisLine);
  132.                     if(thisLine.match(/mask/g)){
  133.                         maskCounter++;
  134.                        // alert("mask");
  135.                         }
  136.                     if(thisLine.match(/vertices =/g)){
  137.                         equalsCharIndex = thisLine.indexOf("=");
  138.                         tempLine = thisLine.slice(equalsCharIndex + 1, thisLine.length);
  139.                         allVertices.push(tempLine);
  140.                         //alert("vertices")
  141.                         }
  142.                     if(thisLine.match(/intangents =/g)){
  143.                         equalsCharIndex = thisLine.indexOf("=");
  144.                         tempLine = thisLine.slice(equalsCharIndex + 1, thisLine.length);
  145.                         allInTangents.push(tempLine);
  146.                         //alert("hintangetns");
  147.                         }
  148.                     if(thisLine.match(/outtangents =/g)){
  149.                         equalsCharIndex = thisLine.indexOf("=");
  150.                         tempLine = thisLine.slice(equalsCharIndex + 1, thisLine.length);
  151.                         allOutTangents.push(tempLine);
  152.                         //alert("outtahere");
  153.                         }
  154.                 }
  155.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement