Cíl lekce
Emboss.
Cílem této krátké lekce je vytvořit emboss. U embossingu dochází k vytlačování vzoru (obrazců) nebo textu do hloubky podkladu. Zárveň bych v této lekci ukázal práci s třídami ActionReference a ActionDescriptor a volání akce z panelu Akce v programu Adobe Photoshop.
Původní obrázek - obrázek 6.1
Emboss - obrázek 6.2
Využité třídy v této lekci
- Descriptor: třída pro popis akce.
- Konstanty: konstanty jako klíče pro ActionDescriptor.
ActionDescriptor, ActionReference
ActionDescriptor: udává záznam páru, klíč – hodnota pro akce, jako jsou například akce dostupné z panelu Akcí v prostředí. Je součástí Správce akcí. ActionReference: obsahuje data popisující odkazovanou akci. Referenční objekt akce je také součástí funkce Správce akcí.
Konstanty
Abych mohl provést akci emboss, musím do ActionDescriptoru vložit hodnoty klíče. Jedná se tedy o klíče: Angl úhel, Hght výška, Amnt množství. Dále použiji Embs pro identifikaci akce Emboss.
Funkce emboss
Nyní už jen zbývá vytvořit funkci emboss s parametry úhel, výška a množství. Získání ID událostí a vložení klíčů a hodnot do ActionDescriptoru pomocí metody putIteger(). Pak již mohu zavolat metodu executeAction s ID události emboss.
function emboss(inAngle, inHeight, inAmount){
//konstanty
var keyAngleID = app.charIDToTypeID('Angl');
var keyHeightID = app.charIDToTypeID('Hght');
var keyAmountID = app.charIDToTypeID('Amnt')
var eventEmbossID = app.charIDToTypeID('Embs');
//vložení hodnot do descriptoru
var filterDescriptor = new ActionDescriptor();
filterDescriptor.putInteger(keyAngleID, inAngle)
filterDescriptor.putInteger(keyHeightID, inHeight)
filterDescriptor.putInteger(keyAmountID, inAmount)
//provedení akce
app.executeAction(eventEmbossID, filterDescriptor)
}
Výsledný zdrojový kód
if (documents.length) {
emboss( 60, 10, 60);
}else{
alert("Žádný dokument není otevřený.", "Varování");
}
function emboss(inAngle, inHeight, inAmount){
//konstanty
var keyAngleID = app.charIDToTypeID('Angl');
var keyHeightID = app.charIDToTypeID('Hght');
var keyAmountID = app.charIDToTypeID('Amnt')
var eventEmbossID = app.charIDToTypeID('Embs');
//vložení hodnot do descriptoru
var filterDescriptor = new ActionDescriptor();
filterDescriptor.putInteger(keyAngleID, inAngle)
filterDescriptor.putInteger(keyHeightID, inHeight)
filterDescriptor.putInteger(keyAmountID, inAmount)
//provedení akce
app.executeAction(eventEmbossID, filterDescriptor)
}