What tools are needed to build plugins for Photoshop CS5?


Question or issue on macOS:

I have found plenty of articles and how-tos online about making plugins for Photoshop on a Mac. Trouble is, many are old, apply only to CS1/2/3/4, or refer to tools or APIs that (it appears) are obsolete. Some articles say you must use CodeWarrior, but it seems this no longer even exists in the Mac programming realm.

Today, in 2011, making plugins only for CS5 and only on a Mac running Snow Leopard, what is the proper toolchain and what libraries/APIs/frameworks should I be using?

I’ve gotten the impression that Carbon (whatever exactly that is) is old and to be avoided, but it’s not clear if that’s true for plugins. I am not clear as to whether I should use Cocoa (whatever that is) or not. I do think I will need Core Foundation (whatever…) Is there a choice about 64 vs. 32 bit or is CS5 purely 64 bit and that’s that? (I prefer 64 bit, of course.) I do have the Photoshop CS5 SDK, and Photoshop CS5 itself installed.

Can XCode can be used as an IDE? I’ll hand-code a makefile and compile at the command line, if that’s easier or the only way possible. If XCode can be used, which project template to use? What is this “Mach-O” I read about, and how does that apply to PS plugins?

It’s especially confusing since I’m a total noob at Mac programming of any kind, though many years experienced on Linux and other platforms.

How to solve this problem?

Mission accomplished! (Months ago.. I just realized I had this question sitting here.)

Cocoa is useful for GUI settings windows and other things – it’s a huge gob of stuff – but I ended up using it only for the “About” popup window for my plugin.

Completely forget about Carbon for the combination of CS5 or later, OSX 10.6 or later, and 64 bit. Apparently parts of Carbon had been made 64 bit in the past, but should be ignored now.

XCode is a fine editor. Start with a “dylib” project using C. C++ and Obj-C source files can be added without any fuss. There’s no way getting around just needing to use XCode for some simple toy projects to gain familiarity with how it organizes things and builds apps and libraries. This is the only real “tool” needed; the rest is APIs – header files and libraries (or “frameworks” in the Apple world). While toying with XCode, get to know what a “bundle” is – a folder containing the executable and other files needed by the app.

Paths need to be set up to the Photoshop CS5 API, there being two or three specific directories to be listed. You may need to copy certain common source files out of the Photoshop example plugins directory, and there was a bit of trouble with a file named MachOMacrezXcode.h about which see What is the meaning of exit code 3 from Rez?

Unfortunately there were no truly useful examples of well-written plugins for CS5 on 64-bit. A combination of the Dissolve example, the SimpleFormat file read/write plugin, browsing source for plugins at http://www.telegraphics.com.au/sw/product/FilterFoundry and asking questions on the Adobe Photoshop SDK forum.

Pay no attention to the clumsy process of using some “Plugin Suite” for obtaining memory. It’s like Microsoft’s old 16-bit Windows API where you needed “memory handles” and thick malarky that is now several times obsolete. These days, good ol’ malloc/free or new/delete are fine.

With all the arrowhead wounds I now have in my back, maybe I should write a book or something…

Hope this helps!