Photoshop 5.0 Actions Guide

Photoshop%20Actions%20Guide

Photoshop%20Actions%20Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 230

DownloadPhotoshop 5.0 Actions Guide
Open PDF In BrowserView PDF
Title Page

Adobe® Photoshop® 5.5
Actions Event Guide
Version 5.5 Release 1
August 1999

Adobe Action Events Guide
Copyright © 1991–1998 Adobe Systems Incorporated. All rights reserved.
Portions Copyright © 1990–1991 Thomas Knoll.

The information in this document is furnished for informational use only, is subject to change
without notice, and should not be construed as a commitment by Adobe Systems
Incorporated. Adobe Systems Incorporated assumes no responsibility or liability for any errors
or inaccuracies that may appear in this document. The software described in this document is
furnished under license and may only be used or copied in accordance with the terms of such
license.
Adobe, Adobe After Effects, Adobe PhotoDeluxe, Adobe Premiere, Adobe Photoshop, Adobe
Illustrator, Adobe Type Manager, ATM and PostScript are trademarks of Adobe Systems
Incorporated that may be registered in certain jurisdictions. Macintosh and Apple are
registered trademarks, and Mac OS is a trademark of Apple Computer, Inc. Microsoft,
Windows and Windows95 are registered trademarks of Microsoft Corporation. All other
products or name brands are trademarks of their respective holders.
The Photoshop Object Model was conceived and implemented by Sean Parent. This
document was written by Chris Bailey based on interviews and written materials from Sean
Parent and extensive interviews and reviews by Andrew Coven. In addition, this document
was edited and reviewed by Chris Bailey, Bobby Smith, Andrew Coven, Michael Snyder, John
Long, and Sean Parent.

Version History
Date

Author

Status

30 July 1997 thru

Foster T. Brereton

First Draft. All text in Red is unimplemented, needs
major revision or is, in any other way, utterly unfinished.

28 August 1997

Foster T. Brereton

Moved the project to FrameMaker 5.5 Format,
broke the link in the Appendixes from referencing
external files.

25 January 1998

Chris Bailey

Second Draft. Updated Format to current Adobe
Standards. Created new content covering the Photoshop Object Model, Automation syntax, and
Appendixes.

12 March 1998

Chris Bailey

Third Draft. Extensive update to include step-bystep development of automation plug-in.

6 April 1998

Chris Bailey

Corrections and final updates to tabular materials.

5 August 1999

Tina Wu

Added two chapters for using the listener plug in.

29 August 1997

Table of Contents

Table of Contents

Title Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Version History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2

Table of Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
About This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
General Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
The Actions Palette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
The Photoshop Object Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Programmable Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Underlying Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
C Language Photoshop Event Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Event Names: Keys /ID Codes and Name Macros . . . . . . . . . . . . . . . . . . . . .11
The Descriptor Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2. Object Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Photoshop Containment Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Photoshop Inheritance Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Element Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
Color Inheritance Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Mode Inheritance Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
Adjustment Inheritance Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
Format Inheritance Heirarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
Actions and Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
Handling User Interaction While Playing an Action . . . . . . . . . . . . . . . . . . .19
Elements, Classes, References, and Target Paths. . . . . . . . . . . . . . . . . . . . . . 21

3. Creating An Automation Plug-in . . . . . . . . . . . . . . 22
Standard Plug-ins vs. Automation Plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
The Photoshop/Automation Plug-in Relationship. . . . . . . . . . . . . . . . . . . . . 23
Photoshop 5.0 Organization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Plug-In Component Architecture (PICA). . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Plug-in Data Structures (PiPLs and Suites). . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
PiPLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Suites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Handling Suites In Your Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Photoshop Suite Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
The Plug-in Development Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Our new automation plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

Adobe Photoshop Actions Event Guide

3

Table of Contents
Examining the TriggerFilters plug-in project . . . . . . . . . . . . . . . . . . . . . . . . .34
Writing Your Own Plug-in: Step-by-Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
A Brief Note on ADM and Dialog Element Management . . . . . . . . . . . . . .57
1) Edit the PiPL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
2) Editing dictionary resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
3) Edit the Dialog resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
4) Edit the String Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
Other Good Information:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

4. Using Listener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Listener Does Most Of The Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Listener Creates The Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
How To Develop An Automation Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Step 2: Clear the Listener.log file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Step 3: Prepare the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Step 4: Apply Desired Actions On Test Document . . . . . . . . . . . . . . . . . . . .78
Step 5: Build Off An Existing Automation Plug-in: MakeNew . . . . . . . . . .79
Step 6: Verify The Contents Of Listener.log File . . . . . . . . . . . . . . . . . . . . . . .79
Step 7: Incorporate Function Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Step 8: Paste Function Definitions and Function Prototypes . . . . . . . . . .80
Step 9: Comment Out The MakeNew Actions . . . . . . . . . . . . . . . . . . . . . . . .81
Step 10: Build Your Plug-in And You Are Done!. . . . . . . . . . . . . . . . . . . . . . .81

5. More Listener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Type Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6. Filter Action Events . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Built-In Filter Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Plug-in Filter Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

7. Tool Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Built-In Tool Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Marquee Tool Selection Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
More Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

8. Element Action Events . . . . . . . . . . . . . . . . . . . . . . 120
Built-in Element Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

9. Document Events. . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Built-In Document Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

10. File Action Events . . . . . . . . . . . . . . . . . . . . . . . . . 132
Built-in File Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

11. Classes and Formats . . . . . . . . . . . . . . . . . . . . . . . 134
Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Formats. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

Adobe Photoshop Actions Event Guide

4

Table of Contents
12. Types and Enumerations. . . . . . . . . . . . . . . . . . . 166
Types and Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

13. Automation Plug-ins . . . . . . . . . . . . . . . . . . . . . . 176
A. Information Sources . . . . . . . . . . . . . . . . . . . . . . . . 179
Common prefixes and conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

B. PIUBasic Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
C. Development Process. . . . . . . . . . . . . . . . . . . . . . . 182
D. Key Constants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Key Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

E. Event Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Event Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

F. Enumerated Constants. . . . . . . . . . . . . . . . . . . . . . 202
Enumerated Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

G. Pin Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
About Pin Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

H. Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Photoshop Object Model Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Photoshop Plug-in Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Adobe Photoshop Actions Event Guide

5

1

1. Introduction
Welcome to the Adobe Photoshop ® Actions Event Guide!

This document contains the information needed to write Photoshop 5.0
automation plug-ins using C. It defines the underlying Photoshop Object
Model and related terms and lists each scriptable function and associated
parameters with examples. In addition, it briefly explains the basic C
syntax used in writing Photoshop automation plug-ins and illustrates
some examples that the reader may use as templates to create custom
automation plug-ins.
About This Guide
This chapter provides a brief overview of the content and the basic
terminology for this guide.
Chapter Two documents the Photoshop Object Model and how the
automation system manipulates events and objects.
Chapter Three takes a step-by-step approach to explaining how to create
a Photoshop automation plug-in. It contains explanatory material on
what’s inside an automation plug-in and introduces the Photoshop
specific automation functions, features and syntax.
Chapters Four through Ten provide the specific details on how to
manipulate each type or class of Photoshop elements.
Chapter Four covers Filters Events (Built-in Filters – Blur, Emboss, Feather,
Invert, Offset, Unsharp Mask, etc.; and Plug-in Filters – Angled Strokes,
Bas Relief, Crosshatch, Grain, Palette Knife, Pointilize, Texturizer, Wave,
etc.).
Chapter Five covers Tools such as Marquee/Selection, Pencil, Airbrush,
Smudge, Path, etc.
Chapter Six covers Element Action Events including Add, Copy, Cut,
Define Pattern, Duplicate, Group, Make, Move, Select, Transform and
Undo.
Chapter Seven covers Document Events such as Canvas Size, Convert
Mode, Crop, Export, Flatten Image, Print, Revert and Save.
Chapter Eight covers the File Action Events Import, Open, and Rasterize.
Chapter Nine covers Classes and Formats. Classes include Color, RGB
Color, CMYK Color, Element, Document, Pixel, Layer, Hue/Saturation,

Adobe Photoshop Actions Event Guide

6

1. Introduction
Channel, Format, Inport and Export. Formats include JPEG, Photoshop
EPS, PICT file, Raw, TIFF, GIF89A Export, BMP, and others.
Chapter Ten covers Types and Enumerations.
The Appendixes document the additional sources of information and list
in reference form specific Enumerated Values, Key Constants, Event
Constants, and Variable Pin Ranges.
Audience
This document is intended for C programmers who want to fully
automate Photoshop functions using C. With Photoshop 5.0 and its fully
programmable Actions Engine, you can now achieve full programmable
automation.
You are expected to have a working knowledge of Adobe Photoshop 5.0
and to understand how internal and plug–in features and filters work
from a user’s point of view. You should first read the Photoshop 5.0 API
Guide. This guide assumes you understand Photoshop terminology such
as paths, layers and masks. For more information, consult the Adobe Photoshop
User Guide.
Getting Started
Starting with Photoshop 4.0, Photoshop permitted users to manually
automate Photoshop actions. The action palette provides a visual
mechanism for users to record, store and replay sequences of Photoshop
actions.

However, user interaction is required at each step of recording and
playing. Starting in Photoshop 5.0, automation is further enabled by
allowing a new type of plug-in: the automation plug-in. Unlike previous
plug-ins that were restricted to a simple interaction between the host
application (Photoshop) and the plug-in, an automation plug-in can
interact with other plug-ins and any actionable Photoshop event. This
permits the creation of powerful, complex functions that fully utilize
internal Photoshop resources.

Adobe Photoshop Actions Event Guide

7

1. Introduction
The mechanism that permits this interaction is the Actions Engine and its
event name/descriptor block structure. To successfully manipulate
Photoshop elements and events, it is important for you to understand the
underlying Photoshop Actions Object Model and how the various
elements, objects, classes, and action events behave and interact.

General Definitions
The Actions Palette
In Photoshop 4.0 and later, the user can manually record a sequence of
keyboard and/or mouse commands and call this sequence an action.
Actions can be played, edited and deleted. Each sequence is named and
appears in the Action Palette as a individually selectable “action.”
The Actions Palette holds the list of available actions and a VCR-like
control panel with “play/stop,” “record,” “pause,” and “delete” buttons.
Within each action, individual commands in the sequence can be shown
(see below).

Actions
Internally, Actions consist of Photoshop events and targets of those
events. An action can be a single event or a sequence of events. Events
themselves are individual Photoshop commands or instructions that act
on elements or objects. Every Photoshop event has a data structure
associated with it that the automation plug-in uses to manipulate the
event and target selection.
The Photoshop Object Model
Underlying the Photoshop user interface and enabling the Actions
mechanism is the Photoshop Actions Object Model. Like other object
oriented programs, Photoshop is organized in hierarchical elements that
include objects, classes, and functions. Actions are constructed from filters
and commands (events and functions) with parameters that act on target
selections (elements). Targets are specified by references or implied

Adobe Photoshop Actions Event Guide

8

1. Introduction
references through an object container hierarchy and parameters are
organized in classes.
None of this organization is particularly visible to the end user of the
program. However, once the underlying architecture of Photoshop is
understood, there are clear connections between the hierarchical
structure of Photoshop, the scripting syntax and the standard user
interface.
The object model structure allows the creation of plug-ins that can access
Photoshop features and manipulate user image files. The model defines
programmable and non-programmable elements, program features and
functions, data classes, image formats and external operators. It is a rigid,
but flexible structure that enables easy programming of complex events
by sequencing several discrete events and passing a wide range of
parameters to individual functions within a sequence.
Programmable Elements
Programmable elements are objects and classes that represent a tangible
object inside Photoshop. Elements can be grouped into filters, tool
classes and events, element action events, document events, file action
events, and classes and formats. Each element is unique with its own data
types and functional capabilities, and elements can contain other
elements.
Underlying Naming Conventions
Names, Descriptors, and Key/Value Pairs
Wherever possible, the same naming conventions used in the Plug-in
Resource Guide will be used. Elements used to describe individual functions
or parameters include names, parameters, descriptors, and key/value
pairs.
Every programmable Photoshop event has the following elements that
define it: an event name, a target (implied or explicit), and parameters
(optional). These elements are accessed internally (and for external plugin development) using the C language terminology explained in this
document and the Photoshop 5.0 API Guide.

C Language Photoshop Event Definitions
In Photoshop 4.0, every common Photoshop programmable event
(command, feature or filter) was assigned a unique four character string
as an event name. This four character string was used as a hash key to
look up the corresponding internal Photoshop event. When creating
third-party filters and plug-ins, developers are required to create a
unique event name. Starting with Photoshop 5.0, new Photoshop event
names, such as those for new internal Photoshop commands and new
third-party filters, may be strings of any length as long as they are
unique. For this document, event names are assumed to be four character
strings that uniquely define each command, filter or function.

Adobe Photoshop Actions Event Guide

9

1. Introduction
NOTE: To simplify C programming, event name macros that more closely
resemble their function have been defined. For example, the macro:
eventGaussianBlur may be used to access the event Gaussian Blur.
These macros evaluate to the four character event names. In the
documentation, you may see references to event names such as
eventGaussianBlur , but note that in every case, when programming in
C, these names are actually evaluated to their four character names. In
the case of Gaussian Blur, the event key ID is 'GsnB '.
Every event can have a corresponding target object. The target can be
explicitly defined or, if not defined, it is assumed to be the last selected
object. For example, a Gaussian Blur event without a specified target will
be performed on the current selection of the current layer of the current
document.
Events can also have optional parameters that are used to specify the
parameters of the current event. For example, the specific parameters for
a given Gaussian Blur define the characteristics of that particular blur
event, such as KeyRadius = 5 .
Internally, Photoshop maintains a database of event, objects, classes, and
parameter types, and uses unique 4 character IDs to select a specific
command, feature, filter or function.
In addition to parameter ID keys, Photoshop identifies the type of data to
be used in the event. For example, before passing a floating point value
in an event call, the Floating Point Data Type ID key, typeFloat , would
be used to flag the data as a floating point number.
Below is the general format for accessing programmable events:

Adobe Photoshop Actions Event Guide

10

1. Introduction

Event Name/Parameter Conventions
Predefined ID name (macro Event Name)

Actual 4-character code ('event ID')

eventName

'Name'

General Format
eventName ("Name")
{
keyTarget ("trgt")
keyName ("key ID")
('key constant')

reference
[pin values]
[pin values]

//optional TARGET reference
//optional key/value pair
//additional key/value pairs

Descriptor
Block

}

Example:
Event:

A Gaussian Blur of radius 2.6

Event ID/Name:
eventGaussianBlur ("GsnB")
Descriptor Block:
{
Parameter:
keyRadius ("Rds ") 'typefloat ("Flt ")
}

2.6

Target:

In this case, there is no explicit target, so the implied target is the
current selection, on the current layer, in the current document.
Parameters: There is one parameter item in the Descriptor Block. It
provides the parameter for the radius amount (required for the
Gaussian Blur filter). In this case, there is one key ID and one type ID.
The key ID is 'Rds ', the ID for the key "Radius Amount," and the other
is 'Flt ', the ID for the type "floating point." The final parameter is the
radius value: 2.6 pixels.

The event name consists of a unique four-character constant (future
events and plug-in filters can have longer name constants) with an
optional target and parameter list. The first item in the list is the explicit
target (if any) with additional parameters following.
Event Names: Keys /ID Codes and Name Macros
As noted above, all elements and “actionable” behaviors of Photoshop,
including commands, filters, objects and classes, have a unique four
letter constant or “key” associated with them. While the ID code or key
indicates the command or function, the specific parameters passed with
the event define the specific Photoshop selection, element or function
being acted upon as well as the actual parameters of the function.
The Descriptor Block
The Descriptor block is a list of variables in the form of .
The first item in the Descriptor Block is the target of an event (if any). If
no explicit target is given, the target is implied to be the current
document or the first element in the target container chain that
understands and can respond to the event (see Chapter Two).
Descriptors allow Photoshop to pass the parameters associated with each
event back and forth from the host to the calling plug-in. Since the
Descriptor Block can contain as many key/value pairs as necessary, it
provides the structure to allow Photoshop to perform an action of any
length and containing any number of commands and parameters.

Adobe Photoshop Actions Event Guide

11

1. Introduction
The Descriptor Block provides a consistent and yet flexible mechanism to
allow the many actionable filters and plug-ins to control Photoshop
precisely. Note that a key/value pair can hold many different items
including integers, objects, floating point values and references to other
objects. Generally the key/value pair will refer to a specific Photoshop
feature and the parameters associated with that feature.
The value parameters in a Descriptor Block can be any value in the range
that is defined by Photoshop for the given function or element. For
example, for a call to the Gaussian Blur Filter, the legal values for the
radius value used to calculate the amount of blur can be within the
values of 0.1 and 250 (the same values available to a user accessing this
filter manually). For built-in functions, the legal range of these values are
set by the Photoshop program itself. For plug-in functions, the legal
values appropriate to the function may be provided by the plug-in.
Photoshop has functions that can correctly “pin back” illegal values to
the maximum or minimum values (thus the name, pin value), but it is
good practice to check values within your plug-in code.
Values can be integers, floating point numbers, unit floating point
numbers, enumerated values, Boolean values, references to other
objects, and aliases to files.

Summary
Photoshop 5.0 and its underlying Event Name/Descriptor Block structure
is robust and offers a great deal of flexibility in automating image
processing.
Underneath its familiar user interface, Photoshop 5.0 is organized as a
large, accessible database of commands, filters, and elements, each with
unique keys and a variable list of parameters. You can write a plug-in that
automates Photoshop and accesses commands, filters, elements and
other plug-ins, passing their specific parameters to them.
This chapter briefly introduces the internal structure of Photoshop. The
next chapter explains the Photoshop Action Object Model in detail.

Adobe Photoshop Actions Event Guide

12

2

2. Object Model
The Photoshop object modeldetermines what actions operate on which
objects and what parameters are associated with each element. Two key
Photoshop concepts are containment structures and inheritance hierarchies.
These structures reveal how Photoshop organizes its information about
documents, layers, channels, selections, commands, filters, and action
events.
Containers define what elements hold other elements, while inheritance
hierarchies define what parameters or properties are available to the
objects or subclasses held in containers. Containment structures hold
independent objects that may or may not inherit properties from the
container. On the other hand, inheritance hierarchies define what
properties are inherited from one subclass to another.
For example, the Photoshop application (a container) can hold a
document with many layers, each with their own properties. None of the
layers necessarily share the properties of the document (guides or
channels) or the application (menus, etc.).
On the other hand, elements in inheritance hierarchies do inherit the
properties or parameters from the elements or classes above them in the
inheritance chain. For example, the Mode inheritance class (RGB color,
Grayscale, Bitmap, etc.) defines the possible channels within a document
and what they represent. Inherited values define the subclass parameters
and characteristics.
Note: All of the base classes in the inheritance hierarchies are in fact
abstract classes, so deriving objects from them is impossible. And keep in
mind that some of the base classes will require general parameters to
exist in all classes derived from them.

Photoshop Containment Structure
As shown in the diagram below, the highest level container is the
Photoshop application itself. At the first level, Photoshop can hold
menus, actions, and a document (the user file). A document can hold
layers, channels, guides, etc. A special case is the channel object which
can be held in a document by itself, or as part of a layer. Any given
selection will be within a channel or layer within a document. An action,
event, command or function will “act” on a selection in the document.
Selections can be explicitly defined or assumed to be the current or last
defined selection.

This figure shows the Photoshop object containment structure.

Adobe Photoshop Actions Event Guide

13

2. The Photoshop Object Model

Containment Hierarchy

Photoshop
(Application)

Menu
Action

Command

Document

Layer

Channel

Guide
Channel

The containment hierarchy shows all the elements that can contain other
elements. Note that some elements are required to contain some, but not
all, of the other elements. For instance, all documents are required to
have at least one layer, but a document does not necessarily require the
presence of a guide. Along the same lines, an element can contain more
elements than required. Layers must contain at least one channel, for
example, but can hold many more than the minimum.

Photoshop Inheritance Model
The Photoshop inheritance hierarchy gives structure to the
characteristics expected of an object, element, class or selection.
For example, an object with the class “Color” will inherit the properties
from the subclass under color (RGB, CMYK, Unspecified, Grayscale, HSB,
Lab, or Book) and so forth.
Whenever an action is performed on an object, Photoshop works its way
up the target chain, starting with the currently selected object, until it
finds a container with the appropriate object.

Adobe Photoshop Actions Event Guide

14

2. The Photoshop Object Model
The following diagram below shows the Photoshop Inheritance
Hierarchies.
Photoshop Inheritance Structure
Element

Application

Color

RGB

Document

Mode

RGB Color

CMYK

Bitmap

Unspecified

Grayscale

Grayscale

Indexed Color

Command

HSB

Duotone

Action

Lab

Lab Color

Channel

Book

CMYK Color

Adj. Layer

Layer
Channel

Bkg. Layer

Guide

Multichannel Color

Menu

Adjustment

Invert

Format

Pshop 4

Levels

Pshop PDF

Curves

Pshop 2

Bright/Cont.

Scitex CT

Color Bal.

EPS PICTS Prvw.

Hue/Sat

EPS TIFF Prvw.

Selective Clr.

EPS Generic

Threshold

PICT File

Posterize

Raw
TIFF
PICT Resource
JPEG
Pshop EPS

Element Hierarchy
The element inheritance figure shows the inheritance connection for
elements. Following the rule that every Photoshop element inherits the
parameters of its parent element or group, an adjustment layer object
inherits the characteristics of its parent layer.

Adobe Photoshop Actions Event Guide

15

2. The Photoshop Object Model

Element Inheritance

Element

Application
Document
Layer

Adj. Layer

Channel

Bkg. Layer

Command
Action
Channel
Guide
Menu

Color Inheritance Hierarchy
The color inheritance chart shows all the classes that are derived from the
color base class. These objects typically contain integer values for each
one of the channels present in that color scheme.

Color Inheritance

Color

RGB
CMYK
Unspecified
Grayscale
HSB
Lab
Book

Mode Inheritance Hierarchy
Mode inheritance adjusts the channels and what they represent within
the document. A document can only be one Mode subclass at any time.

Adobe Photoshop Actions Event Guide

16

2. The Photoshop Object Model

Mode Inheritance

Mode

RGB Color
Bitmap
Grayscale
Indexed Color
Duotone
Lab Color
CMYK Color
Multichannel Color

Adjustment Inheritance Hierarchy
The adjustment inheritance diagram shows all the classes that are
derived from the adjustment base class. Objects derived from the base
are all the adjustment layer effects.
Adjustment Inheritance

Adjustment

Invert
Levels
Curves
Bright/Cont.
Color Bal.
Hue/Sat
Selective Clr.
Threshold
Posterize

Format Inheritance Heirarchy
The format hierarchy defines all the possible types of files Photoshop can
read and write. A file may be saved or loaded in any of these formats, and
Adobe Photoshop Actions Event Guide

17

2. The Photoshop Object Model
this process can easily be automated to provide an action that can save
multiple file formats with one command. There are also plug-in file
formats.
Format Inheritance

Format

Photoshop 4
Photoshop PDF
Photoshop 2
Scitex CT
EPS PICTS Preview
EPS TIFF Preview
EPS Generic
PICT File
Raw
TIFF
PICT Resource
JPEG
Phopshop EPS

Actions and Targets
The concepts of containment and inheritance come into play when
considering an action and its target. The idea of containment is: a
channel is contained in a document or a layer. A layer is contained in a
document. A selection is contained in a layer, or a channel, etc. An action
can “act” on a target, and that target can be specified in detail, i.e.
document, layer, channel, selection, etc. But it is convenient to make
some assumptions about the target where possible. For example, when
executing a blur on a selection, it is convenient to assume that the blur
will be on the current selection and leave it at that.
This is where the concept of inheritance comes in. When the Photoshop
actions engine receives a command with no specified selection, it parses
the request by moving up the containment chain until it finds an element
that fits the target. For example, if a command is “Gaussian Blur with
radius 2.6 pixels”, Photoshop moves up the chain of containers until it
finds an element that understands the filter “Gaussian Blur” and then
works its way down the chain of containers until it finds a layer or
channel with a selection that can be “blurred.”
Adobe Photoshop Actions Event Guide

18

2. The Photoshop Object Model
Targets
Targets are defined to be the frontmost item in Photoshop’s current
state, or the currently selected item in Photoshop’s current state. In
normal Photoshop usage, every time the user clicks on a different layer or
moves to another document, the target changes.
Actions are performed on the current target, and it is possible to define
other targets and attach them to descriptors for proper playback. You can
switch targets, play an action, then switch again to perform another
action on another target all by changing the target reference.
The reference to the current target, or the target that is going to be
receiving the descriptor and event is defined in the first 
item in the descriptor block. This special entry, keyTarget , is the first one
Photoshop looks for in the descriptor block. If it finds a target there, then
it will send the command to that target.
Targets are capable of receiving events and descriptors. But what
happens if a target receives an action it is unable to perform? What if a
layer gets an action to open a document? Clearly this is not something a
layer is capable of doing, so it will pass the action to its container object.
This means that Photoshop will search all of the objects starting with the
current target until a container is found that can hold the object being
manipulated. This link of container objects is called the target chain, and
is always present in Photoshop. For instance, if you have a channel
selected as the current target, then the target chain is Channel->Layer>Document->Photoshop (see the containment figure).
In the case of the layer receiving the command to open a document, the
command will be passed up the target chain until one of those elements
has the capability to handle it. In this case it is Photoshop itself that
knows how to handle the open command.
The value in the target reference can be one of three things: a complete
path, a partial path, or NULL . Each value type is handled differently.
If the reference is a complete path, then the target that is defined by that
path receives the action, and all is well.
In the case where the reference is a partial path, the first target up the
calling chain that can handle the path takes the command. This is
important, because if you are trying to target channel “foo” of layer
“snafu”, it won’t happen if a channel “foo” exists in layer “bar”, and “bar”
appears sooner in the target chain.
In the case where target value is NULL or does not exist, the first target up
the target chain that can handle the command performs the action.
Handling User Interaction While Playing an Action
Handling user interaction during exceptions or unpredicted
circumstances while playing an action is done by chosing one of three
Adobe Photoshop Actions Event Guide

19

2. The Photoshop Object Model
modes under which an action can execute: UI Mode, No UI Mode, and
Silent Mode. Each mode performs the given action, but provides
information to the user at different times and in different ways.
UI Mode

UI Mode will execute an action and display the related dialog box for
every step in the action. For instance, if you are including a filter in the
current event it will bring up a dialog for that filter to confirm the values
passed in by the descriptor block. This method is the most error-free, but
will not allow you to automate without having to monitor your
automation process, repetitively confirming dialog box values.
No UI Mode

No UI Mode is one step beyond UI mode, relying on the values passed in
by the descriptor block and not requiring interaction. It may, however,
display a dialog box if the routine comes across values that are invalid for
execution and that cannot be coerced into valid values. It will also display
dialogs for situations where a descriptor block component is incomplete.
This mode provides higher automation capabilities with minimal user
overhead. This mode is the mode actions are typically played in
Photoshop’s Actions Palette, unless logging is otherwise specified. In that
case, Silent Mode is the mode of execution.
Silent Mode

Silent Mode allows you to completely automate regardless of states in
Photoshop. If an error or other exceptional case arises while in execution
of an action, the routine will pass back a descriptor with the error string
under the key keyMessage . This string will be an explanation of the
command that failed and why the command failed. It is up to you to deal
with this legitimately. Note that any non-displayable error could come
back this way. Typical operation stores all the strings in an error log
specified by the user.
This mode allows for complete automation with no user interaction at all.
It is, however, the most likely one to produce erroneous images because
it will proceed with the the remaining events in the action on the current
document even after a command has failed.

Adobe Photoshop Actions Event Guide

20

2. The Photoshop Object Model
Elements, Classes, References, and Target Paths
We’ve discussed Events, Descriptor Blocks, Actions and Targets. Now, lets
pull it all together. First, more definitions:
Action: An action is a set of one or more Photoshop events with target
elements and parameters.
Event: A basic Photoshop command or instruction that is accessible by
an automation plug-in. Events act on elements.
Element: An element consists of objects and classes and represents a
tangible object inside Photoshop. Events act on elements and elements
can be created, acted upon, saved in a file or destroyed. Elements can be
simple objects (selections, colors, etc.) or they can be composed of lists
of multiple objects with varied class parameters.
Class: A predefined set of Photoshop parameters that are logically
connected to an object. For example, the classLayer has a set of
subclasses including classTextLayer, classBackgroundLayer,
classAdjustmentLayer, etc. The Rectangle class always consists of four
numeric elements defining top, left, bottom and right parameters.
Target: The object of a Photoshop event.
Target Path: Also known as keyTarget . The relative path to a given
selection. If no explicit path is given for a target in the action or event,
Photoshop works its way up the containment hierarchy structure until it
finds a suitable object for the action or event. For example, if the action is
a blur on a selection on a channel, Photoshop looks for an element that
recognizes a channel, then looks for the specified selection.
Reference: A target path through the Photoshop containment hierarchy.
Most of the terminology in this chapter is high level definitions. Writing a
new automation plug-in requires a much greater level of detail. The next
chapter steps through the details of writing an automation plug-in.

Adobe Photoshop Actions Event Guide

21

3

3. Creating An Automation
Plug-in
This chapter covers the basics of writing an automation plug-in and
defines the various data structures and interrelationships between host,
automation plug-ins and old style plug-ins.

Standard Plug-ins vs. Automation Plug-ins
Old Style Photoshop Plug-in Module Functionality:
(single function, one call from host, information passed in descriptor block structure,
no knowledge of other plug-ins)

Plug-in Module *

Host Application
(Photoshop 5.0)
CALL:
Plug-in Name
Descriptor
(may contain target,
parameters)
RETURN:
Descriptor
(done, or not done, etc.)

RESPONSE:
Accept Descriptor
Perform Function
based on Descriptor
values
Return Descriptor
with return values

Perform
Plug-in
Function

* See Photoshop 5.0 API Guide
for detailed flow charts
of specific Plug-ins.

Automation Photoshop Plug-in Module Functionality:
(multifunction, called from host or other automation Plug-in, information passed in descriptor structure,
contains calls to actionable events and standard plug-in functions)

Execute/Play Event
CALL:
Plug-in Name
Descriptor
(may contain target,
Action Events List,
or other parameters)
RETURN:
Descriptor
may contain:
Event parameters
that can be other
events you've
performed or
additional
parameters

Automation Plug-in
(your code)
RESPONSE:
Accept Descriptor
(parse Action Event List,
find targets, call events)
If Action Event List:
Play Plug-in Action Event One
Pass Target; Descriptor;
Evaluate Returned Descriptor
Play Plug-in Action Event Last
Pass Target; Descriptor
Evaluate Returned Descriptor
RETURN:
Descriptor with return values
Call Old Style Plug-in Function:
Pass Target; Descriptor;
Evaluate Returned Descriptor

Automation Engine
(inside Photoshop 5.0 Application)
RESPONSE:
Accept Descriptor
Perform Function
based on Descriptor
Return Descriptor
with return values

Perform
Actionable
Event One

RESPONSE:
Accept Descriptor
Perform Function
based on Descriptor
Return Descriptor
with return values

Perform
Actionable
Event Last

Other Standard Plug-ins
RESPONSE:
Accept Descriptor
Perform Function
based on Descriptor
Return Descriptor
with return values

Adobe Photoshop Actions Event Guide

Perform
Plug-in
Module
Function

22

3. Creating An Automation Plug-in
The diagram above shows the differences between an old style
Photoshop plug-in and an automation plug-in. The old style plug-in
responds to a host command by performing its function and returning
control to the host. In contrast, an automation plug-in is able to call
internal Photoshop commands and external plug-ins via the Photoshop
automation engine.
The differences between old style plug-ins and automation plug-ins can
be summarized as follows: The old style Photoshop plug-in module is a
self-contained functional block of code that receives a set of commands
from Photoshop, does its function, and then returns control to
Photoshop. It is completely self-contained, communicating with the host
through a data block and callback functions. It cannot access any
Photoshop actions or any other plug-in modules.
On the other hand, the automation plug-in module is a flexible block of
code that can execute its own code as well as access any event. This code
consists of a bundle of event codes and descriptors that decode into a set
of actionable events. It calls the Photoshop actions event engine to
perform those events, calls any other plug-in module as needed and
returns a descriptor with the return values of the associated events.
Unlike an old style Photoshop plug-in module, it can access any event
through the Photoshop actions engine including external plug-in
modules.

The Photoshop/Automation Plug-in Relationship
The key to mastering the Photoshop/automation plug-in relationship is
understanding the data and code structures that are used to pass
information between them. The key Photoshop elements are the
application itself, PICA (Plug-In Component Architecture), direct Plug-in
calls, and the Photoshop Actions Engine. On the Plug-in side, the key
elements are the PiPL (Plug-in Properties List), any self-contained plug-in
code and calls to the Photoshop Action Engine.
The Photoshop to Automation Plug-in Module Relationship:
Host Application
(Photoshop 5.0)
Normal
Photoshop
Functionality

Call to
Plug-in
Function

Call to
Actions Engine

Automation Plug-in
Module

PICA:
Plug-in Manager,
Adapter List,
File List,
Plug-in List,
Suite List
Direct Plug-in
Call

Self-Contained
Code

Receive: Descriptor

Return: Descriptor

properties hold:
- vendor code
- key (Type)
- ID (reserved)
- length
- property data

Static Info:
Read at
Startup

Plug-in Functional Code

Photoshop
Actions Engine

Perform: Actions

PiPL:
Lists information
about the plug-in:
- version number
- count
- properties
(holds the actual
PiPL data)

Return from
Plug-in
Function

Adobe Photoshop Actions Event Guide

perform:
- function 1
- function 2
- function 3
... etc.

Photoshop
Actionable
Code

perform:
- 'GsnB'
- 'UnsM'
... etc.

Dynamic
Code
and
Data

23

3. Creating An Automation Plug-in
Photoshop 5.0 Organization
Photoshop’s current internal organization reflects a combination of some
historic and some new design elements. Starting with version 2,
Photoshop pioneered the concept of a host/plug-in module architecture
that spurred the development of many innovative third-party plug-ins. As
Photoshop matured, the original plug-in architecture was revised to
provide more robust structures. By Version 4, Photoshop itself was
extensively revised internally to be more object oriented, and this
restructuring was exploited for the user’s benefit in the new Actions
Palette. In Version 5 the automation plug-in architecture can now be
exploited by external plug-ins. Photoshop includes the traditional code
to access old style plug-ins as well as new ways to access the new
automation Actions Engine.
The Automation Engine and Photoshop 5.0’s actions hierarchical
architecture are part of what enables the creation of automation plug-ins.
The other part is the PICA suite-based plug-in architecture.
Plug-In Component Architecture (PICA)
PICA, the Plug-In Component Architecture, provides a way to
communicate with internal and third-party plug-ins for several Adode
applications. It is a robust and flexible method that allows hosts and
automation plug-ins to communicate to a wide range of application
commands and external plug-ins.

The PICA (Plug-In Component Architecture) Model
Host Applications

PICA Suites
Legacy Plug-ins
Photoshop 3/4
Filters
Photoshop 3/4
File Formats, etc.

Photoshop 5.0
Application Functionality Suites
Common Functionality Suites

PICA Suites and Plug-ins
Illustrator 7.0

Core PICA Plug-ins:
SPBasic Suites

Photoshop 5.0
Plug-ins
Photoshop 5.0
Filters
Photoshop 5.0
Automation Plug-ins

Adobe Core Plug-ins:
Photoshop Filter Adapter

Other Adobe
PICA-aware
Applications

Adobe Dialog
Manager
Adobe Core Plug-in Suite:
Adobe Dialog Manager

Adobe Dialog
Manager
Suites

Application
Specific Plug-ins

Common
Functionality Plug-ins

PICA allows the utilization of Adobe-created specific functionality plugins such as the cross-platform Adobe Dialog Manager (ADM). This useful
PICA plug-in provides a means of creating dialog windows and boxes that
Adobe Photoshop Actions Event Guide

24

3. Creating An Automation Plug-in
are easily portable across multiple platforms (i.e., you can write user
interface code once).
NOTE: For more information, please refer to the Adobe Plug-In Component
Architecture PICA Reference document contained in the Photoshop 5.0 SDK.

Plug-in Data Structures (PiPLs and Suites)
Key Automation plug-in data structures are the PiPL (Plug-in Properties
List) and the message structures and suites used by PICA.
PiPLs
The PiPL is a static information resource in the plug-in itself. It contains
information about the plug-in’s function and its resources. It also
contains the location of the entry point of the plug-in.
At start-up, the host searches the files located in Photoshop’s Plug-In
Folder and reads the PiPLs of any files found.
You must include in your PiPL: a vendorID code that identifies the host of
the plug-in (in this case Photoshop); a propertyKey that specifies the type
of plug-in (in this case, an automation plug-in); a propertyID that is
(almost) always zero and can be considered reserved for future use; a
propertyLength that contains the length of the propertyData field; and
propertyData, a variable length field that contains the plug-in specific
data. In this field, you’ll put the HasTerminology structure that tells
Photoshop that you have an 'aete ' dictionary and this structure includes
ClassID, EventID, ResourceID, and a unique string.
PiPLs are documented in the Cross-App Plug-In Resource Guide document
contained in the Photoshop 5.0 SDK. The PiPL.r file also contains a
complete resource template for all Adobe PiPLs.
An example of a PiPL (the TriggerFilters plug-in PiPL) structure is shown
below:
resource 'PiPL' (ResourceID, plugInName " PiPL", purgeable)
{
{
Kind { Actions },
Name { plugInName "..." },
Category { "" },
Version { (latestActionsPlugInVersion << 16) |
latestActionsPlugInSubVersion },
#ifdef __PIMac__
CodePowerPC { 0, 0, "" },
#elif defined(__PIWin__)
CodeWin32X86 { "ENTRYPOINT" },
#endif
HasTerminology
{
plugInClassID,
plugInEventID,
ResourceID,

Adobe Photoshop Actions Event Guide

25

3. Creating An Automation Plug-in
vendorName " " plugInName // Unique string.
},
EnableInfo { "true" },
}
};

Note that variables such as plugInName,
latestActionsPlugInVersion, latestActionsPlugInSubVersion,
plugInClassID, plugInEventID, ResourceID, vendor name , and
plugInName are used for specific plug-in information so that these

constants can be defined elsewhere once and used throughout your
project. They can be easily updated as needed without affecting the code
itself.
For TriggerFilters these variables are defined as follows:
#define plugInName
"TriggerFilters"
#define plugInCopyrightYear
"1998"
#define plugInDescription \
"An example Actions Module to trigger filters in Adobe Photoshop®."
#define vendorName
"AdobeSDK"
#define plugInAETEComment
"triggerfilters example actions plug-in"
#define plugInSuiteID
'sdKE'
#define plugInClassID
plugInSuiteID
#define plugInEventID
'triG'

PiPLs are static data structures that define the basic properties of the
plug-in. In contrast, suites are the active message passing structures.
Suites
Suites are structures defined by the host that specify the message
structures and data organization used between plug-ins and Photoshop.
PICA defines a message passing architecture based on suite objects. PICA
suites are acquired and released via two callbacks, AcquireSuite and
ReleaseSuite. PICA is subdivided into a number of functional suites,
starting with the SPBasic Suite. SPBasic acquires and releases the other
suites and thus is the first thing called by any plug-in or application
calling a PICA suite. The other suites perform such functions as acquiring
and releasing plug-ins (as compared to suites), handling memory, file
manipulations, calling non-PICA plug-ins, manipulating strings, and other
housekeeping functions. PICA Suites are documented in the Adobe Plug-In
Component Architecture PICA Reference document contained in the Photoshop
5.0 SDK.
PICA Suites are found in SKD/SampleCode/Common/Headers/Photoshop/PICA
Folder.
For example, the SPBasic Suite is defined in SPBasic.h (found in SDK/
SampleCode/Common/Headers/Photoshop/SweetPea) as follows:
typedef struct SPBasicSuite {
SPAPI SPErr (*AcquireSuite)( char *name, long version, void **suite );
SPAPI SPErr (*ReleaseSuite)( char *name, long version );

Adobe Photoshop Actions Event Guide

26

3. Creating An Automation Plug-in
SPAPI
SPAPI
SPAPI
SPAPI

SPBoolean (*IsEqual)( char *token1, char *token2 );
SPErr (*AllocateBlock)( long size, void **block );
SPErr (*FreeBlock)( void *block );
SPErr (*ReallocateBlock)( void *block, long newSize,
void **newblock );
SPAPI SPErr (*Undefined)( void );
} SPBasicSuite;

SPAPI
SPAPI
SPAPI
SPAPI
SPAPI
SPAPI

SPErr SPBasicAcquireSuite( char *name, long version, void **suite );
SPErr SPBasicReleaseSuite( char *name, long version );
SPBoolean SPBasicIsEqual( char *token1, char *token2 );
SPErr SPBasicAllocateBlock( long size, void **block );
SPErr SPBasicFreeBlock( void *block );
SPErr SPBasicReallocateBlock( void *block, long newSize,
void **newblock );
SPAPI SPErr SPBasicUndefined( void );

In addition to basic PICA suites, Adobe makes available the Adobe Dialog
Manager or ADM suites. These suites simplify the process of developing
cross-platform user interfaces. ADM is very useful since it provides many
standard user interface functions such as tracking mouse movements,
notifying on key presses, etc. This reduces the programming required for
these types of user interface functions and provides the additional
benefit of eliminating recoding of these functions for different platforms.
ADM Suites are documented in the Adobe Dialog Manager document
contained in the Photoshop 5.0 SDK.
NOTE: You must still initially create the actual dialog windows and
elements for each platform. This can be done in any popular visual editor
or in code.
In addition to PICA and ADM suites, Photoshop itself provides its own
Photoshop specific suites that handle Photoshop functions. These are
defined in the files found in
SDK/SampleCode/Common/Headers/Photoshop/Suites.
AGMSPDraw.h
AGMSPPort.h
PIBufferSuite.h
PIChannelPortsSuite.h
PIColorSpaceSuite.h
PIErrorSuite.h
PIHandleSuite.h

PIMenuGroups.h
PIMenuSuite.h
PIProgressSuite.h
PIProxySuite.h
PIUIHooksSuite.h
PIZStringsSuite.h

NOTE: These folders and files are installed when you install the
Photoshop 5.0 SDK.

Handling Suites In Your Plug-in
When creating your plug-in, you will use Photoshop suites (and possibly
ADM suites) to perform various functions. A “suite dispatcher” is available
in the PIUBasic library that automatically handles acquiring all of the
most popular Photoshop suites. This code was created by Adobe
Developer Relations and is included in an additional library project called
PIUBasic.mcp . This project is included in the library folder of the

Adobe Photoshop Actions Event Guide

27

3. Creating An Automation Plug-in
Automation SDK plug-in samples. It contains code and headers that
perform much of the basic housekeeping functions you’ll require.
In particular, PIUSuites.cpp (and PIUSuites.h ) in PIUBasic.mcp
acquires a subset (the main ones we think you’ll need most) of the
Photoshop suites for you. These are the main suites we think you’ll need
the most. You can always acquire other available suites on you own.
PIUSuites.cpp acquires and makes globally available the following

suites:
Table 3–1: PIUSuites exported smart suite pointers
Suite Pointer

Suite Name

sSPBasic

PICA Basic suite

sSPRuntime

PICA Runtime utility suite.

sPSBasicActionControl

Photoshop Basic Action Control suite

sPSActionControl

Photoshop Action Control suite

sPSActionDescriptor

Photoshop Action Descriptor suite

sPSDescriptorRegistry

Photoshop Descriptor Registry suite

sPSActionList

Photoshop Action List suite

sPSActionReference

Photoshop Action Reference suite

sPSWindowNotify

Photoshop Macintosh Window dialog notify suite

sPSBuffer

Photoshop Buffer suite

sPSHandle

Photoshop Handle suite

sPSUIHooks

Photoshop User Interface utilities suite

sPSChannelPorts

Photoshop Channel Ports suite

sPSError

Photoshop Error Management Suite

sADMBasic

Adobe Dialog Manager basic functions uite

sADMDialog

Adobe Dialog Manager dialog functions suite

sADMNotify

Adobe Dialog Manager notification functions suite

sADMTrack

Adobe Dialog Manager tracking functions suite

sADMItem

Adobe Dialog Manager item functions suite

sADMList

Adobe Dialog Manager list functions suite

sADMEntry

Adobe Dialog Manager entry functions suite

sADMDialogGroup

Adobe Dialog Manager dialog group functions suite

sASZStrings

Adobe Systems Standard ZStrings suite

This is the subset of the total available Photoshop, PICA and ADM suites
that you will most likely need.
When you write your plug-in and call the suite dispatcher (see the code
in PIUDispatch.cpp ), it will automatically check to see if the suites you
want are available (loaded into memory), and give you an error message
if any of the suites you need are not available.
The dispatch code will also determine what message has been sent to
your plug-in (i.e., display your About Box, startup, shutdown, load into
Adobe Photoshop Actions Event Guide

28

3. Creating An Automation Plug-in
memory, or unload from memory). Plug-ins only get loaded into memory
when they are used. The dispatch code checks the parameters being
passed to your plug-in, returns an error if there are any problems, and if
not, jumps to your execute routine. If during execution, an error is
returned, dispatch will handle normal errors (function done, return; or
user canceled, return; etc.). This dispatch code may be used as is for the
vast majority of tasks your plug-ins will perform.
The one requirement of using the dispatcher is you must identify which
suites of the subset of Photoshop suites that the dispatcher automatically
loads that you will NOT need. This is because the dispatcher assumes that
you want access to all of the suites in its subset (see above list), but this
will rarely be the case. In particular, automation plug-ins cannot perform
operations on pixels; they can only call other plug-ins that do. Thus, any
automation plug-in call to a pixel manipulation suite will result in an
error.
For example, if an automation plug-in tries to access the ChannelPort
suite, Photoshop won’t let it have access to that suite. Thus, when the
plug-in tries to access that suite, the pointer to the functions of that suite
will be NULL. When the plug-in tries to use it, the dispatcher will realize
that the suite is not available, it will display an error similar to “this suite
is not available,” and the plug-in will quit.
To avoid “not available” errors from suites you don’t need, all you have to
do is list the suites you don’t require for your plug-in. The dispatcher will
ignore those suites whether they are missing or not. An easy way to find
out which suites you won’t need is to run your plug-in. Any missing suites
will generate an error dialog box that will display which suites are not
available.
This can also help you catch any basic errors like forgetting to put the
ADM plug-in into the Photoshop Plug-in Folder. For example, if the ADM
plug-in is not in the Photoshop Plug-in Folder at startup and your plug-in
uses ADM suites, Photoshop will return an error stating an ADM suite is
not available and quit the plug-in.

Photoshop Suite Definitions
PIActions.h - contains Photoshop’s suites related to automation. There

are seven suites that Photoshop exports. One of them is the
PIActionDescriptor suite that has forty functions. In addition to
PIActions.h , there are some other header files in
samplecode/Common/Headers/Photoshop/PS-Suites that contain Photoshop
suites:
AGMSPDraw.h
AGMSPPort.h
PIBufferSuite.h
PIChannelPortsSuite.h
PIColorSpaceSuite.h

Adobe Photoshop Actions Event Guide

PIErrorSuite.h
PIHandleSuite.h
PIMenuGroups.h
PIMenuSuite.h

PIProgressSuite.h
PIProxySuite.h
PIUIHooksSuite.h
PIZStringsSuite.h

29

3. Creating An Automation Plug-in
Adobe Developer Relations has added some additional utility functions
into some suites. They are member functions associated with the suite
pointer. To use them, you use the “.” Reference operator:
“ sPSActionDescriptor.SetReturnInfo(descriptor) ”. The normal
suite functions are available by double-dereferencing the suite:
sSPBasic->FreeBlock
(
Foo
);

The PIActionDescriptor suite as defined in PIActions.h is shown below:

#define kPSActionDescriptorSuite"df135115-c769-11d0-8079-00c04fd7ec47"
#definekPSActionDescriptorSuiteVersion2
typedef struct PSActionDescriptorProcs
{
// ALLOCATES: descriptor
SPAPI OSErr (*Make)(PIActionDescriptor *descriptor);
SPAPI OSErr (*Free)(PIActionDescriptor descriptor);
SPAPI OSErr (*GetType)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorTypeID *type);
// index is zero based
SPAPI OSErr (*GetKey)(PIActionDescriptor descriptor, uint32 index,
DescriptorKeyID *key);
SPAPI OSErr (*HasKey)(PIActionDescriptor descriptor, DescriptorKeyID key,
Boolean *hasKey);
SPAPI OSErr (*GetCount)(PIActionDescriptor descriptor, uint32 *count);
SPAPI OSErr (*IsEqual)(PIActionDescriptor descriptor, PIActionDescriptor other,
Boolean *isEqual);
SPAPI OSErr (*Erase)(PIActionDescriptor descriptor, DescriptorKeyID key);
SPAPI OSErr (*Clear)(PIActionDescriptor descriptor);
SPAPI OSErr (*PutInteger)(PIActionDescriptor descriptor, DescriptorKeyID key,
int32 value);
SPAPI OSErr (*PutFloat)(PIActionDescriptor descriptor, DescriptorKeyID key,
double value);
SPAPI OSErr (*PutUnitFloat)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorUnitID unit, double value);
SPAPI OSErr (*PutString)(PIActionDescriptor descriptor, DescriptorKeyID key,
char *cstrValue);
SPAPI OSErr (*PutBoolean)(PIActionDescriptor descriptor, DescriptorKeyID key,
Boolean value);
SPAPI OSErr (*PutList)(PIActionDescriptor descriptor, DescriptorKeyID key,
PIActionList value);
SPAPI OSErr (*PutObject)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorClassID type, PIActionDescriptor value);
SPAPI OSErr (*PutGlobalObject)(PIActionDescriptor descriptor,
DescriptorKeyID key, DescriptorClassID type,
PIActionDescriptor value);
SPAPI OSErr (*PutEnumerated)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorEnumTypeID type, DescriptorEnumID value);
SPAPI OSErr (*PutReference)(PIActionDescriptor descriptor, DescriptorKeyID key,
PIActionReference value);
SPAPI OSErr (*PutClass)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorClassID value);
SPAPI OSErr (*PutGlobalClass)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorClassID value);
SPAPI OSErr (*PutAlias)(PIActionDescriptor descriptor, DescriptorKeyID key,
Handle value);
SPAPI OSErr (*GetInteger)(PIActionDescriptor descriptor, DescriptorKeyID key,
int32* value);
SPAPI OSErr (*GetFloat)(PIActionDescriptor descriptor, DescriptorKeyID key,
double* value);
SPAPI OSErr (*GetUnitFloat)(PIActionDescriptor descriptor, DescriptorKeyID key,

Adobe Photoshop Actions Event Guide

30

3. Creating An Automation Plug-in
DescriptorUnitID* unit, double* value);
SPAPI OSErr (*GetStringLength)(PIActionDescriptor descriptor,
DescriptorKeyID key, uint32 *stringLength);
SPAPI OSErr (*GetString)(PIActionDescriptor descriptor, DescriptorKeyID key,
char *cstrValue, uint32 maxLength);
SPAPI OSErr (*GetBoolean)(PIActionDescriptor descriptor, DescriptorKeyID key,
Boolean* value);
SPAPI OSErr (*GetList)(PIActionDescriptor descriptor, DescriptorKeyID key,
PIActionList* value);
SPAPI OSErr (*GetObject)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorClassID* type, PIActionDescriptor* value);
SPAPI OSErr (*GetGlobalObject)(PIActionDescriptor descriptor,
DescriptorKeyID key, DescriptorClassID* type,
PIActionDescriptor* value);
SPAPI OSErr (*GetEnumerated)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorEnumTypeID* type, DescriptorEnumID* value);
SPAPI OSErr (*GetReference)(PIActionDescriptor descriptor, DescriptorKeyID key,
PIActionReference* value);
SPAPI OSErr (*GetClass)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorClassID* value);
SPAPI OSErr (*GetGlobalClass)(PIActionDescriptor descriptor, DescriptorKeyID key,
DescriptorClassID* value);
SPAPI OSErr (*GetAlias)(PIActionDescriptor descriptor, DescriptorKeyID key,
Handle* value);
// Convienence Functions
SPAPI OSErr (*HasKeys)(PIActionDescriptor descriptor, DescriptorKeyIDArray
requiredKeys, Boolean *hasKeys);
SPAPI OSErr (*PutIntegers)(PIActionDescriptor descriptor, DescriptorKeyID key,
uint32 count, int32* value);
SPAPI OSErr (*GetIntegers)(PIActionDescriptor descriptor, DescriptorKeyID key,
uint32 count, int32* value);
SPAPI OSErr (*AsHandle)(PIActionDescriptor descriptor,
PIDescriptorHandle *value);
} PSActionDescriptorProcs;

To access this suite, use sPSActionDescriptor , which is defined in
PIUSuites.h. For example, sPSActionDescriptor->Put Boolean
(descriptor, key, boolean value);

The Plug-in Development Process
As detailed in the Graphics and Publishing Software Development Toolkit Technical
Notes FAQ: Frequently Asked Questions: the Plug-in Development Process
should following this sequence.
Table 3–2: Plug-in Development Process
1.

Use the application you're interested in making the plug-in for (in this case Photoshop).

2.

Do a thorough search and use the plug-ins already on the market.

3.

If you still see a need for your proposed plug-in:

4.

Get the Photoshop SDK.

5.

READ THE DOCUMENTATION.

6

Read the header files.

7.

Compile the sample code.

8.

Formulate your approach based on modifying a sample that already works and ships with the
SDK. (We encourage this.)

9.

GO BACK AND READ THE DOCUMENTATION, now that you know what it is you want to do.

10.

Start modifying an existing, working sample from the SDK.

11.

If you encounter some problems, backtrack all the way back to the sample that already works.
You did start with a working sample, didn't you?

12

If you still encounter some problems, refer to the header files.

Adobe Photoshop Actions Event Guide

31

3. Creating An Automation Plug-in
Table 3–2: Plug-in Development Process
13.

If you still encounter some problems, refer to the documentation.

14.

If you still encounter some problems, QA your plug-in and determine exactly where its crashing.

15.

If you still encounter some problems, e-mail all this information to us. Help us help you by
doing stringent QA on your code before you talk to us. We cannot write your code for you,
and we're not responsible for QAing your plug-ins.

16.

Finish your plug-in.

17.

Write documentation.

18.

E-mail us and arrange an appointment with our evangelism and marketing teams to talk
about your marketing strategy.

19.

E-mail us and arrange with our engineering teams to get your plug-in into our QA department to QA with the latest build of our applications.

20.

Market your plug-in.

21.

Go to step 1 with another Adobe application.

When creating your automation plug-in, there are several basic technical
steps to follow. The first thing is to consider what functions your plug-in
will execute and what parameters will be associated with those functions.
For example, to create a new automation plug-in that creates a new
document (a simple, but basic function), there are four basic parameters
to consider: the width, the height, the resolution of the image and the
color mode of the file. Thus, your plug-in will have four parameters: three
of the type integer (W, H, Res) and one of the type enumerated (color
mode).
To aid in the development of automation plug-ins, Adobe has provided
some sample automation plug-ins such as the TriggerFilters and the
MakeNew plug-ins as CodeWarrior projects on the Macintosh and Visual
C++ projects on Windows. In the projects are source files, resource files,
header files, and library files that you can adapt to your own
requirements.
First, find the sample automation plug-in closest to your needs and copy
the project folder, including headers and code files. Then rename all the
files the same as your plug-in’s name and begin the process of revising
the files to contain your plug-in’s functionality.
The next figure illustrates this process.

Adobe Photoshop Actions Event Guide

32

3. Creating An Automation Plug-in

Automation Photoshop Plug-in Module Construction:
Use TriggerFilters.mcp as template and cut and paste functionality as needed
Adapt TriggerFilters.mcp
Sources and Headers
KEEP:
header files
libraries
DROP:
unwanted functions
REVISE:
triggerfilters.cpp
to suit your needs

Devise User Interface:
If ADM, create ADM suite calls

Develop Specific
Automation
Function Code

Devise Actions Events List:
Define required Descriptors
and sequences of events
Devise Error Messages:
Define tests and error handling

Place compiled output
in Plug-ins
Folder and run
Photoshop:
Plugin will appear in
Help Menu or
Automation Menu

Perform
Plug-in

Debug, refine and re-code
until fully functional

Our new automation plug-in
In this document we will create a automation plug-in named MakeNew . It
will be a simple one, but it will illustrate the process you can use to create
more complex automation plug-ins.
MakeNew will be called from the Automate menu and will perform a

simple function: create a new document with user supplied parameters.
Its user interface is shown below:

Default values for width, height, resolution, mode and fill are supplied as
shown.
Adobe Photoshop Actions Event Guide

33

3. Creating An Automation Plug-in
MakeNew incorporates all of the basic structures you’ll need to create
more powerful plug-ins. In creating MakeNew , we’ll cover all of the

automation source and header files and we’ll detail creating dialog, PiPL,
and 'aete' resources in this document.
We’ll create MakeNew by taking an existing automation plug-in,
TriggerFilters.8li and revising it to suit our needs.
Examining the TriggerFilters plug-in project
TriggerFilters is a fairly complex plug-in that uses ADM to manipulate
a dialog box with various options. As shown in the figure below, the user
can select a specific filter, select the dialog options (never display, display
once or display aways), run a selected filter and display the timing
results. Optionally, the user may log results in a text file.

The figure below shows the TriggerFilters project files from the
Photoshop 5.0 SDK as shown in the CodeWarrior IDE 2.1 environment.

Adobe Photoshop Actions Event Guide

34

3. Creating An Automation Plug-in
The key elements are the target (the chosen platform), in this case the
Macintosh, header files, source files, resource files, and libraries.
Photoshop Automation Plug-in Make Files:
(Sources and Resource files/
CodeWarrior Power Mac shown)

Name of target

Required Headers
Main Source Files

User Interface
Source file
Resource file
Libraries
Additional Headers
(for information
only)

Precompiled headers are required, as are the source, resource, and library
files. For information purposes and easy access, additional headers files
are included in the headers folder.
There are four types of files: headers, sources, resources and libraries.
There are several header files:
TriggerFilters.pch ,
TriggerFiltersTerminology.h , and
TriggerFilters.h .
There are three source files:
TriggerFilters.cpp ,
TriggerFiltersScripting.cpp , and
TriggerFiltersUI.cpp .

There is one resource file: TriggerFilters.r .
Finally, there are several library files: PIUBasic.mcp is an entire
CodeWarrior project with its own source, headers, resource and libraries;
and there are debug and release library files.

Adobe Photoshop Actions Event Guide

35

3. Creating An Automation Plug-in
The Additional Headers group contains useful files for quick access to
various Photoshop and automation functions.
Photoshop Automation Plug-in Make Files:
(CodeWarrior Power Mac Shown)

Name of target

Required Headers

Main Source Files

User Interface
Source file
Resource file
Libraries

Additional Headers
(for information
only)

The main source file TriggerFilters.cpp includes basic include files
(the headers and precompiled headers), the global variable definitions
required for TriggerFilters , the prototypes for EntryPoint (the main
function in this file), the actual EntryPoint code, the dispatch code (see
above descriptions) and code for each of the functions required for
TriggerFilters . These elements are shown in the following diagram.
The second source file, TriggerFiltersScripting.cpp , handles reading
and writing descriptors. It uses ReadScriptParams() and
WriteScriptParams() to accomplish these automation functions. The
third source file, TriggerFiltersUI.cpp handles the user interface
functions. The TriggerFilters.r resource file contains the actual dialog
resources as well as the PiPL and 'aete' dictionary resources.

Adobe Photoshop Actions Event Guide

36

3. Creating An Automation Plug-in
This diagram shows the source and header files of the TriggerFilters
project with a brief listing of what’s inside each source file.
Trigger Filters Plug-in Module Files:
TriggerFilters.cpp (C++ source file)
#includes:
PIDefines.h
TriggerFilters-PPC.ch or TriggerFilters.h
globals:
char gOtherEvent[kMaxStr255Len] = "";
bool gSuppressDialog = false;
bool gShowDialog = false;
bool gLogToFile = false;
SPPlatformFileSpecification gFile;
eventList_t* gLastEventList = NULL;
eventList_t* gEventList = NULL;
size_t gEventList_size = 0;
prototypes:
SPAPI SPErr ENTRYPOINT
(
const char* const caller, // Area that's calling us.
const char* const selector, // Specific action to perform.
const void* const data // Data related to command.
);
ENTRYPOINT /main:
SPAPI SPErr ENTRYPOINT
(
const char* const caller,
const char* const selector,
const void* const data
)
{
SPErr error = kSPNoError;
dispatching:
static PIUDispatch* dispatcher = new PIUDispatch
(
AboutID, // Your About string ID or 0.
PIUAPI_None, // Your about routine or PIUAPI_None.
Execute, // Your execute routine or PIUAPI_None.
PIUAPI_None, // Your Reload or PIUAPI_None.
PIUAPI_None, // Your Unload or PIUAPI_None.
PIUAPI_None, // Your Startup or PIUAPI_None.
PIUAPI_None // Your Shutdown or PIUAPI_None.
);
error = dispatcher->Dispatch(caller, selector, data);
if (dispatcher->Done() || error != kSPNoError)
{
delete dispatcher;
}
return error;
}
EXECUTE TriggerFilters CODE:
SPErr Execute(void)
Make Filter List
Free Filter List
Do Undo
Play Filter
Find ID in Event List
Find Name in Event List
Find Index in Event List
Append to File

Header Files:
Required Precompiled Headers:
TriggerFilters.pch
TriggerFiltersTerminology.h
TriggerFilters.h or TriggerFilters-PPC.ch
Additional Headers (for information only):
PIAbout.h
PIDebug.h
PIDefines.h
PIRezMac.h
ADMBasic.h
SPBasic.h

PIActionsPlugin.h
DialogUtilities.h
PIUtilities.h
PIActions.h
PIGeneral.h
PITypes.h

TriggerFiltersScripting.cpp (C++ source file)
#includes:
PIDefines.h
TriggerFilters-PPC.ch or TriggerFilters.h
Read Scripting Parameters:
SPErr ReadScriptParams ()
{
SPErr error = kSPNoError;
if ... various tests .... then ...
Write Scripting Parameters:
SPErr WriteScriptParams ()
{
SPErr error = kSPNoError;
if ... various tests .... then ...

TriggerFiltersUI.cpp (C++ source file)
#includes:
TriggerFilters-PPC.ch or TriggerFilters.h
Definitions:
dialog box enumerations
prototypes:
DoUI, DoDialogCleanup, InitDialogList, etc.
globals:
bool gCancelButtonIsReset= false;
groupList_t*
saveLastGroupLIst =NULL;
geventList_t*
saveLastEventList=NULL;
bool saveLogToFile = false; etc.
EXECUTE UI CODE:
DoUI
DoUIInit
DoDialogCleanup, etc.

Other Resources
Resources
TriggerFilters.r
Libraries:
PIUBasic.mcp
PIUBasic-PPC Debug.lib
PIUBasic-PPC Release.lib

The final piece is the PIUBasic.mcp project, included in the library folder.
It contains code and headers providing much of the basic housekeeping
functions required by any plug-in. See Appendix B for more information.

Adobe Photoshop Actions Event Guide

37

3. Creating An Automation Plug-in
Writing Your Own Plug-in: Step-by-Step
The fastest way to create your own Photoshop automation plug-in is to
copy the project files from an existing automation plug-in and revise
them to suit your needs. We’ll explain how we created the MakeNew.8li
plug-in from the TriggerFilters.8li plug-in.
The next three diagrams show the process, and the following text
explains each step. Note that the finished MakeNew project is included in
your SDK files as well as the TriggerFilters project.

MakeNew Plug-in Module Step-by-step Construction Part 1:
Copy TriggerFilters.mcp files and cut and paste

1

Copy in Finder
TriggerFilters
Plug-in Project Files,
and rename to
MakeNew files
2

Determine which files you'll keep
Keep all of the header
and library files
3

Add newly renamed files to
MakeNew project and
delete the TriggerFilter files

Keep the project target settings,
but change the target file name
to: MakeNew.8li
4

Adobe Photoshop Actions Event Guide

38

3. Creating An Automation Plug-in
In this example, a new automation plug-in, MakeNew will be created
using TriggerFilters as a template. MakeNew will be a simple automation
plug-in that will open a user dialog box and based on user input on
Width, Height, Resolution, Fill and Color Mode, let the user create a new
document. This simple automation plug-in will illustrate the process and
show what elements are absolutely needed for an automation plug-in.

MakeNew Plug-in Module Step-by-step Construction Part 2:
Copy TriggerFilters.mcp files and edit

Revise Header Files, specifically

Revise Header Files
5

Revise Header Info:
Change file names in headers, etc.

6

Take out the TriggerFilter
specific header information
Global variables, constants,
prototypes, functions, etc.

7

Revise MakeNew.h file
Change file names, global variables,
constants, prototypes, functions, etc.
Revise MakeNewTerminology.h file
Change/define the scripting key definitions
MakeNew Plug-in will need:
keyMyWidth, keyMyHeight, keyMyMode,
keyImageModeType, and keyMyFill,

Every Plug-in will need:
Execute routine, DoUI routine,
Read/Write scripts
MakeNew Plug-in will need:
Variables, functions and globals
for its specific functions

8

Revise MakeNew.cpp

Change file names, global variables,
constants, prototypes, functions, etc.
1) Includes: PIDefine.h, etc.
2) Globals - unsigned shorts for W, H, Res;
enumerated for Mode, etc.
3) Prototypes - entry point, initialize
4) Entrypoint - almost the same for
every plugin (includes dispatch code)
5) Execute code (Read/Write ScripParams)
6) Initialize parameters routine
7) List of optional suite IDs for dispatcher
code - list the suites your plugin won't
need
8) Read Descriptors and determine
Dialog options

Basic code:
Initializes variables,
contains entrypoint main function
determines options

Adobe Photoshop Actions Event Guide

9

Revise MakeNewScripting.cpp
Change file names, global variables,
constants, prototypes, functions, etc.
MakeNewScripting.cpp includes:
1) Includes (same as MakeNew.cpp)
2) Prototypes
3) Read Scripting Parameters function
Revise flags, keys, types, etc.
4) Write Scripting Parameters function
Revise flags, keys, types, etc.

Scripting code:
Reads and writes
Descriptor Values

39

3. Creating An Automation Plug-in

MakeNew Plug-in Module Step-by-step Construction Part 3:
Revise dialog resources and user interface files

Revise User Interface
via Resorcerer® or ResEdit
and Derez

13

Revise MakeNewUI.cpp

1) Read
TriggerFilters.8li binary
10
file in Resourcerer/ResEdit
and manipuate
user interface elements.
2) Run Derez script in CodeWarrior
to turn visual resource
11
elements into text file.
3) Edit text file in
CodeWarrior and save as
MakeNew.r file.
12

User Interface Resource Editing:
Capture TriggerFilters
dialog resources,
Change to suit your needs,
Save as new Resource file

Keep #includes:
Change file names in headers, etc.
MakeNew definitions:
enum ... dialog buttons
and popups ...
MakeNew constants:
keyHeightMin, Max, etc.
MakeNew prototypes:
DoUIInit, InitCancelbutton,
Do Cancel, DoReset,
DoWidthEditText,
DoHeightEditText,
DoResolutionEditText,
etc.
MakeNew globals:
int32 saveWidth;
int32 saveHeight;
int32 saveResolution;
DescriptorEnumID saveFill;
DescriptorClassID saveMode;
bool gCancelButtonIsReset = false;
MakeNew function code:
DoUIInit, InitCancelbutton,
Do Cancel, DoReset,
DoWidthEditText,
DoHeightEditText,
DoResolutionEditText,
etc.

14

Compile
MakeNew
Project

15

Errors?

No

16

Place
MakeNew.8li
binary in
Plug-in Folder

Run App.,
Run Plug-in,
Any Errors?

No

DONE!

Yes
Yes
Debug
code

Debug
code

Step 1 - Copy the TriggerFilters.mcp project folder.
Copy the project files from an existing automation plug-in into a new
directory called “Your Plug-in Name.” In this case, we are creating a new
plug-in called MakeNew, so the new project name is MakeNew.mcp .
Step 2 - Rename all files.
Rename all project files, replacing TriggerFilters with YourName (in
this case MakeNew ). Delete the MakeNew.mcp Data folder, since this
information will be recreated when we compile our new project.
Step 3 - Open the newly named MakeNew.mcp project. Inside will be all of
the old TriggerFilters files. Use Add Files and insert all of the renamed
Adobe Photoshop Actions Event Guide

40

3. Creating An Automation Plug-in
MakeNew files. Add them in the same folders as their TriggerFilters
counterparts (i.e., source files in the “source” folder, headers in the
“header” folder, etc.). Once the new files are inserted, delete the old
TriggerFilter files.
Step 4 - In the project settings change the target output file to
MakeNew.8li for both the Debug and Release Targets.
Step 5 - Revise the Header file information to take out any TriggerFilters
information and replace with MakeNew information.
Step 6 - Open MakeNew.h and replace the TriggerFilters information with
MakeNew specifics. Replace the TriggerFilters globals with the MakeNew
global variables. For MakeNew, these variables are:
extern
extern
extern
extern
extern

int32 gWidth;
int32 gHeight;
int32 gResolution;
DescriptorEnumID gFill;
DescriptorClassID gMode;

These are the variables for the width, height, resolution, Fill mode and
Color Mode.
MakeNew has no constant definitions, so the TriggerFilter constant
definitions may be removed and not replaced.
MakeNew requires the following global prototypes: DoUI,
ReadScriptParams, and WriteScriptParams. These exist in TriggerFilters
(along with several others), so delete everything but these three
prototypes:
SPErr DoUI ();

// Show the UI.

SPErr ReadScriptParams ();
SPErr WriteScriptParams ();

// Read any scripting params.
// Write any scripting params.

These functions will return an SPErr value that will be kSPNoError if all is
well, or a specific error code if there is a problem.
Step 7 - Revise the MakeNewTerminology.h file to include the MakeNew
specific keys and their definitions. The definitions will be the scripting
keys for the new document variables (Width, Height, Resolution, Fill,
Color Mode):
#define
#define
#define
#define
#define
#define
#define

keyMyWidth
keyMyHeight
keyMyResolution
keyMyFill
typeMyFill
keyMyMode
typeClassMyMode

keyWidth
keyHeight
keyResolution
keyFill
typeFill
keyMode // RGB, CMYK, etc.
typeClassMode

Because Fill is an enumerated value, it requires a type key ( typeMyFill )
in addition to a Fill key. Because color mode is actually a color class in

Adobe Photoshop Actions Event Guide

41

3. Creating An Automation Plug-in
Photoshop, it is a class type and requires a key mode ( keyMyMode ) and a
class mode type ( typeClassMyMode ).
In addition, two reset and cancel string ID resource keys are defined so
that the Cancel button will toggle in the UI:
#define kResetStringID
#define kCancelStringID

uiID
kResetStringID+1

uiID is predefined as 16001.
Step 8 - Revise the MakeNew.cpp source file. This is our main source file,
and it contains the four functions that we need to create a new
document. It is organized exactly like TriggerFilters.cpp (see earlier
diagram) with just the MakeNew elements. We need to have our includes:
#include "PIDefines.h"
#if defined(__PIMWCWMacPPC__)
#include "MakeNew-PPC.ch"
#else
#include "MakeNew.h"
#endif

and our global variables:
int32 gWidth;
int32 gHeight;
int32 gResolution;
DescriptorEnumID gFill; // white, transparent, background
DescriptorClassID gMode; // RGB, CMYK, etc.

and our prototypes for ENTRYPOINT , Initialize ,
ConvertToUnitDistance and MakeNewDocument functions:
SPAPI SPErr
(
const
const
const
);

ENTRYPOINT
char* const caller,
char* const selector,
void* const data

// Area that's calling us.
// Specific action to perform.
// Data related to command.

// Initialize our parameters:
static void Initialize (void);
// Convert from any base to unitDistance:
static double ConvertToUnitDistance
(
const double amount,
const double amountBasePerInch
);
// Actually make a new document:
static SPErr MakeNewDocument (void);

ENTRYPOINT is the first routine in the source file. It is called first when the
plug-in is called. Initialize is a function that initializes our variables
(Width, Height, etc.). ConvertToUnitDistance is a small utility function
that we’ve added that converts a distance into standard unitDistance

units of 72 dpi. This lets the user input a parameter for Width or Height in
pixels and our plug-in automatically converts it into distance. In other
Adobe Photoshop Actions Event Guide

42

3. Creating An Automation Plug-in
words, if the user inputs the values of 288 pixels for Width, 216 pixels for
Height, and 72 dpi for Resolution, our plug-in will create an image 4
inches wide and 3 inches high with a resolution of 72 dpi.
The MakeNewDocument actually performs our plug-in task of making a new
document. This is where the plug-in accesses the Photoshop Automation
Engine. Here is the prototype:
static SPErr MakeNewDocument (void);

After the function prototypes, we put the actual code for our four
functions, starting with ENTRYPOINT . The entrypoint will be “pascal void”
for Macintosh programs and “void” for Windows.
SPAPI SPErr ENTRYPOINT
(
const char* const caller,
const char* const selector,
const void* const data
)
{
SPErr error = kSPNoError;
// This is the list of suites we will consider "optional". The rest are
// loaded automatically and will generate an error if not available:
const char* optionalSuiteIDs [] =
{
kPSBasicActionControlSuite,
kPSChannelPortsSuite,
NULL // Make sure this list ends with NULL.
};
// This C++ object takes care of all dispatching.
static PIUDispatch* dispatcher = new PIUDispatch
(
(char**) &optionalSuiteIDs,//List of optional suites.
AboutID,
PIUAPI_None,

// Your About string ID or 0.
// Your about routine or PIUAPI_None.

Execute,

// Your execute routine or PIUAPI_None.

PIUAPI_None,
PIUAPI_None,

// Your Reload or PIUAPI_None.
// Your Unload or PIUAPI_None.

PIUAPI_None,
PIUAPI_None
);

// Your Startup or PIUAPI_None.
// Your Shutdown or PIUAPI_None.

error = dispatcher->Dispatch(caller, selector, data);
if (dispatcher->Done())
{
delete dispatcher;
}
return error;
}

Adobe Photoshop Actions Event Guide

43

3. Creating An Automation Plug-in
ENTRYPOINT uses the PICA messaging, with the “caller, selector, data”
format. Then, there is the list of optional suites, ending in NULL . As

explained earlier in the “Handling Suites in Your Plug-in” section,
PIUSuites.cpp (and PIUSuites.h ) in PIUBasic.mcp acquires a subset
(the main ones we think you’ll need most) of the Photoshop suites for
your plug-in. You are required to list the plug-ins from this subset that
you will NOT need. Here we list:
const char* optionalSuiteIDs [] =
{
kPSBasicActionControlSuite,
kPSChannelPortsSuite,
NULL
// Make sure this list ends with NULL.
};

This says that we will not need the PSBasicActionControlSuite and the
PSChannelPortSuite for our MakeNew plug-in.
Then, we put in the dispatch code (previously mentioned in the
“Handling Suites in Your Plug-in” section of this chapter) as is from the
TriggerFilters.cpp file.
static PIUDispatch* dispatcher = new PIUDispatch
(
(char**) &optionalSuiteIDs,// List of optional suites.
AboutID,
PIUAPI_None,

// Your About string ID or 0.
// Your about routine or PIUAPI_None.

Execute,

// Your execute routine or PIUAPI_None.

PIUAPI_None,
PIUAPI_None,

// Your Reload or PIUAPI_None.
// Your Unload or PIUAPI_None.

PIUAPI_None,
PIUAPI_None
);

// Your Startup or PIUAPI_None.
// Your Shutdown or PIUAPI_None.

error = dispatcher->Dispatch(caller, selector, data);
if (dispatcher->Done())
{
delete dispatcher;
}
return error;

This dispatcher C++ object takes care of all of the loading and unloading
of your plug-in, as well as any startup, shutdown, and About Box calls.
PIUDispatcher will handle all of the basic housekeeping functions
involved in calling your plug-in (load, reload, etc.). Your Execute function
should read incoming scripting parameters that tell your plug-in what
function to perform. Your automation plug-in should perform according
to the descriptor handed to it. In the sample, descriptors are read using
ReadScriptParams() .

Adobe Photoshop Actions Event Guide

44

3. Creating An Automation Plug-in
SPErr Execute(void)
{
SPErr error = kSPNoError;
Initialize(); // Default parameters for all globals.
ReadScriptParams(); // Override globals with new descriptor info.
// Determine if we need to pop our dialog:
PIDialogPlayOptions playInfo = plugInDialogDisplay;
sPSActionDescriptor.GetPlayInfo(NULL, &playInfo);
// Others = plugInDialogDontDisplay / plugInDialogSilent
if (playInfo != plugInDialogDisplay)
{
error = MakeNewDocument();
if (error == kSPNoError)
WriteScriptParams();
}
else
{
// Go ahead and display a dialog:
error = DoUI();
if (error == kSPNoError)
{
MakeNewDocument();
WriteScriptParams();
}
else if (error == userCanceledErr)
{
error = kSPNoError; // We've already reverted.
// Don't need to return err.
}
}
return error;
}

Your Execute routine should use the playInfo flag to determine
whether a user dialog box needs to be presented. To determine this, call
GetPlayInfo . If playInfo is plugInDialogDontDisplay , or
plugInDialogSilent then the MakeNewDocument() function is executed
without a dialog box being displayed and the descriptor for this action is
written via WriteScriptParams() . If playInfo is plugInDialogDisplay ,
then a user dialog box is displayed in DoUI() . If DoUI() returns
successfully, MakeNewDocument() is executed and the descriptor for this
action is written via the WriteScriptParams() .
Initialize() assigns an initial value for each variable.
static void Initialize (void)
{
gResolution = 72;
gWidth = gResolution*4;
gHeight = gResolution*3;
gFill = enumWhite;
gMode = classRGBColorMode;
}

Adobe Photoshop Actions Event Guide

45

3. Creating An Automation Plug-in
The default values are a four inch by three inch image with a resolution of
72 dots per inch.
MakeNewDocument performs the function of our new plug-in, creating a

new document based on the user input.
static SPErr MakeNewDocument (void)
{
SPErr error = kSPNoError;
PIActionDescriptor descriptor = NULL;
error = sPSActionDescriptor->Make (&descriptor);
if (error == kSPNoError)
{
error = sPSActionDescriptor->PutUnitFloat
(
descriptor,
keyWidth,
unitDistance,
ConvertToUnitDistance(gWidth, gResolution)
);
}
if (error == kSPNoError)
{
error = sPSActionDescriptor->PutUnitFloat
(
descriptor,
keyHeight,
unitDistance,
ConvertToUnitDistance(gHeight, gResolution)
);
}
if (error == kSPNoError)
{
error = sPSActionDescriptor->PutUnitFloat
(
descriptor,
keyResolution,
unitDistance,
gResolution
);
}
if (error == kSPNoError)
{
error = sPSActionDescriptor->PutEnumerated
(
descriptor,
keyFill,
typeFill,
gFill
);
}
if (error == kSPNoError)
{
error = sPSActionDescriptor->PutClass
(

Adobe Photoshop Actions Event Guide

46

3. Creating An Automation Plug-in
descriptor,
keyMode,
gMode
);
}
if (error == kSPNoError)
{
PIActionDescriptor playDescriptor = NULL;
sPSActionDescriptor->Make(&playDescriptor);
sPSActionDescriptor->PutObject
(
playDescriptor,
keyNew,
classDocument,
descriptor
);
// I'm creating a new document, the event I
// want should be called eventNewDocument or
// something, right? Nope. Use eventMake.
PIActionDescriptor resultDescriptor = NULL;
error = sPSActionControl->Play
(
&resultDescriptor,
eventMake,
playDescriptor,
plugInDialogDontDisplay
);
// Check for error here. If an error occurred, there
// will be a string in the descriptor, keyMessage, with
// the error that occurred.
if (resultDescriptor != NULL)
sPSActionDescriptor->Free(resultDescriptor);
if (playDescriptor != NULL)
sPSActionDescriptor->Free(playDescriptor);
if (descriptor != NULL)
sPSActionDescriptor->Free(descriptor);
} // error
return error;
} // end MakeNewDocument

The MakeNewDocument function starts by declaring an error variable and
assigning it a kSPNoError value. If later on in this function, an error
condition is encountered, this value can be changed to indicate an error
condition. It can also be checked at various points to ensure that no
errors have occurred.
The MakeNewDocument function next declares a variable descriptor of
the type PIActionDescriptor and assigns it the value of NULL . It then

Adobe Photoshop Actions Event Guide

47

3. Creating An Automation Plug-in
makes a function call sPSActionDescriptor->Make (&descriptor) to
instantiate the new descriptor and place it in the location pointed to by
the variable descriptor .
If no error was encountered, it then stuffs the new descriptor with the
Width, Height, Resolution, Fill and Color Mode parameters by calling the
sPSActionDescriptor->PutUnit Float ,
sPSActionDescriptor->PutClass , etc.
sPSActionDescriptor->PutUnitFloat is called with the parameters:
descriptor , keyWidth , unitDistance , and
ConvertToUnitDistance(gWidth, gResolution) which returns a
double. sPSActionDescriptor->PutUnitFloat is defined in
PIActions.h and is designed to put a floating point value of a specific

type.
PutUnitFloat is called to store the height parameter, and again for the

resolution parameter.
To put the fill type into the descriptor, use
sPSActionDescriptor->PutEnumerated and to put the Color mode use
sPSActionDescriptor->PutClass .
Next, we declare another descriptor variable playDescriptor of the type
PIActionDescriptor and assign it the value of NULL . Then, as previously
done with descriptor , the function sPSActionDescriptor->Make
(&playDescriptor) is called to create the descriptor. The
playDescriptor descriptor is not an object, but rather just a descriptor
that holds another descriptor. sPSActionDescriptor->PutObject()
creates the object with playDescriptor , keyNew , classDocument , and
descriptor (the original descriptor created and stuffed with our
MakeNew parameters earlier) as parameters.
PIActionDescriptor playDescriptor = NULL;
sPSActionDescriptor->Make(&playDescriptor);
sPSActionDescriptor->PutObject
(
playDescriptor,
keyNew,
classDocument,
descriptor
);
PIActionDescriptor resultDescriptor = NULL;
error = sPSActionControl->Play
(
&resultDescriptor,
eventMake,
playDescriptor,
plugInDialogDontDisplay
);

Adobe Photoshop Actions Event Guide

48

3. Creating An Automation Plug-in
There is one more descriptor required before we play the eventMake
command. This last descriptor ( resultDescriptor ) is declared and will
receive the results:
PIActionDescriptor resultDescriptor = NULL;

Finally, with the container descriptor ( playDescriptor -- that also
contains our original stuffed descriptor variable) and the
resultDescriptor ready, we can now play the eventMake command to
actually make it happen.
Note: you don’t have to Make() this descriptor because it will be handed
to you from the host. You must free it if you are given one, however.
error = sPSActionControl->Play
(
&resultDescriptor,
eventMake,
playDescriptor,
plugInDialogDontDisplay
);

Calling Play() actually performs the event, as long as the descriptor
contains the correct information for the event. If it doesn’t play, or
returns an error, try checking to make sure that you are using the correct
types and keys for the parameters for the event.
After playing the eventMake action, it returns a descriptor in
resultDescriptor , the original descriptor is still in playDescriptor ,
and the original descriptor variable descriptor still contains parameters
of our document.
You must free all descriptors you create or the host hands to you. After
checking to make sure that they are not NULL , the sample plug-in calls
sPSActionDescriptor->Free(descriptor) to free each descriptor.
The main body of the plug-in code is finished. All it does is read an
incoming descriptor, determine whether or not to display a dialog box,
perform MakeNewDocument() based on the parameters, then hands a new
descriptor with those parameters back to the host. MakeNewDocument()
creates three new descriptors, stuffs one of them with our new document
parameters, stuffs that into a second descriptor, creates a result
descriptor, calls eventMake (which actually creates the new document
using the Photoshop Actions Engine) and then frees up the descriptors.
Note that the actual work of reading and writing descriptors is handled in
the routines in the MakeNewScripting.cpp source file, while the dialog
resources are defined in the MakeNew.r file and the dialog handling is
performed in the MakeNewUI.cpp source file. While not required, it is
suggested that you follow a similar modular source partitioning scheme.
Now that we have our basic function code correctly set up, we need to
address the scripting source code.

Adobe Photoshop Actions Event Guide

49

3. Creating An Automation Plug-in
Step 9 - Revise MakeNewScripting.cpp source file to eliminate
unnecessary TriggerFilters prototypes and functions and to add the
specific descriptor information we need for the make a new document:
Width, Height, Resolution, Fill, ColorMode. This is where your plug-in will
interact with the Photoshop Actions descriptor data structures.
MakeNewScripting.cpp performs the actual reading and writing of
descriptors. It contains the usual includes, PIDefines.h and
MakeNew-PPC.ch or MakeNew.h and the ReadScriptParams() and
WriteScriptParams() functions.
SPErr ReadScriptParams ()
{
SPErr error = kSPNoError;
if (sPSActionDescriptor.IsValid())
{ // Make sure we have a valid suite before trying this.
PIActionDescriptor descriptor = NULL;
PIDialogPlayOptions playInfo = plugInDialogDontDisplay;
sPSActionDescriptor.GetPlayInfo(&descriptor, &playInfo);
// If we got a valid descriptor, grab our key out of it:
if (descriptor != NULL)
{
error = sPSActionDescriptor->GetInteger
(
descriptor,
keyMyWidth,
&gWidth
);
error = sPSActionDescriptor->GetInteger
(
descriptor,
keyMyHeight,
&gHeight
);
error = sPSActionDescriptor->GetInteger
(
descriptor,
keyMyResolution,
&gResolution
);
// We don't care about type, so declare a variable
// that we'll ignore:
DescriptorEnumTypeID enumType = enumNull;
error = sPSActionDescriptor->GetEnumerated
(
descriptor,
keyMyFill,
&enumType,
&gFill
);
error = sPSActionDescriptor->GetClass
(

Adobe Photoshop Actions Event Guide

50

3. Creating An Automation Plug-in
descriptor,
keyMyMode,
&gMode
);
// Since we were handed this descriptor, it's our job to
// free it, but we'll free it on SetReturnInfo, so we're okay.
} // descriptor == NULL
}
return error;
} // end ReadScriptParams

ReadScriptParams() reads a new descriptor for our Make New
Document plug-in. It tests to make sure the sPSActionDescriptor suite
is valid before we start executing. Note: The class: sPSActionDescriptor
and its member: IsValid() are defined in PIUSuitePointer.h .

If the suite is valid, we declare a descriptor of the type
PIActionDescriptor and assign it a NULL value. Then we declare a
playinfo of the type PIDialogPlayOptions and assign it the value of
plugInDialogDontDisplay . It then calls
sPSActionDescriptor.GetPlayInfo(&descriptor, &playinfo) to
acquire the descriptor information and dialog display information and
places this information in the variables descriptor and playinfo .
We next check to see if there is any information in the descriptor. It
should have some, so we proceed to read the various keys for our Make
Document function: Width, Height, Resolution, Fill Mode, and Image
Mode. The descriptor is dynamic, sizing to fit the data it contains. You
have to anticipate what data is coming and call the correct functions to
acquire your data.
For the MakeNew plug-in, this means anticipating what types of keys we
will be acquiring from the incoming descriptor. We know that we want
Width, Height, Resolution, Fill Mode, and Image Mode.
We have defined our key values in our MakeNewTerminology.h file as:
#define
#define
#define
#define
#define
#define
#define

keyMyWidth
keyMyHeight
keyMyResolution
keyMyFill
typeMyFill
keyMyMode
typeClassMyMode

keyWidth
keyHeight
keyResolution
keyFill
typeFill
keyMode
// RGB, CMYK, etc.
typeClassMode

Since our values are nicely mapped into Photoshop’s existing keys for
Width, Height, etc. we are in good shape and we can quickly acquire the
first three using GetUnitFloat() . The fourth value, Fill, is an enumerated
value and enumerated values require an enumType variable in addition

Adobe Photoshop Actions Event Guide

51

3. Creating An Automation Plug-in
to the key and value. Therefore, we must declare an enumType variable
to hold the incoming type information, even though we don’t care about
it. The declaration and assignment statement:
DescriptorEnumTypeID enumType = enumNull;

creates the variable with a default value and
sPSActionDescriptor->GetEnumerated () acquires the enumerated Fill
value.
The final information we need from the incoming descriptor is the color
mode. This information is a Photoshop class and thus the
sPSActionDescriptor->GetClass() function is used to read this value.
At this point, we have acquired a new descriptor and read all of the
values needed for MakeNewDocument() in MakeNew.cpp to execute
successfully.
WriteScriptParams() is the mirror image of ReadScriptParams() , with
Put functions in place of Get functions.

Now, we need to handle the user interface and the resources associated
with the dialog boxes. This is done by revising the resource file and
MakeNewUI.cpp file.
Step 10 - Revise the MakeNew.r file to reflect the desired user interface.
The MakeNew.r file is the resource file that holds the descriptions of three
essential resources for our plug-in: the PiPL resource, the 'aete'
dictionary resource, and the dialog resource. We use two tools to create a
binary dialog with a visual editor. Then we’ll translate our revision into
text and copy it into the file MakeNew.r resource file.
This process is simplified by the use of Resorcerer® from
Mathemaesthetics, Inc. Resorcerer is an excellent Macintosh tool for
editing file resources, especially dialog boxes. For Windows developers,
this capability is already built into Microsoft Development Studio.

Adobe Photoshop Actions Event Guide

52

3. Creating An Automation Plug-in
In Resorcerer, you’ll see:

Make new DLOG and DITL resources that define the dialog box and
internal dialog items. Then arrange the dialog box resources to suit your
needs in the visual editor.
With Resorcerer, you can easily edit the dialog box and rearrange the
various elements: edit text boxes, static text boxes, input text boxes,
radio buttons, etc.

When you are done with the dialog window, save your revised file as
MakeNew-derez.rsrc or with the name of your new plug-in.

Adobe Photoshop Actions Event Guide

53

3. Creating An Automation Plug-in
Our newly revised dialog box will look like:

In our MakeNew plug-in, we have created Width, Height, Resolution,
Image Mode and Fill options. Width, Height and Resolution each require
a Static Text box and a Edit Text box. Image Mode requires two radio
buttons for RGB and CMYK options. Fill requires Static Text and two radio
button background options: White and Transparent. We are limiting our
options for simplicity sake.
Resorcerer lets you test out your dialog boxes and rearrange them until
they fit they way you want. When you are finished, save your binary file
as MakeNew-derez.rsrc .
Step 11 - Revise the MakeNew-derez.rsrc file to include the correct PiPL,
'aete' , and dialog box resources.
Once you are satisfied with the look of your dialog box using Resorcerer,
run the CodeWarrior ToolServer MPW Derez script to turn the binary
resource code into a resource text file. This script is provided for you in
the MakeNew.derez file. When you run this script under CodeWarrior
ToolServer, it changes any binary resources in the input file (in this case:
MakeNew-derez.rsrc ) into readable text that can be easily edited. We
name our MakeNew output resource text file: MakeNew-derez.r .
NOTE: MakeNew.derez is a script file that runs under CodeWarrior
ToolServer. See the CodeWarrior documentation for more information on
this tool.
In Resorcerer, we can manipulate the dialog boxes and other items in
their visual representation. Using Derez, we can deal with them as text
items.

Adobe Photoshop Actions Event Guide

54

3. Creating An Automation Plug-in
The MakeNew.derez.r file holds our new resource text file that describes
the dialog box resources. It contains the Macintosh DLOG and DITL dialog
box information. Note that the DLOG resource describes the entire dialog
box information (size, visible, has go away box, etc.) while the DITL
resource describes the individual elements within the dialog box (each
button, text field, etc.).
resource 'DLOG' (16000, "", purgeable) {
{20, 0, 214, 390},
movableDBoxProc,
visible,
noGoAway,
0x0,
16000,
""
/****** Extra bytes follow... ******/
/* $"A80A"
};
resource 'DLOG' (16001, "", purgeable) {
{87, 27, 307, 319},
movableDBoxProc,
visible,
noGoAway,
0x0,
16001,
"MakeNew"
/****** Extra bytes follow... ******/
/* $"680A"
};

/* ®. */

/* h. */

resource 'DITL' (16000, "", purgeable) {
{
/* array DITLarray: 3 elements */
/* [1] */
{-80, 0, -60, 60},
Button {
enabled,
"Hidden"
},
/* [2] */
{0, 0, 194, 390},
UserItem {
enabled
},
/* [3] */
{5, 5, 190, 360},
StaticText {
disabled,
"^0\n^1\n^2\n"
}
}
};
resource 'DITL' (16001, "", purgeable) {
{
/* array DITLarray: 15 elements */
/* [1] */
{8, 216, 28, 276},
Button {
enabled,
"OK"
},

Adobe Photoshop Actions Event Guide

55

3. Creating An Automation Plug-in
/* [2] */
{34, 216, 56, 276},
Button {
enabled,
"Cancel"
},
/* [3] */
{12, 8, 32, 80},
StaticText {
disabled,
"Width:"
},
/* [4] */
{13, 92, 29, 192},
EditText {
enabled,
""
},
/* [5] */
{45, 92, 61, 192},
EditText {
enabled,
""
},
/* [6] */
{44, 8, 64, 80},
StaticText {
disabled,
"Height:"
},
/* [7] */
{74, 8, 94, 88},
StaticText {
disabled,
"Resolution:"
},
/* [8] */
{75, 92, 91, 192},
EditText {
enabled,
""
},
/* [9] */
{108, 4, 140, 96},
StaticText {
disabled,
"Image mode:"
},
/* [10] */
{108, 104, 124, 264},
RadioButton {
enabled,
"RGB"
},
/* [11] */
{124, 104, 140, 264},
RadioButton {
enabled,
"CMYK"
},
/* [12] */
{156, 4, 188, 80},
StaticText {

Adobe Photoshop Actions Event Guide

56

3. Creating An Automation Plug-in
disabled,
"Fill:"
},
/* [13] */
{156, 104, 172, 264},
RadioButton {
enabled,
"White"
},
/* [14] */
{172, 104, 188, 264},
RadioButton {
enabled,
"Transparent"
},
/* [15] */
{188, 104, 204, 264},
RadioButton {
enabled,
"Background"
}
}
};

At this point, we will copy the DLOG and DITL resources from this file and
put them in our MakeNew.r file. This file is just a renamed
TriggerFilters.r file, so we need to revise all of the items for our
MakeNew resources. Before we revise the DLOG and DITL resources, we’ll
first revise the PiPL and 'aete' resources.
A Brief Note on ADM and Dialog Element Management
Even though we are using ADM to handle our dialog resources in our
plug-in, we still need to create (or revise) the dialog box resources
themselves. While we must create the actual dialog resources on each
platform, we can greatly simplify our programming overhead by using
ADM to handle how we interact with the dialog elements. ADM Suites
and functionality are documented in ADM.pdf.
Step 12 - Revise the MakeNew.r resource file to update the resources for
the MakeNew plug-in. MakeNew.r starts with the following definitions:
// The About box and resources are created in DialogUtilities.r.
// You can easily override them, if you like.
#define
#define
#define
"An

plugInName
"MakeNew"
plugInCopyrightYear "1998"
plugInDescription \
example Actions Module to make a new document in Adobe Photoshop®."

// Dictionary (aete) resources:
#define vendorName
#define plugInAETEComment

"AdobeSDK"
"makenew example actions plug-in"

#define plugInSuiteID
#define plugInClassID
#define plugInEventID

'sdKF'
plugInSuiteID
'makN'

//

Set up included files for Macintosh and Windows.

Adobe Photoshop Actions Event Guide

57

3. Creating An Automation Plug-in

#include "PIDefines.h"
#ifdef __PIMac__
#include "Types.r"
#include "SysTypes.r"
#include "PIGeneral.r"
#include "PIUtilities.r"
#include "DialogUtilities.r"
#elif defined(__PIWin__)
#include "PIGeneral.h"
#include "PIUtilities.r"
#include "WinDialogUtils.r"
#endif
#include "PIActions.h"
#include "MakeNewTerminology.h"

These resource code and definitions get compiled and become the
resources for our MakeNew plug-in.
The first group of defines name our plug-in name “MakeNew”, sets the
copyright year, and the description. The dictionary 'aete' resources are
set as AdobeSDK , etc.
Note: You must replace these SDK values. SDK_ is reserved by Adobe.
Finally, we will include a number of .r files ( Types.r , PIGeneral.r , etc.).
These are the templates for our resources.
Resource files ( FILENAME.r ) require a template as well as the resource
file. The .r file contains definitions that cannot compile without the
template. Templates set the format required for the resource files. This is
why the include files are necessary.
For example, the base template file for resources of type 'PiPL' is
PiPL.r . This file is found in the SDK in
SDK/Macintosh/SampleCode/Common/Rez-files/Photoshop folder and is included
in the PIGeneral.r file. It defines what a PiPL format is and what
parameters are required. The MakeNew.r file will contain a PiPL (as well as
other resources) that adheres to the template defined in PiPL.r .
In the MakeNew.r file, we have four important resources: 1) the PiPL, 2) an
'aete' dictionary resource, 3) the DLOG and DITL dialog resources, and 4)
any custom strings we may have.
In the MakeNew.r file, we will rewrite any items that refer to the
TriggerFilters plug-in. This means that we will revise the PiPL information,
the 'aete' definition, the dialog resources ( DLOG and DITL ) and some of
our string information.

Adobe Photoshop Actions Event Guide

58

3. Creating An Automation Plug-in
1) Edit the PiPL
We start with the PiPL. This is the static information that tells any host
information about your plug-in. PiPLs contain the properties of your
plug-in.
The first entry in the PiPL is the version. The version field contains the
version of the PiPL template. The current version as of Photoshop 5.0 is 0.
The count field holds the number of properties contained in the PiPL. The
properties field is a variable length array containing the actual PiPL data.
Each property field contains at minimum five items: a vendorID code that
identifies the host of the plug-in; a propertyKey that specifies the type of
plug-in; a propertyID that is always zero except in one rare exception and
can be considered reserved; a propertyLength that contains the length of
the propertyData field; and propertyData, a variable length field that
contains the plug-in specific data.
PiPLs are more completely documented in the Cross-application Plug-In
Resource Guide document contained in the Photoshop 5.0 SDK. The PiPL.r
file also contains a complete template for all Adobe PiPLs.
resource 'PiPL' (ResourceID, plugInName " PiPL", purgeable)
{
{
Kind { Actions },
Name { plugInName "..." },
Category { "" },
Version { (latestActionsPlugInVersion << 16)
| latestActionsPlugInSubVersion },
#ifdef __PIMac__
CodePowerPC { 0, 0, "" },
#elif defined(__PIWin__)
CodeWin32X86 { "ENTRYPOINT" },
#endif
HasTerminology
{
plugInClassID,
plugInEventID,
ResourceID,
vendorName " " plugInName// Unique string.
},
//
//
//
//
//
//
//
//
//
//
//
}

If you want this on all the time,
remove the EnableInfo property (such
as for help menu entries.) To have this
on according to document
open, close, and mode guidelines,
provide a minimal EnableInfo, such
as the one here:
I'm going to comment EnableInfo out so that this plug-in
is available all the time
(absence of EnableInfo = always available).
EnableInfo { "true" },

};

Adobe Photoshop Actions Event Guide

59

3. Creating An Automation Plug-in
Starting from the top, note that we can use “Actions” as our plug-in kind
because it is defined in the PiPL.r template file as follows:
#define PIPiPLTypes
\
/* Photoshop plug-in types: */\
General = '8BPI',
\
Filter = '8BFM',
\
Parser = '8BYM',
\
ImageFormat='8BIF',
\
Extension = '8BXM',
\
Acquire = '8BAM',
\
Export = '8BEM',
\
Selection = '8BSM',
\
Picker = '8BCM',
\
Actions = '8LIZ',
\ //here is our plug-in type definition!

Since Action is defined as '8LIZ' , we can use either Action or '8LIZ' as
our plug-in kind.
For Name, we use
'plugInName "... " '.

This will automatically be filled in for you because it is defined at the top
of the file, and this is what will be shown in the Automate menu
(MakeNew ...).
There is no Category value, so it is left blank. If you wanted to put your
Plug-in in the Help menu and not the Automate menu, you would put the
value, PSHelpMenu into the Category element. With no Category value,
your plug-in will appear in the Automate menu. If you do not want your
automation plug-in to appear in any menu (which would be the case if
you wanted to call your plug-in from another plug-in without letting the
user call it directly), put the value PSHidden in the Category element. Be
careful, however, since if you hide it, your user will have no way of calling
it.
The HasTerminology structure tells Photoshop that you have an 'aete'
dictionary (to be defined later in this file), and it includes ClassID,
EventID, ResourceID and a unique string. The unique string can be your
vendor name plus your plug-in name, but we recommend UUIDs. These
elements are defined at the top of this file.
At the end of the PiPL, there is an EnableInfo { } element. This element
determines when your plug-in is made available to the user. (When your
plug-in is not available, its menu entry will be greyed out.). In the
absence of an EnableInfo data structure, the plug-in will be available all
the time. If EnableInfo is set to “true”, it will be available all the time if
there is a document open. You can use this setting to determine when
your plug-in is enabled. For example, if EnableInfo is set to
In(PShop_ImageMode(RGBMode, CMYKMode)) then the plug-in would be
enabled only when the image mode is RGB or CMYK. See the Cross-app
Plug-in Resource Guide for more information.
Adobe Photoshop Actions Event Guide

60

3. Creating An Automation Plug-in
Since our MakeNew plug-in needs to be available even when there is no
document open, we will eliminate the EnableInfo property entirely,
making the plug-in always available.
The last thing in this PiPL is the entry point of the plug-in. You leave this
untouched, since it is generated automatically by the compiler.
2) Editing dictionary resources
The 'aete' is a dictionary resource required for AppleScript and the
Photoshop scripting system is based on AppleScript. The 'aete' resource
is required. It is a dictionary resource that defines various elements of
your plug-in parameters and maps your text names to the actual values
they represent. You can copy the TriggerFilters 'aete' resource and fill
in the sections that apply to your plug-in. For an automation plug-in, you
need to fill in the top part and the parameter values.
In the case of MakeNew, we insert our unique variables (plugInName,
plugInClassID, plugInEventID, etc.) that are defined at the top of this file.
The 'aete' requires that we list the parameters and their key IDs, so we
put in “width”, keyMyWidth, “height”, keyMyHeight, etc. This maps our
keys to “human readable text.” For example, our key “keyMyWidth” is
mapped to the human readable text: “width”, and so on.
NOTE: The text values that you enter in the 'aete' will be the text that is
shown in the Actions Palette when your automation plug-in runs. Since
we mapped the text “width” to our value keyMyWidth, if we capture our
plug-in execution with the Record Actions command, the value shown in
the Action Palette will be “width.”

Finally, the 'aete' requires that we put our enumerated values
separately from the other parameters. So we put “white” and
“transparent” at that location. That completes the MakeNew 'aete'
resource.
resource 'aete' (ResourceID, plugInName " dictionary", purgeable)
{
1, 0, english, roman,/* aete version and language specifiers */
{
vendorName,
/* vendor suite name */
"Adobe example plug-ins",
/* optional description */

Adobe Photoshop Actions Event Guide

61

3. Creating An Automation Plug-in
plugInSuiteID,
1,
1,
{
plugInName,
plugInAETEComment,
plugInClassID,
plugInEventID,

/* suite ID */
/* suite code, must be 1 */
/* suite level, must be 1 */
/* structure for automation */
/* name */
/* optional description */
/* class ID, must be unique or Suite ID */
/* event ID, must be unique */

NO_REPLY,
/* never a reply */
IMAGE_DIRECT_PARAMETER,/* direct parameter, used by Photoshop */
{
// filter or selection class here:
// name:
"width",
// key ID:
keyMyWidth,
// type ID:
typeInteger,
// optional description:
"",
// flags:
flagsSingleParameter,
"height",
keyMyHeight,
typeInteger,
"",
flagsSingleParameter,
"resolution",
keyMyResolution,
typeInteger,
"",
flagsSingleParameter,
"mode",
keyMyMode,
typeClassMyMode,
"",
flagsSingleParameter,
"fill",
keyMyFill,
typeMyFill,
"", // optional comment
flagsEnumeratedParameter
}
},
{}, /* non-filter/automation plug-in class here */
{}, /* comparison ops (not supported) */
{ // Enumerations go here:
typeFill,
{
"white",
enumWhite,
"",
"transparent",
enumTransparent,
""
}

}
/* end of any enumerations */

Adobe Photoshop Actions Event Guide

62

3. Creating An Automation Plug-in
}
};

3) Edit the Dialog resources
We are now ready to revise the DLOG and DITL resources that we copied
into our MakeNew.r file from the MakeNew.derez.r file.
DLOG is the general information about the dialog box, its size, when it is

visible, whether has a title bar that is movable, whether it can be closed
(it has a go away box), where in the screen it will be displayed, etc. DITL
contains the descriptions of the individual items in the dialog window.
DLOG - In our modified DLOG resource, we just need to change the pluginName. For example, the Trigger Filters DLOG resource looks like:
resource 'DLOG' (16001, "", purgeable) {
{87, 27, 307, 319},
movableDBoxProc,
visible,
noGoAway,
0x0,
16001,
"MakeNew"
/****** Extra bytes follow... ******/
/* $"680A"
};

/* h. */

We’ll change it to look like:
resource 'DLOG' (uiID, plugInName " UI", purgeable) {
{87, 27, 307, 319},
movableDBoxProc,
visible,
noGoAway,
0x0,
uiID,
plugInName,
centerParentWindowScreen
};

Here we are changing the first line from static text to variables that we
can define elsewhere. This simplifies the process. We could have also
specified the correct text as:
resource 'DLOG' (16001, “MakeNewUI", purgeable) {

but this hard coding requires that we go and find each instance of the
hard coded text when we want to make a change. By using variables, we
can just change the definitions once and the correct information will be
inserted everywhere it is required.
NOTE: The resource uiID is set at 16001 because Adobe Developer
Relations chose to use this number as a unique resource ID. There is no
significance to this number. It is defined in PIUBasic.h .

Adobe Photoshop Actions Event Guide

63

3. Creating An Automation Plug-in
DITL - In the DITL resource, we need to change all of the elements that

we are going to use in your dialog box.
resource 'DITL' (uiID, plugInName " UI", purgeable) {
{
/* array DITLarray: 14 elements */
/* [1] */
{8, 216, 28, 276},
Button {
enabled,
"OK"
},
/* [2] */
{34, 216, 56, 276},
Button {
enabled,
"Cancel"
},
/* [3] */
{12, 8, 32, 80},
StaticText {
disabled,
"Width:"
},
/* [4] */
{13, 92, 29, 192},
EditText {
enabled,
""
},
/* [5] */
{44, 8, 64, 80},
StaticText {
disabled,
"Height:"
},
/* [6] */
{45, 92, 61, 192},
EditText {
enabled,
""
},
/* [7] */
{74, 8, 94, 88},
StaticText {
disabled,
"Resolution:"
},
/* [8] */
{75, 92, 91, 192},
EditText {
enabled,
""
},
/* [9] */
{108, 4, 140, 96},
StaticText {
disabled,
"Mode:"
},
/* [10] */
{108, 104, 124, 264},
RadioButton {

Adobe Photoshop Actions Event Guide

64

3. Creating An Automation Plug-in
enabled,
"RGB"
},
/* [11] */
{124, 104, 140, 264},
RadioButton {
enabled,
"CMYK"
},
/* [12] */
{156, 4, 188, 80},
StaticText {
disabled,
"Fill:"
},
/* [13] */
{156, 104, 172, 264},
RadioButton {
enabled,
"White"
},
/* [14] */
{172, 104, 188, 264},
RadioButton {
enabled,
"Transparent"
}
}
};

Note the change in the first line:
resource 'DITL' (16001, "TriggerFilters UI", purgeable) {

becomes:
resource 'DITL' (uiID, plugInName " UI", purgeable) {

Of course, the individual data elements for each button are unique to the
MakeNew and TriggerFilter plug-in resources. For the MakeNew plug-in,
there are individual dialog elements for the OK button, the Cancel
button, the static text buttons, edit texts for Width, Height, Resolution,
and the radio buttons for Fill and Color Mode.
For more information on dialog resources, refer to Macintosh and
Windows programming reference guides.
4) Edit the String Resources
You can put text in the dialog boxes as literal text. However, every time
you changed your text strings, the dialog resources would have to be
adjusted manually. By using string resources, you can change your text
without affecting other elements of the program. (This is very useful for
localization of your plug-in for international markets.)
The Cancel button is also used when the user holds option or alt, as a
“Reset” button. In the MakeNew plug-in we use two strings for “Reset”
and Cancel. Using strings is not just a great time saver for adjusting your
Adobe Photoshop Actions Event Guide

65

3. Creating An Automation Plug-in
plug-in for international use, but it also lets you keep memory allocation
of literally defined strings down to a minimum. It is also helpful for easily
converting this information from Macintosh to Windows platforms.
resource StringResource (kResetStringID, purgeable)
{
"Reset"
};
resource StringResource (kCancelStringID, purgeable)
{
"Cancel"
};

These strings are used to rename the Cancel button. It is a Photoshop
historical feature to let the user reset to default values by placing the
cursor over the Cancel button while holding down the option or alt key.
These strings will be used to implement this function.
This completes the revision of the MakeNew.r resource file. It is a good
practice to compile this file now and find and eliminate any compile time
errors. If we have none, then we know we have a good resource file for
our project.
We now have revised our header files, the main MakeNew.cpp source file,
the MakeNewScripting.cpp source file and the MakeNew.r resource file.
Now all we need do to complete our plug-in is to revise our
MakeNewUI.cpp source file.
Step 13 - Revise the MakeNewUI.cpp source file. This file will handle all of
the UI functions, using calls to ADM suites to manage how to respond to
where the mouse is positioned and what buttons and keys the user
presses. ADM Suites and their functionality are documented in ADM.pdf
contained in the Photoshop 5.0 SDK. One advantage of ADM is we write
the user interface handler once and can use it on both Mac and PC
platforms.
Our current MakeNewUI.cpp source file is just a copy of the
TriggerFiltersUI.cpp file, so we have to go in and eliminate the
references to TriggerFilters resources and replace them with the
references to the MakeNew resources as defined in MakeNew.r .
MakeNewUI.cpp starts with the usual defines files that we need to revise
to use the MakeNew.h file, and then lists the definitions of our dialog

items. These are an enumerated list starting with the “OK” button as item
1, and the Cancel button is item 2, so we just have to list the constants
associated with each dialog item. These items can be found in MakeNew.r
file.
Note: ADM requires and expects that items numbered 1 and 2 will be the
“Okay” button and Cancel button in that order.

Adobe Photoshop Actions Event Guide

66

3. Creating An Automation Plug-in
enum
{
kDNoUI = -1,// Error.
kDOk_button = 1,// Must be one.
kDCancel_button,// Must be two.
kDWidth_staticText,
kDWidth_editText,
kDHeight_staticText,
kDHeight_editText,
kDResolution_staticText,
kDResolution_editText,
kDMode_staticText,
kDMode_button_RGB,
kDMode_button_CMYK,
kDFill_staticText,
kDFill_button_white,
kDFill_button_transparent
};

The “D” designation is just an Adobe Developer Relations convention to
indicate that these constants are dialog box related.
Next are the constants associated with MakeNew.
const int kHeightMin = 1;
const int kHeightMax = 30000;
const int kWidthMin = kHeightMin;
const int kWidthMax = kHeightMax;
const int kResolutionMin = 1;
const int kResolutionMax = 9999;

In this case, we are defining a maximum and minimum value for height
and width, and are further defining these values for Width to be the same
as those for Height. Finally, we are setting the Resolution to be a value
from 1 to 9999 (Whew! that would be a big file!). Because we are also
going to be concerned with the state of the Cancel button (see code
explanation later on in this chapter), we will declare a boolean variable:
gCancelButtonIsReset and set it’s value to false . This will be used
later to determine the state of the Cancel button.
Next are the prototypes for our “handle the user input” routines:
static ASErr ASAPI DoUIInit(ADMDialogRef dialog);
static SPErr InitCancelButton(ADMDialogRef dialog);
static
static
static
static

void
void
void
void

SaveParameters(void);
RestoreParameters(void);
SetTextToCancel(ADMItemRef item);
SetTextToReset(ADMItemRef item);

static void ASAPI DoCancel(ADMItemRef item, ADMNotifierRef notifier);
static ASBoolean ASAPI DoReset(ADMItemRef item, ADMTrackerRef tracker);
static void ASAPI DoWidthEditText(ADMItemRef item, ADMNotifierRef notifier);
static void ASAPI DoHeightEditText(ADMItemRef item, ADMNotifierRef notifier);

Adobe Photoshop Actions Event Guide

67

3. Creating An Automation Plug-in
static void ASAPI DoResolutionEditText(ADMItemRef item,
ADMNotifierRef notifier);

These include calls to ADM functions and start with an initialize function,
an initialize the cancel button function, save and restore parameters
functions, and set text to Cancel or Reset functions.
Next comes the prototypes for the actual Cancel and Reset functions, as
well as the input text for our dialog boxes for Width, Height, and
Resolution options.
Our global values are defined and then the various UI routines are listed,
starting with DoUI shown below. DoUI sets up ADM to handle our user
interface interaction.
SPErr DoUI ()
{
SPErr error = noErr;
int item = -1;// Error value.
SaveParameters();// Save our parameters, just in case.
if (sPSUIHooks.IsValid() && sADMDialog.IsValid())
{
item = sADMDialog->Modal
(
sPSUIHooks.GetPlugInRef(),
"MakeNew",
uiID,
kADMModalDialogStyle,
DoUIInit,
NULL /* No user data */
);
}
if (item != kDOk_button)
{
error = userCanceledErr;
RestoreParameters();
}
return error;
}

The first thing performed in the DoUI routine is the creation of an integer
variable, item , and setting it to the value of -1 (an error value). This is
because this routine returns an integer value and we want to make sure
that if there is a problem in this routine, we return an error value.
We next check to make sure that the Photoshop User Interface Hooks and
ADM Dialog suites are valid:
if (sPSUIHooks.IsValid() && sADMDialog.IsValid())

Adobe Photoshop Actions Event Guide

68

3. Creating An Automation Plug-in
If they are valid, then item is assigned the value returned by the
sADMDialog->Modal function call, which is the number of the dialog item
that was used to dismiss the dialog. Usually kDOk_button or
kDCancel_button .
sADMDialog is a smart suite pointer for the suite that runs the dialog
interaction. sPSUIHooks is another pointer to the suite that contains
some utility functions including sPSUIHooks.GetPlugInRef() which we

use to get the unique Plug-in Reference ID that is given to the plug-in by
the host when the plug-in is first started. Several ADM suites and
functions require the plug-in reference of the current plug-in. ADM uses
that information to track who owns what dialog.
In sADMDialog->Modal() we pass several parameters as defined in the
ADMDialog.h file. They set up ADM to handle the dialog functions with
the following information:
1) The sPSUIHooks.GetPlugInRef() function provides the unique plugin reference.
2) A name of the new dialog is provided. In this case, we use “MakeNew
Document”. This is the text that will appear in the title bar of this new
dialog box.
3) A dialog ID ( uiID ) is provided. It is the same ID as used in the
MakeNew.r file. This tells ADM what resource to use for the dialog. The
cross-platform ADM routines will draw the user interface using the
platform specific dialog resources defined earlier. In our plug-in, uiID is
defined as 16001. (See PIUtilities.r for those define statements.)
4) A constant that specifies the style of dialog. In this case (and in almost
all Photoshop plug-ins), kADMModalDialogStyle is used. This dialog style
supports a window that can be moved around the screen, and that must
be dismissed before continuing.
5) The name of the routine that initializes the dialog elements using ADM
routines. In this case, it is our DoUIInit() routine.
6) Any extra data that may be required. This information can be a pointer,
strings, structures, or whatever you may want to associate with your
dialog boxes. In this case, there is no user data, so we pass a NULL value.
This routine, DoUI(), runs the dialog, does the interaction with the
dialog boxes, and when the user hits the Ok or Cancel button, it returns
with the value of the button used to end the routine in the variable item .
This is shown below:
if (item != kDOk_button)
{
error = userCanceledErr;
RestoreParameters();
}

Adobe Photoshop Actions Event Guide

69

3. Creating An Automation Plug-in
If the button used to dismissed the dialog is not the Ok button, then it
must have been the Cancel button, so this routine returns
userCanceledErr and restores the old parameters. Otherwise, if the
routine went okay, then there is no error returned.
The first function that is executed when DoUI() is run is DoUIInit :
static ASErr ASAPI DoUIInit(ADMDialogRef dialog)
{
ASErr error = kSPNoError;
ADMItemRef item;
// Set up list and display default item:
InitCancelButton(dialog);
// Set up Width edit text:
item = sADMDialog->GetItem(dialog, kDWidth_editText);
sADMItem->SetUnits(item, kADMNoUnits);
sADMItem->SetIntValue(item, (int)gWidth);
sADMItem->SetMinIntValue(item, kWidthMin);
sADMItem->SetMaxIntValue(item, kWidthMax);
sADMItem->SetNotifyProc(item, DoWidthEditText);
// Set up Height edit text:
item = sADMDialog->GetItem(dialog, kDHeight_editText);
sADMItem->SetUnits(item, kADMNoUnits);
sADMItem->SetIntValue(item, (int)gHeight);
sADMItem->SetMinIntValue(item, kHeightMin);
sADMItem->SetMaxIntValue(item, kHeightMax);
sADMItem->SetNotifyProc(item, DoHeightEditText);
// Set up Resolution edit text:
item = sADMDialog->GetItem(dialog, kDResolution_editText);
sADMItem->SetUnits(item, kADMNoUnits);
sADMItem->SetIntValue(item, (int)gResolution);
sADMItem->SetMinIntValue(item, kResolutionMin);
sADMItem->SetMaxIntValue(item, kResolutionMax);
sADMItem->SetNotifyProc(item, DoResolutionEditText);
// Set up Mode radio buttons:
// Translate gMode to some useful number:
int buttonHighlighted = kDMode_button_RGB;
switch (gMode)
{
case classCMYKColorMode:
buttonHighlighted = kDMode_button_CMYK;
break;
case classRGBColorMode:
default:
// We don't know what it is, so make it RGB:
buttonHighlighted = kDMode_button_RGB;
break;
}
// Now loop and turn off all buttons but the one that should
// be on:
for
(
int loop = kDMode_button_RGB;
loop <= kDMode_button_CMYK;

Adobe Photoshop Actions Event Guide

70

3. Creating An Automation Plug-in
loop++
)
{
item = sADMDialog->GetItem(dialog, loop);
if (loop == buttonHighlighted)
sADMItem->Activate(item, true);
else
sADMItem->Activate(item, false);
}
// Set up Fill radio buttons:
// etc.

This function starts by initializing its error condition as no error. Then a
variable item of the type ADMItemRef is declared. ADM expects all dialog
objects to have their own native type so that it can easily keep track of
everything. In this case, we are creating a reference to a type ADMItem .
Other possible ADM types include: ADMDialog , ADMDrawer , ADMList ,
ADMEntry , ADMNotifier , ADMTracker , ADMIcon , ADMImage , ADMUserData,
ADMTimer , ADMActionMask , and ADMChar . These are defined in the ADM
documentation and listed in the ADMTypes.h file.
The next thing this function does is set up the Cancel button to notify our
UI routine when it is clicked by the user. Since we want to be able to
support the Photoshop convention of using the Cancel button as a Reset
to Default Parameters function (when the user holds down the Option/Alt
key when pressing Cancel), we must be notified when the Cancel button
occurs. The call to InitCancelButton(dialog) sets up these parameters.
InitCancelButton() will be discussed after DoUIInit().
Next, we set up the edit text dialog boxes for Width, Height, and
Resolution, as well as the Mode radio buttons. The various options (units,
value, minimum value, maximum value) are handled using ADM function
calls as shown here for the Width dialog.
// Set up Width edit text:
item = sADMDialog->GetItem(dialog, kDWidth_editText);
sADMItem->SetUnits(item, kADMNoUnits);
sADMItem->SetIntValue(item, (int)gWidth);
sADMItem->SetMinIntValue(item, kWidthMin);
sADMItem->SetMaxIntValue(item, kWidthMax);
sADMItem->SetNotifyProc(item, DoWidthEditText);

First, it sets the item we are dealing with using the
sADMDialog->GetItem(dialog, kDWidth_editText) function call.
Then SetUnit() the various minimum, maximum, and current values,
and finally SetNotifyProc() is used to track what is going on for each

dialog option box. This function will notify our dialog routines whenever
the user has changed something in the Width Edit Text box.
Notifiers are important ADM functions that are further explained in the
ADM documentation. ADM reports a number of different user actions and
provides this information via Notify routines. ADM notifiers track a
number of user events: User Changed, Entry Text Changed, Close Hit
Adobe Photoshop Actions Event Guide

71

3. Creating An Automation Plug-in
Notifier, Collapse Notifier, Expand Notifier, Bound Changed, Hide Window
Modifier, etc. ADMNotifier.h defines all of the different ADM Notifiers
that are available. The User Changed Notifier is helpful since it notifies
our routines that the user has changed something in our dialog boxes.
The same type of ADM set up that we did on Width is performed for
Height, and Resolution. The radio buttons are handled by a switch
statement, and a simple loop is used to turn off all of the buttons except
the one that is currently selected.
This completes our DoUIInit() routine.
We InitCancelButton() to receive notification when the user has
pressed the Cancel button. We want to support the Photoshop
convention of allowing dual use of the Cancel button. When the user
presses option key while clicking Cancel, the function performed is reset
values to default values and the Cancel button displays the Reset label
instead of the Cancel label. Our dialog routines must be notified when
this condition occurs.
InitCancelButton() takes a reference to the current dialog box and

returns any error that occurs while initializing the Cancel button to trap
the opotion/alt and mousedown notifiers and call our routines when
these events happen.
static SPErr InitCancelButton(ADMDialogRef dialog)
{
SPErr error = kSPNoError;
if (dialog != NULL)
{
// Set up "Cancel" button to notify us when its been clicked:
ADMItemRef item = sADMDialog->GetItem(dialog, kDCancel_button);
if (item != NULL)
{
sADMItem->SetNotifyProc(item, DoCancel);
//
//
//
if

Set up name of Cancel button. Since we have to have
resources around for "Reset" and "Cancel", we might
as well check them to load the right value:
(gCancelButtonIsReset)
SetTextToReset(item);
else
SetTextToCancel(item);
// Set up mask for tracker function:
ADMActionMask mask = sADMItem->GetMask(item);
sADMItem->SetMask
(
item,
mask |
kADMModKeyDownMask |
kADMModKeyUpMask |
kADMLeaveMask |
kADMEnterMask |
kADMButtonUpMask
);

Adobe Photoshop Actions Event Guide

72

3. Creating An Automation Plug-in

// Install tracker for it to be "Reset" when it needs to:
sADMItem->SetTrackProc(item, DoReset);
}
else
{
error = kSPBadParameterError;
}
}
else
{
error = kSPBadParameterError;
}
return error;
}

The routine starts with a no error assigment. It then checks to make sure
that the dialog is not NULL, and then it uses the ADM Dialog Suite:
ADMItemRef item = sADMDialog->GetItem(dialog, kDCancel_button);

to get a reference to the Cancel button of the current dialog. We then set
up the notifier to call our routine when the button is pressed:
sADMItem->SetNotifyProc(item, DoCancel);

Since we can have two conditions for our Cancel button (Cancel and
Reset) we set the text to be displayed on the button using
SetTextToCancel or SetTextToReset functions depending upon which
condition is true as specified by the state of our Boolean variable:
gCancelButtonIsReset .
Finally, we must set up the mask for checking whether the Option/Alt key
has been pressed in addition to the Cancel button being pressed. This
mask information is set up using SetMask() .
You set up a mask to tell ADM what to track and when. This is done by
declaring a mask, getting the current mask and then setting a new mask
to track the additional events you want:
ADMActionMask mask = sADMItem->GetMask(item);
sADMItem->SetMask
(
item,
mask |
kADMModKeyDownMask |
kADMModKeyUpMask |
kADMLeaveMask |
kADMEnterMask |
kADMButtonUpMask
);

To track the Option/Alt key event, we use a special type of notifier called
a tracker. It also must be set up to call our routine when an event occurs:

Adobe Photoshop Actions Event Guide

73

3. Creating An Automation Plug-in
sADMItem->SetTrackProc(item, DoReset);

We are choosing to track the Mod Key which is the Option key on the
Macintosh and Alt key on the Windows platform up and down, and
whether the mouse leaves or enters the Cancel button, and when the
user actually clicks. This will let us control how the Cancel button turns
into the Reset button (when the option key is pressed and the mouse is
over the Cancel button) and when the reset is actually performed (upon
click with the Option/Alt key pressed).
This routine is called when the cancel button is pressed. It is a notifierreceiver:
static void ASAPI DoCancel
(
ADMItemRefitem,
ADMNotifierRefnotifier
)
{
if (sADMNotify->IsNotifierType(notifier, kADMUserChangedNotifier))
{ // Correct notifier. Do this:
if (gCancelButtonIsReset)
{ // Must be reset!
RestoreParameters(); // Resets.
ADMDialogRef dialog = sADMItem->GetDialog(item);
DoUIInit(dialog);
}
else
{
sADMItem->DefaultNotify(item, notifier);
}
}
else
{
sADMItem->DefaultNotify(item, notifier);
}
}

if (sADMNotify->IsNotifierType(notifier,
kADMUserChangedNotifier)) determines what type of user input has

been performed. This is possible because ADM tracks a number of
different user actions and provides this information. ADMNotifier.h
defines all of the different ADM Notifiers available. In our case,
DoCancel() obtains the type of notifier and tests it to see if the Cancel
button is “Reset” (using the gCancelButtonIsReset boolean variable
defined at the top of the MakeNewUI.cpp file). If it is, then the previous
parameters will be restored, and DoUIInit() is called to stuff the default
parameters into their edit text fields and reset check and radio button
groups.
The next routines in the MakeNewUI.cpp source file are DoEditText()
for Width, Height, and Resolution .
The DoEditText() routines are called when the text is changed so that
the value can be acquired and put in a global variable.

Adobe Photoshop Actions Event Guide

74

3. Creating An Automation Plug-in
To acquire the new values in the dialog boxes, we use the ADM functions
to get the “value” of the changed dialog box.
gWidth = sADMItem->GetIntValue(item);

This is another way that ADM simplifies the handling of our dialog boxes.
In native code for the Mac (or PC) to obtain the value of the user input,
we would have to acquire the string data, and then convert to integer
values, etc. ADM is much more elegant (and easier!).
Finally, we use SaveParameters() and RestoreParameters() to save
and restore our parameters.
That’s it!
We’ve now revised all of the files (header, source, and resource files)
associated with MakeNew and are ready to compile our project.
Step 14 - Compile the project using CodeWarrior or your development
system. Find and correct any compile time errors.
Step 15 - Place the final MakeNew.8li binary file (our plug-in) into the
Plug-ins folder in the Photoshop application folder.
Step 16 - Run Photoshop and select our plug-in from the Automation
menu. Sit back and enjoy!

Adobe Photoshop Actions Event Guide

75

3. Creating An Automation Plug-in

Other Good Information:
A Note on Error Types: There are several types of similar error types
used in our plug-in, in Photoshop, in ADM and in the PICA suites.
Generally, they are defined as follows:
Table 3–3:
Error

Type

OSErr

Photoshop uses the Operating System type errors

SPErr

PICA uses its own error types (Sweet Pea or SP)

ASErr

Equivalent to SPErr, can be considered an Adobe Systems error type
(ASErr).

Adobe Photoshop Actions Event Guide

76

4

4. Using Listener
The purpose of this chapter is to give you a jumpstart in creating
automation plug-ins using the Listener, a Photoshop automation plug-in.
You need minimal experience in designing automation plug-ins. This is
the fastest and simplest way of assembling a working automation plugin. After going through the tutorial, you should be able to create more
complex automation plug-ins. Listener is the key in automation plug-in
design.

Listener Does Most Of The Work
The Listener plug-in automatically generates source code to help you.
Itself an automation plug-in, Listener is included in the Sample Code
folder of the Photoshop SDK. Once placed in the Photoshop Plug-Ins
folder, Listener operates in the background during a working session. The
Listener plug-in “listens” or generates code for all the “actionable events”
- events that are scriptable. For example, Listener can record the
selection of the paint tool, but can not record its application - the strokes
that are created on a document, the color, nor the positioning on a
document.

Listener Creates The Code
The Listener outputs C source code including- the declarations,
initializations, and function calls, necessary to execute actionable events.
The Listener outputs the code into a text file, named “Listener.log,” which
is created automatically. (Listener creates Listener.log file on the desktop
for the Mac; in the C:\ drive for Windows.)
The code generated by the Listener plug-in resembles the following
code:
void PlayeventMake(void)
{ PIActionDescriptor result;
PIActionDescriptor desc00000B38;
sPSActionDescriptor->Make(&desc00000B38);
PIActionDescriptor desc00000B40;
sPSActionDescriptor->Make(&desc00000B40);
sPSActionDescriptor->PutClass(desc00000B40, keyMode,
classRGBColorMode);
sPSActionDescriptor->PutUnitFloat(desc00000B40, keyWidth,
unitDistance, 576);
sPSActionDescriptor->PutUnitFloat(desc00000B40, keyHeight,
unitDistance, 576);
sPSActionDescriptor->PutUnitFloat(desc00000B40, keyResolution,
unitDensity, 72);
sPSActionDescriptor->PutEnumerated(desc00000B40, keyFill, typeFill,
enumWhite);
sPSActionDescriptor->PutObject(desc00000B38, keyNew, classDocument,
desc00000B40);
sPSActionControl->Play(&result, eventMake, desc00000B38,
plugInDialogSilent);
}

Adobe Photoshop Actions Event Guide

77

4. Using Listener
How To Develop An Automation Plug-in
This section describes the steps to build an automation plug-in using the
Listener plug-in. Within Photoshop, while the Listener is “listening” in the
background, you will manually go through the actions that your plug-in
would do. Next, you will copy the C code from the Listener.log file and
paste it into an existing plug-in project. Compile the modified plug-in.
Aside from possible syntactical errors, you will have created your own
automation plug-in.
Step 1: Copy Listener Plug-in ToPhotoshop Plug-Ins Folder

The Photoshop SDK contains the complete source code for the Listener
plug-in. The Listener plug-in is located in the Automation folder inside
the Sample Code folder of the Photoshop SDK. Copy the Listener plug-in
or create a shortcut to the Photoshop Plug-Ins folder. At launch,
Photoshop loads the plug-ins from the Photoshop/Plug-Ins folder.
Step 2: Clear the Listener.log file
Make sure that your Listener.log file is empty, clear of any code that may
have been recorded from previous Photoshop sessions. Close Photoshop.
Open your Listener.log file in a text editor and delete its contents. From
now on, whatever you do in Photoshop will be recorded by Listener.
Step 3: Prepare the Environment
Launch Photoshop and open a test document or a new document.
Prepare the environment in which the plug-in will be used. Depending
on the environment, certain menu items will be disabled or enabled. The
Listener can only record events that involve actions that are enabled for
that environment. Consider the document settings, such as color mode,
background, dimensions, etc…Choose settings that will enable menu
items that will be featured in your new plug-in. For this reason, it’s
important to have a clear understanding of how and where your plug-in
will be used. Keep in mind that the Listener plug-in is following every
action happening in Photoshop. If there is an action that you don’t want
to be included in the plug-in, you must edit it out of the Listener.log file.
Step 4: Apply Desired Actions On Test Document
Once you have the appropriate document opened and all the needed
menu items enabled, apply all the actions to the document that you want
your new automation plug-in to do. After you finish performing the
intended sequence of events, open the Listener.log file. You will see a list
of function definitions. The first function might be called
“PlayeventOpen” or PlayeventNew

Adobe Photoshop Actions Event Guide

78

4. Using Listener
Step 5: Build Off An Existing Automation Plug-in: MakeNew
Once you have the code that will execute the desired series of actions,
you will need to incorporate the code into an existing automation plugin. The MakeNew sample plug-in project (located in the Automation
folder inside the Sample Code folder) has all the components of an
automation plug-in. The MakeNew plug-in creates a new Photoshop
document, which is no different than File->New. You simply need to
paste in the coding that executes the actions.
Step 6: Verify The Contents Of Listener.log File
Open your Listener.log file. There should be code that resembles the
following:
void PlayeventNotify(void)
{
PIActionDescriptor result;
PIActionDescriptor desc000001A8;
sPSActionDescriptor->Make(&desc000001A8);
sPSActionDescriptor->PutEnumerated(desc000001A8, keyWhat,
typeNotify, enumFirstIdle);
sPSActionControl->Play(&result, eventNotify, desc000001A8,
plugInDialogSilent);
}
void PlayeventMake(void)
{
PIActionDescriptor result;
PIActionDescriptor desc000001D0;
sPSActionDescriptor->Make(&desc000001D0);
PIActionDescriptor desc000001D8;
sPSActionDescriptor->Make(&desc000001D8);
sPSActionDescriptor->PutClass(desc000001D8, keyMode,
classRGBColorMode);
sPSActionDescriptor->PutUnitFloat(desc000001D8, keyWidth,
unitDistance, 1024);
sPSActionDescriptor->PutUnitFloat(desc000001D8, keyHeight,
unitDistance, 768);
sPSActionDescriptor->PutUnitFloat(desc000001D8, keyResolution,
unitDensity, 72);
sPSActionDescriptor->PutEnumerated(desc000001D8, keyFill,
typeFill, enumTransparent);
sPSActionDescriptor->PutObject(desc000001D0, keyNew,
classDocument, desc000001D8);
sPSActionControl->Play(&result, eventMake, desc000001D0,
plugInDialogSilent);
}
void PlayeventSelect(void)
{
PIActionDescriptor result;
PIActionDescriptor desc00000248;
sPSActionDescriptor->Make(&desc00000248);
PIActionReference ref00000050;
sPSActionReference->Make(&ref00000050);
sPSActionReference->PutClass(ref00000050, classPaintbrushTool);
sPSActionDescriptor->PutReference(desc00000248, keyNull, ref00000050);
sPSActionControl->Play(&result, eventSelect, desc00000248,
plugInDialogSilent);
}

Notice that in the above sample code, there are three separate functions:
PlayeventNotify, PlayeventMake and PlayeventSelect. Depending on how
many actions you want to automate, the code in your Listener.log file
Adobe Photoshop Actions Event Guide

79

4. Using Listener
may have more and/or different functions. The PlayeventMake function
creates a new document. PlayeventSelect selects one of the tools in the
toolbar. PlayeventNotify is an action that occurs at launch of Photoshop.
Most likely your Listener output contains the PlayeventNotify and
PlayeventMake or PlayeventOpen. These functions are not necessary in
the plug-in you want to create. You don’t want your plug-in to create a
document or open the same document every time its invoked. Therefore,
you will need to delete the PlayeventNotify and PlayeventMake or
PlayeventOpen functions.
Step 7: Incorporate Function Calls
You must incorporate the functions of the desired actions into the
MakeNew plug-in. Modify MakeNew.cpp to add function prototypes and
C function calls in the appropriate places. In the MakeNew source file,
MakeNew.cpp, the Execute function is the main function. Place the
respective function calls for the desired actions, as specified by
“***function calls go here***” in the following excerpt from
MakeNew.cpp:
error = DoUI();
***function calls go here***
if (error ==kSPNoError)
{
MakeNewDocument();
WriteScriptParams();
}

To demonstrate using the previous sample code, the modified code
would look like the following:
error = DoUI();
PlayeventMake();
PlayeventSet();
if (error ==kSPNoError)
{
MakeNewDocument();
WriteScriptParams();
}

Step 8: Paste Function Definitions and Function Prototypes
Listener.log file consists entirely of a list of function definitions. In the
Listener.log file, “Select All” text and “Paste” it at the end of the
MakeNew.cpp file.
Next, include their appropriate prototypes in the “Prototypes” section at
the beginning of MakeNew.cpp.
For example, for the previous sample code, the prototypes would be:
void PlayeventMake(void);
void PlayeventSet(void);

Adobe Photoshop Actions Event Guide

80

4. Using Listener
Step 9: Comment Out The MakeNew Actions
In the MakeNew.cpp file, the Execute function controls the actions in
MakeNew. You need to remove or comment out the code that
characterize the MakeNew plug-in. First, remove the DoUI() function calls.
This function pops the MakeNew dialog, which is not necessary for your
plug-in. You will also comment out MakeNewDocument function call
which performs all the MakeNew actions. The WriteScriptParams features
the scripting for MakeNew. We will modify the WriteScriptParams to
display the parameters of your plug-in in proceeding sections.
Remove the appropriate lines of code, as illustrated in the following
code:
//error = DoUI();
***function calls go here***
//if (error ==kSPNoError)
//{
//MakeNewDocument();
//WriteScriptParams();
//}

Step 10: Build Your Plug-in And You Are Done!
Now, you have made the necessary code changes for your new plug-in.
Before building, make sure that under Project Settings, the build is
outputted to the Photoshop Plug-Ins folder. Rebuild the MakeNew plugin. After a successful build, close Photoshop and launch it again, so it will

reload all its plug-ins, including your new plug-in. Once in Photoshop,
open a test document, and invoke your plug-in by selecting MakeNew
under File->Automation->MakeNew.
Congratulations! You have just made your first automation plug-in!
note: If you want to enable scripting or create a UI for your plug-in refer
to Chapter 3 for details.
Adobe Photoshop Actions Event Guide

81

5

5. More Listener
At this point, you know how to use Listener to create code for you.
Unfortunately, Listener has its limitations. This chapter explains the
Listener output in detail and the code needed to fill in the holes of
Listener output.

Type Tool
Listener cannot retrieve type tool data from Photoshop. Listener will
always give you a pointer called voidPtrToData. The PlayeventMake
function containing voidPtrData will look similar to the following code:
void PlayeventMake(void)
{
PIActionDescriptor result;
PIActionDescriptor desc00000200;
sPSActionDescriptor->Make(&desc00000200);
PIActionReference ref00000048;
sPSActionReference->Make(&ref00000048);
sPSActionReference->PutClass(ref00000048, classTextLayer);
sPSActionDescriptor->PutReference(desc00000200, keyNull, ref00000048);
PIActionDescriptor desc00000208;
sPSActionDescriptor->Make(&desc00000208);
sPSActionDescriptor->PutString(desc00000208, keyText, "Hello World!");
sPSActionDescriptor->PutData(desc00000208, keyTextData, 143,
voidPtrToData );
PIActionDescriptor desc00000210;
sPSActionDescriptor->Make(&desc00000210);
sPSActionDescriptor->PutUnitFloat(desc00000210, keyHorizontal,
unitPercent, 22.3999);
sPSActionDescriptor->PutUnitFloat(desc00000210, keyVertical,
unitPercent, 33.9152);
sPSActionDescriptor->PutObject(desc00000208, keyTextClickPoint,
classPoint, desc00000210);
sPSActionDescriptor->PutObject(desc00000200, keyUsing, classTextLayer,
desc00000208);
sPSActionControl->Play(&result, eventMake, desc00000200,
plugInDialogSilent);
}

Replace the PlayeventMake in your Listener output with the
MakeTypeLayer function. Be sure to include the desired parameters, such
as HorizontalPosition=29; VerticalPosition=40; Text = "hello world";
FontName = "Helvetica"; Alignment = enumLeft; Size = 12;antialias =
true; AutoKern = true;
void MakeTypeLayer(double HorizontalPosition, double VerticalPosition , char *
Text, char *FontName, long Alignment, double Size, bool antialias, bool AutoKern)
{
PIActionDescriptor descriptor;
PIActionDescriptor positionDescriptor;
PIActionDescriptor typeDescriptor;
PIActionDescriptor result;
PIActionReference reference;
sPSActionDescriptor->Make(&descriptor);
sPSActionDescriptor->Make(&positionDescriptor);
sPSActionDescriptor->Make(&typeDescriptor);

Adobe Photoshop Actions Event Guide

82

5. More Listener
sPSActionDescriptor->Make(&result);
sPSActionReference->Make(&reference);
sPSActionReference->PutClass(reference, classTextLayer);
sPSActionDescriptor->PutReference(descriptor, keyNull, reference);
sPSActionDescriptor->PutUnitFloat(positionDescriptor, keyHorizontal,
unitDistance, HorizontalPosition);
sPSActionDescriptor->PutUnitFloat(positionDescriptor, keyVertical,
unitDistance, VerticalPosition);
sPSActionDescriptor->PutObject(typeDescriptor, keyTextClickPoint,
classPoint, positionDescriptor);
sPSActionDescriptor->PutString(typeDescriptor, keyText, Text);
sPSActionDescriptor->PutString(typeDescriptor, keyFontName, FontName);
sPSActionDescriptor->PutInteger(typeDescriptor, keyScript, 0);
sPSActionDescriptor->PutEnumerated(typeDescriptor, keyAlignment,
typeAlignment, Alignment);
sPSActionDescriptor->PutInteger(typeDescriptor, keySize, Size);
sPSActionDescriptor->PutBoolean(typeDescriptor, keyAntiAlias, antialias);
sPSActionDescriptor->PutBoolean(typeDescriptor, keyAutoKern, AutoKern);
//to get vertical text:
sPSActionDescriptor->PutBoolean( typeDescriptor, keyVertical, true );
sPSActionDescriptor->PutBoolean(typeDescriptor,keyRotate,true);
sPSActionDescriptor->PutObject(descriptor, keyUsing, classTextLayer,
typeDescriptor);
sPSActionControl->Play(&result, eventMake, descriptor, plugInDialogSilent);
};

Adobe Photoshop Actions Event Guide

83

6

6. Filter Action Events
This chapter describes of all the actionable filter events that are available
in Photoshop. Some filters are internal to Photoshop and cannot be
removed from the program. Others are included in the Plug-in folder and
can be removed from the program by removing them from the Plug-in
folder. This chapter details those two type of filters: internal filters and
plug-in filters.
Filter Events are events that modify the pixels of a document. They are
most commonly found in the Filter menu.
In Photoshop itself, you are limited to the values you can input into any
given filter by the pinned values defined in the UI. When programming
automation plug-ins, you are unrestricted in the values you may enter,
and it is often good practice to pin values in your code to avoid
Photoshop coming back with errors.
After the event name, a table will list the required parameters for the
descriptor.
Unless a specific target is given, the action will be performed on the
current element up the current target chain that is capable of performing
that action.

Adobe Photoshop Actions Event Guide

84

6. Filter Action Events

Built-In Filter Events
eventAddNoise ('AdNs')
Image Reference
Table 4–4: eventAddNoise Parameters (3)
Key

Type

Bounds

Options

keyAmount ('Amnt')

typeInteger

1 .. 999

flagsSingleParameter

keyDistribution ('Dstr')

typeDistribution ('Dstr')

flagsEnumeratedParameter

keyMonochromatic
('Mnch' )

typeBoolean

flagsSingleParameter

eventBlur ('Blr ')
Image Reference
takes no parameters

eventBlurMore ('BlrM')
Image Reference
takes no parameters

eventBorder ('Brdr')
Image Reference
Table 4–5: eventBorder Parameter (1)
Key

Type

keyWidth (‘Wdth')

unitfloat /unit pixels
('#Pxl')

Bounds

Options
flagsEnumeratedParameter

keyWidth

This is the amount of units to expand away from the current selection
path. The units available are pixels and distance .

eventBrightness ('BrgC')
Image Reference
Table 4–6: eventBrightness Parameters (2)
Key

Type

Bounds

Options

keyBrightness ('Brgh')

typeInteger

-100..100

flagsOptionalSingleParameter

keyContrast ('Cntr')

typeInteger

-100..100

flagsOptionalSingleParameter

Adobe Photoshop Actions Event Guide

85

6. Filter Action Events
eventColorBalance ('ClrB')
Image Reference
Table 4–7: eventColorBalance Parameters (4)
Key

Type

Bounds

Options

keyShadowLevels ('ShdL')

typeInteger

flagsListParameter

keyMidtoneLevels ('MdtL')

typeInteger

flagsListParameter

keyHighlightLevels
('HghL')

typeInteger

flagsListParameter

keyPreserveLuminosity
('PrsL')

typeBoolean

flagsOptionalSingleParameter

targets: null
keyShadowLevels

This is the percentage amount by which the Cyan/Red, Magenta/Green,
and Yellow/Blue sliders are changed.
keyMidtoneLevels

This is the percentage amount by which the Cyan/Red, Magenta/Green,
and Yellow/Blue sliders are changed.
keyHighlightLevels

This is the percentage amount by which the Cyan/Red, Magenta/Green,
and Yellow/Blue sliders are changed.
keyPreserveLuminosity

This toggles whether or not the luminosity channel of the image is to be
preserved. True means yes.

eventColorRange ('ClrR')
Image Reference
Table 4–8: eventColorRange Parameters (6)
Key

Type

keyUsing ('Usng')

typeFSS

keyFuzziness ('Fzns')

typeInteger

keyMinimum ('Mnm ')

classColor('Clr ')

flagsOptionalSingleParameter

keyMaximum ('Mxm ')

classColor ('Clr ')

flagsOptionalSingleParameter

keyColors ('Clrs')

typeColors ('Clrs')

flagsOptionalEnumeratedParameter

keyInvert ('Invr')

typeBoolean

flagsOptionalSingleParameter

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsOptionalSingleParameter

0 . . 200

flagsOptionalSingleParameter

86

6. Filter Action Events
eventContract ('Cntc')
Image Reference
Table 4–9: eventContract Parameter (1)
Key

Type

keyBy ('By ')

unitFloat/unitPixels
('#Pxl')

Bounds

Options
flagsEnumeratedParameter

targets: null
keyBy

This is the number in pixels by which the selection mask will shrink.

eventCurves ('Crvs')
Image Reference
Table 4–10: eventCurves Parameters (2)
Key

Type

Bounds

Options

keyUsing ('Usng')

typeFSS

flagsOptionalSingleParameter

keyAdjustment ('Adjs')

classCurvesAdjustment
( 'CrvA' )

flagsOptionalListParameter

eventCustom ('Cstm')
Image Reference
Table 4–11: eventCustom Parameters (3)
Key

Type

Bounds

Options

keyMatrix ('Mtrx')

typeInteger

required, listOfItems, notEnumerated, reserved,
reserved, reserved,
reserved,
reserved,reserved,
reserved, reserved,
reserved, prepositionParam, notFeminine, notMasculine, singular

keyScale ('Scl ')

typeInteger

flagsSingleParameter

keyOffset ('Ofst')

typeInteger

flagsSingleParameter

eventDefringe ('DfnP')
Image Reference
Table 4–12: eventDefringe Parameter (1)
Key

Type

keyWidth ('Wdth')

unitFloat/unitPixels
('#Pxl')

Bounds

Options
flagsEnumeratedParameter

targets: null
keyWidth

This is the amount by which target will be defringed.

Adobe Photoshop Actions Event Guide

87

6. Filter Action Events
eventDesaturate ('Dstt')
Image Reference
takes no parameters
targets: null

eventDespeckle ('Dspc')
Image Reference
takes no parameters
targets: null

eventDiffuse ('Dfs ')
Image Reference
Table 4–13: eventDiffuse Parameter (1)
Key
eventMode ('Md

Type
')

Bounds

typeDiffuseMode
( 'DfsM' )

Options
flagsEnumeratedParameter

eventDustAndScratches ('DstS')
Image Reference
Table 4–14: eventDustAndScratches Parameters (2)
Key

Type

Bounds

Options

keyRadius ('Rds ')

typeInteger

1 . . 16

flagsSingleParameter

keyThreshold ('Thsh')

typeInteger

0 . . 255

flagsSingleParameter

eventEmboss ('Embs')
Image Reference
Table 4–15: eventEmboss Parameters (3)
Key

Type

Bounds

Options

keyAngle ('Angl')

typeInteger

-360 . ..360

flagsSingleParameter

keyHeight ('Hght')

typeInteger

1 . . 10

flagsSingleParameter

keyAmount ('Amnt')

typeInteger

1 . . 500

flagsSingleParameter

Bounds

Options

targets: null

eventEqualize ('Eqlz')
Image Reference
Table 4–16: eventEqualize Parameter (1)
Key

Type

keyArea ( 'Area' )

typeAreaSelector
( 'ArSl' )

Adobe Photoshop Actions Event Guide

flagsOptionalEnumeratedParameter

88

6. Filter Action Events
eventExpand ('Expn')
Image Reference
Table 4–17: eventExpand Parameter (1)
Key
keyBy ('By

Type
')

Bounds

unitFloat/unitPixels
('#Pxl')

Options
flagsOptionalEnumeratedParameter

eventFacet ('Fct ')
Image Reference
takes no parameters
targets: null

eventFade ('Fade')
Image Reference
Table 4–18: eventFade Parameters (2)
Key

Type

keyOpacity ('Opct')

unitFloat/unitPercent
('#Prc')

flagsEnumeratedParameter

keyMode (‘Md

typeBlendMode (‘BldM’)

flagsEnumeratedParameter

‘)

Bounds

Options

eventFeather ('Fthr')
Image Reference
Table 4–19: eventFeather Parameter (1)
Key

Type

keyRadius ('Fthr')

unitFloat/unitPixels
('#Pxl')

Bounds

Options
flagsEnumeratedParameter

targets: null
keyRadius

This is the amount by which the target will be feathered. The number
represents the radius by which the Gaussian Bell Curve is applied to the
selection mask.

eventFill ('Fl ')
Image Reference
Table 4–20: eventFill Parameters (10)
Key

Type

keyFrom('From')

typeLocationReference
('#Lct')

flagsSingleParameter

keyUsing ('Usng')

typeFillContents ('FlCn')

flagsEnumeratedParameter

keyOpacity ('Opct')

unitFloat/unitPercent
('#Prc')

flagsEnumeratedParameter

Adobe Photoshop Actions Event Guide

Bounds

Options

89

6. Filter Action Events
Table 4–20: eventFill Parameters (10)
Key

Type

Bounds

Options

keyMode ( 'Md ')'

typeBlendMode ('BldM')

flagsEnumeratedParameter

keyPreserveTransparency
('PrsT')

typeBoolean

flagsOptionalEnumeratedParameter

keyMerged ( 'Mrgd' )

typeBoolean

flagsOptionalSingleParameter

keyTolerance ( 'Tlrn' )

typeInteger

flagsSingleParameter

keyRadius ( 'Rds ')

unitFloat/unitPixels
('#Pxl')

flagsOptionalEnumeratedParameter

keyAntiAlias ( 'AntA' )

typeBoolean

flagsOptionalEnumeratedParameter

keyWholePath ( 'WhPt' )

typeBoolean

flagsOptionalEnumeratedParameter

eventFilter ('Fltr')
Image Reference
Table 4–21: eventFilter Parameters (2)
Key

Type

Bounds

Options

keyUsing ( 'Usng'')

typeChar

flagsSingleParameter

keyDatum ( 'Dt ' )

typeChar

optional, singleItem, notEnumerated, reserved,
reserved,reserved,
reserved,
reserved,reserved,
reserved, reserved,
reserved,prepositionParam, notFeminine, notMasculine, singular

eventFindEdges ('FndE')
Image Reference
takes no parameters
targets: null

eventFragment ('Frgm')
Image Reference
takes no parameters
targets: null

eventGaussianBlur ('GsnB')
Image Reference
Table 4–22: eventGaussianBlur Parameter (1)
Key

Type

Bounds

Options

keyRadius ( 'Rds ''

typeFloat

0.1 . . 250

flagsSingleParameter

targets: null
Adobe Photoshop Actions Event Guide

90

6. Filter Action Events
keyRadius

This parameter specifies the radius of the circle drawn away from the
center of the Gauusian Bell Curve, and every pixel is subjected to this bell
curve, with the pixel in question at the peak.

eventGrow ('Grow')
Image Reference
takes no parameters
targets: null

eventHighPass ('HghP')
Image Reference
Table 4–23: eventHighPass Parameter (1)
Key

Type

Bounds

Options

keyRadius ('Rds ')

typeFloat

0.1 . . 250

flagsSingleParameter

Bounds

Options

eventHueSaturation ('HStr')
Image Reference
Table 4–24: eventHueSaturation Parameters (3)
Key

Type

keyColorize ('Clrz')

typeBoolean

flagsSingleParameter

keyUsing ('Usng')

typeFSS

flagsOptionalSingleParameter

keyAdjustment ('Adjs')

classHueSatAdjustment
( 'HStA' )

flagsOptionalListParameter

eventInverse ('ImgS')
Image Reference
takes no parameters
targets: null

eventInvert ('Invr')
Image Reference
takes no parameters
targets: null

Adobe Photoshop Actions Event Guide

91

6. Filter Action Events
eventLevels ('Lvls')
Image Reference
Table 4–25: eventLevels Parameters (3)
Key

Type

Bounds

Options

keyUsing ('Usng')

typeFSS

flagsOptionalSingleParameter

keyAuto ('Auto')

typeBoolean

flagsOptionalSingleParameter

keyAdjustment ('Adjs')

classLevelsAdjustment
('LvlA ')

flagsOptionalListParameter

eventMaximum ('Mxm ')
Image Reference
Table 4–26: eventMaximum Parameter (1)
Key

Type

Bounds

Options

keyRadius ('Rds ')

typeInteger

1 . . 16

flagsSingleParameter

eventMedian ('Mdn ')
Image Reference
Table 4–27: eventMedian Parameter (1)
Key

Type

Bounds

Options

keyRadius ('Rds ')

typeInteger

1 . . 16

flagsSingleParameter

eventMinimum ('Mnm ')
Image Reference
Table 4–28: eventMinimum Parameter (1)
Key

Type

Bounds

Options

keyRadius ('Rds ')

typeInteger

1 . . 10

flagsSingleParameter

eventMosaic ('Msc ')
Image Reference
Table 4–29: eventMosaic Parameter (1)
Key

Type

Bounds

Options

keyCellSize ('ClSz ')

unitFloat/unitPixels
('#Pxl')

2 . . 64

flagsSingleParameter

eventMotionBlur ('MtnB')
Image Reference
Table 4–30: eventMotionBlur Parameters (2)
Key

Type

Bounds

Options

keyAngle ('Angl ')

typeInteger

-90 . . 90

flagsSingleParameter

keyDistance ('Dstn')

typeInteger

1 . . 999

flagsSingleParameter

Adobe Photoshop Actions Event Guide

92

6. Filter Action Events
eventOffset ('Ofst')
Image Reference
Table 4–31: eventOffset Parameters (3)
Key

Type

Bounds

Options

keyHorizontal ('Hrzn ')

typeInteger

-30000 . .
30000

flagsSingleParameter

keyVertical ('Vrtc')

typeInteger

-30000 . .
30000

flagsSingleParameter

keyFill ('Fl ')

typeFillMode ('FlMd')

flagsEnumeratedParameter

eventPosterize ('Pstr')
Image Reference
Table 4–32: eventPosterize Parameter (1)
Key

Type

Bounds

Options

keyLevels ('Lvls')

typeInteger

-90 . . 90

flagsSingleParameter

Bounds

Options

eventPurge ('Prge')
Image Reference
takes no parameters

eventReplaceColor ('RplC')
Image Reference
Table 4–33: eventReplaceColor Parameters (7)
Key

Type

keyUsing ( 'Usng' )

typeFSS

flagsOptionalSingleParameter

keyFuzziness ('Fzns')

typeInteger

flagsSingleParameter

keyMinimum ('Mnm ')

classColor ( 'Clr ')

flagsSingleParameter

keyMaximum ('Mxm ')

classColor ( 'Clr ')

flagsSingleParameter

keyHue ('H ')

typeInteger

flagsOptionalSingleParameter

keySaturation ('Strt')

typeInteger

flagsOptionalSingleParameter

keyLightness ('Lght')

typeInteger

flagsSingleParameter

Adobe Photoshop Actions Event Guide

93

6. Filter Action Events
eventSelectiveColor ('SlcC')
Image Reference
Table 4–34: eventSelectiveColor Parameters (3)
Key

Type

Bounds

Options

keyUsing ('Usng')

typeFSS

flagsOptionalSingleParameter

keyColorCorrection
( 'ClrC' )

classColorCorrection
( 'ClrC' )

flagsListParameter

keyMethod ( 'Mthd' )

typeCorrectionMethod
( 'CrcM' )

flagsEnumeratedParameter

eventSharpen ('Shrp')
Image Reference
takes no parameters
targets: null

eventSharpen Edges ('ShrE')
Image Reference
takes no parameters
targets: null

eventSharpenMore ('ShrM')
Image Reference
takes no parameters
targets: null

eventSimilar ('Smlr')
Image Reference
takes no parameters
targets: null

eventSmooth ('Smth')
Image Reference
Table 4–35: eventSmooth Parameter (1)
Key

Type

keyradius ('Rds ')

unitFloat/unitPixels
('#Pxl')

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsEnumeratedParameter

94

6. Filter Action Events
eventStroke ('Strk')
Image Reference
Table 4–36: eventStroke Parameters (6)
Key

Type

Bounds

Options

keyWidth ('Wdth')

typeInteger

flagsSingleParameter

keyLocation ('Lctn')

typeStrokeLocation
('StrL')

flagsEnumeratedParameter

keyOpacity ('Opct')

unitFloat/unitPercent
('#Prc')

flagsEnumeratedParameter

keyMode ('Md ')

typeBlendMode ('BldM')

flagsEnumeratedParameter

keyPreserveTransparency
('PrsT')

typeBoolean

flagsOptionalEnumeratedParameter

keyUsing ( 'Usrs' )

typeClass ('Type')

flagsOptionalSingleParameter

eventThreshold ('Thrs')
Image Reference
Table 4–37: eventThreshold Parameter (1)
Key

Type

Bounds

Options

keyLevel ('Lvl ')

typeInteger

1 . . 255

flagsSingleParameter

eventTraceContour ('TrcC')
Image Reference
Table 4–38: eventTraceContour Parameters (2)
Key

Type

Bounds

Options

keyLevel ('Lvl ')

typeInteger

0 . . 255

flagsSingleParameter

keyEdge ('Edg ')

typeContourEdge
('CntE')

flagsEnumeratedParameter

eventTrap ('Trap')
Image Reference
Table 4–39: eventTrap Parameter (1)
Key

Type

keywidth ('Wdth')

unitFloat/unitDistance('#Rlt')

Bounds

Options
flagsEnumeratedParameter

eventUnsharpMask ('UsnM')
Image Reference
Table 4–40: eventUnsharpMask Parameters (3)
Key

Type

Bounds

Options

keyRadius ('Rds ')

typeFloat

1 . . 500

flagsSingleParameter

keyAmount ('Amnt')

typeInteger

0.1 . . 250

flagsSingleParameter

keyThreshold ('Thsh')

typeInteger

1 . . 255

flagsSingleParameter

Adobe Photoshop Actions Event Guide

95

6. Filter Action Events

Plug-in Filter Events
eventAccentedEdges ('AccE')
Image Reference
Table 4–41: eventAccentedEdge Parameters (3)
Key

Type

Bounds

Options

keyEdgeWidth ('EdgW ')

typeInteger

1..14

flagsSingleParameter

keyEdgeBrightness
('EdgB')

typeInteger

0..50

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

1..15

flagsSingleParameter

eventAngledStrokes ('AngS')
Image Reference
Table 4–42: eventAngledStrokes Parameters (3)
Key

Type

Bounds

Options

keyDirectionBalance
('DrcB ')

typeInteger

0..100

flagsSingleParameter

keyStrokeLength ('StrL')

typeInteger

3..50

flagsSingleParameter

keySharpness ('Shrp')

typeInteger

0..10

flagsSingleParameter

eventBasRelief ('BsRl')
Image Reference
Table 4–43: eventBasRelief Parameters (3)
Key

Type

Bounds

Options

keyDetail ('Dtl ')

typeInteger

0..15

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

1..15

flagsSingleParameter

keyLightDirection ('LghD')

typeLightDirection

flagsEnumeratedParameter

eventChalkCharcoal('ChlC')
Image Reference
Table 4–44: eventBasRelief Parameters (3)
Key

Type

Bounds

Options

keyCharcoalArea ('ChrA')

typeInteger

0..20

flagsSingleParameter

keyChalkArea ('ChlA')

typeInteger

1..20

flagsSingleParameter

keyStrokePressure ('StrP')

typeLightDirection

0..5

flagsSingleParameter

Adobe Photoshop Actions Event Guide

96

6. Filter Action Events
eventCharcoal ('Chrc')
Image Reference
Table 4–45: eventCharcoal Parameters (3)
Key

Type

Bounds

Options

keyCharcoalAmount
('ChAm')

typeInteger

0..7

flagsSingleParameter

keyDetail ('Dtl ')

typeInteger

0..5

flagsSingleParameter

keyLightDark ('LgDr')

typeInteger

0..100

flagsSingleParameter

eventChrome ('Chrm')
Image Reference
Table 4–46: eventChrome Parameters (2)
Key

Type

Bounds

Options

keyDetail ('Dtl ')

typeInteger

1..10

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

1..10

flagsSingleParameter

eventColoredPencil ('ClrP')
Image Reference
Table 4–47: eventColoredPencil Parameters (3)
Key

Type

Bounds

Options

keyPencilWidth ('Pncl')

typeInteger

1..24

flagsSingleParameter

keyStrokePressure ('StrP')

typeInteger

1..15

flagsSingleParameter

keyPaperBrightness
('PprB')

typeInteger

1..50

flagsSingleParameter

eventConteCrayon ('CntC')
Image Reference
Table 4–48: eventConteCrayon Parameters (8)
Key

Type

Bounds

Options

keyForegroundLevel
('FrgL')

typeInteger

1..15

flagsSingleParameter

keyBackgroundLevel
('BckL')

typeInteger

1..15

flagsSingleParameter

keyLightDirection ('LghD')

typeLightDirection

flagsEnumeratedParameter

keyTextureType ('TxtT')

typeTextureType

flagsOptionalSingleParameter

keyTextureType ('TxtT')

typeAlias

flagsOptionalSingleParameter

keyScaling ('Scln')

typeInteger

50..200

flagsSingleParameter

keyRelief ('Rlf ')

typeInteger

0..50

flagsSingleParameter

keyInvertTexture ('InvT')

typeBoolean

Adobe Photoshop Actions Event Guide

flagsSingleParameter

97

6. Filter Action Events
eventCraquelure ('Crql')
Image Reference
Table 4–49: eventCraquelure Parameters (3)
Key

Type

Bounds

Options

keyCrackSpacing ('CrcS')

typeInteger

2..100

flagsSingleParameter

keyCrackDepth ('CrcD')

typeInteger

1..15

flagsSingleParameter

keyCrackBrightness
('CrcB')

typeInteger

1..10

flagsSingleParameter

eventCrosshatch ('Crsh')
Image Reference
Table 4–50: eventCrosshatch Parameters (3)
Key

Type

Bounds

Options

keyStrokeLength ('StrL')

typeInteger

3..50

flagsSingleParameter

keySharpness ('Shrp')

typeInteger

0..20

flagsSingleParameter

keyStrength_PLUGIN
('Strg')

typeInteger

1..3

flagsSingleParameter

eventCutout ('Ct ')
Image Reference
Table 4–51: eventCutout Parameters (3)
Key

Type

Bounds

Options

keyNumberOfLayers
('NmbL')

typeInteger

2..8

flagsSingleParameter

keyEdgeSimplicity ('EdgS')

typeInteger

0..10

flagsSingleParameter

keyEdgeFidelity ('EdgF')

typeInteger

1..3

flagsSingleParameter

eventDarkStrokes ('DrkS')
Image Reference
Table 4–52: eventDarkStrokes Parameters (3)
Key

Type

Bounds

Options

keyBalance ('Blnc')

typeInteger

0..10

flagsSingleParameter

keyBlackIntensity ('BlcI')

typeInteger

0..10

flagsSingleParameter

keyWhiteIntensity ('WhtI')

typeInteger

0..10

flagsSingleParameter

eventDiffuseGlow ('DfsG')
Image Reference
Table 4–53: eventDiffuseGlow Parameters (3)
Key

Type

Bounds

Options

keyGraininess ('Grns')

typeInteger

0..10

flagsSingleParameter

keyGlowAmount ('GlwA')

typeInteger

0..20

flagsSingleParameter

keyClearAmount ('ClrA')

typeInteger

0..20

flagsSingleParameter

Adobe Photoshop Actions Event Guide

98

6. Filter Action Events
eventDryBrush ('DfsG')
Image Reference
Table 4–54: eventDryBrush Parameters (3)
Key

Type

Bounds

Options

keyBrushSize ('BrsS')

typeInteger

0..10

flagsSingleParameter

keyBrushDetail ('BrsD')

typeInteger

0..20

flagsSingleParameter

keyTexture ('Txtr')

typeInteger

1..3

flagsSingleParameter

eventFilmGrain ('FlmG')
Image Reference
Table 4–55: eventFilmGrain Parameters (3)
Key

Type

Bounds

Options

keyGrain ('Grn ')

typeInteger

0..20

flagsSingleParameter

keyHighlightArea ('HghA')

typeInteger

0..20

flagsSingleParameter

keyIntensity ('Intn')

typeInteger

0..20

flagsSingleParameter

eventFresco ('Frsc')
Image Reference
Table 4–56: eventFresco Parameters (3)
Key

Type

Bounds

Options

keyBrushSize ('BrsS')

typeInteger

0..10

flagsSingleParameter

keyBrushDetail ('BrsD')

typeInteger

0..10

flagsSingleParameter

keyTexture ('Txtr')

typeInteger

1..3

flagsSingleParameter

eventGlass ('Gls ')
Image Reference
Table 4–57: eventGlass Parameters (6)
Key

Type

Bounds

Options

keyDistortion ('Dstr')

typeInteger

0..20

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

1..15

flagsSingleParameter

keyTextureType ('TxtT')

typeTextureType

flagsOptionalSingleParameter

keyTextureType ('TxtT')

typeAlias

flagsOptionalSingleParameter

keyScaling ('Scln')

typeInteger

keyInvertTexture ('InvT')

typeBoolean

Adobe Photoshop Actions Event Guide

50..200

flagsSingleParameter
flagsSingleParameter

99

6. Filter Action Events
eventGlowingEdges ('GlwE')
Image Reference
Table 4–58: eventGlowingEdges Parameters (3)
Key

Type

Bounds

Options

keyEdgeWidth ('EdgW')

typeInteger

0..14

flagsSingleParameter

keyEdgeBrightness
('EdgB')

typeInteger

0..20

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

1..15

flagsSingleParameter

eventGrain ('Grn ')
Image Reference
Table 4–59: eventGrain Parameters (3)
Key

Type

Bounds

Options

keyIntensity ('Intn')

typeInteger

0..100

flagsSingleParameter

keyContrast ('Cntr')

typeInteger

0..100

flagsSingleParameter

keyGrainType ('Grnt')

typeGrainType

flagsEnumeratedParameter

eventGraphicPen ('GraP')
Image Reference
Table 4–60: eventGraphicPen Parameters (3)
Key

Type

Bounds

Options

keyStrokeLength ('StrL')

typeInteger

1..15

flagsSingleParameter

keyLightDark ('LgDr')

typeInteger

0..100

flagsSingleParameter

keyStrokeDirection ('SDir')

typeStrokeDirection

flagsEnumeratedParameter

eventHalftoneScreen ('HlfS')
Image Reference
Table 4–61: eventHalftoneScreen Parameters (3)
Key

Type

Bounds

Options

keyHalftoneSize ('HlSz')

typeInteger

1..12

flagsSingleParameter

keyContrast ('Cntr')

typeInteger

0..50

flagsSingleParameter

keyScreenType ('ScrT')

typeScreenType

Adobe Photoshop Actions Event Guide

flagsEnumeratedParameter

100

6. Filter Action Events
eventInkOutlines ('InkO')
Image Reference
Table 4–62: eventInkOutlines Parameters (3)
Key

Type

Bounds

Options

keyStrokeLength ('StrL')

typeInteger

1..50

flagsSingleParameter

keyDarkIntensity ('DrkI')

typeInteger

0..50

flagsSingleParameter

keyLightIntensity ('LghI')

typeInteger

0..50

flagsSingleParameter

eventMosaic_PLUGIN ('MscT')
Image Reference
Table 4–63: eventMosaic_PLUGIN Parameters (3)
Key

Type

Bounds

Options

keyTileSize ('TlSz')

typeInteger

2..100

flagsSingleParameter

keyGroutWidth ('GrtW')

typeInteger

1..15

flagsSingleParameter

keyLightenGrout ('LghG')

typeInteger

0..10

flagsSingleParameter

eventNeonGlow ('NGlw')
Image Reference
Table 4–64: eventNeonGlow Parameters (3)
Key

Type

Bounds

Options

keySize ('Sz ')

typeInteger

-24..24

flagsSingleParameter

keyBrightness ('Brgh')

typeInteger

0..50

flagsSingleParameter

keyColor ('Clr ')

typeColor

flagsSingleParameter

eventNotePaper ('NtPr')
Image Reference
Table 4–65: eventNotePaper Parameters (3)
Key

Type

Bounds

Options

keyImageBalance ('ImgB')

typeInteger

0..50

flagsSingleParameter

keyGraininess ('Grns')

typeInteger

0..20

flagsSingleParameter

keyRelief ('Rlf ')

typeInteger

0..25

flagsSingleParameter

eventOceanRipple ('OcnR')
Image Reference
Table 4–66: eventOceanRipple Parameters (2)
Key

Type

Bounds

Options

keyRippleSize ('RplS')

typeInteger

1..15

flagsSingleParameter

keyRippleMagnitude
('RplM')

typeInteger

0..20

flagsSingleParameter

Adobe Photoshop Actions Event Guide

101

6. Filter Action Events
eventPaintDaubs ('PntD')
Image Reference
Table 4–67: eventPaintDaubs Parameters (3)
Key

Type

Bounds

Options

keySize ('Sz ')

typeInteger

1..50

flagsSingleParameter

keySharpness ('Shrp')

typeInteger

0..40

flagsSingleParameter

keyBrushType ('BrsT')

typeInteger

0..25

flagsEnumeratedParameter

eventPaletteKnife ('PltK')
Image Reference
Table 4–68: eventPaletteKnife Parameters (3)
Key

Type

Bounds

Options

keyStrokeSize ('StrS')

typeInteger

1..50

flagsSingleParameter

keyStrokeDetail ('StDt')

typeInteger

1..3

flagsSingleParameter

keySoftness ('Sftn')

typeInteger

0..10

flagsEnumeratedParameter

eventPatchwork ('Ptch')
Image Reference
Table 4–69: eventPatchwork Parameters (2)
Key

Type

Bounds

Options

keySquareSize ('SqrS')

typeInteger

1..10

flagsSingleParameter

keyRelief ('Rlf ')

typeInteger

0..25

flagsSingleParameter

eventPhotocopy ('Phtc')
Image Reference
Table 4–70: eventPhotocopy Parameters (2)
Key

Type

Bounds

Options

keyDetail ('Dtl ')

typeInteger

1..24

flagsSingleParameter

keyDarkness ('Drkn')

typeInteger

1..50

flagsSingleParameter

eventPlaster ('Plst')
Image Reference
Table 4–71: eventPlaster Parameters (3)
Key

Type

Bounds

Options

keyImageBalance ('ImgB')

typeInteger

0..50

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

1..15

flagsSingleParameter

keyLightPosition ('LghP')

typeLightPosition

Adobe Photoshop Actions Event Guide

flagsEnumeratedParameter

102

6. Filter Action Events
eventPlasticWrap ('PlsW')
Image Reference
Table 4–72: eventPlasticWrap Parameters (3)
Key

Type

Bounds

Options

keyHighlightStrength
('HghS')

typeInteger

flagsSingleParameter

keyDetail ('Dtl ')

typeInteger

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

flagsSingleParameter

eventPosterEdges ('PstE')
Image Reference
Table 4–73: eventPosterEdges Parameters (3)
Key

Type

Bounds

Options

keyEdgeThickness ('EdgT')

typeInteger

0..10

flagsSingleParameter

keyEdgeIntensity ('EdgI')

typeInteger

0..10

flagsSingleParameter

keyPosterization ('Pstr')

typeInteger

0..6

flagsSingleParameter

eventReticulation ('Rtcl')
Image Reference
Table 4–74: eventReticulation Parameters (3)
Key

Type

Bounds

Options

keyDensity ('Dnst')

typeInteger

0..50

flagsSingleParameter

keyBlackLevel ('BlcL')

typeInteger

0..50

flagsSingleParameter

keyWhiteLevel ('WhtL')

typeInteger

0..50

flagsSingleParameter

eventRoughPastels ('RghP')
Image Reference
Table 4–75: eventRoughPastels Parameters (3)
Key

Type

Bounds

Options

keyStrokeLength ('StrL')

typeInteger

0..40

flagsSingleParameter

keyStrokeDetail ('StDt')

typeInteger

1..20

flagsSingleParameter

keyLightDirection ('LghD')

typeLightDirection

flagsEnumeratedParameter

keyTextureType ('TxtT')

typeTextureType

flagsOptionalSingleParameter

keyTextureType ('TxtT')

typeAlias

flagsOptionalSingleParameter

keyScaling ('Scln')

typeInteger

50..200

flagsSingleParameter

keyRelief ('Rlf ')

typeInteger

0..50

flagsSingleParameter

keyInvertTexture ('InvT')

typeBoolean

Adobe Photoshop Actions Event Guide

flagsSingleParameter

103

6. Filter Action Events
eventSmudgeStick ('SmdS')
Image Reference
Table 4–76: eventSmudgeStick Parameters (3)
Key

Type

Bounds

Options

keyStrokeLength ('StrL')

typeInteger

0..10

flagsSingleParameter

keyHighlightArea ('HghA')

typeInteger

0..20

flagsSingleParameter

keyIntensity ('Intn')

typeInteger

0..10

flagsSingleParameter

eventSpatter ('Spt ')
Image Reference
Table 4–77: eventSpatter Parameters (2)
Key

Type

Bounds

Options

keySprayRadius ('SprR')

typeInteger

0..25

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

1..15

flagsSingleParameter

eventSponge ('Spng')
Image Reference
Table 4–78: eventSponge Parameters (3)
Key

Type

Bounds

Options

keyBrushSize ('BrsS')

typeInteger

0..10

flagsSingleParameter

keyDefinition ('Dfnt')

typeInteger

0..25

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

0..15

flagsSingleParameter

eventSprayedStrokes ('SprS')
Image Reference
Table 4–79: eventSprayedStrokes Parameters (3)
Key

Type

Bounds

Options

keyStrokeLength ('StrL')

typeInteger

0..20

flagsSingleParameter

keySprayRadius ('SprR')

typeInteger

0..25

flagsSingleParameter

keyStrokeDirection ('SDir')

typeStrokeDirection

Adobe Photoshop Actions Event Guide

flagsEnumeratedParameter

104

6. Filter Action Events
eventStainedGlass ('StnG')
Image Reference
Table 4–80: eventStainedGlass Parameters (3)
Key

Type

Bounds

Options

keyCellSize ('ClSz')

typeInteger

2..50

flagsSingleParameter

keyBorderThickness
('BrdT')

typeInteger

1..20

flagsSingleParameter

keyLightIntensity ('LghI')

typeInteger

0..10

flagsSingleParameter

keyLightDark ('LgDr')

typeInteger

0..100

flagsSingleParameter

eventStamp ('Stmp')
Image Reference
Table 4–81: eventStamp Parameters (2)
Key

Type

Bounds

Options

keyLightDark ('LgDr')

typeInteger

0..50

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

1..50

flagsSingleParameter

eventSumie ('Smie')
Image Reference
Table 4–82: eventSumie Parameters (3)
Key

Type

Bounds

Options

keyStrokeWidth ('StrW')

typeInteger

3..15

flagsSingleParameter

keyStrokePressure ('StrP')

typeInteger

0..15

flagsSingleParameter

keyContrast ('Cntr')

typeInteger

0..40

flagsSingleParameter

Bounds

Options

eventTexturizer ('Txtz')
Image Reference
Table 4–83: eventTexturizer Parameters (6)
Key

Type

keyLightDirection ('LghD')

typeLightDirection

flagsEnumeratedParameter

keyTextureType ('TxtT')

typeTextureType

flagsOptionalSingleParameter

keyTextureType ('TxtT')

typeAlias

flagsOptionalSingleParameter

keyScaling ('Scln')

typeInteger

50..200

flagsSingleParameter

keyRelief ('Rlf ')

typeInteger

0..50

flagsSingleParameter

keyInvertTexture ('InvT')

typeBoolean

Adobe Photoshop Actions Event Guide

flagsSingleParameter

105

6. Filter Action Events
eventTornEdges ('TrnE')
Image Reference
Table 4–84: eventTornEdges Parameters (3)
Key

Type

Bounds

Options

keyImageBalance ('ImgB')

typeInteger

0..50

flagsSingleParameter

keySmoothness ('Smth')

typeInteger

1..15

flagsSingleParameter

keyContrast ('Cntr')

typeInteger

1..25

flagsSingleParameter

eventUnderpainting ('Undr')
Image Reference
Table 4–85: eventUnderpainting Parameters (8)
Key

Type

Bounds

Options

keyBrushSize ('BrsS')

typeInteger

0..40

flagsSingleParameter

keyTextureCoverage
('TxtC')

typeInteger

0..40

flagsSingleParameter

keyLightDirection ('LghD')

typeLightDirection

flagsEnumeratedParameter

keyTextureType ('TxtT')

typeTextureType

flagsOptionalSingleParameter

keyTextureType ('TxtT')

typeAlias

flagsOptionalSingleParameter

keyScaling ('Scln')

typeInteger

50..200

flagsSingleParameter

keyRelief ('Rlf ')

typeInteger

0..50

flagsSingleParameter

keyInvertTexture ('InvT')

typeBoolean

flagsSingleParameter

eventWaterPaper ('WtrP')
Image Reference
Table 4–86: eventWaterPaper Parameters (3)
Key

Type

Bounds

Options

keyFiberLength ('FbrL')

typeInteger

3..50

flagsSingleParameter

keyBrightness ('Brgh')

typeInteger

0..100

flagsSingleParameter

keyContrast ('Cntr')

typeInteger

1..100

flagsSingleParameter

eventWatercolor ('Wtrc')
Image Reference
Table 4–87: eventWatercolor Parameters (3)
Key

Type

Bounds

Options

keyBrushDetail ('BrsD')

typeInteger

1..14

flagsSingleParameter

keyShadowIntensity
('ShdI')

typeInteger

0..10

flagsSingleParameter

keyTexture ('Txtr')

typeInteger

1..3

flagsSingleParameter

Adobe Photoshop Actions Event Guide

106

6. Filter Action Events
event3DTransform('TdT ')
Image Reference
Table 4–88: event3DTransform Parameters (5)
Key

Type

Bounds

Options

keyManipulationFOV
('Mfov')

typeFloat

flagsSingleParameter

keyConstructionFOV
('Cfov')

typeFloat

flagsSingleParameter

keyBackground ('Bckg')

typeBoolean

flagsSingleParameter

keyRenderFidelity ('Rfid')

typeAmount

flagsEnumeratedParameter

key3DAntiAlias ('Alis')

typeAntiAlias

flagsEnumeratedParameter

eventClouds ('Clds')
Image Reference
takes no parameters

eventDifferenceClouds ('DfrC')
Image Reference
takes no parameters

eventColorHalftone ('ClrH')
Image Reference
Table 4–89: eventColorHalftone Parameters (5)
Key

Type

Bounds

Options

keyRadius ('Rds ')

typeInteger

4 . . 127

flagsSingleParameter

keyAngle1 ('Ang1')

typeInteger

-360..360

flagsSingleParameter

keyAngle2 ('Ang2')

typeInteger

-360..360

flagsSingleParameter

keyAngle3 ('Ang3')

typeInteger

-360..360

flagsSingleParameter

keyAngle4 ('Ang4 ')

typeInteger

-360..360

flagsSingleParameter

eventCrystallize ('Crst')
Image Reference
Table 4–90: eventCrystallize Parameters (1)
Key

Type

Bounds

Options

keyCellSize ('ClSz')

typeInteger

3 . . 300

flagsSingleParameter

Adobe Photoshop Actions Event Guide

107

6. Filter Action Events
eventDeInterlace ('Dntr')
Image Reference
Table 4–91: eventDeInterlace Parameters (2)
Key

Type

Bounds

Options

keyInterlaceEliminateType ('IntE')

typeInterlaceEliminateType

flagsEnumeratedParameter

keyInterlaceCreateType
('IntC')

typeInterlaceCreateType

flagsEnumeratedParameter

eventExtrude ('Extr')
Image Reference
Table 4–92: eventExtrude Parameters (6)
Key

Type

Bounds

Options

keyExtrudeSize ('ExtS')

typeInteger

2 . . 255

flagsSingleParameter

keyExtrudeDepth ('ExtD')

typeInteger

1 . . 255

flagsSingleParameter

keyExtrudeSolidFace
('ExtF')

typeBoolean

flagsSingleParameter

keyExtrudeMaskIncomplete ('ExtM')

typeBoolean

flagsSingleParameter

keyExtrudeType ('ExtT')

typeExtrudeType

flagsEnumeratedParameter

keyExtrudeRandom
('ExtR')

typeExtrudeRandom

flagsEnumeratedParameter

eventLensFlare ('LnsF')
Image Reference
Table 4–93: eventLensFlare Parameters (3)
Key

Type

Bounds

Options

keyBrightness ('Brgh')

typeInteger

10..300

flagsSingleParameter

keyFlareCenter ('FlrC')

classPoint

flagsSingleParameter

keyLens ('Lns ')

typeLens

flagsEnumeratedParameter

eventMezzotint ('Mztn')
Image Reference
Table 4–94: eventMezzotint Parameters (1)
Key

Type

keyMezzotintType ('MztT')

typeMezzotintType

Bounds

Options
flagsEnumeratedParameter

eventNTSCColors ('NTSC')
Image Reference
takes no parameters

targets: null

Adobe Photoshop Actions Event Guide

108

6. Filter Action Events
eventPointillize ('Pntl')
Image Reference}
Table 4–95: eventPointillize Parameters (1)
Key

Type

Bounds

Options

keyCellSize ('ClSz')

typeInteger

3 . . 300

flagsSingleParameter

eventRadialBlur ('RdlB')
Image Reference
Table 4–96: eventRadialBlur Parameters (3)
Key

Type

Bounds

Options

keyAmount ('Amnt')

typeIntegerl

1..100

flagsSingleParameter

keyBlurMethod ('BlrM')

typeBlurMethod

flagsEnumeratedParameter

keyBlurQuality ('BlrQ')

typeBlurQuality

flagsEnumeratedParameter

eventSmartBlur ('SmrB')
Image Reference
Table 4–97: eventSmartBlur Parameters (4)
Key

Type

Bounds

Options

keyRadius ('Rds ')

typeFloat/unitPixel

0.1..100

flagsSingleParameter

keyThreshold ('Thsh')

typeFloat

0.1..100

flagsEnumeratedParameter

keySmartBlurQuality
('SmBQ')

typeSmartBlurQuality

flagsEnumeratedParameter

keySmartBlurMode
('SmBM')

typeSmartBlurMode

flagsEnumeratedParameter

eventSolarize ('Slrz')
Image Reference
takes no parameters

targets: null

eventTiles ('Tls ')
Image Reference
Table 4–98: eventTiles Parameters (3)
Key

Type

Bounds

Options

keyTileNumber ('TlNm')

typeIntegerl

1..99

flagsSingleParameter

keyTileOffset ('TlOf')

typeIntegerl

1..99

flagsSingleParameter

keyFillColor ('FlCl')

typeFillColor

Adobe Photoshop Actions Event Guide

flagsEnumeratedParameter

109

6. Filter Action Events
eventVariations ('Vrtn')
Image Reference
Table 4–99: eventVariations Parameters (10)
Key

Type

Bounds

Options

keyRedGamma ('RdGm')

typeFloat

flagsSingleParameter

keyGreenGamma ('GrnG')

typeFloat

flagsSingleParameter

keyBlueGamma ('BlGm')

typeFloat

flagsSingleParameter

keyRedWhitePoint
('RdWh')

typeIntegerl

flagsSingleParameter

keyGreenWhitePoint
('GrnW')

typeIntegerl

flagsSingleParameter

keyBlueWhitePoint
('BlWh')

typeInteger

flagsSingleParameter

keyRedBlackPoint ('RdBl')

typeInteger

flagsSingleParameter

keyGreenBlackPoint
('GrnB')

typeInteger

flagsSingleParameter

keyBlueBlackPoint ('BlBl')

typeInteger

flagsSingleParameter

keySaturation ('Strt')

typeInteger

flagsSingleParameter

eventWind ('Wnd ')
Image Reference
Table 4–100: eventWind Parameters (2)
Key

Type

Bounds

Options

keyWindMethod ('WndM')

typeWindMethod

flagsEnumeratedParameter

keyDirection ('Drct')

typeDirection

flagsEnumeratedParameter

eventDisplace ('Dspl')
Image Reference
Table 4–101: eventDisplace Parameters (5)
Key

Type

keyHorizontalScale
('HrzS')

typeInteger

flagsSingleParameter

keyVerticalScale ('VrtS')

typeInteger

flagsSingleParameter

keyDisplacementMap
('DspM')

typeDisplacementMap

flagsEnumeratedParameter

keyUndefinedArea
('UndA')

typeUndefinedArea

flagsEnumeratedParameter

keyDisplaceFile ('DspF')

typeAlias

flagsSingleParameter

Adobe Photoshop Actions Event Guide

Bounds

Options

110

6. Filter Action Events
eventPinch ('Pnch')
Image Reference
Table 4–102: eventPinch Parameters (1)
Key

Type

Bounds

Options

keyAmount ('Amnt')

typeInteger

-100 . . 100

flagsSingleParameter

Bounds

Options

eventPolar Coordinates ('Plr ')
Image Reference
Table 4–103: eventPolar Parameters (1)
Key

Type

keyConvert ('Cnvr')

typeConvert

flagsEnumeratedParameter

eventRipple ('Rple')
Image Reference
Table 4–104: eventRipple Parameters (2)
Key

Type

Bounds

Options

keyAmount ('Amnt')

typeInteger

-999 . . 999

flagsSingleParameter

keyRippleSize ('RplS')

typeRippleSize

flagsEnumeratedParameter

eventShear ('Shr ')
Image Reference
Table 4–105: eventShear Parameters (4)
Key

Type

Bounds

Options

keyShearPoints ('ShrP')

classPoint

flagsListParameter

keyUndefinedArea
('UndA')

typeUndefinedArea

flagsEnumeratedParameter

keyShearSt ('ShrS')

typeInteger

flagsSingleParameter

keyShearEd ('ShrE')

typeInteger

flagsSingleParameter

eventSpherize ('Sphr')
Image Reference
Table 4–106: eventSpherize Parameters (2)
Key

Type

Bounds

Options

keyAmount ('Amnt')

typeInteger

-100 . . 100

flagsSingleParameter

keySpherizeMode
('SphM')

typeSpherizeMode

Adobe Photoshop Actions Event Guide

flagsEnumeratedParameter

111

6. Filter Action Events
eventTwirl ('Twrl')
Image Reference
Table 4–107: eventTwirl Parameters (1)
Key

Type

Bounds

Options

keyAngle ('Angl')

typeInteger

-999 . . 999

flagsSingleParameter

Bounds

Options

eventWave ('Wave')
Image Reference
Table 4–108: eventWave Parameters (10)
Key

Type

keyWaveType ('Wvtp')

typeWaveType

flagsEnumeratedParameter

keyNumberOfGenerators
('NmbG')

typeIntegerl

flagsSingleParameter

keyWavelengthMin
('WLMn')

typeIntegerl

flagsSingleParameter

keyWavelengthMax
('WLMx')

typeIntegerl

flagsSingleParameter

keyAmplitudeMin
('AmMn')

typeIntegerl

flagsSingleParameter

keyAmplitudeMax
('AmMx')

typeInteger

flagsSingleParameter

keyScaleHorizontal
('SclH')

typeInteger

flagsSingleParameter

keyScaleVertical ('SclV')

typeInteger

flagsSingleParameter

keyUndefinedArea
('UndA')

typeUndefinedArea

flagsEnumeratedParameter

keyRandomSeed ('RndS')

typeInteger

flagsSingleParameter

eventZigZag ('ZgZg')
Image Reference
Table 4–109: eventZigZag Parameters (3)
Key

Type

Bounds

Options

keyAmount ('Amnt')

typeInteger

-100 . . 100

flagsSingleParameter

keyNumberOfRipples
('NmbR')

typeInteger

1 . . 20

flagsSingleParameter

keyZigZagType ('ZZTy')

typeZigZagType

Adobe Photoshop Actions Event Guide

flagsEnumeratedParameter

112

6. Filter Action Events
eventLightingEffects ('LghE')
Image Reference
Table 4–110: eventLightingEffects Parameters (11)
Key

Type

Bounds

Options

keyGloss ('Glos')

typeIntegerl

flagsSingleParameter

keyMaterial ('Mtrl')

typeIntegerl

flagsSingleParameter

keyExposure ('Exps')

typeIntegerl

flagsSingleParameter

keyAmbientBrightness
('AmbB')

typeIntegerl

flagsSingleParameter

keyAmbientColor
('AmbC')

classRGBColor

flagsSingleParameter

keyBumpChannel
('BmpC')

#ChR

flagsSingleParameter

keyWhiteIsHigh ('WhHi')

typeBoolean

flagsSingleParameter

keyBumpAmplitude
('BmpA')

typeInteger

flagsSingleParameter

keyFrameWidth ('FrmW')

typeFloat

flagsSingleParameter

keyCurrentLight ('CrnL')

typeInteger

flagsSingleParameter

keyLightSource ('LghS')

classLightSource

flagsListParameter

eventTextureFill ('TxtF')
Image Reference
Table 4–111: eventTextureFill Parameters (1)
Key

Type

keyTextureFile ('TxtF')

typeAlias

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleParameter

113

7. Tool Classes
This chapter describes the events that can automate the tools in the
Tools Palette. Scripting the tool palette is very similar to the other
scripting commands, and scripting things like the Marquee Tool simply
require making calls to pre-existing functions with different parameters.
This chapter contains a mix of objects and functions that allow you to
script the tools in the tools palette.

Adobe Photoshop Actions Event Guide

114

5. Tool Classes

Built-In Tool Classes
Marquee Tool Selection Classes
The following classes are to be used to modify the selection mask. They
are used in the functions Set , Intersect , Add and Subtract .

classRectangle ('Rctn')
inherits from: none
contains: undefined

Table 5–112: classRectangle Members (4)
Key

Type

Bounds

Options

keyTop ('Top ')

typeFloat/unitPixels

flagsEnumeratedProperty

keyLeft ('Left')

typeFloat/unitPixels

flagsEnumeratedProperty

keyBottom ('Btom' )

typeFloat/unitPixels

flagsEnumeratedProperty

keyRight ('Rght' )

typeFloat/unitPixels

flagsEnumeratedProperty

classEllipse ('Elps')
inherits from: none
contains: undefined

Table 5–113: classEllipse Members (4)
Key

Type

Bounds

Options

keyTop ('Top ')

typeFloat/unitPixels

flagsEnumeratedProperty

keyLeft ('Left')

typeFloat/unitPixels

flagsEnumeratedProperty

keyBottom ('Btom' )

typeFloat/unitPixels

flagsEnumeratedProperty

keyRight ('Rght' )

typeFloat/unitPixels

flagsEnumeratedProperty

classSingleRow ('Sngr')
inherits from: none
contains: undefined

Table 5–114: classSingleRow Member (1)
Key

Type

keyTop ('Top ')

typeFloat/unitPixels

Bounds

Options
flagsEnumeratedProperty

classSingleColumn ('Sngc')
inherits from: none
contains: undefined

Table 5–115: classSingleColumn Member (1)
Key

Type

keyLeft ('Left'))

typeFloat/unitPixels

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsEnumeratedProperty

115

5. Tool Classes
classTool ('Tool')
inherits from: classElement
contains: undefined

Table 9–116: classTool Parameter (1)
Key

Type

keyInherits ('c@#^')

classElement

Bounds

Options
flagsSingleProperty

classBrush ('Brsh')
inherits from: classElement
contains: undefined

Table 9–117: classBrush Parameter (1)
Key

Type

keyInherits ('c@#^')

classElement

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleProperty

116

5. Tool Classes

More Tools
classPencilTool ('PcTl')
inherits from: classTool
contains: undefined

Table 5–118: classPencilTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classPaintbrushTool ('PbTl')
inherits from: classTool
contains: undefined

Table 5–119: classPaintbrushTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classAirbrushTool ('AbTl')
inherits from: classTool
contains: undefined

Table 5–120: classAirbrushTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classEraserTool ('ErTl')
inherits from: classTool
contains: undefined

Table 5–121: classEraserTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classCloneStampTool ('ClTl')
inherits from: classTool
contains: undefined

Table 5–122: classCloneStampTool Member (1)
Key

Type

keyInherits ('c@#^')

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleProperty

117

5. Tool Classes
classPatternStampTool ('PaTl')
inherits from: classTool
contains: undefined

Table 5–123: classPatternStampTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classSmudgeTool ('SmTl')
inherits from: classTool
contains: undefined

Table 5–124: classSmudgeTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classBlurTool ('BlTl')
inherits from: classTool
contains: undefined

Table 5–125: classBlurTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classSharpenTool ('ShTl')
inherits from: classTool
contains: undefined

Table 5–126: classSharpenTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classsDodgeTool ('DdTl')
inherits from: classTool
contains: undefined

Table 5–127: classDodgeTool Member (1)
Key

Type

keyInherits ('c@#^')

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleProperty

118

5. Tool Classes
classBurnInTool ('BrTl')
inherits from: classTool
contains: undefined

Table 5–128: classBurnInTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classSaturationTool ('SrTl')
inherits from: classTool
contains: undefined

Table 5–129: classSaturationTool Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classPath('BrTl')
inherits from: classElement
contains: undefined

Table 5–130: classPath Member (1)
Key

Type

Bounds

keyInherits ('c@#^')

Options
flagsSingleProperty

classClippingPath ('ClpP')
inherits from: none
contains: undefined

Table 5–131: classClippingPath Member (1)
Key

Type

keyPath ('Pth ')

typePathReference

flagsEnumeratedProperty

keyFlatness ('Fltn')

typeFloat

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

119

8

8. Element Action Events
This chapter describes of all the element events that are included with
Photoshop.
Element Events are events that are related to containers of pixels. This
includes layers, channels, selections, and masks.

Adobe Photoshop Actions Event Guide

120

8. Element Action Events

Built-in Element Events
eventAdd ('Add ')
Image Reference
Table 6–132: eventAdd Parameters (2)
Key

Type

Bounds

Options

keyTo ('To ')

typeWildCard

flagsSingleParameter

keyInvert ('Invr')

typeBoolean

flagsOptionalSingleParameter

eventCopy ('copy')
Image Reference
takes no parameters
targets: null

eventCopyMerged ('CpyM')
Image Reference
takes no parameters
targets: null

eventCopyToLayer ('CpTL')
Image Reference
takes no parameters
targets: null

eventCut ('cut ')
Image Reference
Table 6–133: eventCut Parameter (1)
Key

Type

keyTo ('To ')

typeLocationReference
('#Lct')

Bounds

Options
flagsSingleParameter

eventCutToLayer ('CtTL')
Image Reference
takes no parameters
targets: null

eventDefinePattern ('DfnP')
Image Reference
takes no parameters
targets: null

Adobe Photoshop Actions Event Guide

121

8. Element Action Events
eventDelete ('Dlt ')
Image Reference
Table 6–134: eventDelete Parameter (1)
Key

Type

keyApply ('Aply')

typeBoolean

Bounds

Options
flagsOptionalSingleParameter

eventDuplicate ('Dplc')
Image Reference
Table 6–135: eventDuplicate Parameters (5)
Key

Type

Bounds

Options

keyTo ('To ')

typeElementReference
('#ElR')

flagsOptionalSingleParameter

keyName ('Nm ')

typeText

flagsOptionalSingleParameter

keyUntitled ('Untl')

typeBoolean

flagsOptionalSingleParameter

keyMerged ('Mrgd')

typeBoolean

flagsOptionalSingleParameter

keyInvert ('Invr')

typeBoolean

flagsOptionalSingleParameter

eventExchange ('Exch')
Image Reference
takes no parameters
targets: null

eventFlip ('Flip')
Image Reference
Table 6–136: eventFlip Parameters (2)
Key

Type

Bounds

Options

keyAxis ('Axis')

typeOrientation ('Ornt')

flagsEnumeratedParameter

keyCopy ('Cpy ')

typeBoolean

flagsOptionalSingleParameter

eventGroup ('GrpL')
Image Reference
takes no parameters
targets: null

Adobe Photoshop Actions Event Guide

122

8. Element Action Events
eventIntersect ('Intr')
Image Reference
Table 6–137: eventIntersect Parameters (2)
Key

Type

Bounds

Options

keyWith ('Wth')

typeWildCard

flagsSingleParameter

keyInvert ('Invr')

typeBoolean

flagsOptionalSingleParameter

eventMake ('Mk ')
Image Reference
Table 6–138: eventMake Parameters (11)
Key

Type

Bounds

Options

keyNew ('Nw ')

classElement ('Elmn')

flagsSingleParameter

keyAt ('At ')

typeElementReference
('#EIR')

flagsOptionalSingleParameter

keyUsing ('Usng')

typeWildCard

flagsOptionalSingleParameter

keyName ('Nm ')

typeText

flagsOptionalSingleParameter

keyChannelName ('ChnN')

typeText

flagsOptionalSingleParamete

keyLayerName ('LyrN')

typeText

flagsOptionalSingleParameter

keyCopy ('Cpy ')

typeBoolean

flagsOptionalSingleParameter

keyInvert ('Invr ')

typeBoolean

flagsOptionalSingleParameter

keyFrom ('From ')

typeElementReference
('#EIR ')

flagsOptionalSingleParameter

keyTolerance ('Tlrn ')

typeFloat

flagsOptionalSingleParamete

keyPosition ('Pstn ')

classPoint ('Pnt ')

flagsOptionalSingleParameter

eventMergeLayers ('MrgL')
Image Reference
Table 6–139: eventMergeLayers Parameter (1)
Key

Type

keyDuplicate ('Dplc')

typeBoolean

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsOptionalSingleParameter

123

8. Element Action Events
eventMergeVisible ('MrgV')
Image Reference
Table 6–140: eventMergeVisible Parameter (1)
Key

Type

keyDuplicate ('Dplc')

typeBoolean

Bounds

Options
flagsOptionalSingleParameter

eventMove ('move')
Image Reference
Table 6–141: eventMove Parameter (1)
Key

Type

keyTo ('To ')

typeLocationReference
('#Lct')

Bounds

Options
flagsSingleParameter

eventPaste ('past')
Image Reference
Table 6–142: eventPaste Parameters (2)
Key

Type

Bounds

Options

keyAs ('As ')

typeClass

flagsOptionalSingleParameter

keyAntiAlias ('AntA')

typeBoolean

flagsOptionalSingleParameter

eventPasteInto ('PstI')
Image Reference
Table 6–143: eventPasteInto Parameter (1)
Key

Type

keyAntiAlias ('AntA')

typeBoolean

Bounds

Options
flagsOptionalSingleParameter

eventPasteOutside ('PstO')
Image Reference
Table 6–144: eventPasteOutside Parameter (1)
Key

Type

keyAntiAlias ('AntA')

typeBoolean

Bounds

Options
flagsOptionalSingleParameter

eventPlay ('Ply ')
Image Reference
Table 6–145: eventPlay Parameter (1)
Key

Type

keyContinue ('Cntn')

typeBoolean

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsOptionalSingleParameter

124

8. Element Action Events
eventRemoveBlackMatte ('RmvB')
Image Reference
takes no parameters

eventRemoveLayerMask ('RmvL')
Image Reference
takes no parameters

eventRemoveWhiteMatte ('RmvW')
Image Reference
takes no parameters

eventRotate ('Rtte')
Image Reference
Table 6–146: eventRotate Parameters (2)
Key

Type

Bounds

Options

keyAngle ('Angl')

unitAngle ('#Ang')

flagsEnumeratedParameter

keyCopy ('Cpy ')

typeBoolean

flagsOptionalSingleParameter

eventSelect ('slct')
Image Reference
Table 6–147: eventSelect Parameters (3)
Key

Type

Bounds

Options

keyUsing ('Usng')

typeFSS

flagsOptionalSingleParameter

keyColorCorrection
('ClrC')

classColorCorrection
('ClrC')

flagsListParameter

keyMethod ('Mthd')

typeCorrectionMethod
('CrcM')

flagsEnumeratedParameter

eventSet ('setd')
Image Reference
Table 6–148: eventSet Parameters (6)
Key

Type

key_Source ('Srce')

typeWildCard

flagsSingleParameter

keyInvert ('Invr')

typeBoolean

flagsOptionalSingleParameter

keyFeather ('Fthr')

unitPixels ('#Pxl')

flagsOptionalEnumeratedParameter

Adobe Photoshop Actions Event Guide

Bounds

Options

125

8. Element Action Events
Table 6–148: eventSet Parameters (6)
Key

Type

Bounds

Options

keyTolerance ('Tlrn')

unitPixels ('#Pxl')

flagsOptionalEnumeratedParameter

keyMerged ('Mrgd')

typeBoolean

flagsOptionalSingleParameter

keyAntiAlias ('AntA')

typeBoolean

flagsOptionalSingleParameter

eventSplitChannels ('SplC')
Image Reference
takes no parameters

eventStop ('Stop')
Image Reference
Table 6–149: eventStop Parameters (2)
Key

Type

Bounds

Options

keyMessage ('Msge')

typeText

flagsSingleParameter

keyContinue ('Cntn')

typeBoolean

flagsOptionalSingleParameter

eventSubtract ('Sbtr')
Image Reference
Table 6–150: eventSubtract Parameters (2)
Key

Type

Bounds

Options

keyFrom ('Frm ')

typeWildCard

flagsSingleParameter

keyInvert ('Invr')

typeBoolean

flagsOptionalSingleParameter

eventTransform ('Trnf')
Image Reference
Table 6–151: eventTransform Parameters (15)
Key

Type

keyPosition ('Pstn')

classPoint ('Pnt ')

flagsOptionalSingleParameter

keyRelative ('Rltv')

typeBoolean

flagsOptionalSingleParameter

keyWidth ('Wdth')

unitDistance ('#Rlt')

flagsOptionalEnumeratedParameter

keyHeight ('Hght')

unitDistance ('#Rlt')

flagsOptionalEnumeratedParameter

keyConstrainProportions
( 'CnsP' )

typeBoolean

flagsOptionalSingleParameter

keySkew ('Skew')

classPoint ('Pnt ')

flagsOptionalSingleParameter

Adobe Photoshop Actions Event Guide

Bounds

Options

126

8. Element Action Events
Table 6–151: eventTransform Parameters (15)
Key

Type

Bounds

Options

keyAngle ('Angl')

unitAngle ('#Ang')

flagsOptionalEnumeratedParameter

keyOffset ('Ofst')

classOffset ('Ofst')

flagsOptionalSingleParameter

keyFreeTransformCenterState ('FTcs')

typeQuadCenterState
('QCSt')

flagsOptionalEnumeratedParameter

keyPerspectiveIndex
('Prsp')

keyPerspectiveIndex
('Prsp')

flagsOptionalSingleParameter

keyUsing ('Usng')

classPoint ('Pnt ')

flagsOptionalSingleParameter

keyCrossover ('Crss')

classPoint ('Pnt ')

flagsOptionalSingleParameter

keyTwist ('Twst')

keyTwist ('Twst')

flagsOptionalSingleParameter

keyCopy ('Cpy ')

keyCopy ('Cpy ')

flagsOptionalSingleParameter

keyLastTransform ('LstT')

typeBoolean

flagsOptionalSingleParameter

eventUndo ('undo')
Image Reference
takes no parameters

eventUngroup ('Ungr')
Image Reference
takes no parameters

Adobe Photoshop Actions Event Guide

127

9

9. Document Events
This chapter describes all the document events that are included with
Photoshop.

Document Events are events related to documents and containers of
elements. Many of these events can be found in the FIle and Edit menus.

Adobe Photoshop Actions Event Guide

128

9. Document Events

Built-In Document Events
eventCanvasSize ('CnvS')
Image Reference
Table 7–152: eventCanvasSize Parameters (4)
Key

Type

Bounds

Options

keyWidth ('Wdth')

unitDistance ('#Rlt')

flagsOptionalEnumeratedParameter

keyHeight ('Hght')

unitDistance ('#Rlt')

flagsOptionalEnumeratedParameter

keyHorizontal ('Hrzn')

typeHorizontalLocation
('Hrzl')

flagsEnumeratedParameter

keyVertical ('Vrtc')

typeVerticalLocation
('Vrtl')

flagsEnumeratedParameter

eventClose ('Cls ')
Image Reference
Table 7–153: eventClose Parameter (1)
Key

Type

keySaving ('Svng')

typeYesNo ('Ysn ')

Bounds

Options
flagsEnumeratedParameter

eventConvertMode ('CnvM')
Image Reference
Table 7–154: eventConvertMode Parameters (3)
Key

Type

Bounds

Options

keyTo ('To ')

typeTypeClassModeOrClassMode ('#TyM')

flagsOptionalEnumeratedParameter

keyFlatten ('Fltn')

typeBoolean

flagsOptionalEnumeratedParameter

keyInterpolation ('Intr')

typeInterpolation ('Intp')

flagsOptionalEnumeratedParameter

eventCrop ('Crop')
Image Reference
Table 7–155: eventCrop Parameters (5)
Key

Type

keyTo ('T ')

classRectangle ('Rxtn')

flagsOptionalSingleParameter

keyAngle ('Angl')

unitAngle ('#Ang')

flagsOptionalEnumeratedParameter

Adobe Photoshop Actions Event Guide

Bounds

Options

129

9. Document Events
Table 7–155: eventCrop Parameters (5)
Key

Type

Bounds

Options

keyWidth ('Wdth')

unitPixels ('#Pxl')

flagsOptionalEnumeratedParameter

keyHeight ('Hght')

unitPixels ('#Pxl')

flagsOptionalEnumeratedParameter

keyResolution ('Rslt')

unitPixels ('#Pxl')

flagsOptionalEnumeratedParameter

eventExport ('Expr')
Image Reference
Table 7–156: eventExport Parameter (1)
Key

Type

keyUsing ('Usng')

typeClassTextExport
('#CTE')

Bounds

Options
flagsSingleParameter

eventFlattenImage ('FltI')
Image Reference
takes no parameters
targets: null

eventBlur ('Blr ')
Image Reference
takes no parameters
targets: null

eventImageSize ('ImgS')
Image Reference
Table 7–157: eventImageSize Parameters (5)
Key

Type

Bounds

Options

keyWidth('Wdth')

unitDistance ('#Rlt')

flagsOptionalEnumeratedParameter

keyHeight('Hght')

unitDistance ('#Rlt')

flagsOptionalEnumeratedParameter

keyResolution('Rslt')

unitDensity ('#Rsl')

flagsOptionalEnumeratedParameter

keyConstrainProportions
('CnsP')

typeBoolean

flagsOptionalSingleParameter

keyInterpolation ('Intr')

typeInterpolation ('Intp')

flagsOptionalEnumeratedParameter

eventPrint ('Prnt')
Image Reference
takes no parameters
targets: null

Adobe Photoshop Actions Event Guide

130

9. Document Events
eventQuit ('quit')
Image Reference
takes no parameters
targets: null

eventRevert ('Rvrt')
Image Reference
takes no parameters
targets: null

eventSave ('save')
Image Reference
Table 7–158: eventSave Parameters (9)
Key

Type

Bounds

Options

keyAs ('As ')

typeClassStringFormat
('#CIS')

flagsEnumeratedParameter

keyIn ('In ')

typeFSS

flagsSingleParameter

keyCopy ('Cpy ')

typeBoolean

flagsSingleParameter

keyExtension ('Extn')

typeBoolean

flagsSingleParameter

keyLowerCase ('LwCs')

typeBoolean

flagsSingleParameter

keyFlatten ('Fltt')

typeBoolean

flagsSingleParamete

keyAlphaChannels ('AlpC')

typeBoolean

flagsSingleParameter

keyNonImageData
('Nnlm')

typeBoolean

flagsSingleParameter

keyPreview ('Prvw')

typePreview ('Prvw')

flagsEnumeratedListParameter

eventTakeMergedSnapshot ('TkMr')
Image Reference
takes no parameters
targets: null

eventTakeSnapshot ('TkSn')
Image Reference
takes no parameters
targets: null

Adobe Photoshop Actions Event Guide

131

10

10. File Action Events
This chapter describes of all the file events that are included with
Photoshop.

File Events are events related to files and containers of documents. Most
of these events are in the File menu.

Adobe Photoshop Actions Event Guide

132

10. File Action Events

Built-in File Events
eventBatch ('Btch')
Image Reference
Table 8–159: eventBatch Parameters (8)
Key

Type

Bounds

Options

keyOverrideOpen ('OvrO')

typeBoolean

flagsOptionalSingleParameter

keyFolders ('Fldr')

typeBoolean

flagsOptionalSingleParameter

keyUsing ('Usng')

typeActionReference
('#Act')

flagsEnumeratedParameter

keyTo ('T ')

typeFSS

flagsOptionalSingleParameter

keyOverrideSave ('Ovrd')

typeBoolean

flagsOptionalSingleParameter

keySaveAndClose ('SvAn')

typeBoolean

flagsOptionalSingleParameter

keyLog ('Log ')

typeFSS

flagsOptionalSingleParameter

keyName ('Nm ')

typeText

flagsOptionalSingleParameter

eventImport ('Impr')
Image Reference
Table 8–160: eventImport Parameter (1)
Key

Type

keyUsing ('Usng')

typeClassTextImport
('#ClT')

Bounds

Options
flagsSingleParameter

eventOpen ('Opn ')
Image Reference
Table 8–161: eventOpen Parameter (1)
Key

Type

keyAs ('As ')

typeStringClassFormat
('#StC')

Bounds

Options
flagsEnumeratedParameter

eventRasterize ('Rstr')
Image Reference
Table 8–162: eventRasterize Parameter (1)
Key

Type

keyAS ('As ')

typeFSS

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsEnumeratedParameter

133

11

11. Classes and Formats
This chapter documents the different objects and classes you will
encounter as you build your descriptors, and the appropriate parameters
for each.
The format of the following is very similar to the previous chapters, but
with some minor adjustments.
The inherits from tag indicates the class the current object or class is
derived from, if any. The contains tag indicates the class is a container
that may hold specific objects.
For instance, document can contain an object of type channel . Objects
can contain multiple numbers of the same object, or can contain multiple
numbers of different objects. In some instances, what the object contains
can be either optional or required. For instance, a document can contain
an adjustment layer, but it is not required to. Alternatively, all documents
must have at least one channel associated with them.

Adobe Photoshop Actions Event Guide

134

11. Classes and Formats

Classes
classColorCorrection ('ClrC')
inherits from: none
contains: undefined

Table 9–163: classColorCorrection Parameters (4)
Key

Type

Bounds

Options

keyColors ('Clrs')

typeColors ('Clrs')

flagsEnumeratedProperty

keyCyan ('Cyn ')

typeInteger

flagsSingleProperty

keyMagenta ('Mgnt' )

typeInteger

flagsSingleProperty

keyYellow ('Ylw ' )

typeInteger

flagsSingleProperty

keyBlack ('Blck' )

typeInteger

flagsSingleProperty

classColor ('Clr ')
inherits from: none
contains: undefined

Table 9–164: classColor Parameter (1)
Key

Type

keyColor ('Clr ')

typeClassColor ('#Clr')

Bounds

Options
flagsEnumeratedProperty

classPoint ('Pnt ')
inherits from: none
contains: undefined

Table 9–165: classPoint Parameter (2)
Key

Type

Bounds

Options

keyHorizontal ('Hrzn')

typeFloat

flagsSingleProperty

keyVertical ('Vrtc')

typeFloat

flagsSingleProperty

classOffset ('Ofst')
inherits from: classPoint
contains: undefined

Table 9–166: classOffset Parameter (1)
Key

Type

keyInherits ('c@#^')

classPoint

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleProperty

135

11. Classes and Formats
classRGBColor ('RGBC')
inherits from: classcolor
contains: undefined

Table 9–167: classRGBColor Parameter (3)
Key

Type

Bounds

Options

keyRed ('Rd ')

typeFloat

flagsSingleProperty

keyGreen ('Grn ')

typeFloat

flagsSingleProperty

keyBlue ('Bl ')

typeFloat

flagsSingleProperty

classUnspecifiedColor ('UnsC')
inherits from: classColor
contains: undefined

Table 9–168: classUnspecifiedColor Parameter (1)
Key

Type

keyInherits ('c@#^')

classColor

Bounds

Options
flagsSingleProperty

classGrayscale ('Grys')
inherits from: classColor
contains: undefined

Table 9–169: classUnspecifiedColor Parameter (1)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classColor

flagsSingleProperty

keyGray ('Gry ')

typeFloat

flagsSingleProperty

classCMYKColor ('CMYC')
inherits from: classColor
contains: undefined

Table 9–170: classCMYKColor Parameters (5)
Key

Type

keyInherits ('c@#^')

classColor

flagsSingleProperty

keyCyan ('Cyn ')

typeFloat

flagsSingleProperty

keyMagenta ('Mgnt' )

typeFloat

flagsSingleProperty

keyYellow ('Ylw ' )

typeFloat

flagsSingleProperty

keyBlack ('Blck' )

typeFloat

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

136

11. Classes and Formats
classHSBColor ('HSBC')
inherits from: classColor
contains: undefined

Table 9–171: classHSBColor Parameters (4)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classColor

flagsSingleProperty

keyHue ('H ')

typeFloat/unitAngle

flagsSingleProperty

keySaturation ('Strt')

typeFloat

flagsSingleProperty

keyBrightness ('Brgh')

typeFloat

flagsSingleProperty

classLabColor ('LabC')
inherits from: classColor
contains: undefined

Table 9–172: classLabColor Parameters (4)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classColor

flagsSingleProperty

keyLuminance ('Lmn ')

typeFloat

flagsSingleProperty

keyA ('A ')

typeFloat

flagsSingleProperty

keyB ('B ')

typeFloat

flagsSingleProperty

classBookColor ('BkCl')
inherits from: classColor
contains: undefined

Table 9–173: classBookColor Parameters (3)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classColor

flagsSingleProperty

keyBook ('Bk ')

typeText

flagsSingleProperty

keyName ('Nm ')

typeText

flagsSingleProperty

classFileInfo ('FlIn')
inherits from: none
contains: undefined

Table 9–174: classFileInfo Parameters (21)
Key

Type

keyCaption ('Cptn')

typeText

flagsSingleProperty

keyCaptionWriter ('CptW')

typeText

flagsSingleProperty

keyHeadline ('Hdln')

typeText

flagsSingleProperty

keySpecialInstructions
('Spcl')

typeText

flagsSingleProperty

keyKeywords ('Kywd')

typeText

flagsListProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

137

11. Classes and Formats
Table 9–174: classFileInfo Parameters (21)
Key

Type

Bounds

Options

keyCategory ('Ctgr')

typeText

flagsSingleProperty

keySupplementalCategories (SplC')

typeText

flagsListProperty

keyUrgency ('Urgn')

typeUrgency

flagsSingleProperty

keyByline ('Byln')

typeText

flagsSingleProperty

keyBylineTitle ('BylT')

typeText

flagsSingleProperty

keyCredit ('Crdt')

typeText

flagsSingleProperty

keySource ('Srce')

typeText

flagsSingleProperty

keyObjectName ('ObjN')

typeText

flagsSingleProperty

keyDateCreated ('DtCr')

typeText

flagsSingleProperty

keyCity ('City')

typeText

flagsSingleProperty

keyProvinceState ('PrvS')

typeText

flagsSingleProperty

keyCountryName ('CntN')

typeText

flagsSingleProperty

keyOrginalTransmissionReference ('OrgT')

typeText

flagsSingleProperty

keyCopyright ('Cpyr')

typeText

flagsSingleProperty

keyCopyrightNotice
('CprN')

typeText

flagsSingleProperty

keyURL ('URL ')

typeText

flagsSingleProperty

classElement ('Elmn')
inherits from: none
contains: undefined
this class has no properties

classTool ('Tool')
inherits from: classElement
contains: undefined

Table 9–175: classTool Parameter (1)
Key

Type

keyInherits ('c@#^')

classElement

Bounds

Options
flagsSingleProperty

classBrush ('Brsh')
inherits from: classElement
contains: undefined

Table 9–176: classBrush Parameter (1)
Key

Type

keyInherits ('c@#^')

classElement

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleProperty

138

11. Classes and Formats
classDocument ('Dcmn')
inherits from: element
contains: undefined

Table 9–177: classDocument Parameters (18)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classElement

flagsSingleProperty

keyName ('Nm ')

typeText

flagsSingleProperty

keyMode ('Md ')

typeClassMode

flagsEnumeratedProperty

keyWidth ('Wdth')

unitFloat/unitDistance

flagsEnumeratedProperty

keyHeight ('Hght')

unitFloat/unitDistance

flagsEnumeratedProperty

keyResolution ('Rslt')

unitFloat/unitDensity

flagsEnumeratedProperty

keyFill ('Fl ')

unitFloat/unitDensity

flagsEnumeratedProperty

keyWorkPath('WrPt')

classPath

flagsSingleProperty

keyCurrentHistoryState
('CrnH')

classHistoryState

flagsSingleProperty

keyHistoryBrushSource
('HstB')

classhistoryState

flagsSingleProperty

keyBackground ('Bckg')

classLayer

flagsSingleProperty

keySelection ('fsel')

classChannel

flagsSingleProperty

keyFileInfo ('FlIn')

classFileInfo

flagsSingleProperty

keyQuickMask ('QucM')

typeBoolean

flagsSingleProperty

keyGuides('Gdes')

classGuide

flagsListProperty

keyHistoryStates ('HsSt')

classHistoryState

flagsListProperty

keyLayerFXVisible ('lfxv')

classLayerFXVisible

flagsSingleProperty

keyGlobalAngle ('gblA')

classGlobalAngle

flagsSingleProperty

classPixel ('Pxl ')
inherits from: classElement
contains: undefined

Table 9–178: classPixel (1)
Key

Type

keyInherits ('c@#^')

classElement

Bounds

Options
flagsSingleProperty

classLayer ('Lyr ')
inherits from: classElement
contains: undefined

Table 9–179: classLayer Parameters (11)
Key

Type

keyInherits ('c@#^')

classElement

flagsSingleProperty

keyName ('Nm ')

typeText

flagsSingleProperty

keyOpacity ('Opct')

unitFloat/unitPercent

flagsSingleProperty

keyMode ('Md ')

typeBlendMode

flagsEnumeratedProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

139

11. Classes and Formats
Table 9–179: classLayer Parameters (11)
Key

Type

Bounds

Options

keyGroup ('Grup')

typeBoolean

flagsSingleProperty

keyFillNeutral ('FlNt')

typeBoolean

flagsSingleProperty

keyPreserveTransparency
('PrsT')

typeBoolean

flagsSingleProperty

keyUserMaskEnabled
('UsrM')

typeBoolean

flagsSingleProperty

keyUserMaskLinked
('Usrs')

typeBoolean

flagsSingleProperty

keyBlendRange ('Blnd')

classBlendRange

flagsListProperty

keyLayerEffects ('Lefx')

classLayerEffects

flagsSingleProperty

classBackgroundLayer ('BckL')
inherits from: classLayer
contains: undefined

Table 9–180: classBackgroundLayer (1)
Key

Type

keyInherits ('c@#^')

classLayer

Bounds

Options
flagsSingleProperty

classAdjustmentLayer ('AdjL')
inherits from: classLayer
contains: undefined

Table 9–181: classAdjustmentLayer (2)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classLayer

flagsSingleProperty

keyType ('Type')

classAdjustment

flagsSingleProperty

classAdjustment ('Adjs')
inherits from: none
this class has no properties
contains: undefined

classTextLayer ('TxLy')
inherits from: classLayer
contains: undefined

Table 9–182: classTextLayer Parameters (11)
Key

Type

keyInherits ('c@#^')

classLayer

flagsSingleProperty

keyText ('Txt ')

typeChar

flagsSingleProperty

keyTextClickPoint ('TxtC')

classPoint

flagsSingleProperty

keyTextData ('TxtD')

typeRawData

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

140

11. Classes and Formats
Table 9–182: classTextLayer Parameters (11)
Key

Type

Bounds

Options

keyFontName ('FntN')

typeChar

flagsSingleProperty

keyScript (Scrp')

typeInteger

flagsSingleProperty

keyAlignment ('Algn')

typeAlignment

flagsEnumeratedProperty

keySize ('Sz ')

typeFloat

flagsSingleProperty

keyLeading ('Ldng')

typeFloat

flagsSingleProperty

keyTracking ('Trck')

typeFloat

flagsSingleProperty

keyAntiAlias ('AntA')

typeBoolean

flagsSingleProperty

keyRotate ('Rtt ')

typeBoolean

flagsSingleProperty

keyOrientation ('Ornt')

typeOrientation

flagsSingleProperty

keyAutoKern ('AtKr')

typeBoolean

flagsEnumeratedProperty

classInvert ('Invr')
inherits from: classAdjustment
contains: none

Table 9–183: classInvert (1)
Key

Type

keyInherits ('c@#^')

classAdjustment

Bounds

Options
flagsSingleProperty

classLevels ('Lvls')
inherits from: classAdjustment
contains: undefined

Table 9–184: classLevels (4)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classAdjustment

flagsSingleProperty

keyUsing ('Usng')

typeFSS

flagsSingleProperty

keyAuto ('Auto')

typeBoolean

flagsSingleProperty

keyAdjustment ('Adjs')

classLevelsAdjustment

flagsListProperty

classCurves ('Crvs')
inherits from: classAdjustment
contains: undefined

Table 9–185: classCurves (3)
Key

Type

keyInherits ('c@#^')

classAdjustment

flagsSingleProperty

keyUsing ('Usng')

typeFSS

flagsSingleProperty

keyAdjustment ('Adjs')

classLevelsAdjustment

flagsListProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

141

11. Classes and Formats
classBrightnessContrast ('BrCn')
inherits from: classAdjustment
contains: undefined

Table 9–186: classBrightnessContrast (3)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classAdjustment

flagsSingleProperty

keyBrightness ('Brgh')

typeInteger

flagsSingleProperty

keyContrast ('Cntr')

typeInteger

flagsSingleProperty

classColorBalance ('ClrB')
inherits from: classAdjustment
contains: undefined

Table 9–187: classColorBalance (5)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classAdjustment

flagsSingleProperty

keyShadowLevels('ShdL')

typeInteger

flagsListProperty

keyMidtoneLevels ('MdtL')

typeInteger

flagsListProperty

keyHighlightLevels
('HghL')

typeInteger

flagsListProperty

keyPreserveLuminosity
('PrsL')

typeBoolean

flagsSingleProperty

classHueSaturation ('HStr')
inherits from: classAdjustment
contains: undefined

Table 9–188: classHueSaturation (4)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classAdjustment

flagsSingleProperty

keyColorize ('Clrz')

typeBoolean

flagsSingleProperty

keyUsing ('Usng')

typeFSS

flagsSingleProperty

keyAdjustment ('Adjs')

classClassHueSatHueSat
V2

flagsListProperty

classSelectiveColor ('SlcC')
inherits from: classAdjustment
contains: undefined

Table 9–189: classSelectiveColor (3)
Key

Type

keyInherits ('c@#^')

classAdjustment

flagsSingleProperty

keyColorCorrection
('ClrC')

classColorCorrection

flagsListProperty

keyMethod ('Mthd')

typeCorrectionMethod

flagsEnumeratedProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

142

11. Classes and Formats
classChannelMixer ('ChnM')
inherits from: classAdjustment
contains: undefined

Table 9–190: classChannelMixer (9)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classAdjustment

flagsSingleProperty

keyRed ('Rd ')

classChannelMatrix

flagsSingleProperty

keyGreen ('Grn ')

classChannelMatrix

flagsSingleProperty

keyBlue ('Bl ')

classChannelMatrix

flagsSingleProperty

keyCyan ('Cyn ')

classChannelMatrix

flagsSingleProperty

keyMagenta ('Mgnt')

classChannelMatrix

flagsSingleProperty

keyYellow ('Ylw ')

classChannelMatrix

flagsSingleProperty

keyBlack ('Blck')

classChannelMatrix

flagsSingleProperty

keyMonochromatic
('Mnch')

typeBoolean

flagsSingleProperty

classThreshold ('Thrs')
inherits from: classAdjustment
contains: undefined

Table 9–191: classThreshold (2)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classAdjustment

flagsSingleProperty

keyLevel ('Lvl ')

typeInteger

flagsSingleProperty

classPosterize ('Pstr')
inherits from: classAdjustment
contains: undefined

Table 9–192: classPosterize (2)
Key

Type

keyInherits ('c@#^')

classAdjustment

flagsSingleProperty

keyLevel ('Lvl ')

typeInteger

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

143

11. Classes and Formats
classChannel ('Chnl')
inherits from: classElement
contains: undefined

Table 9–193: classChannel (5)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classElement

flagsSingleProperty

keyName ('Nm ')

typeText

flagsSingleProperty

keyColorIndicates ('ClrI')

typeMaskIndicator

flagsEnumeratedProperty

keyColor ('Clr ')

classColor

flagsSingleProperty

keyOpacity ('Opct')

typeInteger

flagsSingleProperty

classSpotColorChannel ('SCch')
inherits from: classElement
contains: undefined

Table 9–194: classSpotColorChannel (4)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classElement

flagsSingleProperty

keyName ('Nm ')

typeText

flagsSingleProperty

keyColor ('Clr ')

classColor

flagsSingleProperty

keyOpacity ('Opct')

typeInteger

flagsSingleProperty

classMode ('Md ')
inherits from: none
contains: undefined

Table 9–195: classMode (1)
Key

Type

keyMode ('Md ')

typeClassMode

Bounds

Options
flagsEnumeratedProperty

classRGBColorMode ('RGBM')
inherits from: classMode
contains: undefined

Table 9–196: classRGBColorMode (1)
Key

Type

keyInherits ('c@#^')

classMode

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleProperty

144

11. Classes and Formats
classBitmapMode ('BtmM')
inherits from: classMode
contains: undefined

Table 9–197: classBitmapMode (7)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classMode

flagsSingleProperty

keyResolution ('Rslt')

unitFloat/unitDensity

flagsEnumeratedProperty

keyMethod ('Mthd')

typeMethod

flagsEnumeratedProperty

keyFrequency ('Frqn')

unitFloat/unitDensity

flagsEnumeratedProperty

keyAngle ('Angl')

unitAngle

flagsEnumeratedProperty

keyShape ('Shp ')

typeShape

flagsEnumeratedProperty

keyHalftoneFile ('HlfF')

typeFSS

flagsSingleProperty

classGrayscaleMode ('Grys')
inherits from: classMode
contains: undefined

Table 9–198: classGrayscaleMode (2)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classMode

flagsSingleProperty

keyRatio ('Rt ')

typeInteger

flagsSingleProperty

classIndexedColorMode ('IndC')
inherits from: classMode
contains: undefined

Table 9–199: classIndexedColorMode (8)
Key

Type

keyInherits ('c@#^')

classMode

flagsSingleProperty

keyPalette ('Plt ')

typeColorPalette

flagsEnumeratedProperty

keyPaletteFile ('PltF')

typeFSS

flagsSingleProperty

keyCustomPalette ('CstP')

classRGBColor

flagsListProperty

keyColors ('Clrs')

typeInteger

flagsSingleProperty

keyDither ('Dthr')

typeDither

flagsEnumeratedProperty

keyDitherQuality ('Dthq')

typeDitherQuality

flagsEnumeratedProperty

keyDitherPreserve ('Dthp')

typeBoolean

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

145

11. Classes and Formats
classDuotoneMode ('DtnM')
inherits from: classMode
contains: undefined

Table 9–200: classDuotoneMode (4)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classMode

flagsSingleProperty

keyUsing ('Usgn')

typeClassTextImport

flagsSingleProperty

keyInks ('Inks')

classDuotoneInk

flagsListProperty

keyOverprintColors
('OvrC')

classColor

flagsListProperty

classDuotoneInk ('DtnI')
inherits from: none
contains: undefined

Table 9–201: classDuotoneInk (4)
Key

Type

Bounds

Options

keyName ('Nm ')

typeText

flagsSingleProperty

keyColor ('Clr ')

classRGBColor

flagsSingleProperty

keyCurve ('Crv ')

classDuotonePoint

flagsListProperty

keyCurveFile ('CrvF')

typeFSS

flagsSingleProperty

classDuotonePoint ('DtnP')
inherits from: none
contains: undefined

Table 9–202: classDuotonePoint (2)
Key

Type

Bounds

Options

keyValue ('Vl ')

typeInteger

flagsSingleProperty

keyResponse ('Rspn')

typeFloat

flagsSingleProperty

classLabColorMode ('LbCl')
inherits from: classMode
contains: undefined

Table 9–203: classLabColorMode (1)
Key

Type

keyInherits ('c@#^')

classMode

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleProperty

146

11. Classes and Formats
classCMYKColorMode ('CMYM')
inherits from: classMode
contains: undefined

Table 9–204: classCMYKColorMode (1)
Key

Type

keyInherits ('c@#^')

classMode

Bounds

Options
flagsSingleProperty

classMultichannelMode ('MltC')
inherits from: classMode
contains: undefined

Table 9–205: classMultichannelMode (1)
Key

Type

keyInherits ('c@#^')

classMode

Bounds

Options
flagsSingleProperty

classCommand ('Cmnd')
inherits from: classElement
contains: undefined

Table 9–206: classCommand (1)
Key

Type

keyInherits ('c@#^')

classElement

Bounds

Options
flagsSingleProperty

classAction ('Actn')
inherits from: element
contains: command

Table 9–207: classAction (6)
Key

Type

keyInherits ('c@#^')

classElement

flagsSingleProperty

keyName ('Nm ')

typeChar

flagsSingleProperty

keyFunctionKey ('FncK')

typeInteger

flagsSingleProperty

keyShiftKey ('ShfK')

typeBoolean

flagsSingleProperty

keyCommandKey ('CmdK')

typeBoolean

flagsSingleProperty

keyColor ('Clr ')

typeColor

flagsEnumeratedProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

147

11. Classes and Formats
classActionSet ('ASet')
inherits from: classElement
contains: undefined

Table 9–208: classActionSet (2)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classElement

flagsSingleProperty

keyName ('Nm ')

typeChar

flagsSingleProperty

classApplication ('capp')
inherits from: none
contains: undefined

Table 9–209: classApplication (22)
Key

Type

keyCurrentToolOptions
('CrnT')

classProperty

flagsSingleProperty

keyAllToolOptions ('AlTl')

classProperty

flagsSingleProperty

keyBrushes ('Brsh')

classProperty

flagsSingleProperty

keyPreferences ('Prfr')

classProperty

flagsSingleProperty

keyColorTable ('ClrT')

classColor

flagsListProperty

keyColors ('Clrs')

classColor

flagsListProperty

keyForegroundColor
('FrgC')

classColor

flagsSingleProperty

keyBackgroundColor
('BckC')

classColor

flagsSingleProperty

keyWorkPath ('WrPt')

classPath

flagsSingleProperty

keyClippingPath ('ClPt')

classClippingPath

flagsSingleProperty

keySelection ('fsel')

classChannel

flagsSingleProperty

keyTargetPath ('Trgp')

classPath

flagsSingleProperty

keyCurrentHistoryState
('CrnH')

classHistoryState

flagsSingleProperty

keyHistoryBrushSource
('HstB')

classHistoryState

flagsSingleProperty

keyBackground ('Bckg')

classLayer

flagsSingleProperty

keyRGBSetup ('RGBS')

classProperty

flagsSingleProperty

keyCMYKSetup ('CMYS')

classProperty

flagsSingleProperty

keyGraySetup ('GrSt')

classProperty

flagsSingleProperty

keyProfileSetup ('PrfS')

classProperty

flagsSingleProperty

keyLayerEffects ('Lefx')

classLayerEffects

flagsSingleProperty

keyLayerFXVisible ('lfxv')

classLayerFXVisible

flagsSingleProperty

keyGlobalAngle ('gblA')

classGlobalAngle

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

148

11. Classes and Formats
classChannel ('Chnl')
inherits from: element
this class has no properties
contains: undefined

classLayerEffects ('Lefx')
inherits from: none
contains: undefined

Table 9–210: classLayerEffects (6)
Key

Type

Bounds

Options

keyScale ('Scl ')

unitPercent

flagsEnumeratedProperty

keyGlobalLightingAngle
('gagl')

unitAngle

flagsEnumeratedProperty

keyDropShadow ('DrSh')

classDropShadow

flagsSingleProperty

keyInnerShadow ('IrSh')

classInnerShadow

flagsSingleProperty

keyOuterGlow ('OrGl')

classOuterGlow

flagsSingleProperty

keyInnerGlow ('IrGlt')

classInnerGlow

flagsSingleProperty

keyBevelEmboss ('ebbl')

classBevelEmboss

flagsSingleProperty

classDropShadow ('DrSh')
inherits from: none
contains: undefined

Table 9–211: classDropShadow (8)
Key

Type

keyMode ('Md ')

typeBlendMode

flagsEnumeratedProperty

keyColor ('Clr ')

classColor

flagsSingleProperty

keyOpacity ('Opct')

unitPercent

flagsEnumeratedProperty

keyUseGlobalAngle
('uglg')

typeBoolean

flagsSingleProperty

keyLocalLightingAngle
('lagl')

unitAngle

flagsEnumeratedProperty

keyDistance ('Dstn')

unitDistance

flagsEnumeratedProperty

keyBlur ('blur')

unitDistance

flagsEnumeratedProperty

keyIntensity ('Intn')

unitPercent

flagsEnumeratedProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

149

11. Classes and Formats
classInnerShadow ('IrSh')
inherits from: none
contains: undefined

Table 9–212: classInnerShadow (8)
Key

Type

Bounds

Options

keyMode ('Md ')

typeBlendMode

flagsEnumeratedProperty

keyColor ('Clr ')

classColor

flagsSingleProperty

keyOpacity ('Opct')

unitPercent

flagsEnumeratedProperty

keyUseGlobalAngle
('uglg')

typeBoolean

flagsSingleProperty

keyLocalLightingAngle
('lagl')

unitAngle

flagsEnumeratedProperty

keyDistance ('Dstn')

unitDistance

flagsEnumeratedProperty

keyBlur ('blur')

unitDistance

flagsEnumeratedProperty

keyIntensity ('Intn')

unitPercent

flagsEnumeratedProperty

classOuterGlow ('OrGl')
inherits from: none
contains: undefined

Table 9–213: classOuterGlow (5)
Key

Type

Bounds

Options

keyMode ('Md ')

typeBlendMode

flagsEnumeratedProperty

keyColor ('Clr ')

classColor

flagsSingleProperty

keyOpacity ('Opct')

unitPercent

flagsEnumeratedProperty

keyBlur ('blur')

unitDistance

flagsEnumeratedProperty

keyIntensity ('Intn')

unitPercent

flagsEnumeratedProperty

classInnerGlow ('IrGl')
inherits from: none
contains: undefined

Table 9–214: classInnerGlow (6)
Key

Type

keyMode ('Md ')

typeBlendMode

flagsEnumeratedProperty

keyColor ('Clr ')

classColor

flagsSingleProperty

keyOpacity ('Opct')

unitPercent

flagsEnumeratedProperty

keyBlur ('blur')

unitDistance

flagsEnumeratedProperty

keyIntensity ('Intn')

unitPercent

flagsEnumeratedProperty

keyInnerGlowSource
('glwS')

typeInnerGlowSource

flagsEnumeratedProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

150

11. Classes and Formats
classBevelEmboss ('ebbl')
inherits from: none
contains: undefined

Table 9–215: classBevelEmboss (13)
Key

Type

Bounds

Options

keyHighlightMode
('hglM')

typeBlendMode

flagsEnumeratedProperty

keyHighlightColor ('hglC')

classColor

flagsSingleProperty

keyHighlightOpacity
('hglO')

unitPercent

flagsEnumeratedProperty

keyShadowMode ('sdwM')

typeBlendMode

flagsEnumeratedProperty

keyShadowColor ('sdwC')

classColor

flagsSingleProperty

keyShadowOpacity
('sdwO')

unitPercent

flagsEnumeratedProperty

keyBevelStyle ('bvlS')

typeBevelEmbossStyle

flagsEnumeratedProperty

keyUseGlobalAngle
('uglg')

typeBoolean

flagsSingleProperty

keyLocalLightingAngle
('lagl')

unitAngle

flagsEnumeratedProperty

keyStrength ('srgh')

unitDistance

flagsEnumeratedProperty

keyBlur ('blur')

unitDistance

flagsEnumeratedProperty

keyBevelDirection ('bvlD')

typeBevelEmbossStampStyle

flagsEnumeratedProperty

keyHistoryStateSource
('HsSS')

typeHistoryStateSource

flagsEnumeratedProperty

classLayerFXVisible ('lfxv')
inherits from: none
contains: undefined

Table 9–216: classLayerFXVisible (1)
Key

Type

keyLayerFXVisible ('lfxv')

typeBoolean

Bounds

Options
flagsSingleProperty

classGlobalAngle ('gblA')
inherits from: none
contains: undefined

Table 9–217: classGlobalAngle (1)
Key

Type

keyGlobalLightingAngle
('gagl')

unitAngle

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsEnumeratedProperty

151

11. Classes and Formats
classCurvesAdjustment ('CrvA')
inherits from: undefined
contains: undefined

Table 9–218: classCurvesAdjustment (6)
Key

Type

Bounds

Options

keyChannel ('Chnl')

typeChannelReference

flagsEnumeratedProperty

keyAuto ('Auto')

typeBoolean

flagsSingleProperty

keyBlackClip ('BlcC')

typeFloat

flagsSingleProperty

keyWhiteClip ('WhtC')

typeFloat

flagsSingleProperty

keyMapping ('Mpng')

typeInteger

flagsListProperty

keyCurve ('Crv ')

classPoint

flagsListProperty

classLevelsAdjustment ('LvlA')
inherits from: none
contains: undefined

Table 9–219: classLevelsAdjustment (7)
Key

Type

Bounds

Options

keyChannel ('Chnl')

typeChannelReference

flagsEnumeratedProperty

keyAuto ('Auto')

typeBoolean

flagsSingleProperty

keyBlackClip ('BlcC')

typeFloat

flagsSingleProperty

keyWhiteClip ('WhtC')

typeFloat

flagsSingleProperty

keyInput ('Inpt')

typeInteger

flagsListProperty

keyGamma ('Gmm ')

typeFloat

flagsSingleProperty

keyOutput ('Otpt')

typeInteger

flagsListProperty

classHueSaturationAdjustment ('HStA')
inherits from: none
contains: undefined

Table 9–220: classHueSaturationAdjustment (4)
Key

Type

keyChannel ('Chnl')

typeChannel

flagsEnumeratedProperty

keyHue ('H ')

typeInteger

flagsSingleProperty

keySaturation ('Strt')

typeInteger

flagsSingleProperty

keyLightness ('Lght')

typeInteger

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

152

11. Classes and Formats
classHueSaturationAdjustmentV2 ('Hst2')
inherits from: none
contains: undefined

Table 9–221: classHueSaturationAdjustmentV2 (8)
Key

Type

Bounds

Options

keyLocalRange ('LclR')

typeInteger

flagsSingleProperty

keyBeginRamp (BgnR')

typeInteger

flagsSingleProperty

keyBeginSustain ('BgnS')

typeInteger

flagsSingleProperty

keyEndSustain ('EndS')

typeInteger

flagsSingleProperty

keyEndRamp ('EndR')

typeInteger

flagsSingleProperty

keyHue ('H ')

typeInteger

flagsSingleProperty

keySaturation ('Strt')

typeInteger

flagsSingleProperty

keyLightness ('Lght')

typeInteger

flagsSingleProperty

classBlendRange ('Blnd')
inherits from: none
contains: undefined

Table 9–222: classHueSaturationAdjustmentV2 (8)
Key

Type

Bounds

Options

keyChannel ('Chnl')

typeChannelReference

flagsEnumeratedProperty

keySrcBlackMin (SrcB')

typeInteger

flagsSingleProperty

keySrcBlackMax ('Srcl')

typeInteger

flagsSingleProperty

keySrcWhiteMin ('SrcW')

typeInteger

flagsSingleProperty

keySrcWhiteMax ('Srcm')

typeInteger

flagsSingleProperty

keyDestBlackMin ('DstB')

typeInteger

flagsSingleProperty

keyDestBlackMax ('Dstl')

typeInteger

flagsSingleProperty

keyDestWhiteMin ('DstW')

typeInteger

flagsSingleProperty

keyDestWhiteMax ('Dstt')

typeInteger

flagsSingleProperty

classGuide ('Gd ')
inherits from: classElement
contains: undefined

Table 9–223: classGuide (3)
Key

Type

keyInherits ('c@#^')

classElement

flagsSingleProperty

keyPosition ('Pstn')

typeFloat

flagsSingleProperty

keyOrientation ('Ornt')

typeOrientation

flagsEnumeratedProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

153

11. Classes and Formats
classColorSampler ('ClSm')
inherits from: classElement
contains: undefined

Table 9–224: classColorSampler (2)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classElement

flagsSingleProperty

keyPosition ('Pstn')

classPoint

flagsSingleProperty

classColorStop ('Clrt')
inherits from: none
contains: undefined

Table 9–225: classColorStop (4)
Key

Type

Bounds

Options

keyLocation ('Lctn')

typeInteger

flagsSingleProperty

keyMidpoint ('Mdpn')

typeInteger

flagsSingleProperty

keyType ('Type')

typeColorStopType

flagsEnumeratedProperty

keyColor ('Clr ')

classColor

flagsSingleProperty

classTransparencyStop ('TrnS')
inherits from: none
contains: undefined

Table 9–226: classTransparencyStop (3)
Key

Type

Bounds

Options

keyLocation ('Lctn')

typeInteger

flagsSingleProperty

keyMidpoint ('Mdpn')

typeInteger

flagsSingleProperty

keyOpacity ('Opct')

unitPercent

flagsSingleProperty

classCalculation ('Clcl')
inherits from: none
contains: undefined

Table 9–227: classCalculation (11)
Key

Type

key_Source (keyTo)

typeChannelReference

flagsEnumeratedProperty

keyInvert ('Invr')

typeBoolean

flagsSingleProperty

keyCalculation ('Clcl')

typeCalculation

flagsEnumeratedProperty

keySource2 ('Src2')

typeChannelReference

flagsEnumeratedProperty

keyInvertSource2 ('InvS')

typeBoolean

flagsSingleProperty

keyScale ('Scl ')

typeFloat

flagsSingleProperty

keyOffset ('Ofst')

typeInteger

flagsSingleProperty

keyOpacity ('Opct')

unitPercent

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

154

11. Classes and Formats
Table 9–227: classCalculation (11)
Key

Type

Bounds

Options

keyPreserveTransparency
('PrsT')

typeBoolean

flagsSingleProperty

keyUseMask ('UsMs')

typeChannelReference

flagsEnumeratedProperty

keyInvertMask ('InvM')

typeBoolean

flagsSingleProperty

classCustomWhitePoint ('CstW')
inherits from: none
contains: undefined

Table 9–228: classCustomWhitePoint (2)
Key

Type

Bounds

Options

keyX ('X ')

typeFloat

flagsSingleProperty

keyY ('Y ')

typeFloat

flagsSingleProperty

classCustomPhosphors ('CstP')
inherits from: none
contains: undefined

Table 9–229: classCustomPhosphors (6)
Key

Type

Bounds

Options

keyRedX ('RdX ')

typeFloat

flagsSingleProperty

keyRedY ('RdY ')

typeFloat

flagsSingleProperty

keyGreenX ('GrnX')

typeFloat

flagsSingleProperty

keyGreenY ('GrnY')

typeFloat

flagsSingleProperty

keyBlueX ('BlX ')

typeFloat

flagsSingleProperty

keyBlueY ('BlY ')

typeFloat

flagsSingleProperty

classAssumedProfile ('AssP')
inherits from: none
contains: undefined

Table 9–230: classAssumedProfile (2)
Key

Type

key_Source ('Srce')

typeAssumeOptions

flagsSingleProperty

keyName ('Nm ')

typeChar

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

155

11. Classes and Formats
classXYYColor ('XYYC')
inherits from: none
contains: undefined

Table 9–231: classAssumedProfile (3)
Key

Type

Bounds

Options

keyX ('X ')

typeInteger

flagsSingleProperty

keyY ('Y ')

typeInteger

flagsSingleProperty

keyUpperY ('UppY')

typeInteger

flagsSingleProperty

classPoint16 ('Pnt1')
inherits from: none
contains: undefined

Table 9–232: classPoint16 (2)
Key

Type

Bounds

Options

keyHorizontal ('Hrzn')

typeInteger

flagsSingleProperty

keyVertical ('Vrtc')

typeInteger

flagsSingleProperty

classRGBSetup ('RGBt')
inherits from: none
contains: undefined

Table 9–233: classRGBSetup (6)
Key

Type

Bounds

Options

key_Source ('Srce')

typeRGBSetupSource

flagsEnumeratedProperty

keyName ('Nm ')

typeStringFSS

flagsSingleProperty

keyGamma ('Gmm ')

typeFloat

flagsSingleProperty

keyWhitePoint ('WhtP')

typeKelvinCustomWhitePoint

flagsSingleProperty

keyPhosphors ('Phsp')

typePhosphorsCustomPhosphors

flagsSingleProperty

keyCompensation
('Cmpn')

typeBoolean

flagsEnumeratedProperty

classCMYKSetup ('CMYS')
inherits from: none
contains: undefined

Table 9–234: classCMYKSetup (17)
Key

Type

keyEngine ('Engn')

typeCMYKSetupEngine

flagsEnumeratedProperty

keyUsing ('Usng')

typeFSS

flagsSingleProperty

keyUseICCProfile ('UsIC')

typeBoolean

flagsEnumeratedProperty

keyInkColors ('Clrs')

typeChar

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

156

11. Classes and Formats
Table 9–234: classCMYKSetup (17)
Key

Type

Bounds

Options

keyColorsList ('ClrL')

classXYYColor

flagsListProperty

keyDotGain ('DtGn')

unitPercent

flagsSingleProperty

keyDotGainCurves
('DtGC')

typeRawData

flagsSingleProperty

keyGCR ('GCR ')

typeBoolean

flagsEnumeratedProperty

keyBlackLimit ('BlcL')

unitPercent

flagsSingleProperty

keyTotalLimit ('TtlL')

unitPercent

flagsSingleProperty

keyUCA ('UC ')

unitPercent

flagsSingleProperty

keyBlackGenerationCurve
('BlcG')

classPoint16

flagsListProperty

keyBlackGeneration
('Blcn')

typeBlackGeneration

flagsSingleProperty

keyICCEngine ('ICCE')

typeChar

flagsSingleProperty

keyICCSetupName ('ICCt')

typeChar

flagsSingleProperty

keyIntent ('Inte')

typeIntent

flagsEnumeratedProperty

keyMapBlack ('MpBl')

typeBoolean

flagsEnumeratedProperty

classGraySetup ('GrSt')
inherits from: none
contains: undefined

Table 9–235: classGraySetup (1)
Key

Type

keyGrayBehavior ('GrBh')

typeGrayBehavior

Bounds

Options
flagsEnumeratedProperty

classProfileSetup ('PrfS')
inherits from: none
contains: undefined

Table 9–236: classProfileSetup (10)
Key

Type

keyEmbedRGB ('EmbR')

typeBoolean

flagsEnumeratedProperty

keyEmbedCMYK ('EmbC')

typeBoolean

flagsEnumeratedProperty

keyEmbedGray ('EmbG')

typeBoolean

flagsEnumeratedProperty

keyEmbedLab ('EmbL')

typeBoolean

flagsEnumeratedProperty

keyMismatchRGB ('MsmR')

typeProfileMismatch

flagsEnumeratedProperty

keyMismatchCMYK
('MsmC')

typeProfileMismatch

flagsEnumeratedProperty

keyMismatchGray
('MsmG')

typeProfileMismatch

flagsEnumeratedProperty

keyAssumedRGB ('AssR')

classAssumedProfile

flagsSingleProperty

keyAssumedCMYK ('AssC')

classAssumedProfile

flagsSingleProperty

keyAssumedGray ('AssG')

classAssumedProfile

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

157

11. Classes and Formats
classGradientTool ('GrTl')
inherits from: classTool
contains: undefined

Table 9–237: classGradientTool (1)
Key

Type

keyInherits ('c@#^')

classTool

Bounds

Options
flagsSingleProperty

classHistoryState ('HstS')
inherits from: classElement
contains: undefined

Table 9–238: classHistoryState (3)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classElement

flagsSingleProperty

keyName ('Nm ')

typeText

flagsSingleProperty

keyUsing ('Usng')

typeHistoryStateSource

flagsEnumeratedProperty

classSnapshot ('SnpS')
inherits from: classHistoryState
contains: undefined

Table 9–239: classSnapshot (1)
Key

Type

keyInherits ('c@#^')

classHistoryState

Bounds

Options
flagsSingleProperty

classFormat ('Fmt ')
inherits from: none
contains: undefined

Table 9–240: classFormat (1)
Key

Type

keyFormat ('Fmt ')

typeClassFormat

Bounds

Options
flagsEnumeratedProperty

classImport ('Impr')
inherits from: none
contains: undefined

Table 9–241: classImport (1)
Key

Type

keyImport ('Impr')

typeClassImport

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsEnumeratedProperty

158

11. Classes and Formats
classExport ('Expr')
inherits from: none
contains: undefined

Table 9–242: classExport (1)
Key

Type

keyExport ('Expr')

typeClassExport

Bounds

Options
flagsEnumeratedProperty

classMenuItem ('Mn ')
inherits from: classElement
contains: undefined

Table 9–243: classMenuItem (1)
Key

Type

keyInherits ('c@#^')

classElement

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleProperty

159

11. Classes and Formats

Formats
classJPEGFormat ('JPEG')
inherits from: classFormat
contains: undefined

Table 9–244: classJPEGFormat (5)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classFormat

flagsSingleProperty

keyQuality ('Qlty ')

typeInteger

flagsSingleProperty

keyOptimized ('Optm')

typeBoolean

flagsEnumeratedProperty

keyScans ('Scns')

typeInteger

flagsSingleProperty

keySavePaths ('SvPt')

typeBoolean

flagsSingleProperty

classPhotoshopEPSFormat ('PhtE')
inherits from: classFormat
contains: undefined

Table 9–245: classPhotoshopEPSFormat (11)
Key

Type

keyInherits ('c@#^')

classFormat

flagsSingleProperty

keyPreview ('Prvw ')

typeEPSPreview

flagsEnumeratedProperty

keyDepth ('Dpth')

typeDepth

flagsEnumeratedProperty

keyEncoding ('Encd')

typeEncoding

flagsEnumeratedProperty

keyQuality ('Qlty')

typeQuality

flagsEnumeratedProperty

keyClippingPathEPS
('ClpP')

typeChar

flagsSingleProperty

keyFlatness ('Fltn ')

typeFloat

flagsSingleProperty

keyHalftoneScreen ('HlfS')

typeBoolean

flagsSingleProperty

keyTransferFunction
('TrnF')

typeBoolean

flagsSingleProperty

keyColorManagement
('ClMg')

typeBoolean

flagsSingleProperty

keyTransparentWhites
('TrnW')

typeBoolean

reserved, singleItem, notEnumerated, readWrite,
reserved, reserved,
reserved, reserved,
reserved, reserved,
reserved, reserved, noApostrophe, notFeminine,
notMasculine, singular

Adobe Photoshop Actions Event Guide

Bounds

Options

160

11. Classes and Formats
classPICTFileFormat ('PICF')
inherits from: classFormat
contains: undefined

Table 9–246: classPICTFileFormat (3)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classFormat ('Fmt ')

flagsSingleProperty

keyResolution ('Rslt')

typeDeepDepth ('DpDp')

flagsEnumeratedProperty

keyJPEGQuality ('JPEQ')

typeQuality ('Qlty')

flagsEnumeratedProperty

classRawFormat ('Rw ')
inherits from: classFormat
contains: undefined

Table 9–247: classRawFormat (12)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classFormat ('Fmt ')

flagsSingleProperty

keyWidth ('Wdth')

typeInteger

flagsSingleProperty

keyHeight ('Hght')

typeInteger

flagsSingleProperty

keyChannels ('Chns')

typeInteger

flagsSingleProperty

keyDepth ('Dpth')

typeInteger

flagsSingleProperty

keyRetainHeader ('RtnH')

typeBoolean

flagsSingleProperty

keyFileType ('FlTy')

typeText ('typeChar')

flagsSingleProperty

keyFileCreator ('FlCr')

typeText ('typeChar')

flagsSingleProperty

keyHeader ('Hdr ')

typeInteger

flagsSingleProperty

keyOriginalHeader
('OrgH')

typeBoolean

flagsSingleProperty

keyChannelsInterleaved
('ChnI')

typeBoolean

flagsSingleProperty

keyByteOrder ('ChnI')

typePlatform ('Pltf')

flagsEnumeratedProperty

classTIFFFormat ('TIFF')
inherits from: classFormat
contains: unknown

Table 9–248: classTIFFFormat (3)
Key

Type

keyInherits ('c@#^')

classFormat ('Fmt ')

flagsSingleProperty

keyByteOrder ('BytO')

typePlatform ('Pltf')

flagsEnumeratedProperty

keyLZWCompression
('LZWC')

typeBoolean

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

161

11. Classes and Formats
classPICTResourceFormat ('PICR')
inherits from: classPICTFileFormat
contains: undefined

Table 9–249: classPICTResourceFormat (3)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classPICTFileFormat
('PICF')

flagsSingleProperty

keyResourceID ('RsrI')

typeInteger

flagsSingleProperty

keyName ('Nm ')

typeText ('typeChar')

flagsSingleProperty

classGIFFormat ('GFFr')
inherits from: classFormat
contains: undefined

Table 9–250: classGIFFormat (2)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classFormat

flagsSingleProperty

keyInterlace ('Intr')

typeBoolean

flagsSingleProperty

classGIF89aExport ('GF89')
inherits from: classImport
contains: undefined

Table 9–251: classGIF89aExport (16)
Key

Type

keyInherits ('c@#^')

classImport)

flagsSingleProperty

keyGIFRequiredColorSpaceType ('GFCS')

typeGIFRequiredColorSpaceType

flagsEnumeratedProperty

keyGIFRowOrderType
('GFIT')

typeGIFRowOrderType

flagsEnumeratedProperty

keyGIFPaletteType (GFPL')

typeGIFPaletteType

flagsEnumeratedProperty

keyGIFPaletteFile ('GFPF')

typeAlias

flagsSingleProperty

keyGIFColorFileType
('GFPT')

typeGIFColorFileType

flagsEnumeratedProperty

keyGIFColorLimit ('GFCL')

typeInteger

flagsSingleProperty

keyGIFUseBestMatch
('GFBM')

typeBoolean

flagsSingleProperty

keyGIFExportCaption
('GFEC')

typeBoolean

flagsSingleProperty

keyGIFTransparentIndexRed ('GFTR')

typeInteger

flagsSingleProperty

keyGIFTransparentIndexGreen ('GFTG')

typeInteger

flagsSingleProperty

keyGIFTransparentIndexBlue ('GFTB')

typeInteger

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

162

11. Classes and Formats
Table 9–251: classGIF89aExport (16)
Key

Type

Bounds

Options

keyGIFMaskChannelIndex
('GFMI')

typeInteger

flagsSingleProperty

keyGIFMaskChannelInverted ('GFMV')

typeBoolean

flagsSingleProperty

keyGIFTransparentColor
('GFTC')

classRGBColor

flagsSingleProperty

keyIn ('In ')

typePlatformFilePath

flagsSingleProperty

classTargaFormat ('TrgF')
inherits from: classFormat
contains: undefined

Table 9–252: classTargaFormat (2)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classFormat

flagsSingleProperty

keyBitDepth ('BtDp')

typeInteger

flagsSingleProperty

classBMPFormat ('BMPF')
inherits from: classFormat
contains: undefined

Table 9–253: classBMPFormat (4)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classFormat

flagsSingleProperty

keyPlatform ('BtDp')

typePlatform

flagsEnumeratedProperty

keyBitDepth ('BtDp')

typeBitDepth

flagsEnumeratedProperty

keyCompression ('BtDp')

typeBoolean

flagsSingleProperty

classPhotoshop20Format ('Pht2')
inherits from: classFormat
contains: undefined

Table 9–254: classPhotoshop20Format (1)
Key

Type

keyInherits ('c@#^')

classFormat ('#ClF')

Adobe Photoshop Actions Event Guide

Bounds

Options
flagsSingleProperty

163

11. Classes and Formats
classPhotoshop35Format ('Pht3')
inherits from: classFormat
contains: undefined

Table 9–255: classPhotoshop35Format (1)
Key

Type

keyInherits ('c@#^')

classFormat ('#ClF')

Bounds

Options
flagsSingleProperty

classPhotoshopDCS2Format ('PhD2')
inherits from: classPhotoshopEPSFormat
contains: undefined

Table 9–256: classPhotoshopDCS2Format (2)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classPhotoshopEPSFormat ('PhtE')

flagsSingleProperty

keyDCS ('DCS ')

typeDCS ('DCS ')

flagsEnumeratedProperty

classPhotoshopDCSFormat ('PhD1')
inherits from: classPhotoshopEPSFormat
contains: undefined

Table 9–257: classPhotoshopDCSFormat (2)
Key

Type

Bounds

Options

keyInherits ('c@#^')

classPhotoshopEPSFormat ('PhtE')

flagsSingleProperty

keyDCS ('DCS ')

typeDCS ('DCS ')

flagsEnumeratedProperty

classPhotoshopPDFFormat ('PhtP')
inherits from: classFormat
contains: undefined

Table 9–258: classPhotoshopPDFFormat (3)
Key

Type

keyInherits ('c@#^')

classFormat ('#ClF')

flagsSingleProperty

keyQuality ('Qlty')

typeInteger

flagsSingleProperty

keyEncoding ('Encd')

typeEncoding ('Encd')

flagsEnumeratedProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

164

11. Classes and Formats
classScitexCTFormat ('Sctx')
inherits from: format
contains: undefined

Table 9–259: classScitexCTFormat (1)
Key

Type

keyInherits ('c@#^')

classFormat ('#ClF')

Bounds

Options
flagsSingleProperty

classEPSPICTPreview ('EPSC')
inherits from: format
contains: undefined

Table 9–260: classEPSPICTPreview (1)
Key

Type

keyInherits ('c@#^')

classFormat ('#ClF')

Bounds

Options
flagsSingleProperty

classEPSTIFFPreview ('EPST')
inherits from: format
contains: undefined

Table 9–261: classEPSTIFFPreview (1)
Key

Type

keyInherits ('c@#^')

classFormat ('#ClF')

Bounds

Options
flagsSingleProperty

classEPSGenericFormat ('EPSG')
inherits from:

classFormat

contains: undefined

Table 9–262: classEPSGenericFormat (7)
Key

Type

keyInherits ('c@#^')

classFormat ('#ClF')

flagsSingleProperty

keyWidth ('Wdth')

unitDistance('#Rlt'')

flagsEnumeratedProperty

keyHeight ('Hght')

unitDistance ('#Rlt'')

flagsEnumeratedProperty

keyResolution ('Rslt')

unitDensity ('#Rsl')

flagsEnumeratedProperty

keyMode ('Md ')

typeColorSpace ('ClrS')

flagsEnumeratedProperty

keyAntiAlias ('AntA')

typeBoolean

flagsSingleProperty

keyConstrainProportions
('CnsP')

typeBoolean

flagsSingleProperty

Adobe Photoshop Actions Event Guide

Bounds

Options

165

12

12. Types and Enumerations
This chapter describes of all the types and enumerations used in scripting
Photoshop.

Types and Enumerations
Type Name

Enumerations

typeActionReference ('#Act')
typeAlignDistributeSelector ('ADSt')

enumADSTops ('AdTp')
enumADSCentersV ('AdCV')
enumADSBottoms ('AdBt')
enumADSVertical ('AdVr')
enumADSLefts ('AdLf')
enumADSCentersH ('AdCH')
enumADSRights ('AdRg')
enumADSHorizontal ('AdHr')

typeAlignment ('Alg ')

enumLeft ('Left')
enumCenter ('Cntr')
enumRight ('Rght')
enumJustifyFull ('JstF')
enumJustifyAll ('JstA')

typeAreaSelector ('ArSl')

enumSelection ('Slct')
enumImage ('Img ')

typeAssumeOptions ('AssO')

enumNone ('None')
enumAskWhenOpening ('AskW')
enumMonitor ('Moni')
enumBuiltin ('Bltn')
enumICC ('ICC ')

typeBevelEmbossStampStyle ('BESs')

enumStampIn ('In ')
enumStampOut ('Out ')

typeBevelEmbossStyle ('BESl')

enumOuterBevel ('OtrB')
enumInnerBevel ('InrB')
enumEmboss ('Embs')
enumPillowEmboss ('PlEb')

typeBitDepth ('BtDp')

enumBitDepth1 ('BD1 ')
enumBitDepth4 ('BD4 ')
enumBitDepth8 ('BD8 ')
enumBitDepth24 ('BD24')

typeBlackGeneration ('BlcG')

enumNone ('None')
enumLight ('Lgt ')
enumMedium ('Mdim')
enumHeavy ('Hvy ')
enumMaximum ('Mxmm')

Adobe Photoshop Actions Event Guide

166

12. Types and Enumerations
Type Name

Enumerations

typeBlendMode('BlnM')

enumNormal ('Nrml')
enumDissolve ('Dslv')
enumBehind ('Bhnd')
enumClear ('Clar')
enumMultiply ('Mltp')
enumScreen ('Scrn')
enumOverlay ('Ovrl')
enumSoftLight ('SftL')
enumHardLight ('HrdL')
enumDarken ('Drkn')
enumLighten ('Lghn')
enumDifference ('Dfrn')
enumHue ('H ')
enumSaturation ('Strt')
enumColor ('Clr ')
enumLuminosity ('Lmns')
enumExclusion ('Xclu')
enumColorDodge ('CDdg')
enumColorBurn ('CBrn')

typeBlurMethod ('BlrM')

enumSpin ('Spn ')

typeBlurQuality ('BlrQ')

enumDraft ('Drft')
enumGood ('Gd ')
enumBest ('Bst ')

typeBrushType ('BrsT')

enumBrushSimple ('BrSm')
enumBrushLightRough ('BrsL')
enumBrushDarkRough ('BrDR')
enumBrushWideSharp ('BrsW')
enumBrushWideBlurry ('BrbW')

typeBuiltinProfile ('BltP')

enumAppleRGB ('AppR')
enumSRGB ('SRGB')
enumCIERGB ('CRGB')
enumNTSC ('NTSC')
enumPalSecam ('PlSc')
enumGray18 ('Gr18')
enumGray22 ('Gr22')

typeCMYKSetupEngine ('CMYE')

enumBuiltin ('Bltn')
enumICC ('ICC '
enumTables ('Tbl ')

typeCalculation ('Clcn')

enumNormal ('Nrml')
enumMultiply ('Mltp')
enumScreen ('Scrn')
enumOverlay ('Ovrl')
enumSoftLight ('SftL')
enumHardLight ('HrdL')
enumDarken ('Drkn')
enumLighten ('Lghn')
enumDifference ('Dfrn')
enumExclusion ('Xclu')
enumColorDodge ('CDdg')
enumColorBurn ('CBrn')
enumAdd ('Add ')
enumSubtract ('Sbtr')

Adobe Photoshop Actions Event Guide

167

12. Types and Enumerations
Type Name

Enumerations

typeChannel ('Chnl')

enumBlack ('Blck')
enumCMYK ('CMYK')
enumRGB ('RGB ')
enumLab ('Lab ')
enumRed ('Rd ')
enumGreen ('Grn ')
enumCyan ('Cyn ')
enumLightness ('Lght')
enumBlue ('Bl ')
enumMagenta ('Mgnt')
enumYellow ('Yllw')
enumA ('A ')
enumB ('B ')
enumComposite ('Cmps')
enumMask ('Msk ')
enumMonotone ('Mntn')
enumDuotone ('Dtn ')
enumTritone ('Trtn')
enumQuadtone ('Qdtn')
enumTransparency ('Trsp')

typeChannelReference ('#ChR')
typeClass (typeType)
typeClassColor ('#Clr')
typeClassElement ('#ClE')
typeClassExport ('#Cle')
typeClassFormat ('#ClF')
typeClassHueSatHueSatV2 ('#HsV')
typeClassImport ('#ClI')
typeClassMode ('#ClM')
typeClassStringFormat ('#ClS')
typeClassTextExport ('#CTE')
typeClassTextImport ('#ClT')
typeColor('Clr ')

enumRed ('Rd ')
enumOrange ('Orng')
enumYellowColor ('Ylw ')
enumGreen ('Grn ')
enumBlue ('Bl ')
enumViolet ('Vlt ')
enumGray ('Gry ')

typeColorPalette ('ClrP')

enumExact ('Exct')
enumWeb ('Web ')
enumUniform ('Unfm')
enumAdaptive ('Adpt')
enumPrevious ('Prvs')
enumSpectrum ('Spct')
enumGrayscale ('Grys')
enumBlackBody ('BlcB')
enumMacintoshSystem ('McnS')
enumWindowsSystem ('WndS')

Adobe Photoshop Actions Event Guide

168

12. Types and Enumerations
Type Name

Enumerations

typeColorSpace ('ClrS')

enumGrayscale ('Grys')
enumRGBColor ('RGBC')
enumCMYKColor ('ECMY')
enumLabColor ('LbCl')
enumBitmap ('Btmp')
enumGrayScale ('Gryc')
enumGray16 ('GryX')
enumIndexedColor ('Indl')
enumRGB48 ('RGBF')
enumCMYK64 ('CMSF')
enumHSLColor ('HSLC')
enumHSBColor ('HSBl')
enumMultichannel ('Mlth')
enumLab48 ('LbCF')

typeColorStopType ('Clry')

enumForegroundColor ('FrgC')
enumBackgroundColor ('BckC')
enumUserStop ('UsrS')

typeColors ('Clrs')

enumReds ('Rds ')
enumYellows ('Ylws')
enumGreens ('Grns')
enumCyans ('Cyns')
enumBlues ('Bls ')
enumMagentas ('Mgnt')
enumWhites ('Whts')
enumNeutrals ('Ntrl')
enumBlacks ('Blks')
enumHighlights ('Hghl')
enumMidtones ('Mdtn')
enumShadows ('Shdw')
enumOutOfGamut ('OtOf')

typeCompensation ('Cmpn')

enumNone ('None')
enumBuiltin ('Bltn')

typeContourEdge ('CntE')

enumUpper ('Upr ')
enumLower ('Lwr ')

typeConvert ('Cnvr')

enumRectToPolar ('RctP')
enumPolarToRect('PlrR')

typeCorrectionMethod ('CrcM')

enumRelative ('Rltv')
enumAbsolute ('Absl')

typeDCS ('DCS ')

enumSingleNoCompositePS ('NCmS')
enumSingle72Gray ('72GS')
enumSingle72Color ('72CS')
enumMultiNoCompositePS ('NCmM')
enumMulti72Gray ('72GM')
enumMulti72Color ('72CM')
enumNoCompositePS ('NCmp')
enum72Gray ('72Gr')
enum72Color ('72Cl')

typeDeepDepth ('DpDp')

enum2BitsPerPixel ('2Bts')
enum4BitsPerPixel ('4Bts')
enum8BitsPerPixel ('EghB')
enum16BitsPerPixel ('16Bt')
enum32BitsPerPixel ('32Bt')

typeDepth ('Dpth')

enum1BitPerPixel ('OnBt')
enum8BitsPerPixel ('EghB')

typeDiffuseMode ('DfsM')

enumNormal ('Nrml')
enumLightenOnly ('LghO')
enumDarkenOnly ('DrkO')

typeDirection ('Drct')

enumLeft ('Left')
enumRight ('Rght')

typeDisplacementMap ('DspM')

enumStretchToFit ('StrF')
enumTile ('Tile')

Adobe Photoshop Actions Event Guide

169

12. Types and Enumerations
Type Name

Enumerations

typeDistribution ('Dstr')

enumUniformDistribution ('Unfr')
enumGaussianDistribution ('Gsn ')

typeDither ('Dthr')

enumPattern ('Ptrn')
enumDiffusion ('Dfsn')

typeDitherQuality ('Dthq')

enumBetter ('Dthb')
enumFaster ('Dthf')

typeDocumentReference ('#DcR')
typeEPSPreview ('EPSP')

enumTIFF ('TIFF')
enumMacintosh ('Mcnt')

typeElementReference ('#ElR')
typeEncoding ('Encd')

enumASCII ('ASCI')
enumBinary ('Bnry')
enumJPEG ('JPEG')
enumZip ('ZpEn')

typeExtrudeRandom ('ExtR')

enumRandom ('Rndm')
enumLevelBased ('LvlB')

typeExtrudeType ('ExtT')

enumBlocks ('Blks')
enumPyramids ('Pyrm')

typeEyeDropperSample ('EyDp')

enumSamplePoint (SmpP)
enumSample3x3 (Smp3)
enumSample5x5 (Smp5)

typeFPXCompress ('FxCm')

enumFPXCompressNone ('FxNo')
enumFPXCompressLossyJPEG ('FxJP')

typeFill ('Fl ')

enumWhite ('Wht ')
enumBackgroundColor ('BckC')
enumTransparent ('Trns')

typeFillColor ('FlCl')

enumFillBack ('FlBc')
enumFillFore ('FlFr')
enumFillInverse ('FlIn')
enumFillSame ('FlSm')

typeFillContents ('FlCn')

enumForegroundColor ('FrgC')
enumBackgroundColor ('BckC')
enumPattern ('Ptrn')
enumSaved ('Sved')
enumSnapshot ('Snps')
enumBlack ('Blck')
enumWhite ('Wht ')
enumGray ('Gry ')

typeFillMode ('FlMd')

enumBackground ('Bckg')
enumRepeat ('Rpt ')
enumWrap ('Wrp ')

typeGIFColorFileType ('GFPT')

enumGIFColorFileColors ('GFCF')
enumGIFColorFileColorTable ('GFCT')
enumGIFColorFileMicrosoftPalette ('GFMS')

typeGIFPaletteType ('GFPL')

enumGIFPaletteExact ('GFPE')
enumGIFPaletteAdaptive ('GFPA')
enumGIFPaletteSystem ('GFPS')
enumGIFPaletteOther ('GFPO')

typeGIFRequiredColorSpaceType ('GFCS')

enumGIFRequiredColorSpaceRGB ('GFRG')
enumGIFRequiredColorSpaceIndexed ('GFCI')

typeGIFRowOrderType ('GFIT')
typeGlobalClass ('GlbC')

enumGIFRowOrderNormal ('GFNI')
enumGIFRowOrderInterlaced ('GFIN')

typeGlobalObject ('GlbO')

Adobe Photoshop Actions Event Guide

170

12. Types and Enumerations
Type Name

Enumerations

typeGradientType ('GrdT')

enumLinear ('Lnr ')
enumRadial ('Rdl ')
enumAngle ('Angl')
enumReflected ('Rflc')
enumDiamond ('Dmnd')

typeGrainType ('Grnt')

enumGrainRegular ('GrnR')
enumGrainSoft ('GrSf')
enumGrainSprinkles ('GrSr')
enumGrainClumped ('GrnC')
enumGrainContrasty ('GrCn')
enumGrainEnlarged ('GrnE')
enumGrainStippled ('GrSt')
enumGrainHorizontal ('GrnH')
enumGrainVertical ('GrnV')
enumGrainSpeckle ('GrSp')

typeGrayBehavior ('GrBh')

enumRGB ('RGB ')
enumBlack ('Blck')

typeHistoryStateSource ('HstS')

enumFullDocument ('FllD')
enumMergedLayers ('MrgL')
enumCurrentLayer ('CrrL')

typeHorizontalLocation ('HrzL')

enumLeft ('Left')
enumRight ('Rght')

typeImageReference ('#ImR')
typeInnerGlowSource ('IGSr')

enumCenterGlow ('SrcC')
enumEdgeGlow ('SrcE')

typeIntent ('Inte')

enumImage ('Img ')
enumGraphics ('Grp ')
enumColorimetric ('Clrm')

typeInterlaceCreateType ('IntC')

enumCreateDuplicate ('CrtD')
enumCreateInterpolation ('CrtI')

typeInterlaceEliminateType ('IntE')

enumEliminateOddFields ('ElmO')
enumEliminateEvenFields ('ElmE')

typeInterpolation ('Intp')

enumNearestNeighbor ('Nrst')
enumBilinear ('Blnr')
enumBicubic ('Bcbc')

typeKelvin ('Klvn')

enum5000 ('5000')
enum5500 ('5500')
enum6500 ('6500')
enum7500 ('7500')
enum9300 ('9300')
enumStdA ('StdA')
enumStdB ('StdB')
enumStdC ('StdC')
enumStdE ('StdE')

typeKelvinCustomWhitePoint ('#Klv')
typeLens ('Lns ')

enumZoom ('Zm ')
enumPanaVision ('PnVs')
enumNikon ('Nkn ')
enumNikon105 ('Nkn1')

typeLightDirection ('LghD')

enumLightDirBottom ('LDBt')
enumLightDirBottomLeft ('LDBL')
enumLightDirLeft ('LDLf')
enumLightDirTopLeft ('LDTL')
enumLightDirTop ('LDTp')
enumLightDirTopRight ('LDTR')
enumLightDirRight ('LDRg')
enumLightDirBottomRight ('LDBR')

Adobe Photoshop Actions Event Guide

171

12. Types and Enumerations
Type Name

Enumerations

typeLightPosition ('LghP')

enumLightPosBottom ('LPBt')
enumLightPosBottomLeft ('LPBL')
enumLightPosBottomRight ('LPBr')
enumLightPosLeft ('LPLf')
enumLightPosTopLeft ('LPTL')
enumLightPosTop ('LPTp')
enumLightPosTopRight ('LPTR')
enumLightPosRight ('LPRg')

typeLightType ('LghT')

enumLightDirectional ('LghD')
enumLightOmni ('LghO')
enumLightSpot ('LghS')

typeLocationReference ('#Lct')
typeMaskIndicator ('MskI')

enumMaskedAreas ('MskA')
enumSelectedAreas ('SlcA')
enumSpotColor ('Spot')

typeMenuItem ('MnIt')

enumAboutAp ('AbAp')
enumPlace ('Plce')
enumOpenAs ('OpAs')
enumFileInfo ('FlIn')
enumPageSetup ('PgSt')

typeMethod ('Mthd')

enumThreshold ('Thrh')
enumPatternDither ('PtnD')
enumDiffusionDither ('DfnD')
enumHalftoneScreen ('HlfS')
enumHalftoneFile ('HlfF')
enumCustomPattern ('Cstm')

typeMezzotintType ('MztT')

enumFineDots ('FnDt')
enumMediumDots ('MdmD')
enumGrainyDots ('GrnD')
enumCoarseDots ('CrsD')
enumShortLines ('ShrL')
enumMediumLines ('MdmL')
enumLongLines (LngL)
enumShortStrokes ('ShSt')
enumMediumStrokes ('MdmS')
enumLongStrokes ('LngS')

typeMode ('Md ')

enumModeGray ('MdGr')
enumModeRGB ('MdRG')

typeObject ('Objc')
typeObjectReference (typeObject Specifier)
typeOnOff ('OnOf')

enumOn ('On ')
enumOff ('Off ')

typeOrdinal ('Ordn')

enumAll ('Al ')
enumFirst ('Frst')
enumLast ('Lst ')
enumNext ('Nxt ')
enumPrevious ('Prvs')
enumMiddle ('Mddl')
enumAny ('Any ')
enumNone ('None')
enumTarget ('Trgt')
enumForward ('Frwr')
enumBackward ('Bckw')
enumFront ('Frnt')
enumBack ('Back')
enumMerged ('Mrgd')
enumLinked ('Lnkd')

typeOrientation ('Ornt')

enumHorizontal ('Hrzn')
enumVertical ('Vrtc')

Adobe Photoshop Actions Event Guide

172

12. Types and Enumerations
Type Name

Enumerations

typePNGFilter ('PNGf')

enumPNGFilterNone ('PGNo')
enumPNGFilterSub ('PGSb')
enumPNGFilterUp ('PGUp')
enumPNGFilterAverage ('PGAv')
enumPNGFilterPaeth ('PGPt')
enumPNGFilterAdaptive ('PGAd')

typePNGInterlaceType ('PGIT')

enumPNGInterlaceNone ('PGIN')
enumPNGInterlaceAdam7 ('PGIA')

typePagePosition ('PgPs')

enumPagePosTopLeft ('PgTL')
enumPagePosCentered ('PgPC')

typePathReference ('#PtR')
typePhosphors ('Phsp')

enumCIERGB ('CRGB')
enumEBUITU ('EBT ')
enumHDTV ('HDTV')
enumNTSC ('NTSC')
enumP22EBU ('P22B')
enumSMPTE240M ('SMPT')
enumSMPTEC ('SMPC')
enumTrinitron ('Trnt')

typePhosphorsCustomPhosphors ('#Phs')
typePickerKind ('PckK')

enumSystemPicker ('SysP')
enumPhotoshopPicker ('Phtk')
enumPluginPicker ('PlgP')

typePixelPaintSize ('PPSz')

enumPixelPaintSize1 ('PxS1')
enumPixelPaintSize2 ('PxS2')
enumPixelPaintSize3 ('PxS3')
enumPixelPaintSize4 ('PxS4')

typePlatform ('Pltf')

enumOS2 ('OS2 ')
enumWindows ('Win ')
enumMacintosh ('Mcnt')
enumIBMPC ('IBMP')

typePreview ('Prvw')

enumNone ('None')
enumIcon ('Icn ')
enumThumbnail ('Thmb')
enumMacThumbnail ('McTh')
enumWinThumbnail ('WnTh')
enumFullSize ('FlSz')

typePreviewCMYK ('Prvt')

enumPreviewOff ('PrvO')
enumPreviewCMYK ('PrvC')
enumPreviewCyan ('Prvy')
enumPreviewMagenta ('PrvM')
enumPreviewYellow ('PrvY')
enumPreviewBlack ('PrvB')
enumPreviewCMY('PrvN' )

typeProfileMismatch ('PrfM')

enumIgnore ('Ignr')
enumAskWhenOpening ('AskW')
enumConvertToCMYK ('CnvC')
enumConvertToRGB ('CnvR')
enumConvertToLab ('CnvL')
enumConvertToGray ('CnvG')

typePurgeItem ('PrgI')

enumClipboard ('Clpb')
enumSnapshot ('Snps')
enumUndo ('Und ')
enumPattern ('Ptrn')
enumHistory ('Hsty')
enumAll ('Al ')

Adobe Photoshop Actions Event Guide

173

12. Types and Enumerations
Type Name

Enumerations

typeQuadCenterState ('QCSt')

enumQCSAverage ('Qcsa')
enumQCSCorner0 ('Qcs0')
enumQCSCorner1 ('Qcs1')
enumQCSCorner2 ('Qcs2')
enumQCSCorner3 ('Qcs3')
enumQCSSide0 ('Qcs4')
enumQCSSide1 ('Qcs5')
enumQCSSide2 ('Qcs6')
enumQCSSide3 ('Qcs7')
enumQCSIndependent ('Qcsi')

typeQuality ('Qlty')

enumLowQuality ('Lw ')
enumMediumQuality ('Mdm ')
enumHighQuality ('Hgh ')
enumMaximumQuality ('Mxm ')

typeRGBSetupSource ('RGBS')

enumCustom ('Cst ')
enumBuiltin ('Bltn')
enumMonitor ('Moni')
enumFile ('Fle ')

typeRawData ('tdta')
typeRippleSize ('RplS')

enumSmall ('Sml ')
enumMedium ('Mdim')
enumLarge ('Lrg ')

typeRulerUnits ('RlrU')

enumRulerPixels ('RrPx')
enumRulerInches ('RrIn')
enumRulerCm ('RrCm')
enumRulerPoints ('RrPt')
enumRulerPicas ('RrPi')
enumRulerPercent ('RrPr')

typeScreenType ('ScrT')

enumScreenCircle ('ScrC')
enumScreenDot ('ScrD')
enumScreenLine ('ScrL')

typeShape ('Shp ')

enumRound ('Rnd ')
enumDiamond ('Dmnd')
enumEllipse ('Elps')
enumLine ('Ln ')
enumSquare ('Sqr ')
enumCross ('Crs ')

typeSmartBlurMode ('SmBM')

enumSmartBlurModeNormal ('SBMN')
enumSmartBlurModeEdgeOnly ('SBME')
enumSmartBlurModeOverlayEdge ('SBMO')

typeSmartBlurQuality ('SmBQ')

enumSmartBlurQualityLow ('SBQL')
enumSmartBlurQualityMedium ('SBQM')
enumSmartBlurQualityHigh ('SBQH')

typeSpherizeMode ('SphM')

enumNormal ('Nrml')
enumHorizontalOnly ('HrzO')
enumVerticalOnly ('VrtO')

typeState ('Stte')

enumRedrawComplete ('RdCm')

typeStringClassFormat ('#StC')
typeStringCompensation ('#Stm')
typeStringFSS ('#Stf')
typeStringInteger ('#StI ')
typeStrokeDirection ('StrD')

enumStrokeDirRightDiag ('SDRD')
enumStrokeDirHorizontal ('SDHz')
enumStrokeDirLeftDiag ('SDLD')
enumStrokeDirVertical ('SDVt')

typeStrokeLocation ('StrL')

enumInside ('Insd')
enumOutside ('Otsd')
enumCenter ('Cntr')

Adobe Photoshop Actions Event Guide

174

12. Types and Enumerations
Type Name

Enumerations

typeText (typeChar)
typeTextureType ('TxtT')

enumTexTypeBrick ('TxBr')
enumTextTypeBurlap ('TxBu')
enumTextTypeCanvas ('TxCa')
enumTexTypeSandstone ('TxSt')
enumTexTypeBlocks ('TxBl')
enumTexTypeFrosted ('TxFr')
enumTexTypeTinyLens ('TxTL')

typeTypeClassModeOrClassMode ('#TyM')
typeUndefinedArea ('UndA')

enumWrapAround ('WrpA')
enumRepeatEdgePixels ('RptE')

typeUnitFloat ('UntF')
typeUrgency ('Urgn')

enumLow ('Low ')
enumHigh ('High')

typeUserMaskOptions ('UsrM')

enumHideAll ('HdAl')
enumRevealAll ('RvlA')
enumHideSelection ('HdSl')
enumRevealSelection ('RvlS')

typeValueList ('VlLs')
typeVerticalLocation ('VrtL')

enumTop ('Top ')
enumBottom ('Bttm')

typeWaveType ('Wvtp')

enumWaveSine ('WvSn')
enumWaveTriangle ('WvTr')
enumWaveSquare ('WvSq')

typeWindMethod ('WndM')

enumWind ('Wnd ')
enumBlast ('Blst')
enumStagger ('Stgr')

typeYesNo ('YsN ')

enumYes ('Ys ')
enumNo ('N ')
enumAsk ('Ask ')

typeZigZagType ('ZZTy')

Adobe Photoshop Actions Event Guide

175

13

13. Automation Plug-ins
This chapter lists parameters for automation plug-ins.

eventContactSheet
("63676b34-cb65-11d1-bc43-0060b0a13dc4")
Table 11–1: eventContactSheet Parameters(8)
Key

Type

Bounds

Options

keyInputDirectory
('InpD')

typeAlias

flagsSingleParameter

keySheetWidth
('Wdth')

typeUnitFloat ('UntF')

flagsSingleParameter

keySheetHeight
('Hght')

typeUnitFloat ('UntF')

flagsSingleParameter

keyResolution
('Rslt')

typeUnitFloat ('UntF')

flagsSingleParameter

keyMode ('Md ')

classType

flagsSingleParameter

keyRowOrder
('RowO')

typeBoolean

flagsSingleParameter

keyNumberofColumns ('Cols')

typeInteger

flagsSingleParameter

keyNumberofRows
('Rows')

typeInteger

flagsSingleParameter

eventExportTransparentImage
("02879e00-cb66-11d1-bc43-0060b0a13dc4")
Table 11–2: eventExportTransparentImage Parameters(2)
Key

Type

Bounds

Options

keyWidth('Wdth')

typeUnitFloat

flagsSingleParameter

keyHeight ('Hght')

typeUnitFloat

flagsSingleParameter

eventFitImage

Adobe Photoshop Actions Event Guide

176

13. Automation Plug-ins
("3caa3434-cb67-11d1-bc43-0060b0a13dc4")
Table 11–3: eventFitImage Parameters(4)
Key

Type

Bounds

Options

keyWidth('Wdth')

typeUnitFloat

flagsSingleParameter

keyHeight ('Hght')

typeUnitFloat

flagsSingleParameter

eventModeChange
("8cba8cd6-cb66-11d1-bc43-0060b0a13dc4")
Table 11–4: eventModeChange Parameters(3)
Key

Type

Bounds

Options

keySourceMode
('SrcM')

TypeSourceMode('CnDn'

enumUIBitmap,
enumUIGrayscale
enumUIDuotone
enumUIIndexed
enumUIRGB
enumUICMYK
enumUILab
enumUIMultichannel

flagsListParameter

keyDestinationMode('DstM')

classType

flagsSingleParameter

keyFlatten('Fltt')

typeBoolean

flagsSingleParameter

eventMultiPagePDFtoPSD
("ec8d7010-cb66-11d1-bc43-0060b0a13dc4")
Table 11–5: eventMultiPagePDFtoPSD Parameters(9)
Key

Type

keyAllPages ('AllP')

typeBoolean

flagsOptionalSingleParameter

keyFrom('From')

typeInteger

flagsOptionalSingleParameter

keyTo('T ')

typeInteger

flagsOptionalSingleParameter

keyInputPDF('InpP')

typeAlias

flagsSingleParameter

keyMode ('Md ')

classType

flagsSingleParameter

keyResolution
('Rslt')

typeUnitFloat ('UntF')

flagsSingleParameter

keyAntiAlias
('AntA')

typeBoolean

flagsSingleParameter

keyBaseName
('BasN')

typeTEXT

flagsSingleParameter

keyOutputDirectory ('OutD')

typeAlias

flagsSingleParameter

Adobe Photoshop Actions Event Guide

Bounds

Options

177

13. Automation Plug-ins
eventResizeImage
("1333cf0c-cb67-11d1-bc43-0060b0a13dc4")
Table 11–6: eventResizeImage Parameters(4)
Key

Type

keyWidth('Wdth')

typeUnitFloat

flagsSingleParameter

keyHeight ('Hght')

typeUnitFloat

flagsSingleParameter

Adobe Photoshop Actions Event Guide

Bounds

Options

178

A

A. Information Sources
Much of the information about keys, structures, and terminology
(especially the information not detailed in this document) can be found
in the header files shipped with the Software Development Kit or SDK.
In Photoshop 5.0, there are many more header files than in Photoshop
4.0. This is because many functions are now broken out in separate files.
Generally, the header files that relate to Photoshop, actions and PICA
suites are located in the Headers folder in the Sample Code folder in the
SKD folder. In Headers there are two folders, Photoshop and SDK. In the
Photoshop folder are PI header files and folders for ADM header files,
PICA header files, and PS-Suites header files. In the SDK folder are the PIU
header files.
Some of the more useful files include:
Name

Location

Description

PIUSuites.h

SampleCode/Common/Headers/SDK

Contains the twenty+ most common and
useful Photoshop, ADM, and PICA suites.
Defines the suite names as smart pointers
and declares them as global. Photoshop
suites that are not included in PIUSuites.h
can be found in the PS-Suite folder in the
Photoshop folder.

PIDefines.h

SampleCode/Common/Headers/SDK

Some basic definitions used for a plug-in (are
you on a Mac, or PC, using Metrowerks or
not, etc.)

PITypes.h

SampleCode/Common/Headers/Photoshop

Photoshop specific types. A large file that
includes all of the macros defined for Photoshop.

PIGeneral.h

SampleCode/Common/Headers/Photoshop

General descriptions with more specific error
dialogs, more defines, defines PiPL structures, PiPL types, the different plug-in
modes, color services information, old property definitions from previous Photoshop
versions, and PICA caller and selector strings.

PIUDispatch.h

SampleCode/Common/Headers/SDK

Contains the Dispatch class definitions and
constructors that enable the Dispatch code
in the TriggerFilters plug-in sample code.
This code handles the overhead of calling
PICA-style suites.

PIActions.h

SampleCode/Common/Headers/Photoshop

Contains all of the routines related to actions
and scripting. In particular, it defines the
PSActionControl Procedures and Suite functions and the PSActionDescriptor Procedures
and Suite functions.

Adobe Photoshop Actions Event Guide

179

Appendix A: Information Sources
Name

Location

Description

PIBufferSuite.h

SampleCode/Common/Headers/Photoshop/PS-Suites

Contains type definitions for memory buffer
functions and parameters.

SPBasic.h

SampleCode/Common/Headers/Photoshop/PICA

Defines basic suite structures that tell you
what parameters are required to acquire a
suite.

PITerminology.h

SampleCode/Common/Headers/Photoshop

All the four character keys for Photoshop
classes, enumerations, events, units, forms,
keys and types.

Common prefixes and conventions
SP = Sweet Pea = PICA. SP refers to the Plug-In Component Architecture (formerly
known as Sweet Pea).
PS = Photoshop. PS refers to Photoshop.
PI. PI refers to Plug-Ins.
PIU = Plug-In Utilities. Utility functions and definitions created by the Developer
Support group.
sXX = suite pointer . Used to indicate a reference to a suite related suite function, i.e.,
sPSActionsReference->Make(&reference) is a function call from the
Photoshop Actions Suite.

Adobe Photoshop Actions Event Guide

180

B

B. PIUBasic Files
This diagram shows the files in the PIUBasic.mcp. These define the basic
Photoshop and actions functions.
PIUBasic Files:

PIUBasic groups common functions into higher-level macros and routines in order to simplify plug-in programming.

PIUSuites.ccp Source file
(C++ source file)
#includes:
PIUSuites.h
PICA Suite Definitions:
SPBasic_t::SPBasic_t(SPBasicSuite * inSPBasic = NULL) :
PIUSuitePointer 
(
inSPBasic,
kSPBasicSuite,
kSPBasicSuiteVersion
)
{
}
SPRuntime_t::SPRuntime_t(SPBasicSuite * inSPBasic = NULL) :
PIUSuitePointer 
(
inSPBasic,
kSPRuntimeSuite,
kSPRuntimeSuiteVersion
)
{
}
Action Suite Definitions:
Photoshop Memory Suites:
Photoshop User Interface and Text Suites:
Photoshop Error Management Suite:
Adobe Dialog Manager Suite References:

PIUActionParams.ccp Source file
(C++ source file)
#includes:
PIUActionParams.h
PIUSuites.h
Action Suite References:
SPBasic_t::SPBasic_t(SPBasicSuite * inSPBasic = NULL) :
PIUActionParams_t::
PIUActionParams_t
(
PIActionParameters * actionsParams = NULL
):
actionParams_(actionsParams)
{
}

PIUUIParams.ccp Source file
(C++ source file)
#includes:
PIUUIParams.h
User interface parameters:

Adobe Photoshop Actions Event Guide

Source/Header/Library Files:
Source Files:
PIUSuites.ccp
PIUActionParams.cpp
PIUUIParams.ccp
PIUUINotifyUtils.cpp
PIUDispatch.cpp
PIUTools.cpp
PIUBasic.cpp
PIUfile.cpp
Header Files:
PIActionsParams.h
PIUDispatch.h
PIUSuites.h
PIUUIParams.h
PIUSuitePointer.h
PIUTools.h
PIUFile.h
PIUBasic.h
PIUNotifyUtils.h
PIUConstants.h
Libraries:
InterfaceLib
MSL C.PPC.Lib
MSL RuntimePPC.Lib

PIUUINotifyUtils.cpp Source file
#includes:
PIUNotifyUtils.h
PIUNotifyUtils_t::PIUNotifyUtils_t()
{
}

PIUDispatch.cpp Source file
#includes:
PIUDispatch.h
Functionality:
Checks who called who, acquires and releases suites,
loads and reloads appropriate suites.

PIUTools.cpp Source file
#includes:
PIUTools.h
PIUSuites.h
Performs various simple string, character, number and
utility (copy/match) functions.

PIUFile.cpp Source file
#includes:
PIUFile.h
Performs various file functions.

181

C

C. Development Process
The plug-in development process follows a logical flow, and a sample
automation plug-in ( TriggerFilters.8li ) is provided for you to use as a
template.
First, find the sample automation plug-in closest to your needs (there
may be several added as time goes by) and duplicate the entire folder
including headers and code files. Then rename all of the files to your
plug-in name and revise the files to suit your plug-in’s needs.
The figure below illustrates this process using the Macintosh platform as
a reference guide. The process using Windows as a development platform
will be similar.

Automation Photoshop Plug-in Module Construction:
Use TriggerFilters.mcp as template and cut and paste functionality as needed

Adapt TriggerFilters
Sources and Headers
KEEP:
header files
libraries
DROP:
unwanted functions
REVISE:
triggerfilters.cpp
to suit your needs

Code Warrior:
Make Project
Include headers,
source files,
libraries

Develop Specific
Automation Function Code
Devise User Interface:
If ADM, create ADM suite calls
Devise Actions Events List:
Define required Descriptor Blocks
and sequences of events

Place code in Plug-ins
Folder and run
Photoshop:
Plugin will appear in
Help Menu or
Automation Menu

Perform
Plug-in

Devise Error Messages:
Define tests and error handling

Debug, refine and re-code
until fully functional

The fastest way to create your own Photoshop automation plug-in is to
copy the project files from an existing automation plug-in and revise
them to suit your needs. For example, to copy the TriggerFilters.8li
plug-in and create a new plug-in, MakeNew.8li . follow the process
illustrated below. The next two diagrams shows this process. Note that
the finished MakeNew project is included in your SDK files as well as the
TriggerFilters project.

Adobe Photoshop Actions Event Guide

182

Appendix C: The Automation Plug-in Development Process

MakeNew Plug-in Module Step-by-step Construction Part 1:
Copy TriggerFilters.mcp files and cut and paste
Adapt TriggerFilters
Sources and Headers
KEEP:
header files
libraries

1

Copy in Finder
TriggerFilters
Plug-in Project Files,
and rename to
MakeNew files

DROP:
unwanted functions
REVISE:
triggerfilters files to suit
your needs

2

Determine which files you'll keep
Keep all of the header
and library files

Revise Header Files
5

Add newly renamed files to
MakeNew project and
3
delete the TriggerFilter files

8

Revise MakeNew.cpp

Revise Header Info:
Change file names in headers, etc.

6

Take out the TriggerFilter
specific header information
Global variables, constants,
prototypes, functions, etc.

7

Every Plug-in will need:
Execute routine, DoUI routine,
Read/Write scripts
MakeNew Plug-in will need:
Variables, functions and globals
for its specific functions

Keep the project target settings,
but change the target file name
to: MakeNew.8li
4

9

Change file names, global variables,
constants, prototypes, functions, etc.
1) Includes: PIDefine.h, etc.
2) Globals - unsigned shorts for W, H, Res;
enumerated for Mode, etc.
3) Prototypes - entry point, initialize
4) Entrypoint - almost the same for
every plugin (includes dispatch code)
5) Execute code (Read/Write ScripParams)
6) Initialize parameters routine
7) List of optional suite IDs for dispatcher
code - list the suites your plugin won't
need
8) Read Descriptors and determine
Dialog options

Basic code:
Initializes variables,
contains entrypoint main function
determines dialog box options

Adobe Photoshop Actions Event Guide

Revise Header Files, specifically
Revise MakeNew.h file
Change file names, global variables,
constants, prototypes, functions, etc.
Revise MakeNewTerminology.h file
Change (define) the scripting key definitions
MakeNew Plug-in will need:
keyMyWidth, keyMyHeight, keyMyMode,
keyImageModeType, and keyMyFill,

Revise User Interface
via Resourcer and Derez

Revise MakeNewScripting.cpp
Change file names, global variables,
constants, prototypes, functions, etc.
MakeNewScripting.cpp includes:
1) Includes (same as MakeNew.cpp)
2) Prototypes
3) Read Scripting Parameters function
Revise flags, keys, types, etc.
(This acquires the descriptor block
information for any action)
4) Write Scripting Parameters function
Revise flags, keys, types, etc.
(This returns the descriptor block
for any action)

Scripting code:
Reads and writes
Descriptor Values

10

11

1) Read TriggerFilters.8li binary
file in Resourcer and manipuate
user interface elements.
2) Run Derez script in Code Warrior
to turn visual resource
elements into text file.
3) Edit text file in CW and
save as
12
MakeNew.r file.

User Interface Resource Editing:
Capture TriggerFilters dialog resources,
Change to suit your needs,
Save as new Resource file

183

Appendix C: The Automation Plug-in Development Process

MakeNew Plug-in Module Step-by-step Construction Part 2:
Copy TriggerFilters.mcp files and edit
13

Revise MakeNewUI.cpp
Keep #includes:
Change file names in headers, etc.
MakeNew definitions:
enum ... dialog buttons and popups ...
MakeNew constants:
keyHeightMin, Max, etc.
MakeNew prototypes:
DoUIInit, InitCancelbutton, Do Cancel,
DoReset, DoWidthEditText,
DoHeightEditText, DoResolutionEditText,
etc.
MakeNew globals:
int32 saveWidth;
int32 saveHeight;
int32 saveResolution;
DescriptorEnumID saveFill;
DescriptorClassID saveMode;
bool gCancelButtonIsReset = false;

14

Compile
MakeNew
Project

MakeNew function code:
DoUIInit, InitCancelbutton, Do Cancel,
DoReset, DoWidthEditText,
DoHeightEditText, DoResolutionEditText,
etc.

Adobe Photoshop Actions Event Guide

15

Errors?
Yes
Debug
code

No

16

Place
MakeNew.8li
binary in
Plug-in Folder

Errors?

No

DONE!

Yes
Debug
code

184

D

D. Key Constants
Key Constants
The following are all the available keys supplied to you by Photoshop.
They are defined in PITerminology.h , and are available for you to
incorporate into your plug-ins. Even though it maybe necessary to create
your own custom keys, it is recommended that you use as many of the
built-in keys as possible.

Key Name

Constant

keyA
keyAdjustment
keyAlignment
keyAll
keyAllExcept
keyAllToolOptions
keyAlphaChannelOptions
keyAlphaChannels
keyAmbientBrightness
keyAmbientColor
keyAmount
keyAmplitudeMax
keyAmplitudeMin
keyAnchor
keyAngle
keyAngle1
keyAngle2
keyAngle3
keyAngle4
keyAntiAlias
keyAppend
keyApply
keyArea
keyArrowhead
keyAs
keyAssumedCMYK
keyAssumedGray
keyAssumedRGB
keyAt
keyAuto
keyAutoKern
keyAxis
keyB
keyBackground

'A
'
'Adjs'
'Algn'
'All '
'AllE'
'AlTl'
'AChn'
'AlpC'
'AmbB'
'AmbC'
'Amnt'
'AmMx'
'AmMn'
'Anch'
'Angl'
'Ang1'
'Ang2'
'Ang3'
'Ang4'
'AntA'
'Appe'
'Aply'
'Ar '
'Arrw'
'As '
'AssC'
'AssG'
'AssR'
'At '
'Auto'
'AtKr'
'Axis'
'B
'
'Bckg'

Adobe Photoshop Actions Event Guide

185

Appendix D: Key Constants
Key Name

Constant

keyBackgroundColor
keyBackgroundLevel
keyBackward
keyBalance
keyBeginRamp
keyBeginSustain
keyBevelDirection
keyBevelEmboss
keyBevelStyle
keyBigNudgeH
keyBigNudgeV
keyBitDepth
keyBlack
keyBlackClip
keyBlackGeneration
keyBlackGenerationCurve
keyBlackIntensity
keyBlackLevel
keyBlackLimit
keyBlendRange
keyBlue
keyBlueBlackPoint
keyBlueGamma
keyBlueWhitePoint
keyBlueX
keyBlueY
keyBlur
keyBlurMethod
keyBlurQuality
keyBook
keyBorderThickness
keyBottom
keyBrightness
keyBrushDetail
keyBrushes
keyBrushSize
keyBrushType
keyBumpAmplitude
keyBumpChannel
keyBy
keyByline
keyBylineTitle
keyByteOrder
keyCMYKSetup
keyCalculation
keyCaption
keyCaptionWriter

'BckC'
'BckL'
'Bwd '
'Blnc'
'BgnR'
'BgnS'
'bvlD'
'ebbl'
'bvlS'
'BgNH'
'BgNV'
'BtDp'
'Blck'
'BlcC'
'Blcn'
'BlcG'
'BlcI'
'BlcL'
'BlcL'
'Blnd'
'Bl '
'BlBl'
'BlGm'
'BlWh'
'BlX '
'BlY '
'blur'
'BlrM'
'BlrQ'
'Bk '
'BrdT'
'Btom'
'Brgh'
'BrsD'
'Brsh'
'BrsS'
'BrsT'
'BmpA'
'BmpC'
'By '
'Byln'
'BylT'
'BytO'
'CMYS'
'Clcl'
'Cptn'
'CptW'

Adobe Photoshop Actions Event Guide

186

Appendix D: Key Constants
Key Name

Constant

keyCategory
keyCellSize
keyCenter
keyChalkArea
keyChannel
keyChannelMatrix
keyChannelName
keyChannels
keyChannelsInterleaved
keyCharcoalAmount
keyCharcoalArea
keyCity
keyClearAmount
keyClippingPath
keyClippingPathEPS
keyClippingPathFlatness
keyClippingPathIndex
keyClippingPathInfo
keyClosedSubpath
keyColor
keyColorCorrection
keyColorIndicates
keyColorManagement
keyColorPickerPrefs
keyColorTable
keyColorize
keyColors
keyColorsList
keyCommandKey
keyCompensation
keyCompression
keyConcavity
keyConstant
keyConstrain
keyConstrainProportions
keyContinue
keyContrast
keyConvert
keyCopy
keyCopyright
keyCopyrightNotice
keyCountryName
keyCrackBrightness
keyCrackDepth
keyCrackSpacing
keyCreateLayersFromLayerFX
keyCredit

'Ctgr'
'ClSz'
'Cntr'
'ChlA'
'Chnl'
'ChMx'
'ChnN'
'Chns'
'ChnI'
'ChAm'
'ChrA'
'City'
'ClrA'
'ClPt'
'ClpP'
'ClpF'
'ClpI'
'Clpg'
'Clsp'
'Clr '
'ClrC'
'ClrI'
'ClMg'
'Clrr'
'ClrT'
'Clrz'
'Clrs'
'ClrL'
'CmdK'
'Cmpn'
'Cmpr'
'Cncv'
'Cnst'
'Cnst'
'CnsP'
'Cntn'
'Cntr'
'Cnvr'
'Cpy '
'Cpyr'
'CprN'
'CntN'
'CrcB'
'CrcD'
'CrcS'
'blfl'
'Crdt'

Adobe Photoshop Actions Event Guide

187

Appendix D: Key Constants
Key Name

Constant

keyCrossover
keyCurrentHistoryState
keyCurrentLight
keyCurrentToolOptions
keyCurve
keyCurveFile
keyCustom
keyCyan
keyDarkIntensity
keyDarkness
keyDateCreated
keyDatum
keyDCS
keyDefinition
keyDensity
keyDepth
keyDestBlackMax
keyDestBlackMin
keyDestWhiteMax
keyDestWhiteMin
keyDetail
keyDirection
keyDirectionBalance
keyDisplaceFile
keyDisplacementMap
keyDistance
keyDistortion
keyDistribution
keyDither
keyDitherPreserve
keyDitherQuality
keyDocumentID
keyDotGain
keyDotGainCurves
keyDropShadow
keyDuplicate
keyEdge
keyEdgeBrightness
keyEdgeFidelity
keyEdgeIntensity
keyEdgeSimplicity
keyEdgeThickness
keyEdgeWidth
keyEffect
keyEmbedCMYK
keyEmbedGray
keyEmbedLab

'Crss'
'CrnH'
'CrnL'
'CrnT'
'Crv '
'CrvF'
'Cstm'
'Cyn '
'DrkI'
'Drkn'
'DtCr'
'Dt '
'DCS '
'Dfnt'
'Dnst'
'Dpth'
'Dstl'
'DstB'
'Dstt'
'DstW'
'Dtl '
'Drct'
'DrcB'
'DspF'
'DspM'
'Dstn'
'Dstr'
'Dstr'
'Dthr'
'Dthp'
'Dthq'
'DocI'
'DtGn'
'DtGC'
'DrSh'
'Dplc'
'Edg '
'EdgB'
'EdgF'
'EdgI'
'EdgS'
'EdgT'
'EdgW'
'Effc'
'EmbC'
'EmbG'
'EmbL'

Adobe Photoshop Actions Event Guide

188

Appendix D: Key Constants
Key Name

Constant

keyEmbedRGB
keyEnabled
keyEncoding
keyEnd
keyEndArrowhead
keyEndRamp
keyEndSustain
keyEngine
keyExport
keyExposure
keyExtend
keyExtension
keyExtrudeDepth
keyExtrudeMaskIncomplete
keyExtrudeRandom
keyExtrudeSize
keyExtrudeSolidFace
keyExtrudeType
keyEyeDropperSample
keyFPXCompress
keyFPXQuality
keyFPXSize
keyFPXView
keyFeather
keyFiberLength
keyFileCreator
keyFileInfo
keyFileReference
keyFileType
keyFill
keyFillColor
keyFillNeutral
keyFlareCenter
keyFlatness
keyFlatten
keyFocus
keyFolders
keyFontName
keyForegroundColor
keyForegroundLevel
keyFormat
keyForward
keyFrameWidth
keyFreeTransformCenterState
keyFrequency
keyFrom
keyFromBuiltin

'EmbR'
'enab'
'Encd'
'End '
'EndA'
'EndR'
'EndS'
'Engn'
'Expr'.
'Exps'
'Extd'
'Extn'
'ExtD'
'ExtM'
'ExtR'
'ExtS'
'ExtF'
'ExtT'
'EyDr'
'FxCm'
'FxQl'
'FxSz'
'FxVw'
'Fthr'
'FbrL'
'FlCr'
'FlIn'
'FilR'
'FlTy'
'Fl '
'FlCl'
'FlNt'
'FlrC'
'Fltn'
'Fltt'
'Fcs '
'Fldr'
'FntN'
'FrgC'
'FrgL'
'Fmt '
'Fwd '
'FrmW'
'FTcs'
'Frqn'
'From'
'FrmB'

Adobe Photoshop Actions Event Guide

189

Appendix D: Key Constants
Key Name

Constant

keyFromMode
keyFunctionKey
keyFuzziness
keyGCR
keyGIFColorFileType
keyGIFColorLimit
keyGIFExportCaption
keyGIFMaskChannelIndex
keyGIFMaskChannelInverted
keyGIFPaletteFile
keyGIFPaletteType
keyGIFRequiredColorSpaceType
keyGIFRowOrderType
keyGIFTransparentColor
keyGIFTransparentIndexBlue
keyGIFTransparentIndexGreen
keyGIFTransparentIndexRed
keyGIFUseBestMatch
keyGamma
keyGlobalAngle
keyGlobalLightingAngle
keyGloss
keyGlowAmount
keyGrain
keyGrainType
keyGraininess
keyGray
keyGrayBehavior
keyGraySetup
keyGreen
keyGreenBlackPoint
keyGreenGamma
keyGreenWhitePoint
keyGreenX
keyGreenY
keyGridMajor
keyGridMinor
keyGroup
keyGroutWidth
keyGuides
keyHalftoneFile
keyHalftoneScreen
keyHalftoneSize
keyHeader
keyHeadline
keyHeight
keyHostName

'FrmM'
'FncK'
'Fzns'
'GCR '
'GFPT'
'GFCL'
'GFEC'
'GFMI'
'GFMV'
'GFPF'
'GFPL'
'GFCS'
'GFIT'
'GFTC'
'GFTB'
'GFTG'
'GFTR'
'GFBM'
'Gmm '
'gblA'
'gagl'
'Glos'
'GlwA'
'Grn '
'Grnt'
'Grns'
'Gry '
'GrBh'
'GrSt'
'Grn '
'GrnB'
'GrnG'
'GrnW'
'GrnX'
'GrnY'
'GrdM'
'Grdn'
'Grup'
'GrtW'
'Gdes'
'HlfF'
'HlfS'
'HlSz'
'Hdr '
'Hdln'
'Hght'
'HstN'

Adobe Photoshop Actions Event Guide

190

Appendix D: Key Constants
Key Name

Constant

keyHighlightArea
keyHighlightColor
keyHighlightLevels
keyHighlightMode
keyHighlightOpacity
keyHighlightStrength
keyHistoryBrushSource
keyHistoryPrefs
keyHistoryStateSource
keyHistoryStates
keyHorizontal
keyHorizontalScale
keyHostVersion
keyHue
keyICCEngine
keyICCSetupName
keyImageBalance
keyImport
keyIn
keyInherits
keyInkColors
keyInks
keyInnerGlow
keyInnerGlowSource
keyInnerShadow
keyInput
keyIntensity
keyIntent
keyInterfaceBevelHighlight
keyInterfaceBevelShadow
keyInterfaceBlack
keyInterfaceBorder
keyInterfaceButtonDarkShadow
keyInterfaceButtonDownFill
keyInterfaceButtonUpFill
keyInterfaceColorBlue2
keyInterfaceColorBlue32
keyInterfaceColorGreen2
keyInterfaceColorGreen32
keyInterfaceColorRed2
keyInterfaceColorRed32
keyInterfaceIconFillActive
keyInterfaceIconFillDimmed
keyInterfaceIconFillSelected
keyInterfaceIconFrameActive
keyInterfaceIconFrameDimmed
keyInterfaceIconFrameSelected

'HghA'
'hglC'
'HghL'
'hglM'
'hglO'
'HghS'
'HstB'
'HstP'
'HsSS'
'HsSt'
'Hrzn'
'HrzS'
'HstV'
'H
'
'ICCE'
'ICCt'
'ImgB'
'Impr'
'In '
'c@#^'
'InkC'
'Inks'
'IrGl'
'glwS'
'IrSh'
'Inpt'
'Intn'
'Inte'
'IntH'
'Intv'
'IntB'
'Intd'
'Intk'
'Intt'
'InBF'
'ICBL'
'ICBH'
'ICGL'
'ICGH'
'ICRL'
'ICRH'
'IntI'
'IntF'
'Intc'
'Intm'
'Intr'
'IntS'

Adobe Photoshop Actions Event Guide

191

Appendix D: Key Constants
Key Name

Constant

keyInterfacePaletteFill
keyInterfaceRed
keyInterfaceWhite
keyInterfaceToolTipBackground
keyInterfaceToolTipText
keyInterlace
keyInterlaceCreateType
keyInterlaceEliminateType
keyInterpolation
keyInterpolationMethod
keyInvert
keyInvertMask
keyInvertSource2
keyInvertTexture
keyJPEGQuality
keyKeywords
keyKind
keyLZWCompression
keyLastTransform
keyLayerEffects
keyLayerFXVisible
keyLayer
keyLayerID
keyLayerName
keyLayers
keyLeading
keyLeft
keyLength
keyLens
keyLevel
keyLevels
keyLightDark
keyLightDirection
keyLightIntensity
keyLightPosition
keyLightSource
keyLightType
keyLightenGrout
keyLightness
keyLinkedLayerIDs
keyLocalLightingAngle
keyLocalRange
keyLocation
keyLog
keyLowerCase
keyLuminance
keyMagenta

'IntP'
'IntR'
'IntW'
'IntT'
'ITTT'
'Intr'
'IntC'
'IntE'
'Intr'
'IntM'
'Invr'
'InvM'
'InvS'
'InvT'
'JPEQ'
'Kywd'
'Knd '
'LZWC'
'LstT'
'Lefx'
'lfxv'
'Lyr '
'LyrI'
'LyrN'
'Lyrs'
'Ldng'
'Left'
'Lngt'
'Lns '
'Lvl '
'Lvls'
'LgDr'
'LghD'
'LghI'
'LghP'
'LghS'
'LghT'
'LghG'
'Lght'
'LnkL'
'lagl'
'LclR'
'Lctn'
'Log '
'LwCs'
'Lmnc'
'Mgnt'

Adobe Photoshop Actions Event Guide

192

Appendix D: Key Constants
Key Name

Constant

keyMakeVisible
keyMapBlack
keyMapping
keyMaterial
keyMatrix
keyMaximum
keyMaximumStates
keyMerged
keyMessage
keyMethod
keyMezzotintType
keyMidpoint
keyMidtoneLevels
keyMinimum
keyMismatchCMYK
keyMismatchGray
keyMismatchRGB
keyMode
keyMonochromatic
keyName
keyNew
keyNonImageData
keyNonLinear
keyNull
keyNumLights
keyNumber
keyNumberOfChannels
keyNumberOfDocuments
keyNumberOfGenerators
keyNumberOfLayers
keyNumberOfLevels
keyNumberOfPaths
keyNumberOfRipples
keyObjectName
keyOffset
keyOn
keyOpacity
keyOptimized
keyOrientation
keyOriginalHeader
keyOriginalTransmissionReference
keyOuterGlow
keyOutput
keyOverprintColors
keyOverrideOpen
keyOverrideSave
keyPNGFilter

'MkVs'
'MpBl'
'Mpng'
'Mtrl'
'Mtrx'
'Mxm '
'MxmS'
'Mrgd'
'Msge'
'Mthd'
'MztT'
'Mdpn'
'MdtL'
'Mnm '
'MsmC'
'MsmG'
'MsmR'
'Md '
'Mnch'
'Nm '
'Nw '
'NnIm'
'NnLn'
typeNull
'Nm L'
'Nmbr'
'NmbO'
'NmbD'
'NmbG'
'NmbL'
'NmbL'
'NmbP'
'NmbR'
'ObjN'
'Ofst'
'On '
'Opct'
'Optm'
'Ornt'
'OrgH'
'OrgT'
'OrGl'
'Otpt'
'OvrC'
'OvrO'
'Ovrd'
'PNGf'

Adobe Photoshop Actions Event Guide

193

Appendix D: Key Constants
Key Name

Constant

keyPNGInterlaceType
keyPageNumber
keyPagePosition
keyPalette
keyPaletteFile
keyPaperBrightness
keyPath
keyPathContents
keyPathName
keyPencilWidth
keyPerspectiveIndex
keyPhosphors
keyPickerID
keyPickerKind
keyPixelPaintSize
keyPlatform
keyPoints
keyPosition
keyPosterization
keyPreferBuiltin
keyPreserveAdditional
keyPreserveLuminosity
keyPreserveTransparency
keyPreferences
keyPreview
keyPreviewCMYK
keyProfileSetup
keyProvinceState
keyQuality
keyQuickMask
keyRGBSetup
keyRadius
keyRandomSeed
keyRatio
keyRed
keyRedBlackPoint
keyRedGamma
keyRedWhitePoint
keyRedX
keyRedY
keyRelative
keyRelief
keyResample
keyResolution
keyResourceID
keyResponse
keyRetainHeader

'PGIT'
'PgNm'
'PgPs'
'Plt '
'PltF'
'PprB'
'Path'
'PthC'
'PthN'
'Pncl'
'Prsp'
'Phsp'
'PckI'
'Pckr'
'PPSz'
'Pltf'
'Pts '
'Pstn'
'Pstr'
'PrfB'
'PrsA'
'PrsL'
'PrsT'
'Prfr'
'Prvw'
'PrvK'
'PrfS'
'PrvS'
'Qlty'
'QucM'
'RGBS'
'Rds '
'RndS'
'Rt '
'Rd '
'RdBl'
'RdGm'
'RdWh'
'RdX '
'RdY '
'Rltv'
'Rlf '
'Rsmp'
'Rslt'
'RsrI'
'Rspn'
'RtnH'

Adobe Photoshop Actions Event Guide

194

Appendix D: Key Constants
Key Name

Constant

keyReverse
keyRight
keyRippleMagnitude
keyRippleSize
keyRotate
keyRulerOriginH
keyRulerOriginV
keyRulerUnits
keySaturation
keySaveAndClose
keySavePaths
keySaving
keyScale
keyScaleHorizontal
keyScaleVertical
keyScaling
keyScans
keyScreenType
keyScript
keySerialString
keyShadowColor
keyShadowIntensity
keyShadowLevels
keyShadowMode
keyShadowOpacity
keyShape
keySharpness
keyShearEd
keyShearPoints
keyShearSt
keyShiftKey
keySize
keySkew
keySmartBlurMode
keySmartBlurQuality
keySmoothness
keySnapshotInitial
keySoftness
keySource
keySource2
keySpecialInstructions
keySpherizeMode
keySprayRadius
keySquareSize
keySrcBlackMax
keySrcBlackMin
keySrcWhiteMax

'Rvrs'
'Rght'
'RplM'
'RplS'
'Rtt '
'RlrH'
'RlrV'
'RlrU'
'Strt'
'SvAn'
'SvPt'
'Svng'
'Scl '
'SclH'
'SclV'
'Scln'
'Scns'
'ScrT'
'Scrp'
'SrlS'
'sdwC'
'ShdI'
'ShdL'
'sdwM'
'sdwO'
'Shp '
'Shrp'
'ShrE'
'ShrP'
'ShrS'
'ShfK'
'Sz '
'Skew'
'SmBM'
'SmBQ'
'Smth'
'SnpI'
'Sftn'
'Srce'
'Src2'
'SpcI'
'SphM'
'SprR'
'SqrS'
'Srcl'
'SrcB'
'Srcm'

Adobe Photoshop Actions Event Guide

195

Appendix D: Key Constants
Key Name

Constant

keySrcWhiteMin
keyStart
keyStartArrowhead
keyState
keyStrength
keyStrength_PLUGIN
keyStrokeDetail
keyStrokeDirection
keyStrokeLength
keyStrokePressure
keyStrokeSize
keyStrokeWidth
keySupplementalCategories
keyTarget
keyTargetPath
keyTargetPathIndex
keyText
keyTextClickPoint
keyTextData
keyTexture
keyTextureCoverage
keyTextureFile
keyTextureType
keyThreshold
keyTileNumber
keyTileOffset
keyTileSize
keyTitle
keyTo
keyToBuiltin
keyToLinked
keyToMode
keyToggleOthers
keyTolerance
keyTop
keyTotalLimit
keyTracking
keyTransferFunction
keyTransparency
keyTransparentWhites
keyTwist
keyType
keyUCA
keyURL
keyUndefinedArea
keyUntitled
keyUpperY

'SrcW'
'Strt'
'StrA'
'Stte'
'srgh'
'Strg'
'StDt'
'SDir'
'StrL'
'StrP'
'StrS'
'StrW'
'SplC'
typeNull
'Trgp'
'TrgP'
'Txt '
'TxtC'
'TxtD'
'Txtr'
'TxtC'
'TxtF'
'TxtT'
'Thsh'
'TlNm'
'TlOf'
'TlSz'
'Ttl '
'T
'
'TBl '
'ToLk'
'TMd '
'TglO'
'Tlrn'
'Top '
'TtlL'
'Trck'
'TrnF'
'Trns'
'TrnW'
'Twst'
'Type'
'UC '
'URL '
'UndA'
'Untl'
'UppY'

Adobe Photoshop Actions Event Guide

196

Appendix D: Key Constants
Key Name

Constant

keyUrgency
keyUseCurves
keyUseGlobalAngle
keyUseICCProfile
keyUseMask
keyUserMaskEnabled
keyUserMaskLinked
keyUsing
keyValue
keyVector0
keyVector1
keyVersionFix
keyVersionMajor
keyVersionMinor
keyVertical
keyVerticalScale
keyVisible
keyWatchSuspension
keyWatermark
keyWaveType
keyWavelengthMax
keyWavelengthMin
keyWhiteClip
keyWhiteIntensity
keyWhiteIsHigh
keyWhiteLevel
keyWhitePoint
keyWholePath
keyWidth
keyWindMethod
keyWith
keyWorkPath
keyWorkPathIndex
keyX
keyY
keyYellow
keyZigZagType
key_Source

'Urgn'
'UsCr'
'uglg'
'UsIC'
'UsMs'
'UsrM'
'Usrs'
'Usng'
'Vl '
'Vct0'
'Vct1'
'VrsF'
'VrsM'
'VrsN'
'Vrtc'
'VrtS'
'Vsbl'
'WtcS'
'watr'
'Wvtp'
'WLMx'
'WLMn'
'WhtC'
'WhtI'
'WhHi'
'WhtL'
'WhtP'
'WhPt'
'Wdth'
'WndM'
'With'
'WrPt'
'WrkP'
'X
'
'Y
'
'Ylw '
'ZZTy'
keyTo

Adobe Photoshop Actions Event Guide

197

E

E. Event Constants
Event Constants
The following are all the available events suppiled to you by Photoshop.
They are defined in PITerminology.h , and are available for you to
incorporate into your plug-ins. Even though it maybe necessary to create
your own custom events, it is recommended that you use as many of the
built-in events as possible.
Event Name
eventAccentedEdges
eventAdd
eventAddNoise
eventAngledStrokes
eventBasRelief
eventBatch
eventBlur
eventBlurMore
eventBorder
eventBrightness
eventCanvasSize
eventChalkCharcoal
eventCharcoal
eventChrome
eventClose
eventClouds
eventColorBalance
eventColorHalftone
eventColorRange
eventColoredPencil
eventConteCrayon
eventContract
eventConvertMode
eventCopy
eventCopyMerged
eventCopyToLayer
eventCraquelure
eventCrop
eventCrosshatch
eventCrystallize
eventCurves
eventCustom
eventCut
eventCutToLayer
eventCutout
eventDarkStrokes
eventDeInterlace

Adobe Photoshop Actions Event Guide

Constant
'AccE'
'Add '
'AdNs'
'AngS'
'BsRl'
'Btch'
'Blr '
'BlrM'
'Brdr'
'BrgC'
'CnvS'
'ChlC'
'Chrc'
'Chrm'
'Cls '
'Clds'
'ClrB'
'ClrH'
'ClrR'
'ClrP'
'CntC'
'Cntc'
'CnvM'
'copy'
'CpyM'
'CpTL'
'Crql'
'Crop'
'Crsh'
'Crst'
'Crvs'
'Cstm'
'cut '
'CtTL'
'Ct '
'DrkS'
'Dntr'

198

Appendix E: Event Constants
Event Name
eventDefinePattern
eventDefringe
eventDelete
eventDesaturate
eventDespeckle
eventDifferenceClouds
eventDiffuse
eventDiffuseGlow
eventDisplace
eventDryBrush
eventDuplicate
eventDustScratches
eventEmboss
eventEqualize
eventExchange
eventExpand
eventExport
eventExtrude
eventFacet
eventFade
eventFeather
eventFill
eventFilmGrain
eventFilter
eventFindEdges
eventFlattenImage
eventFlip
eventFragment
eventFresco
eventGaussianBlur
eventGlass
eventGlowingEdges
eventGrain
eventGraphicPen
eventGroup
eventGrow
eventHalftoneScreen
eventHighPass
eventHueSaturation
eventImageSize
eventImport
eventInkOutlines
eventIntersect
eventInverse
eventInvert
eventLensFlare
eventLevels

Adobe Photoshop Actions Event Guide

Constant
'DfnP'
'Dfrg'
'Dlt '
'Dstt'
'Dspc'
'DfrC'
'Dfs '
'DfsG'
'Dspl'
'DryB'
'Dplc'
'DstS'
'Embs'
'Eqlz'
'Exch'
'Expn'
'Expr'
'Extr'
'Fct '
'Fade'
'Fthr'
'Fl '
'FlmG'
'Fltr'
'FndE'
'FltI'
'Flip'
'Frgm'
'Frsc'
'GsnB'
'Gls '
'GlwE'
'Grn '
'GraP'
'GrpL'
'Grow'
'HlfS'
'HghP'
'HStr'
'ImgS'
'Impr'
'InkO'
'Intr'
'Invs'
'Invr'
'LnsF'
'Lvls'

199

Appendix E: Event Constants
Event Name
eventLightingEffects
eventMake
eventMaximum
eventMedian
eventMergeLayers
eventMergeVisible
eventMezzotint
eventMinimum
eventMosaic
eventMosaicTiles
eventMotionBlur
eventMove
eventNTSCColors
eventNeonGlow
eventNotePaper
eventOceanRipple
eventOffset
eventOpen
eventPaintDaubs
eventPaletteKnife
eventPaste
eventPasteInto
eventPasteOutside
eventPatchwork
eventPhotocopy
eventPinch
eventPlaster
eventPlasticWrap
eventPlay
eventPointillize
eventPolar
eventPosterEdges
eventPosterize
eventPrint
eventPurge
eventQuit
eventRadialBlur
eventRasterize
eventRemoveBlackMatte
eventRemoveLayerMask
eventRemoveWhiteMatte
eventReplaceColor
eventReset
eventReticulation
eventRevert
eventRipple
eventRotate

Adobe Photoshop Actions Event Guide

Constant
'LghE'
'Mk '
'Mxm '
'Mdn '
'MrgL'
'MrgV'
'Mztn'
'Mnm '
'Msc '
'MscT'
'MtnB'
'move'
'NTSC'
'NGlw'
'NtPr'
'OcnR'
'Ofst'
'Opn '
'PntD'
'PltK'
'past'
'PstI'
'PstO'
'Ptch'
'Phtc'
'Pnch'
'Plst'
'PlsW'
'Ply '
'Pntl'
'Plr '
'PstE'
'Pstr'
'Prnt'
'Prge'
'quit'
'RdlB'
'Rstr'
'RmvB'
'RmvL'
'RmvW'
'RplC'
'Rset'
'Rtcl'
'Rvrt'
'Rple'
'Rtte'

200

Appendix E: Event Constants
Event Name
eventRoughPastels
eventSave
eventSelect
eventSelectiveColor
eventSet
eventSharpen
eventSharpenEdges
eventSharpenMore
eventShear
eventSimilar
eventSmartBlur
eventSmooth
eventSmudgeStick
eventSolarize
eventSpatter
eventSpherize
eventSplitChannels
eventSponge
eventSprayedStrokes
eventStainedGlass
eventStamp
eventStop
eventStroke
eventSubtract
eventSumie
eventTakeMergedSnapshot
eventTakeSnapshot
eventTextureFill
eventTexturizer
eventThreshold
eventTiles
eventTornEdges
eventTraceContour
eventTransform
eventTrap
eventTwirl
eventUnderpainting
eventUndo
eventUngroup
eventUnsharpMask
eventVariations
eventWaterPaper
eventWatercolor
eventWave
eventWind
eventZigZag

Adobe Photoshop Actions Event Guide

Constant
'RghP'
'save'
'slct'
'SlcC'
'setd'
'Shrp'
'ShrE'
'ShrM'
'Shr '
'Smlr'
'SmrB'
'Smth'
'SmdS'
'Slrz'
'Spt '
'Sphr'
'SplC'
'Spng'
'SprS'
'StnG'
'Stmp'
'Stop'
'Strk'
'Sbtr'
'Smie'
'TkMr'
'TkSn'
'TxtF'
'Txtz'
'Thrs'
'Tls '
'TrnE'
'TrcC'
'Trnf'
'Trap'
'Twrl'
'Undr'
'undo'
'Ungr'
'UnsM'
'Vrtn'
'WtrP'
'Wtrc'
'Wave'
'Wnd '
'ZgZg'

201

F

F. Enumerated Constants
Enumerated Constants
The following are all the available enumerations supplied by Photoshop.
They are defined in PITerminology.h , and are available for you to
incorporate into your plug-ins. Even though it maybe necessary to create
your own custom enumerations, it is recommended that you use as many
of the built-in enumerations as possible.
Enumeration

Constant

Type

enum1BitPerPixel
enum72Color
enum72Gray
enumAdd
enumAppleRGB

'OnBt'
'72Cl'
'72Gr'
'Add '
'AppR'

enumASCII
enumAskWhenOpening

'ASCI'
'AskW'

typeDepth
typeDCS
typeDCS
typeCalculation
typeBuiltinProfile
typeEncoding
typeProfileMismatch,

enumBicubic

'Bcbc'

enumBinary
enumMonitorSetup
enumSRGB

'Bnry'
'MntS'
'SRGB'

enum16BitsPerPixel
enum2BitsPerPixel
enum32BitsPerPixel
enum4BitsPerPixel
enum5000
enum5500
enum6500
enum7500
enum8BitsPerPixel

'16Bt'
'2Bts'
'32Bt'
'4Bts'
'5000'
'5500'
'6500'
'7500'
'EghB'

enum9300
enumA
enumAbsColorimetric
enumADSBottomst

'9300'
'A
'
'AClr
'AdB ‘

enumADSCentersH

'AdCH'

enumADSCentersV

'AdCV'

Adobe Photoshop Actions Event Guide

typeAssumeOptions.
typeInterpolation.
typeEncoding.
typeMenuItem.
typeBuiltinProfile.
typeDeepDepth.
typeDeepDepth.
typeDeepDepth.
typeDeepDepth.
typeKelvin.
typeKelvin.
typeKelvin.
typeKelvin.
typeDeepDepth,
typeDepth.
typeKelvin.
typeChannel.
typeIntent.
typeAlignDistributeSelector
typeAlignDistributeSelector
typeAlignDistributeSelector

202

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumADSHorizontal

'AdHr

enumADSLefts

'AdLf'

enumADSRights

'AdRg'

enumADSTops

'AdTp

enumADSVertical

'AdVr'

'typeAlignDistributeSelector.
typeAlignDistributeSelector
typeAlignDistributeSelector
'typeAlignDistributeSelector.
typeAlignDistributeSelector.

enumAboutApp

'AbAp'

enumAbsolute

'Absl'

enumActualPixels

'ActP

enumAdaptive
enumAdjustmentOptions

'Adpt'
'AdjO'

enumAll

'Al '

enumAngle

'Angl

enumAny
enumApplyImage

'Any'
'AplI'

enumAroundCenter
enumArrange

'ArnC'
'Arng'

enumAsk
enumB
enumBack
enumBackground

'Ask '
'B '
'Back'
'Bckg'

enumBackgroundColor

'BckC'

enumBackward
enumBehind
enumBest
enumBetter

'Bckw'
'Bhnd'
'Bst '
'Dthb'

enumBilinear

'Blnr'

enumBitDepth1
enumBitDepth24
enumBitDepth4
enumBitDepth8

'BD1 '
'BD24'
'BD4 '
'BD8 '

Adobe Photoshop Actions Event Guide

typeMenuItem.
About menu.
typeCorrectionMethod.
'typeMenuItem.
View menu.
typeColorPalette.
typeMenuItem.
Layer menu.
typeOrdinal,
typePurgeItem.
'typeGradientType.
typeOrdinal.
typeMenuItem.
Image menu.
typeZigZagType.
typeMenuItem.
Window menu.
typeYesNo.
typeChannel.
typeOrdinal.
typeFillMode.
There is also a
keyBackground.
typeFill, typeFillContents,
typeColorStopType.
typeOrdinal.
typeBlendMode.
typeBlurQuality.
typeDitherQuality.
typeInterpolation.
typeBitDepth.
typeBitDepth.
typeBitDepth.
typeBitDepth.

203

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumBitmap
enumBlack

'Btmp'
'Blck'

enumBlackBody
enumBlacks
enumBlast
enumBlocks
enumBlue

'BlcB'
'Blks'
'Blst'
'Blks'
'Bl '

enumBlues
enumBottom

'Bls '
'Bttm'

enumBrushDarkRough
enumBrushLightRough
enumBrushSimple
enumBrushSparkle
enumBrushWideBlurry
enumBrushWideSharp
enumBuiltin

'BrDR'
'BrsL'
'BrSm'
'BrSp'
'BrbW'
'BrsW'
'Bltn'

enumButtonMode

'BtnM'

enumCIERGB

'CRGB'

enumCMYK
enumCMYK64

'CMYK'
'CMSF'

enumCMYKColor
enumCalculations

'ECMY'
'Clcl'

enumCascade

'Cscd'

enumCenter

'Cntr'

enumCenterGlow

'SrcC'

enumChannelOptions

'ChnO'

enumChannelsPaletteOptions

'ChnP'

enumClear

'Clar'

typeColorSpace.
typeGrayBehavior, typeFillContents,
typeChannel.
typeColorPalette.
typeColors.
typeWindMethod.
typeExtrudeType.
typeChannel.
There is also a
keyBlue.
typeColors.
typeVerticalLocation.
typeBrushType.
typeBrushType.
typeBrushType.
typeBrushType.
typeBrushType.
typeBrushType.
typeRGBSetupSource, typeCompensation,
typeCMYKSetupEngine, typeAssumeOptions.
typeMenuItem.
Actions palette
menu.
typePhosphors,
typeBuiltinProfile.
typeChannel.
typeColorSpace.
CMYK Sixty-four
typeColorSpace.
typeMenuItem.
Image menu.
typeMenuItem.
Window menu.
typeAlignment,
typeStrokeLocation.
typeInnerGlowSource.
typeMenuItem.
Channels palette
menu.
typeMenuItem.
Channels palette
menu.
typeBlendMode.

Adobe Photoshop Actions Event Guide

204

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumClearGuides

'ClrG'

enumClipboard
enumCloseAll

'Clpb'
'ClsA'

enumCoarseDots

'CrsD'

enumColor
enumColorBurn

'Clr '
'CBrn'

enumColorDodge

'CDdg'

enumColorMatch

'ClMt'

enumColorimetric
enumComposite
enumConvertToCMYK

'Clrm'
'Cmps'
'CnvC'

enumConvertToGray

'CnvG'

enumConvertToLab

'CnvL'

enumConvertToRGB

'CnvR'

enumCreateDuplicate

'CrtD'

enumCreateInterpolation

'CrtI'

enumCross
enumCurrentLayer

'Crs '
'CrrL'

enumCustom

'Cst '

enumCustomPattern

'Cstm'

enumCyan
enumCyans
enumDarken

'Cyn '
'Cyns'
'Drkn'

enumDarkenOnly
enumDiamond

'DrkO'
'Dmnd'

enumDifference

'Dfrn'

enumDiffusion
enumDiffusionDither
enumDisplayCursorsPreferences

'Dfsn'
'DfnD'
'DspC'

typeMenuItem.
View menu.
typePurgeItem.
typeMenuItem.
Window menu.
typeMezzotintType.
typeBlendMode.
typeBlendMode,
typeCalculation.
typeBlendMode,
typeCalculation.
typeBuiltinProfile.
typeIntent.
typeChannel.
typeProfileMismatch.
typeProfileMismatch.
typeProfileMismatch.
typeProfileMismatch.
typeInterlaceCreateType.
typeInterlaceCreateType.
typeShape.
typeHistoryStateSource.
typeRGBSetupSource. Breaks
hash for enumCustomPattern.
typeMethod. There
is also eventCustom, keyCustom.
typeChannel.
typeColors.
typeBlendMode,
typeCalculation.
typeDiffuseMode.
typeShape, typeGradientType.
typeBlendMode,
typeCalculation.
typeDither.
typeMethod.
typeMenuItem.
File preferences
menu.

Adobe Photoshop Actions Event Guide

205

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumDissolve
enumDistort

'Dslv'
'Dstr'

enumDraft
enumDuotone
enumEBUITU
enumEdgeGlow

'Drft'
'Dtn '
'EBT '
'SrcE'

enumEliminateEvenFields

'ElmE'

enumEliminateOddFields

'ElmO'

enumEllipse
enumEmboss

'Elps'
'Embs'

enumExact
enumExclusion

'Exct'
'Xclu'

enumFPXCompressLossyJPEG
enumFPXCompressNone
enumFaster

'FxJP'
'FxNo'
'Dthf'

enumFile

'Fle '

enumFileInfo

'FlIn'

enumFillBack
enumFillFore
enumFillInverse
enumFillSame
enumFineDots

'FlBc'
'FlFr'
'FlIn'
'FlSm'
'FnDt'

enumFirst
enumFitOnScreen

'Frst'
'FtOn'

enumForegroundColor

'FrgC'

enumForward
enumFreeTransform

'Frwr'
'FrTr'

enumFront
enumFullDocument

'Frnt'
'FllD'

typeBlendMode.
typeMenuItem.
Edit transform
menu.
typeBlurQuality.
typeChannel.
typePhosphors.
typeInnerGlowSource.
typeInterlaceEliminateType.
typeInterlaceEliminateType.
typeShape.
typeBevelEmbossStyle. There is
also an eventEmboss.
typeColorPalette.
typeBlendMode,
typeCalculation.
typeFPXCompress.
typeFPXCompress.
typeDitherQuality.
typeRGBSetupSource.
typeMenuItem.
File menu.
typeFillColor.
typeFillColor.
typeFillColor.
typeFillColor.
typeMezzotintType.
typeOrdinal.
typeMenuItem.
View menu.
typeFillContents, typeColorStopType.
typeOrdinal.
typeMenuItem.
Layer menu.
typeOrdinal.
typeHistoryStateSource.

enumFullSize
enumGaussianDistribution
enumGIFColorFileColorTable

'FlSz'
'Gsn '
'GFCT'

Adobe Photoshop Actions Event Guide

typePreview.
typeDistribution.
typeGIFColorFileType.

206

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumGIFColorFileColors

'GFCF'

enumGIFColorFileMicrosoftPalette
enumGIFPaletteAdaptive

'GFMS'

enumGIFPaletteExact

'GFPE'

enumGIFPaletteOther

'GFPO'

enumGIFPaletteSystem

'GFPS'

enumGIFRequiredColorSpaceIndexed
enumGIFRequiredColorSpaceRGB
enumGIFRowOrderInterlaced

'GFCI'

enumGIFRowOrderNormal

'GFNI'

enumGeneralPreferences

'GnrP'

enumGood
enumGrainClumped
enumGrainContrasty
enumGrainEnlarged
enumGrainHorizontal
enumGrainRegular
enumGrainSoft
enumGrainSpeckle
enumGrainSprinkles
enumGrainStippled
enumGrainVertical
enumGrainyDots

'Gd '
'GrnC'
'GrCn'
'GrnE'
'GrnH'
'GrnR'
'GrSf'
'GrSp'
'GrSr'
'GrSt'
'GrnV'
'GrnD'

enumGraphics
enumGray

'Grp '
'Gry '

enumGray16

'GryX'

enumGray18

'Gr18'

enumGray22

'Gr22'

enumGrayScale
enumGrayscale

'Gryc'
'Grys'

typeGIFColorFileType.
typeGIFColorFileType.
typeGIFPaletteType.
typeGIFPaletteType.
typeGIFPaletteType.
typeGIFPaletteType.
typeGIFRequiredColorSpaceType.
typeGIFRequiredColorSpaceType.
typeGIFRowOrderType.
typeGIFRowOrderType.
typeMenuItem.
File preferences
menu.
typeBlurQuality.
typeGrainType.
typeGrainType.
typeGrainType.
typeGrainType.
typeGrainType.
typeGrainType.
typeGrainType.
typeGrainType.
typeGrainType.
typeGrainType.
typeMezzotintType.
typeIntent.
typeFillContents, typeChannel, typeColor.
There is also a
keyGray.
typeColorSpace.
GRaY siXteen.
typeBuiltinProfile.
typeBuiltinProfile.
typeColorSpace.
typeColorSpace,
typeColorPalette.

Adobe Photoshop Actions Event Guide

'GFPA'

'GFRG'
'GFIN'

207

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumGreen

'Grn '

enumGreens
enumGuidesGridPreferences

'Grns'
'GudG'

enumHDTV
enumHSBColor
enumHSLColor
enumHalftoneFile
enumHalftoneScreen

'HDTV'
'HSBl'
'HSLC'
'HlfF'
'HlfS'

enumHardLight

'HrdL'

enumHeavy

'Hvy '

enumHideAll

'HdAl'

enumHideSelection

'HdSl'

enumHigh
enumHighQuality
enumHighlights
enumHistogram

'High'
'Hgh '
'Hghl'
'Hstg'

enumHistory
enumHistoryPaletteOptions

'Hsty'
'HstO'

enumHistoryPreferences

'HstP'

enumHorizontal

'Hrzn'

enumHorizontalOnly
enumHue
enumIBMPC
enumICC

'HrzO'
'H
'
'IBMP'
'ICC '

enumIcon
enumIdleVM

'Icn '
'IdVM'

typeChannel,
typeColor. There
is also a
keyGreen.
typeColors.
typeMenuItem.
File preferences
menu.
typePhosphors.
typeColorSpace.
typeColorSpace.
typeMethod.
typeMethod. There
is also keyHalftoneScreen,
eventHalftoneScreen.
typeBlendMode,
typeCalculation.
typeBlackGeneration.
typeUserMaskOptions.
typeUserMaskOptions.
typeUrgency.
typeQuality.
typeColors.
typeMenuItem.
Image menu.
typePurgeItem.
typeMenuItem.
History palette
menu.
typeMenuItem.
File preferences
menu.
typeOrientation.
There is also a
keyHorizontal.
typeSpherizeMode.
typeBlendMode.
typePlatform.
typeCMYKSetupEngine, typeAssumeOptions.
typePreview.
typeState

enumIgnore

'Ignr'

enumImage

'Img '

Adobe Photoshop Actions Event Guide

typeProfileMismatch.
typeIntent,
typeAreaSelector.

208

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumImageCachePreferences

'ImgP'

enumIndexedColor
enumInfoPaletteOptions

'Indl'
'InfP'

enumInfoPaletteToggleSamplers

'InfT'

enumInnerBevel

'InrB'

enumInside

'Insd'

enumJPEG

'JPEG'

enumJustifyAll
enumJustifyFull
enumKeyboardPreferences

'JstA'
'JstF'
'KybP'

enumLab
enumLab48

'Lab '
'LbCF'

enumLabColor
enumLarge
enumLast
enumLastFilter

'LbCl'
'Lrg '
'Lst '
'LstF'

typeMenuItem.
File preferences
menu.
typeColorSpace.
typeMenuItem.
Info palette
menu.
typeMenuItem.
Info palette
menu.
typeBevelEmbossStyle.
typeStrokeLocation.
typeDepth,
typeEncoding.
There is also a
classJPEGFormat.
typeAlignment.
typeAlignment.
typeMenuItem.
File preferences
menu.
typeChannel.
typeColorSpace.
LaB Color Fortyeight.
typeColorSpace.
typeRippleSize.
typeOrdinal.
typeMenuItem.
Filter menu.

enumLayerOptions

'LyrO'

enumLayersPaletteOptions

'LyrP'

enumLeft

'Left'

enumLeft_PLUGIN

'Lft '

enumLevelBased

'LvlB'

enumLight

'Lgt '

enumLightDirBottom

'LDBt'

enumLightDirBottomLeft

'LDBL'

enumLightDirBottomRight

'LDBR'

enumLightDirLeft

'LDLf'

Adobe Photoshop Actions Event Guide

typeMenuItem.
Layer menu.
typeMenuItem.
Layers palette
menu.
typeHorizontalLocation.
typeDirection,
typeAlignment.
typeExtrudeRandom.
typeBlackGeneration.
typeLightDirection.
typeLightDirection.
typeLightDirection.
typeLightDirection.

209

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumLightDirRight

'LDRg'

enumLightDirTop

'LDTp'

enumLightDirTopLeft

'LDTL'

enumLightDirTopRight

'LDTR'

enumLightDirectional
enumLightenOnly
enumLightOmni
enumLightPosBottom

'LghD'
'LghO'
'LghO'
'LPBt'

enumLightPosBottomLeft

'LPBL'

enumLightPosBottomRight

'LPBr'

enumLightPosLeft

'LPLf'

enumLightPosRight

'LPRg'

enumLightPosTop

'LPTp'

enumLightPosTopLeft

'LPTL'

enumLightPosTopRight

'LPTR'

enumLightSpot
enumLighten

'LghS'
'Lghn'

enumLightness
enumLine
enumLinear
enumLinked
enumLongLines

'Lght'
'Ln '
'Lnr '
'Lnkd'
'LngL'

enumLongStrokes

'LngS'

enumLow
enumLower
enumLowQuality
enumLuminosity
enumMacThumbnail
enumMacintosh

'Low '
'Lwr '
'Lw '
'Lmns'
'McTh'
'Mcnt'

enumMacintoshSystem
enumMagenta
enumMagentas
enumMask
enumMaskedAreas

'McnS'
'Mgnt'
'Mgnt'
'Msk '
'MskA'

typeLightDirection.
typeLightDirection.
typeLightDirection.
typeLightDirection.
typeLightType.
typeDiffuseMode.
typeLightType.
typeLightPosition.
typeLightPosition.
typeLightPosition.
typeLightPosition.
typeLightPosition.
typeLightPosition.
typeLightPosition.
typeLightPosition.
typeLightType.
typeBlendMode,
typeCalculation.
typeChannel.
typeShape.
typeGradientType.
typeOrdinal.
typeMezzotintType.
typeMezzotintType.
typeUrgency.
typeContourEdge.
typeQuality.
typeBlendMode.
typePreview.
typePlatform,
typeEPSPreview.
typeColorPalette.
typeChannel.
typeColors.
typeChannel.
typeMaskIndicator.

Adobe Photoshop Actions Event Guide

210

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumMaximum

'Mxmm'

enumMaximumQuality

'Mxm '

enumMedium

'Mdim'

enumMediumQuality
enumMediumDots

'Mdm '
'MdmD'

enumMediumLines

'MdmL'

enumMediumStrokes

'MdmS'

enumMemoryPreferences

'MmrP'

enumMergeChannels

'MrgC'

enumMerged
enumMergedLayers

'Mrgd'
'MrgL'

typeBlackGeneration.
typeQuality.
There is also a
keyMaximum,
eventMaximum.
typeBlackGeneration, typeRippleSize.
typeQuality.
typeMezzotintType.
typeMezzotintType.
typeMezzotintType.
typeMenuItem.
File preferences
menu.
typeMenuItem.
Channels palette
menu.
typeOrdinal.
typeHistoryStateSource.

enumMiddle
enumMidtones
enumModeGray
enumModeRGB
enumMonitor

'Mddl'
'Mdtn'
'MdGr'
'MdRG'
'Moni'

typeOrdinal.
typeColors.
typeMode.
typeMode.
typeRGBSetupSource, typeAssumeOptions.

enumMonotone
enumMulti72Color
enumMulti72Gray
enumMultichannel
enumMultiNoCompositePS
enumMultiply

'Mntn'
'72CM'
'72GM'
'Mlth'
'NCmM'
'Mltp'

enumNoCompositePS
enumNTSC

'NCmp'
'NTSC'

enumNavigatorPaletteOptions

'NvgP'

enumNearestNeighbor

'Nrst'

enumNeutrals
enumNewView

'Ntrl'
'NwVw'

enumNext

'Nxt '

typeChannel.
typeDCS.
typeDCS.
typeColorSpace.
typeDCS.
typeBlendMode,
typeCalculation.
typeDCS.
typePhosphors,
typeBuiltinProfile.
typeMenuItem.
Navigator palette menu.
typeInterpolation.
typeColors.
typeMenuItem.
View menu.
typeOrdinal.

Adobe Photoshop Actions Event Guide

211

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumNikon
enumNikon105
enumNo
enumNone

'Nkn '
'Nkn1'
'N
'
'None'

enumNormal

'Nrml'

enumNull
enumOS2
enumOff
enumOn
enumOpenAs

'OS2 '
'Off '
'On '
'OpAs'

enumOrange
enumOutFromCenter
enumOutOfGamut
enumOuterBevel

'Orng'
'OtFr'
'OtOf'
'OtrB'

enumOutside

'Otsd'

enumOverlay

'Ovrl'

enumP22EBU
enumPNGFilterAdaptive
enumPNGFilterAverage
enumPNGFilterNone
enumPNGFilterPaeth
enumPNGFilterSub
enumPNGFilterUp
enumPNGInterlaceAdam7

'P22B'
'PGAd'
'PGAv'
'PGNo'
'PGPt'
'PGSb'
'PGUp'
'PGIA'

enumPNGInterlaceNone

'PGIN'

enumPagePosCentered
enumPagePosTopLeft
enumPageSetup

'PgPC'
'PgTL'
'PgSt'

enumPalSecam

'PlSc'

enumPanaVision

'PnVs'

typeLens.
typeLens.
typeYesNo.
typeOrdinal,
typePreview,
typeCompensation, typeBlackGeneration,
typeAssumeOptions.
typeBlendMode,
typeCalculation,
typeSherizeMode,
typeDiffuseMode.
typeNull
typePlatform.
typeOnOff.
typeOnOff.
typeMenuItem.
File menu.
typeColor.
typeZigZagType.
typeColors.
typeBevelEmbossStyle.
typeStrokeLocation.
typeBlendMode,
typeCalculation.
typePhosphors.
typePNGFilter.
typePNGFilter.
typePNGFilter.
typePNGFilter.
typePNGFilter.
typePNGFilter.
typePNGInterlaceType.
typePNGInterlaceType.
typePagePosition.
typePagePosition.
typeMenuItem.
File menu.
typeBuiltinProfile.
typeLens.

enumPathsPaletteOptions

'PthP'

Adobe Photoshop Actions Event Guide

typeMenuItem.
Paths palette
menu.

212

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumPattern

'Ptrn'

enumPatternDither
enumPerspective

'PtnD'
'Prsp'

enumPhotoshopPicker
enumPillowEmboss

'Phtk'
'PlEb'

typeDither, typeFillContents,
typePurgeItem.
typeMethod.
typeMenuItem.
Edit transform
menu.
typePickerKind.
typeBevelEmbossStyle.

enumPixelPaintSize1
enumPixelPaintSize2
enumPixelPaintSize3
enumPixelPaintSize4
enumPlace

'PxS1'
'PxS2'
'PxS3'
'PxS4'
'Plce'

enumPlaybackOptions

'PbkO'

enumPluginPicker
enumPluginsScratchDiskPreferences

'PlgP'
'PlgS'

enumPolarToRect
enumPondRipples
enumPreviewOff
enumPreviewCMYK
enumPreviewCyan
enumPreviewMagenta
enumPreviewYellow
enumPreviewBlack
enumPreviewCMY
enumPrevious

'PlrR'
'PndR'
'PrvO'
'PrvC'
'Prvy'
'PrvM'
'PrvY'
'PrvB'
'PrvN'
'Prvs'

enumPrintSize

'PrnS'

enumPrintingInksSetup
enumPyramids
enumQCSAverage

'PrnI'
'Pyrm'
'Qcsa'

enumQCSCorner0

'Qcs0'

enumQCSCorner1

'Qcs1'

enumQCSCorner2

'Qcs2'

enumQCSCorner3

'Qcs3'

enumQCSIndependent

'Qcsi'

Adobe Photoshop Actions Event Guide

typeMenuItem.
File menu.
typeMenuItem.
Actions palette
menu.
typePickerKind.
typeMenuItem.
File preferences
menu.
typeConvert.
typeZigZagType.
typePreviewCMYK.
typePreviewCMYK.
typePreviewCMYK.
typePreviewCMYK.
typePreviewCMYK.
typePreviewCMYK.
typePreviewCMYK.
typeColorPalette, typeOrdinal.
typeMenuItem.
View menu.
typeMenuItem.
typeExtrudeType.
typeQuadCenterState.
typeQuadCenterState.
typeQuadCenterState.
typeQuadCenterState.
typeQuadCenterState.
typeQuadCenterState.

213

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumQCSSide0

'Qcs4'

enumQCSSide1

'Qcs5'

enumQCSSide2

'Qcs6'

enumQCSSide3

'Qcs7'

enumQuadtone
enumRepeat
enumRGB

'Qdtn'
'Rpt '
'RGB '

enumRGB48

'RGBF'

enumRGBColor
enumRadial
enumRandom

'RGBC'
'Rdl '
'Rndm'

enumRectToPolar
enumRed

'RctP'
'Rd '

enumRedrawComplete
enumReds
enumReflected
enumRelative

'RdCm'
'Rds '
'Rflc'
'Rltv'

enumRepeatEdgePixels

'RptE'

enumRevealAll

'RvlA'

enumRevealSelection

'RvlS'

enumRight

'Rght'

enumRotate

'Rtte'

enumRotoscopingPreferences

'RtsP'

enumRound
enumRulerCm
enumRulerInches
enumRulerPercent
enumRulerPicas
enumRulerPixels
enumRulerPoints
enumSMPTE240M
enumSMPTEC

'Rnd '
'RrCm'
'RrIn'
'RrPr'
'RrPi'
'RrPx'
'RrPt'
'SMPT'
'SMPC'

typeQuadCenterState.
typeQuadCenterState.
typeQuadCenterState.
typeQuadCenterState.
typeChannel.
typeFillMode.
typeGrayBehavior, typeChannel.
typeColorSpace.
RGB Forty-eight
typeColorSpace.
typeGradientType.
typeExtrudeRandom.
typeConvert.
typeChannel,
typeColor.
typeState.
typeColors.
typeGradientType.
typeCorrectionMethod.
typeUndefinedArea.
typeUserMaskOptions.
typeUserMaskOptions.
typeDirection,
typeAlignment,
typeHorizontalLocation.
typeMenuItem.
Edit transform
menu.
typeMenuItem.
File preferences
menu.
typeShape.
typeRulerUnits.
typeRulerUnits.
typeRulerUnits.
typeRulerUnits.
typeRulerUnits.
typeRulerUnits.
typePhosphors.
typePhosphors.

Adobe Photoshop Actions Event Guide

214

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumSample3x3

'Smp3'

enumSample5x5

'Smp5'

enumSamplePoint

'SmpP'

enumSaturation
enumSaved
enumSavingFilesPreferences

'Strt'
'Sved'
'SvnF'

enumScale

'Scl '

enumScreen

'Scrn'

enumScreenCircle
enumScreenDot
enumScreenLine
enumSelectedAreas

'ScrC'
'ScrD'
'ScrL'
'SlcA'

enumSelection
enumSeparationSetup
enumSeparationTables
enumShadows
enumShortLines

'Slct'
'SprS'
'SprT'
'Shdw'
'ShrL'

enumShortStrokes

'ShSt'

enumSingle72Color
enumSingle72Gray
enumSingleNoCompositePS
enumSkew

'72CS'
'72GS'
'NCmS'
'Skew'

enumSmall
enumSmartBlurModeEdgeOnly

'Sml '
'SBME'

enumSmartBlurModeNormal

'SBMN'

enumSmartBlurModeOverlayEdge
enumSmartBlurQualityHigh

'SBMO'

enumSmartBlurQualityLow

'SBQL'

enumSmartBlurQualityMedium

'SBQM'

enumSnapshot

'Snps'

typeEyeDropperSample.
typeEyeDropperSample.
typeEyeDropperSample.
typeBlendMode.
typeFillContents.
typeMenuItem.
File preferences
menu.
typeMenuItem.
Edit transform
menu. There is
also a keyScale.
typeBlendMode,
typeCalculation.
typeScreenType.
typeScreenType.
typeScreenType.
typeMaskIndicator.
typeAreaSelector.
typeMenuItem.
typeMenuItem.
typeColors.
typeMezzotintType.
typeMezzotintType.
typeDCS.
typeDCS.
typeDCS.
typeMenuItem.
Edit transform
menu.
typeRippleSize.
typeSmartBlurMode.
typeSmartBlurMode.
typeSmartBlurMode.
typeSmartBlurQuality.
typeSmartBlurQuality.
typeSmartBlurQuality.
typeFillContents, typePurgeItem.

Adobe Photoshop Actions Event Guide

'SBQH'

215

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumSoftLight

'SftL'

enumSpectrum
enumSpin
enumSpotColor

'Spct'
'Spn '
'Spot'

enumSquare
enumStagger
enumStampIn

'Sqr '
'Stgr'
'In '

enumStampOut

'Out '

enumStdA
enumStdB
enumStdC
enumStdE
enumStretchToFit

'StdA'
'StdB'
'StdC'
'StdE'
'StrF'

enumStrokeDirHorizontal

'SDHz'

enumStrokeDirLeftDiag

'SDLD'

enumStrokeDirRightDiag

'SDRD'

enumStrokeDirVertical

'SDVt'

enumSubtract
enumSystemPicker
enumTables

'Sbtr'
'SysP'
'Tbl '

enumTarget
enumTexTypeBlocks
enumTexTypeBrick
enumTexTypeBurlap
enumTexTypeCanvas
enumTexTypeFrosted
enumTexTypeSandstone
enumTexTypeTinyLens
enumThreshold
enumThumbnail
enumTIFF
enumTile

'Trgt'
'TxBl'
'TxBr'
'TxBu'
'TxCa'
'TxFr'
'TxSt'
'TxTL'
'Thrh'
'Thmb'
'TIFF'
'Tile'

enumTile_PLUGIN

'Tl

enumToggleActionsPalette

'TglA'

enumToggleBlackPreview

'TgBP'

typeBlendMode,
typeCalculation.
typeColorPalette.
typeBlurMethod.
typeMaskIndicator.
typeShape.
typeWindMethod.
typeBevelEmbossStampStyle.
typeBevelEmbossStampStyle.
typeKelvin.
typeKelvin.
typeKelvin.
typeKelvin.
typeDisplacementMap.
typeStrokeDirection.
typeStrokeDirection.
typeStrokeDirection.
typeStrokeDirection.
typeCalculation.
typePickerKind.
typeCMYKSetupEngine.
typeOrdinal.
typeTextureType.
typeTextureType.
typeTextureType.
typeTextureType.
typeTextureType.
typeTextureType.
typeTextureType.
typeMethod.
typePreview.
typeEPSPreview.
typeMenuItem.
Window menu.
typeDisplacementMap.
typeMenuItem.
Window menu.
typeMenuItem.
View menu.

Adobe Photoshop Actions Event Guide

'

216

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumToggleBrushesPalette

'TglB'

enumToggleCMYKPreview

'TglC'

enumToggleCMYPreview

'TgCM'

enumToggleChannelsPalette

'Tglh'

enumToggleColorPalette

'Tglc'

enumToggleCyanPreview

'TgCP'

enumToggleEdges

'TglE'

enumToggleGamutWarning

'TglG'

enumToggleGrid

'TgGr'

enumToggleGuides

'Tgld'

enumToggleHistoryPalette

'TglH'

enumToggleInfoPalette

'TglI'

enumToggleLayerMask

'TglM'

enumToggleLayersPalette

'Tgly'

enumToggleLockGuides

'TglL'

enumToggleMagentaPreview

'TgMP'

typeMenuItem.
Window menu.
typeMenuItem.
View menu.
typeMenuItem.
View menu.
typeMenuItem.
Window menu.
typeMenuItem.
Window menu.
typeMenuItem.
View menu.
typeMenuItem.
View menu.
typeMenuItem.
View menu.
typeMenuItem.
View menu.
typeMenuItem.
View menu.
typeMenuItem.
Window menu.
typeMenuItem.
Window menu.
typeMenuItem.
Edit transform
menu.
typeMenuItem.
Window menu.
typeMenuItem.
View menu.
typeMenuItem.
View menu.

enumToggleNavigatorPalette

'TglN'

enumToggleOptionsPalette

'TglO'

enumTogglePaths

'TglP'

enumTogglePathsPalette

'Tglt'

enumToggleRotoscopePalette

'Tglp'

enumToggleRulers

'TglR'

enumToggleSnapToGrid

'TgSn'

enumToggleSnapToGuides

'TglS'

enumToggleStatusBar

'Tgls'

enumToggleSwatchesPalette

'Tglw'

Adobe Photoshop Actions Event Guide

typeMenuItem.
Window menu.
typeMenuItem.
Window menu.
typeMenuItem.
View menu.
typeMenuItem.
Window menu.
typeMenuItem.
Window menu.
typeMenuItem.
View menu.
typeMenuItem.
View menu.
typeMenuItem.
View menu.
typeMenuItem.
Window menu.
typeMenuItem.
Window menu.

217

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumToggleToolsPalette

'TglT'

enumToggleYellowPreview

'TgYP'

enumTop

'Top '

enumTransparency
enumTransparencyGamutPreferences

'Trsp'
'TrnG'

enumTransparent
enumTrinitron
enumTritone
enumUndo
enumUniform
enumUniformDistribution
enumUnitsRulersPreferences

'Trns'
'Trnt'
'Trtn'
'Und '
'Unfm'
'Unfr'
'UntR'

enumUpper
enumUserStop

'Upr '
'UsrS'

enumVMPreferences

'VMPr'

enumVertical
enumVerticalOnly
enumViolet
enumWaveSine
enumWaveSquare
enumWaveTriangle
enumWeb
enumWhite

'Vrtc'
'VrtO'
'Vlt '
'WvSn'
'WvSq'
'WvTr'
'Web '
'Wht '

enumWhites
enumWinThumbnail
enumWind
enumWindows
enumWindowsSystem
enumWrap
enumWrapAround

'Whts'
'WnTh'
'Wnd '
'Win '
'WndS'
'Wrp '
'WrpA'

enumYellow
enumYellowColor
enumYellows
enumYes
enumZip
enumZoom
enumZoomIn

'Yllw'
'Ylw '
'Ylws'
'Ys '
'ZpEn'
'Zm '
'ZmIn'

typeMenuItem.
Window menu.
typeMenuItem.
View menu.
typeVerticalLocation.
typeChannel.
typeMenuItem.
File preferences
menu.
typeFill.
typePhosphors.
typeChannel.
typePurgeItem.
typeColorPalette.
typeDistribution.
typeMenuItem.
File preferences
menu.
typeContourEdge.
typeColorStopType.
typeMenuItem.
File preferences
menu.
typeOrientation.
typeSpherizeMode.
typeColor.
typeWaveType.
typeWaveType.
typeWaveType.
typeColorPalette.
typeFill, typeFillContents.
typeColors.
typePreview.
typeWindMethod.
typePlatform.
typeColorPalette.
typeFillMode.
typeUndefinedArea.
typeChannel.
typeColor.
typeColors.
typeYesNo.
typeEncoding.
typeLens.
typeMenuItem.
View menu.

Adobe Photoshop Actions Event Guide

218

Appendix F: Enumerated Constants
Enumeration

Constant

Type

enumZoomOut

'ZmOt'

typeMenuItem.
View menu.

Adobe Photoshop Actions Event Guide

219

G

G. Pin Ranges
About Pin Ranges
Pin Ranges are numbers defined to restrict the values of a given variable.
The variable specified is not allowed to go above the maximum value nor
go below the minimum value. These numbers are internally checked by
Photoshop for validity, but it would be wise if any automation plugins
creating descriptors with these variables to check their validity.
Event Name
Accented Edges

Key Name

Min

Max

Edge Width
Edge Brightness
Smoothness

1
0
1

14
50
15

Amount

1

999

Direction Balance
Stroke Length
Sharpness

0
3
0

100
50
10

Detail
Smoothness

1
1

15
15

Brightness
Contrast

-100
-100

100
100

Charcoal Area
Chalk Area
Stroke Pressure

0
0
0

20
20
5

Charcoal Thickness
Detail
Light/Dark Balance

1
0
0

7
5
100

Detail
Smoothness

0
0

10
10

Cyan/Red
Magenta/Green
Yellow/Blue

-100
-100
-100

100
100
100

Max Radius
Channel 1
Channel 2
Channel 3
Channel 4

4
-360
-360
-360
-360

127
360
360
360
360

0

200

Add Noise
Angled Strokes

Bas Relief

Brightness/Contrast

Chalk & Charcoal

Charcoal

Chrome

Color Balance

Color Halftone

Color Range
Fuzziness
Colored Pencil
Adobe Photoshop Actions Event Guide

220

Appendix G: Pin Ranges
Event Name

Key Name
Pencil Width
Stroke Pressure
Paper Brightness

Min
1
0
0

Max
24
15
50

Foreground Level
Background Level
Scaling
Relief

1
1
50
0

15
15
200
50

Crack Spacing
Crack Depth
Crack Brightness

2
0
0

100
10
10

Stroke Length
Sharpness
Strength

3
0
1

50
20
3

Cell Size

3

300

No. Levels
Edge Simplicity
Edge Fidelity

2
0
1

8
10
3

Balance
Black Intensity
White Intensity

0
0
0

10
10
10

Graininess
Glow Amount
Clear Amount

0
0
0

10
20
20

Brush Size
Brush Detail
Texture

0
0
1

10
10
3

Radius
Threshold

1
0

16
255

-360
1
1

360
10
500

Size
Depth

2
1

255
255

Grain
Highlight Area
Intensity

0
0
0

20
20
10

Brush Size
Brush Detail
Texture

0
0
1

10
10
3

Conte Crayon

Craquelure

Crosshatch

Crystallize
Cutout

Dark Strokes

Diffuse Glow

Dry Brush

Dust & Scratches

Emboss
Angle
Height
Amount
Extrude

Film Grain

Fresco

Gaussian Blur

Adobe Photoshop Actions Event Guide

221

Appendix G: Pin Ranges
Event Name

Key Name
Radius

Min
0.1

Max
250

0
1
50

20
15
200

Edge Width
Edge Brightness
Smoothness

1
0
1

14
20
15

Intensity
Contrast

0
0

100
100

Stroke Length
Light/Dark Balance

1
0

15
100

Size
Contrast

1
0

12
50

Radius

0.1

250

H
S
L

-180
-100
-100

180
100
100

1
0
0

50
50
50

10

300

-100
-100
-100
-100
-100
-100
0

100
100
100
100
100
100
100

Radius

1

10

Radius

1

16

Radius

1

10

Cell Size

2

64

Tile Size
Grout Width
Lighten Grout

2
1
0

100
15
10

-90
1

90
999

Glass
Distortion
Smoothness
Scaling
Glowing Edges

Grain

Graphic Pen

Halftone Pattern

High Pass
Hue/Sat

Ink Outlines
Stroke Length
Dark Intensity
Light Intensity
Lens Flare
Brightness
Lighting Effects
Intensity
Focus
Gloss
Material
Exposure
Ambience
Height
Maximum
Median
Minimum
Mosaic
Mosaic Tiles

Motion Blur
Angle
Distance

Adobe Photoshop Actions Event Guide

222

Appendix G: Pin Ranges
Event Name
Neon Glow

Key Name

Min

Max

Size
Brightness

-24
0

24
50

Image Balance
Graininess
Relief

0
0
0

50
20
25

Ripple Size
Ripple Magnitude

1
0

15
20

Horizontal
Vertical

-30000
-30000

30000
30000

Brush Size
Sharpness

1
0

50
40

Stroke Size
Stroke Detail
Softness

1
1
0

50
3
10

Square Size
Relief

0
0

10
25

Detail
Darkness

1
1

24
50

-100

100

Image Balance
Smoothness

0
1

50
15

Cell Size

3

300

Edge Thickness
Edge Intensity
Posterization

0
0
0

10
10
6

Amount

1

100

0
-180
-100
-100

200
180
100
100

0
0
0

50
50
50

-999

999

0
1

40
20

Note Paper

Ocean Ripple

Offset

Paint Daubs

Palette Knife

Patchwork

Photocopy

Pinch
Amount
Plaster

Pointilize
Poster Edges

Radial Blur
Replace Color
Fuzziness
H
S
L
Reticulation
Density
Black level
White Level
Ripple
Amount
Rough Pastels
Stroke Length
Stroke Detail

Adobe Photoshop Actions Event Guide

223

Appendix G: Pin Ranges
Event Name

Key Name
Scaling
Relief

Min
50
0

Max
200
50

C
M
Y
K

-100
-100
-100
-100

100
100
100
100

Radius
Threshold

0.1
0.1

100
100

Length
Highlight Area
Intensity

0
0
0

10
20
10

Spray Radius
Smoothness

0
1

25
15

-100

100

Brush Size
Definition
Smoothness

0
0
1

10
25
15

Stroke Length
Spray Radius

0
0

20
25

Cell Size
Border Thickness
Light Intensity

2
1
0

50
20
10

Light/Dark Balance
Smoothness

0
1

50
50

Stroke Width
Stroke Pressure
Contrast

3
0
0

15
15
40

Scaling
Relief

50
0

200
50

Threshold

1

255

No. Tiles
Maximum Offset

1
1

99
99

Image Balance
Smoothness
Contrast

0
1
1

50
15
25

Level

0

255

-999

999

Selective Color

Smart Blur

Smudge Stick

Spatter

Spherize
Amount
Sponge

Sprayed Strokes

Stained Glass

Stamp

Sumi-e

Texturizer

Threshold
Tiles

Torn Edges

Trace Contour
Twirl
Amount

Adobe Photoshop Actions Event Guide

224

Appendix G: Pin Ranges
Event Name
Underpainting

Key Name

Min

Max

0
0
50
0

40
40
200
50

1
0.1
1

500
250
255

Fiber Length
Brightness
Contrast

3
0
0

50
100
100

Detail
Intensity
Texture

1
0
1

14
10
3

No. Generators
Wavelength min
Wavelength max
Amplitude min
Amplitude max
hScale
vScale

1
1
1
1
1
0
0

999
999
999
999
999
100
100

-100
1

100
20

Brush Size
Texture Coverage
Scaling
Relief
Unsharp Mask
Amount
Radius
Threshold
Water Paper

Watercolor

Wave

ZigZag
Amount
Ridges

Adobe Photoshop Actions Event Guide

225

H

H. Glossary
Photoshop Object Model Definitions

Action - a set of Photoshop eventswith target elements and zero or more
parameters, or a single event with a target with zero or more parameters.
Class - an object or concept in Photoshop that is standardized for reuse,
i.e., the Rectangle class. A Photoshop “rectangle” always consists of four
numeric elements defining top, left, bottom, and right. Each Photoshop
class has a class ID code and a set of defined parameters. Classes can
inherit from other classes. For example, classRGBColor inherits from
classColor.
Class ID - a four character key that specifies Photoshop class or object
types. Spaces can be part of the key. A Class key ID is followed by a
descriptor block that defines the class. Class descriptor blocks contain
Property Keys as parameters.
Descriptor, Descriptor Block - an optional data structure that lists
specific parameters utilized by an event. Descriptors are lists where each
item consists of key/value combinations. If a target parameter is specified,
it is always the first item in the list as the keyTarget . If the Target is not
present, it is assumed that the event will act on the previously selected or
currently selected object. Items in the Descriptor can be classes, lists,
strings, integers, floating point numbers, Boolean values, aliases,
enumerated values, or references to other objects.
Element - consists of objects and classes, and represents a tangible
object inside Photoshop - a document, a layer, a channel, a selection, a
palette, a guide, or a menu that represents an accessible component of
Photoshop. Events act on elements and an element can be created, acted
upon, saved in a file or destroyed. They can have simple properties, i.e., a
document can be created that has a horizontal size and a vertical size. Or
they can have a list of simple properties, i.e., a document can have size
and a foreground color. Elements can have a list of complex properties,
i.e., a user-defined selection can exist in a channel, under a layer, in a
document and can have inherited properties from the color class and the
mode class. Elements can be contained by other elements. A document
(an element) can contain a layer (another element), that contains a
channel (another element).
Enumerated Value - a specific instance or selection from a pre-defined
Photoshop type. An enumerator from the Shape type which includes
Round, Diamond, Ellipse, Line, Square, or Cross could be enumRound or
enumEllipse or enumLine , etc.

Adobe Photoshop Actions Event Guide

226

Appendix H: Glossary
Event - A Photoshop event is a basic command or instruction that can be
triggered by an automation plug-in. Each Photoshop event has a 4character ID code that acts as the name of the event and an optional
Descriptor containing target information or other event-related
parameters. For example, the event "Gaussian Blur" has an Event ID code
of 'GsnB' , and will be used with a Descriptor that contains the
parameters for the Radius amount. Macros have been created that
provide longer, more meaningful names, such as eventGaussianBlur .
However, these macros are always evaluated to the root ID code (in this
case, 'GsnB' ).
Event ID - a four character key that specifies a Photoshop event.
Examples include: eventAddNoise ( 'AdNs' ), eventClose ( 'Cls ' ),
eventFeather ( 'Fthr' ), eventMake ( 'Mk ' ), eventSet ( 'setd' ). Note
that spaces can be part of the four character ID code.
Parameter ID - a four character key that specifies the parameters or
properties of a Photoshop class or event. Examples include: keyAngle
( 'Ang1' ), keyArea ( 'Ar ' ), keyBrushSize ( 'BrsS' ), keyPalette
( 'Plt ' ), etc. Note that spaces can be part of the key. The Parameter Key
is usually followed by the specific value of the parameter.
Reference - a path through the Photoshop containment hierarchy.
References can be explicit but more often are relative (to save typing
errors and the like). Like a DOS file path name where
"C:\harddisk\folder1\fileone" represents the explicit path name and
"Folder/fileone" represents a relative path from the working directory,
selection ' foo ' of "photoshop/document2/layer3/channel1" represents
the explicit target, (selection 'foo') of the channel 1, of layer 3, of
document 2 of application Photoshop. When evaluating a target for an
event, Photoshop works its way up the containment hierarchy from the
current position until it finds an element that contains a suitable target.
Thus, the current position relative to the target must be factored in when
selecting a target channel of "foo". If the document contains more than
one layer with a channel called "foo", the target will be the first one
found in the reference chain.
Type - A collection of functionally similiar values or qualities (or
Enumerators) associated with a specific Photoshop event.
Type ID - a four character key that specifies what type of data is in the
parameter. Photoshop supports the following data types: (typeInteger,
typeFloat, typeUnitFloat, typeBoolean, typeEnumerated, and typeAlias.
As you might expect, typeInteger is a whole number, typeFloat is a
floating point number. The typeUnitFloat is similar to the typeFloat, but
indicates that the number is a unit of value "percent" or "pixel").
Photoshop Plug-in Terminology
hasTerminology PiPl Property- maps Photoshop "key" information into

human readable text and provides additional type information for values.
Adobe Photoshop Actions Event Guide

227

Appendix H: Glossary
For any plug-in that contains a terminology resource, a PiPL property
hasTerminology ( 'hstm' ), must be added to the PiPL. hasTerminology
contains the class ID, event ID, and terminology resource ID for the plugin.
PiPL - Plug-In Property List (pronounced "pipple") is a flexible, extensible
data structure for representing a plug-in module's metadata. PiPLs
contain all of the information Photoshop requires to identify and load
plug-in modules, as well as flags and other static properties that control
the operation of each plug-in. Every plug-in will contain one or more PiPL
structures. NOTE: PiPL's were introduced in Photoshop version 3.0 and
replace the older Plug-in Module Information structure, or PiMI used in
Photoshop versions prior to version 3.0. Under the Mac OS, PiPLs are
stored as a Macintosh resource; under Windows, PiPLs are stored as
Windows resources.
Properties (or property structures) - are basic units of information stored
in a property list. Properties are variable length data structures, uniquely
identified by a vendor code, property key, and ID number, and followed
by property-specific data. Plug-in properties are stored in the Plug-in
Property List or PiPL. See Cross-application Plug-in Resource Guide for more
information.
Terminology Resource/'aete' - the definition template for mapping
terminology resources. The Photoshop 'aete' resource is the dictionary
used to map text descriptors to underlying Photoshop events.

Adobe Photoshop Actions Event Guide

228

Index
A

Index

About Pin Ranges 220
Adjustment Inheritance 16, 17
Adjustment Inheritance Heirarchy 17
Audience 7

B
Built 133
Built-In Document Events 129
Built-in File Events 133, 166
Built-In Filter Events 85, 115

C
Classes 135
Classes and Formats 134
Color Inheritance Heirarchy 16

E
Element Action Events 120
Enumerated Constants 202
Event Constants 198

F
Filter Action Events 84
Format Inheritance Heirarchy 17
Formats 160

G
Getting Started 13, 22

K
Key Constants 179, 181, 182, 185

L
Listener 77

M
Mode Inheritance Heirarchy 16

N
No UI Mode 20

P
Pin Ranges 220
Plug-in Filter Events 96

S
Silent Mode 20

T
target chain 19
Targets 19
Targets and keyTarget 19
Tool Events 114
Types 166

Adobe Photoshop Actions Event Guide

229

Index
U
UI Mode 20
Underlying Naming Conventions 9
Using Listener 77

V
Variable Pin Ranges 226

Adobe Photoshop Actions Event Guide

230



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.2
Linearized                      : Yes
Create Date                     : 1999:08:06 10:49:48
Producer                        : Acrobat Distiller 4.0 for Macintosh
Creator                         : FrameMaker+SGML 5.5 for Power Macintosh
Title                           : Photoshop 5.0 Actions Guide.pdf
Author                          : Adobe Developer Support
Subject                         : Adobe Photoshop Actions Event Guide
Keywords                        : adobe, photoshop, plug-ins, api, sdk, automation, scripting
Modify Date                     : 1999:08:06 10:54:30-07:00
Page Count                      : 230
Page Mode                       : UseOutlines
EXIF Metadata provided by EXIF.tools

Navigation menu