Pluginsystem i stil med Photoshop

Permalänk
Medlem

Pluginsystem i stil med Photoshop

Jag har en idé på ett program jag vill göra och det bygger på ett väl fungerande pluginsystem för bildbearbetning. Det jag sitter och funderar på är hur jag ska bygga upp nått sånt. Hur fungerar t.ex. photoshop?

Det jag tänkt är att varje plugin är en dll-fil som exporterar några grundläggande funktioner, som huvudprogrammet sedan anropar. Jag är dock inte säker på hur kommunikationen mellan host och plugin skall fungera. Om en plugin skall bearbeta en bild, är det då bäst att skicka över en pekare till bilden som pluginen sedan använder sig av? Det skulle kanske fungera, men hur löser jag bäst problemet som uppkommer då en plugin vill ändra storleken på bilden (för det måste kunna ske)? En spontan lösning på det skulle kunna vara att pluginen anropar huvudprogrammet och ber det allokera nytt minne i en ny storlek som sedan bearbetas och returneras av pluginen. Efter en sådan operation skulle huvudprogrammet frigöra det minne som pluginen inte returnerar.

Detta är mina högst personliga amatörtankar så jag är nyfiken på hur andra har löst motsvarande problem. Hur skulle du ha gjort?

Det här med dll-filer är ju speciellt oxå. Som jag har förstått det är det inte alltid okej att skicka pekare kors och tvärs mellan processer, men mellan program och dll är det väl ok? kommer det fungera lika bra på en mac och med linux om jag nu vill porta programmet i framtiden?

Visa signatur

www.filipsprogram.tk - lite freeware
"Delight, herregud. Talang är bara förnamnet."

Permalänk
Medlem

Re: Pluginsystem i stil med Photoshop

Skicka pekare eller motsvarande fungerar nog bra. Om pluginet enbart jobbar mot och modifierar enskilda pixlar, så skulle du också kunna ha bilden uppdelad i delar (tiles). Sen skickar du pekare till delarna till flera instanser av pluginet, för att snabba upp beräkningar vid dual/quad-core.

Ska pluginet kunna ändra storlek, returnera en helt ny bild eller returnera en bild som är en slags kombination av flera bilder, så krävs det lite mer planering. Man får nog göra så att pluginet returnerar vilken typ och vad den klarar vid inladdning, så får huvudprogrammet se till att anropa rätt funktioner och parametrar.

Portning till mac/linux känns som det kan bli svårt om man inte planerar för det från början. Abstrahera pluginsystemet så mycket det går.

Ett tips är att kolla på hur pluginsystemet till Photoshop fungerar först! Lite länkar jag hittade:

http://www.mactech.com/articles/mactech/Vol.15/15.04/Photosho...

http://www.mactech.com/articles/mactech/Vol.15/15.05/Photosho...

Permalänk
Glömsk

BobbyFromDallas här på forumet har demonstrerat ett snyggt pluginsystem i C++. Hans sajt/blog verkar dessvärre vara nere nu.

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem

madah, grymt bra tips och länkar, tack Läste igenom sidorna och fick massor med bra idéer. Problemet är att jag blev jättesugen på att börja koda photoshop-plugins istället

Psionicist, jag slänger iväg ett PM till honom om jag behöver mer inspiration, tack för tipset!

Visa signatur

www.filipsprogram.tk - lite freeware
"Delight, herregud. Talang är bara förnamnet."