Skriptujeme InDesign (25): Barvy poprvé - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



VSE

Skriptujeme InDesign (25): Barvy poprvé

Adobe InDesign sazba

11. září 2006, 00.00 | V tomto díle našeho seriálu se poprvé podíváme blíže na práci s barvami. Pozornost zde
přitom zaměříme na základní postupy, potřebné při vytváření barev a zpracování vzorníků.

V tomto díle našeho seriálu se poprvé podíváme blíže na práci s barvami. Pozornost zde přitom zaměříme na základní postupy, potřebné při vytváření barev a zpracování vzorníků.

Colors versus swatches

V dokumentech InDesignu se barvy mohou vyskytnout v podstatě dvěma způsoby: coby barvy nepojmenované (přidané pomocí paletky Colors-Barvy) a dále coby barvy vzorníkové (v UI InDesignu spravované přes paletku Swatches-Vzorník). V rámci objektového modelu je situace s barvami trochu odlišná, dá se říci že mírně mysteriózní (ani autority typu D. Saunderse zde tentokrát nejsou schopny vnést více světla do dané záležitosti).

Především jde o to, že i když jsou v modelu dostupné jak objekty color (a kolekce colors) a dále swatch (kolekce swatches), má základní význam spíše objekt color a celkově není pojetí daných objektů tak transparentní, jako v případě uživatelského rozhraní. Konkrétně tím míníme například to, že v kolekci colors nalezneme i všechny vzorníkové barvy, identifikace je zde daná vlastností name. Pokud má nějakou konkrétní hodnotu, je jí označení barvy na paletě vzorníku, daná barva tedy do vzorníku patří. Je-li daná hodnota nevyplněna (tj. v testech používáme srovnání s hodnotou ""), jedná se o barvu nepojmenovanou, ve vzorníku se nevyskytuje. Pokud ve skriptu přidáme barvu do kolekce colors, vytvoří se automaticky jako vzorek - políčko vzorníku (viz další výklad).

K vlastnostem a tvorbě barev

Každá barva má mimo jiné vlastnosti name (znovu připomeňme, že pojmenování znamená, že je barva zařazená mezi swatches), dále pak model (barvový model), space (prostor) a colorValue (určení hodnoty v daném barvovém prostoru). Model může být přímá barva (ColorMode.spot), procesní barva (ColorMode.process), registrační (ColorMode.registration) či mixed ink (ColorMode.mixedinkmode). Prostor může být RGB (ColorSpace.rgb), CMYK (ColorSpace.cmyk), LAB (ColorSpace.lab) a Mixed Ink - tedy míchaná barva (ColorSpace.mixedInk). Konečně colorValue představuje uspořádanou n-tici reálných čísel, určujících souřadnice barvy v daném barvovém prostoru (čtveřice udávající procentuální hodnoty pro CMYK, trojice celočíselných hodnot vždy od 0 do 255 pro RGB, trojice s hodnotami 0-100, -127 až 127 a -127 až 127 pro LAB, u Mixed Ink je situace s určováním hodnot odlišná a budeme se ji věnovat na jiném místě výkladu).

Colors i swatches mohou být definovány jak pro aplikaci (tj. jde o barvy a vzorky dostupné pro každý dokument), tak pro dokument. Dané skutečnosti odpovídá vlastnost parent (rodič) pro color či swatch, jež vrací buďto hodnotu app nebo document.

Přidání barev do vzorníku můžeme demonstrovat následujícími příklady:

var myDoc=app.activeDocument;

//Do dokumentu přidá CMYK barvu
try{myColor=myDoc.colors.add({space: ColorSpace.cmyk, colorValue: [0,100,0,10], name: "Pokusná CMYK barva"})}
    catch(e){alert(e)};

//Do dokumentu přidá RGB barvu
try{myColor=myDoc.colors.add({space: ColorSpace.rgb, colorValue: [0,255,171], name: "Pokusná RGB barva"})}
    catch(e){alert("Barva daného jména již zřejmě existuje")};

//Na úrovni aplikace přidá LAB barvu
try{myColor=app.colors.add({space: ColorSpace.lab, colorValue: [90,127,-127], name: "Pokusná LAB barva"})}
    catch(e){alert(e)};

Pokud přidáme barvu bez toho, že bychom určili cokoli jiného, nežli pojmenování, použijí se hodnoty aktuálně nastavené pro výplň či tah na paletě nástrojů InDesignu. Danou skutečnost lze použít k různým diagnostikám, jak dokládá následující skript:

var myDoc=app.activeDocument;

//Do proměnné myTestColor načteme aktuální barvu pro výplň/tah určenou na paletce nástrojů.
//Zkusíme přidat barvu jménem Test a načíst ji do proměnné myTestColor.
//Pokud Test existuje, barvu "resetujeme" nebo skript předčasně ukončíme.
try{myTestColor=myDoc.colors.add({name: "Test"})}
    catch(e){if(confirm("Barva jménem Test asi existuje, mám resetovat její nastavení?"))
                {myDoc.colors.item("Test").remove();
                 var myTestColor=myDoc.colors.add({name: "Test"})}
                else{exit()}};

//Zde provedeme nějaké testy, přiřazení apod. s použitím hodnot v proměnné myTestColor
//Například:
if(myTestColor.space==ColorSpace.rgb){alert("Chcete opravdu obarvovat RGB barvou?")}


//Zde barvu "Test" odstraníme
try{myDoc.colors.item("Test").remove()}catch(e){};

Naskýtá se samozřejmě otázka, jak do dokumentu přidat barvy ze vzorníků, kterých je s InDesignem dodávána rozsáhlá sada. Zde lze použít metody importAdobeSwatchbookProcessColor a importAdobeSwatchBookSpotColor. V obou případech je jako parametr daných metod použito jméno dané barvy, které lze jinak zjistit přes UI InDesignu (paletka Vzorník-Swatches, dialog vyvolaný příkazem pro přidání nového políčka-swatche). Příklad použití:

