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:
-
30. září 2024
-
4. října 2024
-
14. listopadu 2024
-
11. prosince 2024
Sazba
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
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
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")};
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:
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";
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;
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):
- Skriptujeme InDesign (1): Úvod
- Skriptujeme InDesign (2): První kroky
- Skriptujeme InDesign (3): Základy JavaScriptu poprvé
- Skriptujeme InDesign (4): Základy JavaScriptu podruhé
- Skriptujeme InDesign (5): Dokumenty poprvé
- Skriptujeme InDesign (6): Dokumenty podruhé
- Skriptujeme InDesign (7): Výstup
- Skriptujeme InDesign (8): Stránky
- Skriptujeme InDesign (9): Stránkové objekty poprvé
- Skriptujeme InDesign (10): Stránkové objekty podruhé
- Skriptujeme InDesign (11): Dialogy
- Skriptujeme InDesign (12): Text poprvé
- Skriptujeme InDesign (13): Text podruhé
- Skriptujeme InDesign (14): Text potřetí
- Skriptujeme InDesign (15): Hledání a záměny poprvé
- Skriptujeme InDesign (16): Hledání a záměny podruhé
- Skriptujeme InDesign (17): Regulární výrazy
- Skriptujeme InDesign (18): Tabulky poprvé
- Skriptujeme InDesign (19): Tabulky podruhé
- Skriptujeme InDesign (20): Obrázky poprvé
- Skriptujeme InDesign (21): Obrázky podruhé
- Skriptujeme InDesign (22): Obrázky potřetí
- Skriptujeme InDesign (23): ESTK aneb jak na editaci a ladění skriptů
- Skriptujeme InDesign (24): Vrstvy
- Skriptujeme InDesign (25): Barvy poprvé
- Skriptujeme InDesign (26): Barvy podruhé
- Skriptujeme InDesign (27): Barvy potřetí
- Skriptujeme InDesign (29): Metadata podruhé
- Skriptujeme InDesign (30): Návěští
- Skriptujeme InDesign (31): Okna
- Skriptujeme InDesign (32): Reakce na události
- Skriptujeme InDesign (33): Novinky v CS3 verzi
Tématické zařazení:
» Rubriky » Polygrafie
-
14. května 2014
Jak vkládat snímky do galerií a soutěží? Stručný obrazový průvodce
-
23. dubna 2014
Konica Minolta přenesla výhody velkých zařízení do kompaktních modelů
-
12. června 2012
-
9. dubna 2014
-
5. ledna 2017
-
6. září 2004
OKI snižuje ceny barevných laserových tiskáren C3100 a C5200n
-
13. května 2004
-
19. ledna 2004
QuarkXPress Passport 6: předvedení nové verze na konferenci Apple Forum 27.1.2004
-
6. února 2001
-
30. listopadu 2014
Nový fotoaparát α7 II: první plnoformát s pětiosou optickou stabilizací obrazu na světě
-
14. října 2024
-
10. prosince 2024