Skip to content

Instantly share code, notes, and snippets.

@rostfirsikov
Forked from vladocar/DrawShape.js
Last active October 21, 2019 07:30
Show Gist options
  • Save rostfirsikov/27fa4329fe3eb2c4005107a9ad187e9e to your computer and use it in GitHub Desktop.
Save rostfirsikov/27fa4329fe3eb2c4005107a9ad187e9e to your computer and use it in GitHub Desktop.
Draw Shape in Photoshop with JavaScript
/* Code by Mike Hale http://www.ps-scripts.com/bb/viewtopic.php?f=14&t=1802&start=15
with small modification by Vladimir Carrer and Rostyslav Firsikov
*/
if (app.documents.length > 0) {
function DrawShape() {
var doc = app.activeDocument;
var docCoef = doc.resolution / 72;
var y = arguments.length;
var i = 0;
var lineArray = [];
for (i = 0; i < y; i++) {
var z = arguments[i];
var zl = z.length;
var zin = 0;
for (zin = 0; zin < zl; zin++) {
z[zin] = z[zin] / docCoef;
};
arguments[i] = z;
lineArray[i] = new PathPointInfo;
lineArray[i].kind = PointKind.CORNERPOINT;
lineArray[i].anchor = arguments[i];
lineArray[i].leftDirection = lineArray[i].anchor;
lineArray[i].rightDirection = lineArray[i].anchor;
}
var lineSubPathArray = new SubPathInfo();
lineSubPathArray.closed = true;
lineSubPathArray.operation = ShapeOperation.SHAPEADD;
lineSubPathArray.entireSubPath = lineArray;
var myPathItem = doc.pathItems.add("myPath", [lineSubPathArray]);
var desc88 = new ActionDescriptor();
var ref60 = new ActionReference();
ref60.putClass(stringIDToTypeID("contentLayer"));
desc88.putReference(charIDToTypeID("null"), ref60);
var desc89 = new ActionDescriptor();
var desc90 = new ActionDescriptor();
var desc91 = new ActionDescriptor();
desc91.putDouble(charIDToTypeID("Rd "), 0.000000); // R
desc91.putDouble(charIDToTypeID("Grn "), 0.000000); // G
desc91.putDouble(charIDToTypeID("Bl "), 0.000000); // B
var id481 = charIDToTypeID("RGBC");
desc90.putObject(charIDToTypeID("Clr "), id481, desc91);
desc89.putObject(charIDToTypeID("Type"), stringIDToTypeID("solidColorLayer"), desc90);
desc88.putObject(charIDToTypeID("Usng"), stringIDToTypeID("contentLayer"), desc89);
executeAction(charIDToTypeID("Mk "), desc88, DialogModes.NO);
myPathItem.remove();
}
// X,Y
// Put the coordinates in clockwise order
DrawShape([100, 100], [100, 200], [200, 200], [200, 100]);
DrawShape([512, 128], [600, 256], [684, 320], [600, 386], [686, 514], [512, 450], [340, 512], [428, 386], [340, 320], [428, 256]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment