forked from lxlneo/Size-Marks-PS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSize Marks.jsx
More file actions
3 lines (3 loc) · 3.78 KB
/
Size Marks.jsx
File metadata and controls
3 lines (3 loc) · 3.78 KB
1
2
3
// v0.1.1
#target photoshop
function setScaleF(a){return function(b){return b/a}}function drawLine(a,b){var c=makePoint(a),d=makePoint(b),e=new SubPathInfo;e.closed=!1,e.operation=ShapeOperation.SHAPEXOR,e.entireSubPath=[c,d];var f=doc.pathItems.add("Line",[e]);f.strokePath(ToolType.PENCIL),f.remove()}function makePoint(a){for(var b=0;b<a.length;b++)a[b]=scale(a[b]);var c=new PathPointInfo;return c.anchor=a,c.leftDirection=a,c.rightDirection=a,c.kind=PointKind.CORNERPOINT,c}function pickTool(a){var b=charIDToTypeID("slct"),c=new ActionDescriptor,d=charIDToTypeID("null"),e=new ActionReference,f=stringIDToTypeID(a);e.putClass(f),c.putReference(d,e),executeAction(b,c,DialogModes.NO)}function setPenToolSize(a){var b=charIDToTypeID("slct"),c=new ActionDescriptor,d=charIDToTypeID("null"),e=new ActionReference,f=charIDToTypeID("PcTl");e.putClass(f),c.putReference(d,e),executeAction(b,c,DialogModes.NO);var g=charIDToTypeID("setd"),h=new ActionDescriptor,d=charIDToTypeID("null"),i=new ActionReference,j=charIDToTypeID("Brsh"),k=charIDToTypeID("Ordn"),l=charIDToTypeID("Trgt");i.putEnumerated(j,k,l),h.putReference(d,i);var m=charIDToTypeID("T "),c=new ActionDescriptor,n=stringIDToTypeID("masterDiameter"),o=charIDToTypeID("#Pxl");c.putUnitDouble(n,o,a);var j=charIDToTypeID("Brsh");h.putObject(m,j,c),executeAction(g,h,DialogModes.NO)}var doc=null,docIsExist=!1;selBounds=null,selIsExist=!1;var color=new SolidColor;color.rgb.red=255,color.rgb.green=0,color.rgb.blue=255;var store={activeLayer:null,foregroundColor:app.foregroundColor,rulerUnits:app.preferences.rulerUnits,typeUnits:app.preferences.typeUnits,font:null};app.preferences.rulerUnits=Units.PIXELS,app.preferences.typeUnits=TypeUnits.POINTS,app.foregroundColor=color;try{doc=app.activeDocument,docIsExist=!0}catch(e){alert("Size Mark Script: there is no document\nUse File → New... to create one")}if(docIsExist)try{selBounds=doc.selection.bounds,selIsExist=!0}catch(e){alert("Size Mark Script: there is no selection\nUse Rectangular Marquee Tool (M) to create one")}if(docIsExist&&selIsExist){var halfMark=3,baseRes=72,docRes=doc.resolution,scaleRatio=docRes/baseRes,scale=setScaleF(scaleRatio),realUnits="px",scaledUnits="pt",selX1=selBounds[0].value,selX2=selBounds[2].value-1,selY1=selBounds[1].value,selY2=selBounds[3].value-1,selWidth=selX2-selX1,selHeight=selY2-selY1,val=0,txtLayerPos=[0,0],layerNamePrefix="MSRMNT",txtJ11n=Justification.LEFT;store.activeLayer=doc.activeLayer,doc.selection.deselect(),doc.artLayers.add(),setPenToolSize(1),selWidth>selHeight?(drawLine([selX1,selY1],[selX2,selY1]),drawLine([selX1,selY1-halfMark],[selX1,selY1+halfMark]),drawLine([selX2,selY1-halfMark],[selX2,selY1+halfMark]),layerNamePrefix="W",val=selWidth+1,txtLayerPos=[selX1+val/2,selY1-halfMark],txtJ11n=Justification.CENTER):(drawLine([selX1,selY1],[selX1,selY2]),drawLine([selX1-halfMark,selY1],[selX1+halfMark,selY1]),drawLine([selX1-halfMark,selY2],[selX1+halfMark,selY2]),layerNamePrefix="H",val=selHeight+1,txtLayerPos=[selX1+halfMark,selY1+val/2+4],txtJ11n=Justification.LEFT);var txtLayer=doc.artLayers.add();txtLayer.kind=LayerKind.TEXT;var txtLayerItem=txtLayer.textItem;store.font=txtLayerItem.font,txtLayerItem.font="ArialMT",txtLayerItem.position=txtLayerPos,txtLayerItem.color=color,txtLayerItem.justification=txtJ11n;var cntnt="";baseRes!==docRes&&(cntnt=scale(val)+scaledUnits+" / "),cntnt+=val+realUnits,txtLayerItem.contents=cntnt;var finishLayer=txtLayer.merge();finishLayer.name=layerNamePrefix+val,finishLayer.opacity=35,txtLayer=doc.artLayers.add(),txtLayer.kind=LayerKind.TEXT,txtLayerItem=txtLayer.textItem,txtLayerItem.font=store.font,txtLayer.merge(),finishLayer.move(store.activeLayer,ElementPlacement.PLACEBEFORE),app.preferences.rulerUnits=store.rulerUnits,app.preferences.typeUnits=store.typeUnits,app.foregroundColor=store.foregroundColor,pickTool("marqueeRectTool")}