var myDoc=app.activeDocument;

//Přidá přímou barvu Pantone
myDoc.importAdobeSwatchbookSpotColor("PANTONE 871 C");

K dispozici je dále možnost načíst do dokumentu nebo aplikace vzorník z určeného dokumentu (metoda loadSwatches - parametrem je zde jméno souboru /dokument InDesignu nebo soubor typu Adobe Swatch Exchange/ se vzorníkem), dále lze naopak uložit vybrané barvy do souboru (metoda saveSwatches, parametry jsou název souboru a pole vzorků).

var myDoc=app.activeDocument;

//Načte vzorníky z dokumentu "Vrstvypok"
myDoc.loadSwatches(File("/c/clanky/skriptid/vrstvypok.indd"));

//Uloží všechny políčka ze vzorníku do dokumentu "Vzorky.ase"
myDoc.saveSwatches(File("/c/clanky/skriptid/vzorky.ase"),myDoc.swatches);


//Uloží všechny RGB políčka ze vzorníku do dokumentu "VzorkyRGB.ase"
//Všimněte si, jakým způsobem zjišťujeme barvové hodnoty políčka (přes vlastnost properties)
var myDocSWRGB=new Array();

for(i=0;i<myDoc.swatches.length;i++){if(myDoc.swatches[i].properties.space==ColorSpace.rgb){myDocSWRGB.push(myDoc.swatches[i])}}
myDoc.saveSwatches(File("/c/clanky/skriptid/vzorkyRGB.ase"),myDocSWRGB);

Ještě více barvách vzorníku

V InDesignu jsou k dispozici vždy čtyři políčka vzorníku určená ke speciálním účelům. "None" (v českém InDesignu "Žádná") zde slouží k odstranění barev z objektů, tj. aplikujeme-li jej na výplň či tah objektu, stane se tento průhledným (viz náš výklad v příštím díle). "Black" ("Černá") určuje tiskařskou černou, tj. tu barvu, která se v CMYK bude tisknout na černý plát. Registration ("Registrační") pak barvu, jež se bude tisknout na všech plátech. Konečně je zde vzorek Paper ("Papír"), který se narozdíl od předchozích tří dá měnit. Jedná se o barvu, kterou je obarveno pozadí dokumentu. Změna zde dovolí použít specifické pozadí (barva, šeď apod.) pro testování vzhledu tiskoviny. Příklad změny nastavení daného vzorku:

var myDoc=app.activeDocument;

//V českém ID se daný vzorek jmenuje "Papír"
myDoc.swatches.item("Paper").properties={model: ColorModel.process, space: ColorSpace.cmyk, colorValue: [20,40,50,0]};

Obnovení na výchozí hodnotu vypadá následovně:

var myDoc=app.activeDocument;

myDoc.swatches.item("Paper").properties={model: ColorModel.process, space: ColorSpace.cmyk, colorValue: [0,0,0,0]};

K dispozici jsou dále metody pro manipulaci se vzorky, které mají své odpovídající protějšky v UI InDesignu. Již jsme si takto ukázali práci s metodami add pro přidání a remove pro odstranění vzorku. Další zde je metoda merge objektu swatch, sloužící ke sloučení vzorků, tedy odstranění jedné či více vybraných barev a jejich nahrazení barvou určenou. Parametrem pro tuto metodu je pole vzorků, které se mají odstranit, metoda se použije pro vzorek, kterým chceme provést nahrazení.

//Všechny přímé barvy nahradíme vzorkem "Black" (pro český ID použijte "Černá")
var myDoc=app.activeDocument;

//Pole pro přímé barvy
var mySpotCol=new Array();

//Naplnění pole mySpotCol přímými barvami z dokumentu
for(i=0;i<myDoc.colors.length;i++){if(myDoc.colors[i].model==ColorModel.spot){mySpotCol.push(myDoc.colors[i])}};

//Sjednocení políček
myDoc.swatches.item("Black").merge(mySpotCol);

K dispozici je i vlastnost unusedSwatches objektu document, jež vrací pole všech barev vzorníku, které nejsou v daném dokumentu použity. Využít lze danou metodu například k odstranění všech nepoužitých vzorků, například sloučením se vzorkem "Black" ("Černá"):

//Všechny nepoužité vzorky odstraníme a nahradíme vzorkem "Black" (pro český ID použijte "Černá")
var myDoc=app.activeDocument;

//Pole pro nepoužité vzorky
var mySpotCol=myDoc.unusedSwatches;

//Sjednocení políček
myDoc.swatches.item("Black").merge(mySpotCol);

Zmínit se lze ještě jednou o metodě remove pro odstranění barev. Ta totiž nabízí coby volitelný parametr barvu, kterou se má daná barva zaměnit. Použití může být třeba následující:

//Všechny nepoužité vzorky odstraníme a nahradíme vzorkem "Black" (pro český ID použijte "Černá")

//Vzorek "C=0 M=100 Y=0 K=0" nahradí vzorkem "My Magenta"
var myDoc=app.activeDocument;

//Tvorba vzorku "My Magenta"
try{myDoc.colors.add({name: "My Magenta", model: ColorModel.process, space: ColorSpace.cmyk, colorValue: [0,100,0,0]})}catch(e){};

//Odstranění-náhrada vzorku
myDoc.swatches.item("C=0 M=100 Y=0 K=0").remove(myDoc.swatches.item("My Magenta"));

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » VSE  

 » Rubriky  » Go verze  

 » Rubriky  » Sazba  

 » Rubriky  » Polygrafie  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: