Tvorba zásuvných modulů pro Adobe Photoshop. Jiří Skála, 2006

Podobné dokumenty
Postup získání licence programu DesignBuilder v4

Programátorská příručka

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

IUJCE 07/08 Přednáška č. 6

Java a XML. 10/26/09 1/7 Java a XML

INSTALAČNÍ POSTUP PRO APLIKACI ELIŠKA 4

Sentech AL 7000 C. Instalace a ovládání programu BREATH

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Metody připojování periferií

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

Uživatelská příručka

MATURITNÍ PRÁCE dokumentace

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Programování v C++ 1, 1. cvičení

eretail.cz MANUÁL PRO PARTNERY

Analýza dat na PC I.

Přechod na Firebird 3. Popis migrační utility

Generické programování

Velký křízovkářský slovník 4.0 (VKS) Instalace programu

Zranitelnosti ovladačů jádra v praxi Martin Dráb martin.drab@ .cz

Setkání uživatelů programu SSB2000, Skalský dvůr, SSB2000 bez hranic

NASTAVENÍ PROGRAMU EVIDENCE AUTOBAZARU PRO OS VISTA, WIN7 a WIN8 LOKÁLNÍ INSTALACE (PRO 1 POČÍTAČ)

Uživatelská příručka

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Program SeleCAD. pro AutoCAD LT a FULL. Instalace a registrace programu

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Téma 10: Správa hardwarových zařízení a ovladačů II

EPLAN Electric P8 2.7 s databázemi na SQL serveru

4.2. Odhlásit se Šifrování hesla Sepnutí výstupních relé Antipassback Zobrazení všech dat...

Správa zařízení Scan Station Pro 550 a Servisní nástroje zařízení Scan Station

Základy programování (IZP)

Nastavení provozního prostředí webového prohlížeče pro aplikaci

Rámcový manuál pro práci s programem TopoL pro Windows

Opakování programování

Pro Windows 98. Pro rozhraní USB

Obsah. Základy práce s databází 13. Tabulky 43. Obsah. Úvod 9 Poděkování 12

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Recognoil RRW Manager rychlý návod k obsluze

První přihlášení do datové schránky krok za krokem

Programování ve Windows Dynamické knihovny. Andrea Číková Martin Osovský

BRICSCAD V15. Licencování

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Sentech AL Instalace a ovládání programu BREATH

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

Novinky v programu Účtárna 2.05

Instalace a první spuštění programu.

Základy programování (IZP)

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1

Základní popis Toolboxu MPSV nástroje

Value - Powerline ethernet adaptér, 85Mbps Katalogové číslo:

Frilo Control Center správa projektů

Uživatelská příručka Autor: Martin Fiala

APS Administrator.OP

Cvičení č. 2. Komunikace mezi procesy Program Hodiny. 4 body

Artlingua Translation API

Návod pro řešení typických problémů se stabilitou AMČR

11. Implementace ovladače ve Windows

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

Certifikační autorita EET Modelové postupy vytvoření souboru žádosti o certifikát

Postup práce v KDS 1

1. Téma 12 - Textové soubory a výjimky

Zahájit skenování ze skla tiskárny nebo z automatického podavače dokumentů (ADF). Přistupovat k souborům se skeny uloženým v poštovní schránce.

Komponenty v.net. Obsah přednášky

CineStar Černý Most Praha

Zápis programu v jazyce C#

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

2014 Electronics For Imaging. Informace obsažené v této publikaci jsou zahrnuty v Právním upozornění pro tento produkt.

Operační systémy. Cvičení 4: Programování v C pod Unixem

TMU. USB teploměr. teploměr s rozhraním USB. měření teplot od -55 C do +125 C. 26. května 2006 w w w. p a p o u c h. c o m

Knihovna DataBoxLib TXV první vydání prosinec 2010 změny vyhrazeny

Možnosti využití dat RÚIAN poskytovaných VDP pomocí webových služeb

Ovladač Fiery Driver pro systém Mac OS

PREPROCESOR POKRAČOVÁNÍ

Průvodce instalací modulu Offline VetShop verze 3.4

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

Vyhledávač datových referencí. Dokumentace

Manuál Multitag čtečka

IFTER-EQU Instalační manuál

AutoPEN, Ing. Lubomír Bucek, Halasova 895, Liberec 6 autopen@volny.cz ,

Postup práce v KDS 1

Použití stahovací služby dle INSPIRE v praxi v progamu QGIS

Úvod...12 Součásti aplikace Použité konvence... 13

ADT/ADS = abstraktní datové typy / struktury

K8055D.DLL v Technická příručka. Úvod. Obecné. Konvence volání. Nastavení adresy karty

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Datacard. Instrukce k aktualizaci firmware tiskáren. Aktualizační aplikace pro operační systémy Windows

