Přiblížení grafiky uživateli podle potřeb

lekce 2.

Automatizování úloh v Adobe Photoshop

Pomocí skriptovacího jazyka JavaScript

Cíl lekce

Jako první úvodní lekci jsem vybral přiblížení obrázku v programu Adobe Photoshop podle zadaných hodnot. Jedná se o jednoduchý skript, který pracuje pouze s jednou třídou a ID (identifikátorem) dané události, tedy výčtovým typem z tabulky. Skript se bude skládat pouze z několika řádků kódu, ale tato ukázka se může libovolně zakomponovat do složitějších skriptů při nastavování prostředí, například pří nastavování jednotek, či pravítka skriptem. Viz. bakalářská práce kapitola Preferences.

opened

Výchozí nastavení - obrázek 2.1

zoomIn

Přiblížené nastavení - obrázek 2.2

zoomOut

Oddálené nastavení - obrázek 2.3

FitToScreen

Nastavení pro zobrazení celého obrázku na obrazovce - obrázek 2.4

actual

Nastavení zobrazení vzhledem k pixelům, tedy 100% - obrázek 2.5


Využité třídy v této lekci

  • Application: využiji metodu runMenuItem(), která je součástí této třídy.

Zjištění zda-li je otevřený soubor

Jako první krok potřebuji zjistit, jestli je otevřený soubor na který budu přilížení aplikovat. V případě, že bych tuto možnost neošetřil, vývojové prostředí by zahlásilo chybu, že kód nelze provést. Tento problém tedy jednoduše ošetřím podmínkou (if), ve které se zeptám jestli atribut documents třídy Application má velikost nula. V případě že ano, informuji uživatele dialogovým oknem, pokud ne, pokračuji dále po větvi (else).


//je otevřený soubor? - velikost souboru je nula?
if(documents.length == 0){
	//informuj uživatele dialogem
    alert("Není otevřený žadný soubor", "Nezdařilo se!");
}else{
	...
}
				

Získání Event ID

Metoda runMenuItem() vyžaduje v parametru ID události kterou má spustit. Toto ID mohu získat z převedení čtyřmístného stringu (řetězového datového typu) z tabulky s názvem Event ID Codes, kterou společnost Adobe přikládá jako dodatek ke svým skriptovacím příručkám. Musím ovšem říci, že tato tabulka nezahrnuje zcela všecky ID událostí a velice mnoho dalších jich je možno najít na webových fórech a podobně. Jestli tedy již mám získaný ID kód události, kterou potřebuji, musím ji převést na identifikační kód v číslicové podobě. K tomu poslouží jednoduchá funkce, kde použiji metodu charIDToTypeID(params), která vrací numerické číslo události. Funkce je vidět níže.


//získej event ID z řetězce
function getEventID(stringID) {
    return app.charIDToTypeID(stringID);
}
				

Využití metody runMenuItem()

Na závěr, kdy již mám vše připravené mi stačí jen zavolat metodu runMenuItem(), kde do parametru vložím metodu pro získání ID, která obsahuje řetězec události, jaká se má provést. Pro zobrazení grafiky s ohledem na velikost obrazovky využiji řetězec "FtOn", pro oddálení "ZmOt", přiblížení "ZmIn" a pro zobrazení obrázku vzhledem k pixelovým bodům "ActP".


runMenuItem(getEventID("FtOn"));

runMenuItem(getEventID("ZmOt"));

runMenuItem(getEventID("ZmIn"));

runMenuItem(getEventID("ActP"));

Uspání vlákna

Pro přehlednost mezi provedením jednotlivých akcí, použiji globální funkci na uspání vlákna. Pokud bych tuto funkci nepoužil, příkazy by se provedly okamžitě a uživatel by nepostřehl, že se některý z příkazů vůbec provedl. Zavoláním tedy funkce sleep(), která je součástí globálního objektu $, uspím vlákno na daný počet milisekund.

$.sleep(1000);

Výsledný zdrojový kód


function getEventID(charID) {
    return app.charIDToTypeID(charID);
}

if (documents.length == 0) {
    //informuj uživatele dialogem
    alert("Není otevřený žadný soubor", "Nezdařilo se!");

} else {
    runMenuItem(getEventID("FtOn"));

    //Uspání vlákna na jednu vteřinu
    $.sleep(1000);
    //Provedení přiblížení
    runMenuItem(getEventID("ZmOt"));

    $.sleep(1000);
    runMenuItem(getEventID("ZmIn"));

    $.sleep(1000);
    runMenuItem(getEventID("ActP"));
}