Skriptujeme InDesign (27): Barvy potřetí - 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:

Soutěž

Sponzorem soutěže je:

Saal Digital

 

Jaký největší formát fotoknihy v řadě Professional Line ve formátu na šířku lze ve standardní nabídce Saal Digital Fotoservice objednat? Nápověda: Logo sponzora soutěže

V dnešní soutěži hrajeme o:



Software

Skriptujeme InDesign (27): Barvy potřetí

Adobe InDesign sazba

16. října 2006, 00.00 | I tento díl našeho výkladu se zabývá skriptováním barev. Tentokrát se zaměříme na práci s přechody, smíchanými barvami a nastaveními správy barev.

I tento díl našeho výkladu se zabývá skriptováním barev. Tentokrát se zaměříme na práci s přechody, smíchanými barvami a nastaveními správy barev.

Přechody

Důležitým prvkem spojeným s využitím barev v InDesignu jsou přechody, používané ke stylizování objektů. V InDesignu jsou spravovány jako objekty typu gradient, odpovídající kolekce náleží k aplikaci a jednotlivým dokumentům, koncepce práce je hodně podobná práci se vzorníkovými barvami, kterou jsme popsali dříve.

Vytvoření přechodu je spíše záležitostí vizuální interakce, je ale každopádně možné s pomocí skriptů, přičemž k dispozici jsou veškerá nastavení jako v případě normálního uživatelského rozhraní (palety Vzorník a Přechod). Myslet je pak třeba na to, že narozdíl od jiných prvků dovoluje InDesign (podle všeho jen na úrovni skriptování, ale přece jen) vytvořit vícero přechodů se stejným pojmenováním, obvykle bude vhodné takovýmto duplicitám v rámci skriptování zabránit, ovšem pozor, pokud byl již přechod aplikován na nějaký objekt, dojde k odstranění této jeho aplikace. Zde může pomoci skutečnost, že pokud zadáme u příslušné metody remove jako volitelný parametr název existujícího políčka vzorníku, provede se odpovídající nahrazení, následně se pak toto políčko obdobně nahradí nově vytvořeným přechodem. Ukažme si nyní principy tvorby přechodu (spojeného s dokumentem) v následujícím příkladu, ve kterém ošetřujeme i výše naznačenou duplicitu:

//Vytvoříme a nastavíme políčko přechodu "My Gradient" pro aktivní dokument
var myDoc=app.activeDocument;


//--Tento úsek kódu použijte, pouze pokud potřebujete ošetřit duplicitu políček
//Pokud políčko daného názvu v dokumentu již existuje, odstraníme jej,
//jeho výskyt nahradíme přechodným políčkem, které se použije pro případ,
//že odstraňovaný přechod byl již někde v dokumentu použit.
//Tvorba přechodného políčka
try{myDoc.gradients.add({name: "My TMPGrad"})}catch(e){};
//Odstranění všech existujících políček o stejném názvu jako má námi vytvářený přechod
for(i=myDoc.gradients.length-1;i>=0;i--){
    if(myDoc.gradients[i].name=="My Gradient"){myDoc.gradients[i].remove(myDoc.gradients.item("My TMPGrad"))}
//--Konec první části úseku kódu pro ošetření duplicity
                                        }
//Tvorba přechodu zadaného názvu, přechod bude radiální
var myGrad=myDoc.gradients.add({name: "My Gradient", type: GradientType.radial})

//Nyní doladíme zarážky, barvy zadaných názvů musí existovat, ošetření zde neřešíme
//location (reálné číslo z intervalu 0 až 100) určuje umístění zarážky
//midpoint (reálné číslo z intervalu 13-87) určuje prostřední zarážku
myGrad.gradientStops[0].properties={stopColor: myDoc.colors.item("Red"), location: 0, midpoint: 20}
myGrad.gradientStops[1].properties={stopColor: myDoc.colors.item("Black"), location: 100, midpoint: 70}

//Výchozí nastavení přechodu počítá s dvěma zarážkami, lze ale přidávat další
myGrad.gradientStops.add();
myGrad.gradientStops[2].properties={stopColor: myDoc.colors.item("Yellow"), location: 80, midpoint: 34}