1. Instalace programu LUPA

JAY Systém TELwork s.r.o. JAY Systém Klient. Uživatelská příručka ( ) JAYSystem Klient - Uživatelská příručka.docx Stránka: 1 / 15

Výběr a instalace mobilního terminálu. II. Používání čárových kódů v katalogu položek. III. Tisk etiket s čárovými kódy

UJO Framework. revoluční architektura beans. verze

Podpora skriptování v Audacity

P D S - 5 P. Psychologický diagnostický systém. Instalační manuál. Popis instalace a odinstalace programu Popis instalace USB driverů

Uživatelský manuál. A4000 Download

Windows a real-time. Windows Embedded

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Další nutný soubor je laydiv.js, ve kterém jsou uloženy funkce pro zobrazování virů na ploše a funkce pro odkaz na Teachers Guide.

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016

Transkript:

Tvorba zásuvných modulů pro Adobe Photoshop Jiří Skála, 2006 js.1@seznam.cz

O pluginech obecně programové moduly rozšíření stávající aplikace (plugin host) přidávány nebo modifikovány nezávisle první představení pluginů Apple: HyperCard lepení modulů přímo do aplikace Silicon Beach: Digital Darkroom, SuperPaint moduly jako samostatné soubory Adobe: Photoshop výhody uživatelské, programátorské aplikace poskytuje pluginu prostředí (I/O, GUI, správa paměti,...) 2/25

Pluginy pro Photoshop Macintosh Windows typy pluginů automation color picker import, export extension filter format parser selection 3/25

Rozhraní pluginu DLL knihovna provedení pluginu několik volání jediný vstupní bod DLLExport MACPASCAL void PluginMain( const short selector, void* pluginparamblock, long* plugindata, short* result) selector = 0 místo pluginparamblock předán AboutRecord zobrazit okno O pluginu 4/25

Hlášení chyb nula (noerr) všechno v pořádku kladné číslo chyba, hlášení zobrazil plugin záporné číslo chyba, hlášení zobrazí plugin host symbolické konstanty, chybové kódy OS 5/25

Filter Parameter Block struktura FilterRecord obousměrná komunikace mezi pluginem a hostem výběr nejdůležitějších položek parameters imagesize, imagemode, planes, depth maxspace, bufferspace filterrect, in/outrect, in/outdata in/outtilewidth, in/outtileheight in/outloplane, in/outhiplane, wantsabsolute havemask, maskrect, maskdata input/maskrate, input/output/maskpadding in/out/maskrowbytes ukazatele na funkce 6/25

Volání filtr pluginu Parameters FilterRecord neúplný inicializovat parametry, měly by být nezávislé na formátu obrazu nastavit značku, aby se zobrazil konfigurační dialog Filter Last Filter filterselectorparameters filterselectorprepare filterselectorstart Prepare FilterRecord neúplný stanovit paměťové nároky maxspace, bufferspace dostupná paměť nemusí být v celku filterselectorcontinue filterselectorfinish 7/25

Volání filtr pluginu Start ověřit parametry (filterbadparameters) zkontrolovat formát obrazu (filterbadmode) zjistit dostupnost funkcí (errpluginhostinsufficient) pokud je potřeba, zobrazit dialog s nastavením (usercancelederr) nastavit parametry zpracování obrazu wantsabsolute = true; inputrate = (int32)(1 << 16); inputpadding = pluginwantsedgereplication; 8/25

Volání filtr pluginu Start zpracování obrazu po blocích (intilewidth, intileheight) stanovit rozsah vstupu / výstupu (in/outrect, maskrect, in/outloplane, in/outhiplane) aktualizovat stav *gresult = gfilterrecord->advancestate(); if (*gresult!= noerr) return; zpracovat aktuální blok pozor na zarovnání řádků (in/outrowbytes, maskrowbytes) 9/25

Volání filtr pluginu Start čas od času zkontrolovat případné přerušení filtru if (gfilterrecord->abortproc()) { *gresult = usercancelederr; return; } čas od času aktualizovat progress bar gfilterrecord->progressproc( ++progressdone, progresstotal); nakonec vynulovat inrect, outrect, maskrect (všechny tři) 10/25

Volání filtr pluginu Continue pokračovat ve zpracovávání obrazu nakonec vynulovat inrect, outrect, maskrect (všechny tři) Finish úklid po dokončení pluginu pokud při fázi Start nenastane chyba, je zaručeno zavolání Finish 11/25

Funkce plugin hosta ukazatele v Plugin Parameter Block před použitím se ujistit, že jsou dostupné přímé OSErr advancestate(void) Boolean abortproc(void) void progressproc(long done, long total) OSErr colorservices(colorservicesinfo *info) OSErr displaypixels(pspixelmap *source, VRect *srcrect, int dstrow, int dstcol, unsigned platformcontext) 12/25

