The PhotoLine Scripted Actions Toolkit
Examples
emboss.js
emboss(135, 12, 8, 16, 5, 0);
function emboss(direction, height, width, intensity, curveShape, mode) {
// emboss PhotoLine script by Russell Cottrell
// direction: 0-360
// height: 5-90
// width: 0-100
// intensity: 0-100
// curveShape: 0-7 as below
// mode: 0 = Unsharp, 1 = Shade
// pattern is Create From Intensity
var pl = new ActiveXObject("PhotoLine.Application");
var doc = pl.ActiveDocument;
var hexStr;
direction = floatToHex(direction * (3.14159265358979/180));
height = floatToHex(height * (3.14159265358979/180));
width = byteToHex(width);
intensity = floatToHex(intensity);
switch(curveShape) {
case 0:
curveShape = "000000000000000000000000200000000000200000000000200000000001200000000001"; // straight
break;
case 1:
curveShape = "0000000000000000000000002afe0bc0ffff284121800000200000000001200000000001"; // straight raised
break;
case 2:
curveShape = "00000000000000000000000029c55fc00000314ce400ffff200000000001200000000001"; // straight lowered
break;
case 3:
curveShape = "000000000000200000000001200000000000200000000000200000000001000000000000"; // reversed
break;
case 4:
curveShape = "00000000000020000000000129c55fc0000027598e000000200000000001000000000000"; // reversed raised
break;
case 5:
curveShape = "0000000000002000000000012afe0bc0ffff2f7dbd00ffff200000000001000000000000"; // reversed lowered
break;
case 6:
curveShape = "000000000000000000000000207d11800000200000000001200000000001000000000000"; // arch
break;
case 7:
curveShape = "000000000000200000000001207d11800000000000000000200000000001200000000001"; // U
break;
}
mode = byteToHex(mode);
hexStr = "50686f746f204c696e6520416374696f6e7300000001000000000100ff9b0000000d456d" +
"626f7373416374696f6e00010100000000000000120201000000010000000400000001ff" +
"ffffff00000001000000e40001000000000000000000020000000000010000008c010000" +
"0000050000000200" +
mode +
"0000000000000006" +
direction +
"0000000100000006" +
height +
"0000000200000006" +
intensity +
"0000000300000004000000" +
width +
"000000040000003e01000000000000000002000100000001000000260003" +
curveShape +
"ffffffffffffffff00000002000000360100000000000000000200030000000100000006" +
"3243f6c0000000000002000000040000000300000003000000040000000affffffffffff" +
"ffffffffffff";
doc.DoOperation("Action", "Data", hexStr);
}
function floatToHex(num) {
var hexStr, s, exp, expStr, len, man, manStr;
if (num == 0)
hexStr = "000000000000";
else {
s = (num < 0 ? -1 : 1);
num = Math.abs(num);
exp = Math.floor(Math.log(num) / Math.log(2)) + 1;
expStr = exp;
if (expStr < 0)
expStr += 0x10000;
expStr = expStr.toString(16);
len = expStr.length;
for (var i=0; i<4-len; i++)
expStr = "0" + expStr;
man = Math.floor(s * (num / Math.pow(2, exp)) * Math.pow(2, 30));
if (s < 0)
man += 0x100000000;
manStr = man.toString(16);
hexStr = manStr + expStr;
}
return hexStr;
}
function byteToHex(num) {
var str = "00" + Math.round(num).toString(16);
return str.substr(str.length - 2);
}
layerToRGB.js
layerToRGB();
function layerToRGB() {
// Converts the active layer to an 8-bit RGB layer.
var pl = new ActiveXObject("PhotoLine.Application");
var doc = pl.ActiveDocument;
var base64Str;
base64Str = "UGhvdG8gTGluZSBBY3Rpb25zAAAAAQAAAAABAP+bAAAADkNvbnZlcnRBY3Rpb24AAgAAAAAA" +
"AAAAEgIBAAAAAQAAAAQAAAAB/////wAAAAEAAAACAAEAAAACAAAABAAAAAD/////";
doc.DoOperation("Action", "Data", base64Str);
}