//--Tento úsek kódu použijte, pouze pokud potřebujete ošetřit duplicitu políček
//Nakonec ještě provedeme záměnu přechodného vzorníkového políčka políčkem "My Gradient",
//zajistí se tím korektní ošetření dosavadních aplikací odstraněných políček daného názvu v dokumentu
myDoc.gradients.item("My TMPGrad").remove(myDoc.gradients.item("My Gradient"))
//--Konec druhé části úseku kódu pro ošetření duplicity

skriptidcol3-1f.jpg

Aplikace přechodu je pak možná jak na výplň, tak tah daného objektu, doladit lze přitom parametry (začátek, konec, úhel přechodu), které se jinak v prostředí InDesignu nastavují s pomocí nástroje Přechod. To dává možnost automatizovaného nastavení na základě výpočtů, jak si ukážeme v následujícím příkladu:

//Na výběr aplikuje přechod "My Gradient", pak nastaví parametry na základě geometrie výběru
//Předpokládáme, že je výběr neprázdný a obsahuje stránkový objekt
var myDoc=app.activeDocument;
var mySel=app.selection[0];

//Funguje pouze s objektem typu Rectangle
if(mySel.constructor.name!="Rectangle"){alert("Nevybrali jste vhodný objekt, změňte výběr a spusťte skript znovu");exit();}
//Do proměnné mySelGB umístíme rozměry výběru
var mySelGB=mySel.geometricBounds;


//Aplikuje výplň
mySel.fillColor=myDoc.gradients.item("My Gradient");
//Nastaví počátek přechodu na levý horní roh výběru
//všimněte si záměny pořadí souřadnic, mySelGB je má [y1,x1,y2,x2]
//gradientFillStart pak x1,y1
mySel.gradientFillStart=[mySelGB[1],mySelGB[0]];
//Uhel pod kterým je přechod nastaven (hodnota 0-360)
mySel.gradientFillAngle=180;
//Délka přechodu (určuje koncový bod)
mySel.gradientFillLength="1cm";

//Obdobné parametry pro tahy
//mySel.strokeColor
//mySel.gradientStrokeStart
//mySel.gradientStrokeAngle
//mySel.gradientStrokeLength

skriptidcol3-2f.jpg

Smíchané barvy

Skriptování samozřejmě dovoluje vytvářet i smíchané barvy (mixed inks). Připomeňme, že se jedná o barvu získanou kombinováním alespoň jedné barvy přímé s dalšími barvami přímými a procesními, což se využívá zejména při dvoubarevných úlohách. Míchaná barva je objektem typu mixedInk a vzniká smícháním barev určených odpovídajícím seznamem inkList, seznam inkPercentages pak určuje množství jednotlivých barev. Více už následující příklad:

//Ukázka míchání barev
var myDoc=app.activeDocument;

//Vytvoříme přímou barvu odpovídající procesní barvě Magenta
try{myDoc.colors.add({name: "mySpotM", model: ColorModel.spot, space: ColorSpace.CMYK, colorValue: [0,100,0,0]})}
    catch(e){alert("Barva mySpotM již existuje");exit()};
//Pro snazší použití ji přiřadíme proměnné
var mySpotColor=myDoc.inks.item("mySpotM");

//Do proměnné myBlackColor přiřadíme procesní černou
var myBlackColor=myDoc.inks.item("Process Black");

//Provedeme smíchání do barvy s názvem MyMix
//Černé bude 40 procent, procesní magenty 100 procent
try{myDoc.mixedInks.add([myBlackColor, mySpotColor],[40,100],{name:"MyMix"})}
    catch(e){alert("MyMix již existuje")};

skriptidcol3-3f.jpg

Obdobně je k dispozici objekt mixedInkGroup pro tvorbu skupiny míchaných barev. Jeho využití zde podrobněji popisovat nebudeme, pro bližší popis stačí sáhnout po referenční příručce InDesignu (s. 886-888). Ke snazší orientaci méně zkušeného uživatele každopádně uveďme, že princip vytvoření skupiny je podobný jako ve výše popsaném míchání barev, základem je zde tedy použití metody add pro kolekci mixedInkGroups, ta má obecný tvar

