Photoshop 5.0 Actions Guide
Photoshop%20Actions%20Guide
Photoshop%20Actions%20Guide
User Manual:
Open the PDF directly: View PDF .
Page Count: 230
Download | |
Open PDF In Browser | View 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 : UseOutlinesEXIF Metadata provided by EXIF.tools