Funkce plugin hosta ukázka použití color services ColorServicesInfo csinfo; csinfo.infosize = sizeof(csinfo); csinfo.selector = plugincolorservicesconvertcolor; csinfo.sourcespace = CSModeToSpace(gFilterRecord->imageMode); csinfo.resultspace = plugincolorservicesrgbspace; for (int a = 0; a < 4; a++) csinfo.colorcomponents[a] = color[a]; if (gfilterrecord->colorservices(&csinfo) == noerr) for (int b = 0; b < 4; b++) color[b] = (uint8)csinfo.colorcomponents[b]; 13/25

Funkce plugin hosta sdružené v sadách (suites) Buffer suite int spaceproc(void) OSErr allocateproc(int size, BufferID *buffer) void freeproc(bufferid buffer) Ptr lockproc(bufferid buffer, Boolean movehigh) void unlockproc(bufferid buffer) data z bufferu přetypovat na uint8 14/25

PiPL Plug-In Property List metadata pluginu, identifikace, statická nastavení resource, Macintosh Rez formát, konverze pro Windows základní informace a nastavení jméno pluginu, typ, kategorie, verze rozhraní vstupní bod podporované formáty obrazu interpretace průhlednosti, zpracování průhledných pixelů 15/25

PiPL resource 'PiPL' (ResourceID, "Invert PiPL", purgeable) { { Kind {Filter}, Name {"Invert..."}, Category {"Invert"}, Version {(latestfilterversion << 16) latestfiltersubversion}, CodeWin32X86 {"PluginMain"}, 16/25

PiPL SupportedModes { nobitmap, doessupportgrayscale, noindexedcolor, doessupportrgbcolor, doessupportcmykcolor,... }, EnableInfo { "in (PSHOP_ImageMode," "GrayScaleMode, RGBMode, CMYKMode,...)" }, 17/25

PiPL FilterCaseInfo { { /* Flat data, no selection */ instraightdata, outstraightdata, donotwriteoutsideselection, doesnotfilterlayermasks, doesnotworkwithblankdata, donotcopysourcetodestination,... } } } }; 18/25

Nastavení projektu MS Visual Studio překládat jako DLL nastavit příponu.8bf nastavit adresáře s hlavičkovými soubory utility vložit zdrojové soubory do projektu linkovat s knihovnou version.lib PiPL custom build step připravit preprocesorem C (cl.exe) převést do Windows formátu (cnvtpipl.exe) přidat do resource (.rc) 19/25

Ladění v MS Visual Studio zkopírovat plugin v rámci Post Build Event zvolit aplikaci (Photoshop.exe) v nastavení projektu nebo zadat při prvním spuštění po aktualizaci stávajících pluginů není nutné restartovat Photoshop nejčastější chyby Photoshop plugin vůbec nenajde chybí PiPL index mimo rozsah pole ne všechny obrazy jsou RGB 20/25

Adobe Dialog Manager implementace dialogových oken nezávisle na platformě konzistentní Adobe look and feel design dialogu se načte z resource k dispozici jsou sady funkcí (suites) sady nutno získat, po použití uvolnit gfilterrecord->sspbasic-> AcquireSuite( kadmdialogsuite, kadmdialogsuiteversion, (void**)&sadmdialog); gfilterrecord->sspbasic->releasesuite( kadmdialogsuite, kadmdialogsuiteversion); 21/25

Adobe Dialog Manager vytvoření dialogového okna sadmdialog->modal(pluginref, "SetupDialog", SETUP_DIALOG, kadmmodaldialogstyle, DialogInit, NULL); vrací ID ovládacího prvku, kterým byl dialog uzavřen (typicky tlačítko OK nebo Storno) 22/25

Adobe Dialog Manager přístup k prvkům dialogu ADMItemRef item; item = sadmdialog->getitem(dlgref, ID_CHECKBOX); sadmitem->setbooleanvalue(item, true); item = sadmdialog->getitem(dlgref, ID_OK); sadmitem->setnotifyproc(item, ButtonOkNotify); 23/25

Adobe Dialog Manager notifier přístup k událostem na vyšší úrovni spuštěn po dokončení interakce s uživatelem void ASAPI ButtonOkNotify( ADMItemRef itemref, ADMNotifierRef notifier) { sadmitem->defaultnotify(itemref, notifier); } if (sadmnotifier->isnotifiertype( notifier, kadmuserchangednotifier)) {... } 24/25

Adobe Dialog Manager tracker přístup k událostem na nižší úrovni ASBoolean SliderTrack( ADMItemRef itemref, ADMTrackerRef tracker) { sendnotify = sadmitem->defaulttrack( itemref, tracker); if (sadmtracker->testaction( tracker, kadmmousemoveddownaction)) {... } } return sendnotify; 25/25