The straighten tool in CS5 uses a script, so I just extracted the relevant parts to get the end points of the Ruler Tool.
Code: Select allvar g_StackScriptFolderPath = app.path + "/"+ localize("$$$/ScriptingSupport/InstalledScripts=Presets/Scripts") + "/"
+ localize("$$$/Private/Exposuremerge/StackScriptOnly=Stack Scripts Only/");
$.evalFile( g_StackScriptFolderPath + "Geometry.jsx");
$.evalFile(g_StackScriptFolderPath + "Terminology.jsx");
function getRulerEndpoints()
{
var desc1 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putProperty( classProperty, krulerPointsStr );
ref1.putEnumerated( classDocument, typeOrdinal, enumTarget );
desc1.putReference( typeNULL, ref1 );
var result = executeAction( eventGet, desc1, DialogModes.NO );
if (result.hasKey( kpointsStr ))
{
var i, ptList = result.getList( kpointsStr );
// The middle item in the list is an unused "midpoint" (currently == p0)
var p0 = getUnitPoint( ptList.getObjectValue(0) );
var p1 = getUnitPoint( ptList.getObjectValue(2) );
if (p0.fX < p1.fX)
return [p0, p1];
else
return [p1, p0];
}
else
return [];
}
function getUnitPoint(desc)
{
var x = desc.getUnitDoubleValue( kxStr );
var y = desc.getUnitDoubleValue( kyStr );
return new TPoint( x, y );
}
Ruler Tool end points script access
Ruler Tool end points script access
Nice, I removed the need the evalFile calls
Code: Select allfunction getRulerEndpoints(){
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putProperty( charIDToTypeID('Prpr'),charIDToTypeID('RrPt') );
ref.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
desc.putReference( charIDToTypeID('null'), ref );
var result = executeAction( charIDToTypeID('getd'), desc, DialogModes.NO );
if (result.hasKey( charIDToTypeID('Pts ') )){
var i, ptList = result.getList( charIDToTypeID('Pts ') );
// The middle item in the list is an unused "midpoint" (currently == p0)
var p0 = getUnitPoint( ptList.getObjectValue(0) );
var p1 = getUnitPoint( ptList.getObjectValue(2) );
if (p0.fX < p1.fX)
return [p0, p1];
else
return [p1, p0];
}
else
return [];
};
function getUnitPoint(desc){
var x = desc.getUnitDoubleValue( charIDToTypeID('X ') );
var y = desc.getUnitDoubleValue( charIDToTypeID('Y ') );
function TPoint( x, y ){
this.fX = x;
this.fY = y;
}
return new TPoint( x, y );
};
Code: Select allfunction getRulerEndpoints(){
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putProperty( charIDToTypeID('Prpr'),charIDToTypeID('RrPt') );
ref.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
desc.putReference( charIDToTypeID('null'), ref );
var result = executeAction( charIDToTypeID('getd'), desc, DialogModes.NO );
if (result.hasKey( charIDToTypeID('Pts ') )){
var i, ptList = result.getList( charIDToTypeID('Pts ') );
// The middle item in the list is an unused "midpoint" (currently == p0)
var p0 = getUnitPoint( ptList.getObjectValue(0) );
var p1 = getUnitPoint( ptList.getObjectValue(2) );
if (p0.fX < p1.fX)
return [p0, p1];
else
return [p1, p0];
}
else
return [];
};
function getUnitPoint(desc){
var x = desc.getUnitDoubleValue( charIDToTypeID('X ') );
var y = desc.getUnitDoubleValue( charIDToTypeID('Y ') );
function TPoint( x, y ){
this.fX = x;
this.fY = y;
}
return new TPoint( x, y );
};