Wednesday March 10 2010
An Online Community for Digital Photographers

Advertise on The Light's Right

Big Kudos To Photoshop Engineering Team!

I need to be careful here. I detest public pandering generally.

From a programmer's point-of-view, Photoshop CS4 offers extraordinary opportunities to modify and extend the user's experience with Photoshop.

It's quite common for software applications to expose themselves to programmers. Many include an API (which stands for Application Programming Interface). Important Microsoft applications allowed programmers to interact with them through OLE Automation. Now they expose object models through the .NET Framework. Java applications often expose Remote Procedure Calls (RPCs). Etc.

Adobe Photoshop offers several different mechanisms for programmers to add new functionality and affect Photoshop. Some are even oriented towards end users.

Anyone with even minimal Photoshop experience is familiar with Photoshop plug-in filters. That mechanism is so well engineered, other graphics software packages employ the same interface so they can take advantage of filters designed for Photoshop.

There are also automation plug-ins. Most start with actions and use a nifty utility from Adobe that writes out the "C" code. They then wrap that up into a small, compiled application. This hides the action step details and speeds them up.

Users can record steps as actions and play them back later. Those actions can even be used in batch processes and droplets. With droplets, you can take a bunch of images, drop them on an icon on your desktop, and then watch Photoshop load and process them.

Photoshop also supports scripting in no less than three languages: Apple Talk, Javascript, and VBscript. There is a very broad and comprehensive object model, and again there are nifty utilities to listen to actions or even the user interacting with Photoshop that write out the steps in Javascript and VBscript.

These utilities are really a twist on what programmers call a logger. But it's like a logger on steroids. Under the hood, it appears that Photohop uses what Object-Oriented Programming (OOP) calls a Command object model. I have never seen another utility that watches what runs in the application and writes that out with the code to run it in multiple languages. That's a very thoughtful gift from the Adobe programming team to the rest of us who try to write third-party Photoshop tools.

I have no illusion that all this extensibility is designed to make lots of third-party tools available, which makes Photoshop a more desirable graphics program to purchase. IOW, there's a financial motivation involved.

That said, Photoshop is exceptional in the wide range of options it offers to programmers. So many opportunities takes a lot of thoughtful software engineering.

With CS4, Photoshop now adds support for .SWF panels. I've just finished my first set. They will improve the user experience for anyone who uses the TLR sharpening actions. You can use Adobe Flash Professional or Adobe Flex to build these panels. They allow a programmer to reach right in and add dockable panels to Photoshop that can do all sorts of interesting things. I'll be using them for user interfaces, but you can use them to play videos, work directly with sources like Flickr!, etc.

I'll avoid the hypocrisy of a general homage to the Adobe Photoshop engineering team. I do, however, want to acknowledge my appreciation for the considerable software engineering talent that's evident in all the extensibility features in Photoshop as I launch my first Photoshop CS4 panels. Well done!

Technorati Tags:
Average: 5 (1 vote)