add(inkList,inkPercentages,repeatValues,incrementValues)

kde inkList je seznam míchaných barev, inkPercentages jejich podíl (oba parametry jsou tedy pole stejně jako výše u mixedInks), repeatValues určuje (opět v podobě pole) pro jednotlivé barvy počet nových smíchaných barev a incrementValues pak přírůstek barvy pro každý nový odstín. Nastavení zde tedy odpovídá příslušnému uživatelskému dialogu InDesignu. Konkrétně tedy kód:

var myDoc=app.activeDocument;
myDoc.mixedInkGroups.add([myDoc.inks.item("Process Black"),myDoc.inks.item("MySpotM")],[10,100],[4,1],[20,10]);

generuje obdobný výsledek jako následující dialog:

skriptidcol3-4f.jpg

Správa barev

Skriptování dovoluje prakticky bezezbytku kontrolovat nastavení správy barev. Základem je zde odpovídající sada nastavení colorSettings objektu app. Další přiřazení jsou pak možné na úrovni dokumentu a jiné pak i u jednotlivých importovaných obrázků.

V prvním případě odpovídají nastavení příslušnému dialogu uživatelského rozhraní, voleb je tedy skutečně hodně a my se budeme zabývat pouze ukázkou nastavení některých z nich. (Pro podrobný popis viz. referenční příručka, zejména s. 648-649) Začít můžeme u změny kompletní konfigurace správy barev:

app.colorSettings.cmsSettings="Monitor Color";

skriptidcol3-5f.jpg

Ukázka nastavení způsobu zpracování profilů u RGB a CMYK barev:

app.colorSettings.cmykPolicy=ColorSettingsPolicy.preserveEmbeddedProfiles;
app.colorSettings.rgbPolicy=ColorSettingsPolicy.preserveEmbeddedProfiles;

Vypnutí upozornění na problémy s profily při otevírání dokumentu lze použít třeba při hromadné zpracování dokumentů (tisk apod.), kdy nás příslušná upozornění nezajímají (nebo kdy můžeme provést odpovídající úpravu nastavení v rámci daného skriptu):

//Uložíme původní hodnoty
var myMissingOld=app.colorSettings.missingAskWhenOpening;
var myMismatchOld=app.colorSettings.mismatchAskWhenOpening;


//InDesign se nebude ptát při nesouladu profilů či jejich absenci
app.colorSettings.mismatchAskWhenOpening=false;
app.colorSettings.missingAskWhenOpening=false;


//
//Provedou se požadované akce, např. hromadné zpracování dokumentů v cyklu
//ve stylu otevření-zpracování-uzavření
//

//Obnoví se původní hodnoty
app.colorSettings.missingAskWhenOpening=myMissingOld;
app.colorSettings.mismatchAskWhenOpening=myMismatchOld;

Kontrola profilů na úrovni dokumentu:

var myDoc=app.activeDocument;
myDoc.rgbProfile="Beta RGB";
myDoc.cmykProfile="Euroscale Coated v2";
myDoc.solidColorIntent=RenderingIntent.absoluteColorimetric;

skriptidcol3-6f.jpg

Kontrola profilů na úrovni importovaných obrázků (připomeňme, že nefunguje u EPS a PDF souborů):

//Vyhledá všechny výskyty obrázků s určitým přiřazeným profilem
//a provede změnu profilu a rendering intentu
var myDoc=app.activeDocument;


for(i=0;i<myDoc.links.length;i++){
    if(myDoc.links[i].parent.constructor.name=="Image"){
        if(myDoc.links[i].parent.profile=="Adobe InDesign Default CMYK"){
            myDoc.links[i].parent.profile="Euroscale Coated v2";
            myDoc.links[i].parent.imageRenderingIntent=RenderingIntent.absoluteColorimetric;
            }
        }
}

Inspiraci pro mnohé další úpravy či diagnostiky na úrovni obrázků lze získat z našeho dřívějšího výkladu.

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

Tématické zařazení:

 » Rubriky  » VSE  

 » Rubriky  » Go verze  

 » Rubriky  » Sazba  

 » Rubriky  » Polygrafie  

 » Rubriky  » Software  

 

 

 

 

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

Uživatelské jméno:

Heslo: