Brush functions.

Photoshop Script Snippets - Note: Full Scripts go in the Photoshop Scripts Forum

Moderators: Tom, Kukurykus

Paul MR

Brush functions.

Post by Paul MR »

Code: Select all/////////////////////////////////////////////////////////////////////////////
//Usage:-
// selectBrush("Airbrush Pen Opacity Flow" );
// selectBrush("Soft Round 21 pixels" );
/////////////////////////////////////////////////////////////////////////////
function selectBrush(brushName) {
  function cTID(s) { return app.charIDToTypeID(s); };
  function sTID(s) { return app.stringIDToTypeID(s); };
var idslct = charIDToTypeID( "slct" );
    var desc4 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref2 = new ActionReference();
        var idBrsh = charIDToTypeID( "Brsh" );
        ref2.putName( idBrsh, brushName);
    desc4.putReference( idnull, ref2 );
    executeAction( idslct, desc4, DialogModes.NO );
};

/////////////////////////////////////////////////////////////////////////////
//Usage:-
// brushSize(29);
/////////////////////////////////////////////////////////////////////////////
function brushSize(size) {
  function cTID(s) { return app.charIDToTypeID(s); };
  function sTID(s) { return app.stringIDToTypeID(s); };
var idsetd = charIDToTypeID( "setd" );
    var desc5 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref1 = new ActionReference();
        var idBrsh = charIDToTypeID( "Brsh" );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref1.putEnumerated( idBrsh, idOrdn, idTrgt );
    desc5.putReference( idnull, ref1 );
    var idT = charIDToTypeID( "T   " );
        var desc6 = new ActionDescriptor();
        var idmasterDiameter = stringIDToTypeID( "masterDiameter" );
        var idPxl = charIDToTypeID( "#Pxl" );
        desc6.putUnitDouble( idmasterDiameter, idPxl, size );
    var idBrsh = charIDToTypeID( "Brsh" );
    desc5.putObject( idT, idBrsh, desc6 );
    executeAction( idsetd, desc5, DialogModes.NO );
};

/////////////////////////////////////////////////////////////////////////////
//Usage:-
// brushHardness (66);
/////////////////////////////////////////////////////////////////////////////
function brushHardness(size){
   if(parseInt(size) > 100) size = 100;
var idsetd = charIDToTypeID( "setd" );
    var desc15 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref7 = new ActionReference();
        var idBrsh = charIDToTypeID( "Brsh" );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref7.putEnumerated( idBrsh, idOrdn, idTrgt );
    desc15.putReference( idnull, ref7 );
    var idT = charIDToTypeID( "T   " );
        var desc16 = new ActionDescriptor();
        var idhardness = stringIDToTypeID( "hardness" );
        var idPxl = charIDToTypeID( "#Pxl" );
        desc16.putUnitDouble( idhardness, idPxl, size );
    var idBrsh = charIDToTypeID( "Brsh" );
    desc15.putObject( idT, idBrsh, desc16 );
executeAction( idsetd, desc15, DialogModes.NO );
};
Mr Maze

Brush functions.

Post by Mr Maze »

Hey thanks, but quick question. What does Code: Select allif(parseInt(size) > 100) size = 100; do?
Patrick

Brush functions.

Post by Patrick »

If you set the brush any larger than 100, it changes it to 100. I don't know for sure but I'd guess that is the max brush size for photoshop?

Patrick
Paul MR

Brush functions.

Post by Paul MR »

Yes Patrick is correct, the hardness of the brush maximum is 100, that line is there so that if someone enters a greater value the value is reduced to 100.
Mr Maze

Brush functions.

Post by Mr Maze »

Ok that makes sense. I understood the greater than >, but not the parseInt. Seems like a useful piece of code...
müller

Brush functions.

Post by müller »

parseInt is an explicit data type conversion.

Code: Select allvar mynum = "2.21430";

$.writeln( typeof mynum ); // string
$.writeln( mynum ); // 2.21430

mynum = parseInt( mynum );

$.writeln( typeof mynum ); // number
$.writeln( mynum ); // 2


..converts a string to an integer.
xbytor

Brush functions.

Post by xbytor »

Don't forget about this:

Code: Select allvar i = parseInt("0543");
$.writeln(i);     //  355

var i = Number("0543");
$.writeln(i);     //  543



I don't use parseInt unless I'm expecting to parse octal or hex numbers. It's burned me more than once.

-X
Mike Hale

Brush functions.

Post by Mike Hale »

Sorry to bump this but I just learned something that others may have already known.

To use parseInt correctly you have to know what base number the string represents.

Code: Select allvar i = parseInt("0543");// defaults to octal because string starts with 0
$.writeln(i);     //  355

var i = parseInt("0543",10);// force decimal
$.writeln(i);     //  543

var i = parseInt("0xff");// defaults to hex because string starts with 0x
$.writeln(i);     //  255

var i = parseInt("ff");// defaults to decimal
$.writeln(i);     //  NaN

var i = parseInt("ff",16);// force hex
$.writeln(i);     //  255

But you can't use parseInt to convert bases.

Code: Select allvar i = parseInt("0xff",10);
$.writeln(i);     //  0

Number also has defaults that may lead to errors.

Code: Select allvar i = Number("0543");// defaults decimal
$.writeln(i);     //  543, may be wrong result if string was octal

var i = Number(0543);// defaults to octal
$.writeln(i);     //  355

var i = Number("0xff");// defauts to hex
$.writeln(i);     //  255

var i = Number(0xff);// defauts to hex
$.writeln(i);     //  255

var i = Number("ff");// defaults to decimal
$.writeln(i);     //  NaN