Programming Guide
Page 2
... with 48 C.F.R. §12.212 or 48 C.F.R. §§227.7202-1 through 60-60, 60-250, and 60-741. Adobe, the Adobe logo, Illustrator, PageMaker, Photoshop, FrameMaker, Flash, Flex, and ActionScript are either registered trademarks or trademarks of Microsoft Corporation in 48 C.F.R. §12... the Rehabilitation Act of such license. Adobe Systems Incorporated, 345 Park Avenue, San Jose, CA 95110-2704, USA. Government End Users, Adobe agrees to comply with only those rights as applicable. © 2010 Adobe Systems Incorporated. Adobe Illustrator CS5 Programmer's Guide If this guide is...
... with 48 C.F.R. §12.212 or 48 C.F.R. §§227.7202-1 through 60-60, 60-250, and 60-741. Adobe, the Adobe logo, Illustrator, PageMaker, Photoshop, FrameMaker, Flash, Flex, and ActionScript are either registered trademarks or trademarks of Microsoft Corporation in 48 C.F.R. §12... the Rehabilitation Act of such license. Adobe Systems Incorporated, 345 Park Avenue, San Jose, CA 95110-2704, USA. Government End Users, Adobe agrees to comply with only those rights as applicable. © 2010 Adobe Systems Incorporated. Adobe Illustrator CS5 Programmer's Guide If this guide is...
Programming Guide
Page 3
Contents Preface 5 Terminology and notational conventions 5 Supporting documentation 5 Sample code 5 1 Overview 6 What is a plug-in 6 A brief history of the Adobe Illustrator API 6 Anatomy of a plug-in 7 Types of plug-ins 8 Action plug-ins 9 Plug-in file formats 9 Plug-in filters 9 Plug-...and shut-down messages 13 Notifiers 14 Handling callers and selectors 14 Message data 14 Illustrator API 15 Suites 15 Acquiring and releasing suites 16 Publishing suites 17 Binary compatibility 17 Illustrator's artwork as seen by a plug-in 18 Cross-platform support 18 Memory 18 Resources...
Contents Preface 5 Terminology and notational conventions 5 Supporting documentation 5 Sample code 5 1 Overview 6 What is a plug-in 6 A brief history of the Adobe Illustrator API 6 Anatomy of a plug-in 7 Types of plug-ins 8 Action plug-ins 9 Plug-in file formats 9 Plug-in filters 9 Plug-...and shut-down messages 13 Notifiers 14 Handling callers and selectors 14 Message data 14 Illustrator API 15 Suites 15 Acquiring and releasing suites 16 Publishing suites 17 Binary compatibility 17 Illustrator's artwork as seen by a plug-in 18 Cross-platform support 18 Memory 18 Resources...
Programming Guide
Page 4
...point 21 Handling callers and selectors 21 Using suites and callback functions 21 Acquiring and releasing suites and calling suite functions 22 Illustrator API suites 22 Callers and selectors 22 Caller: kSPInterfaceCaller, selector: kSPInterfaceStartupSelector 22 Caller: kSPInterfaceCaller, selector: kSPInterfaceShutdownSelector 24 Caller: kSPAccessCaller...plug-ins 29 Next steps 29 3 Creating a Flash UI for Plug-ins 30 Creative Suite extensions 30 About the Adobe Creative Suite SDK 30 Communication between plug-ins and extensions 31 Using the PlugPlug API 32 Using the CSXS API 33...
...point 21 Handling callers and selectors 21 Using suites and callback functions 21 Acquiring and releasing suites and calling suite functions 22 Illustrator API suites 22 Callers and selectors 22 Caller: kSPInterfaceCaller, selector: kSPInterfaceStartupSelector 22 Caller: kSPInterfaceCaller, selector: kSPInterfaceShutdownSelector 24 Caller: kSPAccessCaller...plug-ins 29 Next steps 29 3 Creating a Flash UI for Plug-ins 30 Creative Suite extensions 30 About the Adobe Creative Suite SDK 30 Communication between plug-ins and extensions 31 Using the PlugPlug API 32 Using the CSXS API 33...
Programming Guide
Page 5
...the templates provided with Adobe Illustrator CS5 Development . Describes platforms supported for plug-in this guide: X Getting Started with Illustrator CS5 - X Adobe Illustrator API Reference - Describes the suites and functions in the Illustrator API in programming. X Adobe Dialog Manager CS5 Programmer... 2, "Tutorial" describes plug-in programming fundamentals using an example project. Illustrator CS5, unless otherwise specified. Software development kit for plug-ins. PiPL - X Adobe Illustrator CS5 Porting Guide - Describes how to this release, and will not ...
...the templates provided with Adobe Illustrator CS5 Development . Describes platforms supported for plug-in this guide: X Getting Started with Illustrator CS5 - X Adobe Illustrator API Reference - Describes the suites and functions in the Illustrator API in programming. X Adobe Dialog Manager CS5 Programmer... 2, "Tutorial" describes plug-in programming fundamentals using an example project. Illustrator CS5, unless otherwise specified. Software development kit for plug-ins. PiPL - X Adobe Illustrator CS5 Porting Guide - Describes how to this release, and will not ...
Programming Guide
Page 6
... in . Callback functions were organized into suites that could be truly cross-platform (the Windows version of Adobe Illustrator jumped from fixed numbers to the plug-in the Illustrator 8.0 API was the switch from version 4.2 directly to change without modifying the application itself is built as..., and combinations of plug-ins. You can add or remove plug-ins to quickly and easily customize Illustrator to the drawing, shading, and raster tools already in Adobe Illustrator 5.5 to support undo or window updating; Users can create plug-ins that contains a shared library. ...
... in . Callback functions were organized into suites that could be truly cross-platform (the Windows version of Adobe Illustrator jumped from fixed numbers to the plug-in the Illustrator 8.0 API was the switch from version 4.2 directly to change without modifying the application itself is built as..., and combinations of plug-ins. You can add or remove plug-ins to quickly and easily customize Illustrator to the drawing, shading, and raster tools already in Adobe Illustrator 5.5 to support undo or window updating; Users can create plug-ins that contains a shared library. ...
Programming Guide
Page 7
.... Moving forward, Mach-O is the most convenient way to Mach-O. therefore, Adobe switched to Xcode from Illustrator 10.0 and earlier was changed to produce universal binaries; For documentation on Adobe Flash® and Flex®-based controls, or another 3rd-party or platform...Creating a Flash UI for Plug-ins for working with Illustrator 10. The plug-in manager also unloads plug-ins that used 68K alignment (two-byte aligned). Illustrator CS1 (Illustrator version 11.0) integrated a new text engine, the Adobe Text Engine (ATE). This change broke backward compatibility. ...
.... Moving forward, Mach-O is the most convenient way to Mach-O. therefore, Adobe switched to Xcode from Illustrator 10.0 and earlier was changed to produce universal binaries; For documentation on Adobe Flash® and Flex®-based controls, or another 3rd-party or platform...Creating a Flash UI for Plug-ins for working with Illustrator 10. The plug-in manager also unloads plug-ins that used 68K alignment (two-byte aligned). Illustrator CS1 (Illustrator version 11.0) integrated a new text engine, the Adobe Text Engine (ATE). This change broke backward compatibility. ...
Programming Guide
Page 8
...file types to the general menu structure. Set the transform-again feature. Types of plug-ins This section describes the different types of Illustrator plug-ins you can contain multiple plug-in types. Add menu items to the Open, Save, and Export commands. Receive periodic notification... save any state information. Plug-in tool. CHAPTER 1: Overview Types of plug-ins 8 Adobe Illustrator Plug-in manager Required plug-ins Additional plug-ins Plug-ins are notified by Illustrator when they have just been loaded or are listed in the following table and described more fully...
...file types to the general menu structure. Set the transform-again feature. Types of plug-ins This section describes the different types of Illustrator plug-ins you can contain multiple plug-in types. Add menu items to the Open, Save, and Export commands. Receive periodic notification... save any state information. Plug-in tool. CHAPTER 1: Overview Types of plug-ins 8 Adobe Illustrator Plug-in manager Required plug-ins Additional plug-ins Plug-ins are notified by Illustrator when they have just been loaded or are listed in the following table and described more fully...
Programming Guide
Page 9
... We recommend that reads and writes non-native files (e.g., TIFF or JPEG files). A notifier plug-in favor of AILiveEffectSuite. Plug-in Adobe Illustrator API Reference. For more information, see AIFilterSuite in can register itself so it of certain events. Plug-in notifiers and timers Plug-in...filter plug-in" in an algorithmic fashion. A typical use live effects instead, as desired. For more information, see AIFileFormatSuite in Adobe Illustrator API Reference Plug-in filters Plug-in filters appear under the Object menu and are used by a file-format plug-in notifiers...
... We recommend that reads and writes non-native files (e.g., TIFF or JPEG files). A notifier plug-in favor of AILiveEffectSuite. Plug-in Adobe Illustrator API Reference. For more information, see AIFilterSuite in can register itself so it of certain events. Plug-in notifiers and timers Plug-in...filter plug-in" in an algorithmic fashion. A typical use live effects instead, as desired. For more information, see AIFileFormatSuite in Adobe Illustrator API Reference Plug-in filters Plug-in filters appear under the Object menu and are used by a file-format plug-in notifiers...
Programming Guide
Page 10
...once a second. CHAPTER 1: Overview Where plug-ins live Illustrator's Plug-ins folder is in the following locations: Windows: C:\Program Files\Adobe\Adobe Illustrator CS5\Plug-ins\ Mac OS: /Applications/Adobe Illustrator CS5/Plug-ins/ A user-specific Plug-ins folder, which... XP: C:\Documents and Settings\\Application Data\Adobe\ Adobe Illustrator CS5 Settings\\Plug-ins\ Windows Vista: C:\Users\\AppData\Roaming\Adobe\ Adobe Illustrator CS5 Settings\\Plug-ins\ Mac OS /Users/{username}/Library/Application Support/Adobe/ Adobe Illustrator CS5//Plug-ins Optionally, an additional folder...
...once a second. CHAPTER 1: Overview Where plug-ins live Illustrator's Plug-ins folder is in the following locations: Windows: C:\Program Files\Adobe\Adobe Illustrator CS5\Plug-ins\ Mac OS: /Applications/Adobe Illustrator CS5/Plug-ins/ A user-specific Plug-ins folder, which... XP: C:\Documents and Settings\\Application Data\Adobe\ Adobe Illustrator CS5 Settings\\Plug-ins\ Windows Vista: C:\Users\\AppData\Roaming\Adobe\ Adobe Illustrator CS5 Settings\\Plug-ins\ Mac OS /Users/{username}/Library/Application Support/Adobe/ Adobe Illustrator CS5//Plug-ins Optionally, an additional folder...
Programming Guide
Page 11
... information about PiPL resources and samples, see Chapter 4, "Plug- X The calling mechanism for example, CoolEffect.aip. Plug-in management When Illustrator is given enough information to accomplish the action to take. X A valid plug-in . Files with a valid PiPL and code entry ...and restore state information during unload and reload. PiPL resources A plug-in property list (PiPL) resource contains properties used by the Illustrator plug-in manager, including the following characteristics: X A file extension of plug-ins becomes important when one or more information about ...
... information about PiPL resources and samples, see Chapter 4, "Plug- X The calling mechanism for example, CoolEffect.aip. Plug-in management When Illustrator is given enough information to accomplish the action to take. X A valid plug-in . Files with a valid PiPL and code entry ...and restore state information during unload and reload. PiPL resources A plug-in property list (PiPL) resource contains properties used by the Illustrator plug-in manager, including the following characteristics: X A file extension of plug-ins becomes important when one or more information about ...
Programming Guide
Page 12
...This is so new message actions can be easily defined by the code-descriptor property in the PiPL. For example, callers and selectors from Illustrator suites use the prefix "SP." By convention, the entry point is called , it receives a message action from PICA use the prefix ...actions: reload, unload, startup and shutdown. Information on the callers and selectors supported by the API is given by the plug-in Adobe Illustrator API Reference. For example, Illustrator sends a plug-in a menu a message action based on the message action. The result of action. By convention, each caller ...
...This is so new message actions can be easily defined by the code-descriptor property in the PiPL. For example, callers and selectors from Illustrator suites use the prefix "SP." By convention, the entry point is called , it receives a message action from PICA use the prefix ...actions: reload, unload, startup and shutdown. Information on the callers and selectors supported by the API is given by the plug-in Adobe Illustrator API Reference. For example, Illustrator sends a plug-in a menu a message action based on the message action. The result of action. By convention, each caller ...
Programming Guide
Page 13
...-in can interact with the application: #define kSPInterfaceCaller #define kSPInterfaceStartupSelector #define kSPInterfaceShutdownSelector "SP Interface" "Startup" "Shutdown" When Illustrator is your plug-in's opportunity to set of its plug-in globals or suite information, since it may be called after its... messages. A plug-in that exports a suite should take. For example, if kSPInterfaceShutdownSelector Free globals, remove features from memory, Illustrator sends it finds. At these times, your plug-in should not dispose of core message actions received by another plug-in's ...
...-in can interact with the application: #define kSPInterfaceCaller #define kSPInterfaceStartupSelector #define kSPInterfaceShutdownSelector "SP Interface" "Startup" "Shutdown" When Illustrator is your plug-in's opportunity to set of its plug-in globals or suite information, since it may be called after its... messages. A plug-in that exports a suite should take. For example, if kSPInterfaceShutdownSelector Free globals, remove features from memory, Illustrator sends it finds. At these times, your plug-in should not dispose of core message actions received by another plug-in's ...
Programming Guide
Page 14
... remove notification requests (see AINotifierSuite). The main routine of the message data structure depend on the messages it receives. The contents of your plug-in Illustrator was changed by convention all message data structures begin with the common fields that other plug-ins. While the contents of the message data vary...
... remove notification requests (see AINotifierSuite). The main routine of the message data structure depend on the messages it receives. The contents of your plug-in Illustrator was changed by convention all message data structures begin with the common fields that other plug-ins. While the contents of the message data vary...
Programming Guide
Page 15
.... This value is preserved by your plug-in is called . otherwise, the memory may be allocated using Illustrator's memory-allocation APIs; Some examples are given below. kCallerAIMenu AIMenuMessage Contains SPMessageData and a reference to access further... // access interfaceMsg } else if (strcmp(caller, kCallerAIMenu) == 0) { AIMenuMessage* menuMsg = static_cast(message); // access menuMsg } Illustrator API Suites The Illustrator plug-in manager calls a plug-in through the plug-in's entry point, sending various messages as needed. Caller Message type Description kSPAccessCaller...
.... This value is preserved by your plug-in is called . otherwise, the memory may be allocated using Illustrator's memory-allocation APIs; Some examples are given below. kCallerAIMenu AIMenuMessage Contains SPMessageData and a reference to access further... // access interfaceMsg } else if (strcmp(caller, kCallerAIMenu) == 0) { AIMenuMessage* menuMsg = static_cast(message); // access menuMsg } Illustrator API Suites The Illustrator plug-in manager calls a plug-in through the plug-in's entry point, sending various messages as needed. Caller Message type Description kSPAccessCaller...
Programming Guide
Page 16
... Create or work with gradients. Text frame suite AITextFrameSuite Work with custom colors. For detailed descriptions of Adobe Photoshop and other Adobe applications. Illustrator's suite architecture, known as the Plug-in Component Architecture (PICA), also is found in the latest versions... that provide general functions. The plug-in manager uses the acquire/release mechanism to release suites so the Illustrator plug-in type (see Adobe Illustrator API Reference. For detailed documentation on page 8) and those that implement a plug-in manager can run optimally...
... Create or work with gradients. Text frame suite AITextFrameSuite Work with custom colors. For detailed descriptions of Adobe Photoshop and other Adobe applications. Illustrator's suite architecture, known as the Plug-in Component Architecture (PICA), also is found in the latest versions... that provide general functions. The plug-in manager uses the acquire/release mechanism to release suites so the Illustrator plug-in type (see Adobe Illustrator API Reference. For detailed documentation on page 8) and those that implement a plug-in manager can run optimally...
Programming Guide
Page 17
...(strcmp(selector, kSPInterfaceStartupSelector)==0) { SPMessageData* messageData = (SPMessageData*)message; error = sSPBasic->AcquireSuite(kADMBasicSuite, kADMBasicSuiteVersion11, (const void**)&sADMBasic); The Illustrator plug-in manager is extremely powerful. To export a suite, a plug-in must call SPSuitesSuite::AddSuite on start-up successfully on start... system, or hardware platform can compromise this is not the preferred way to optimize the plug-in Adobe Illustrator API Reference and "Export property" on exported suites can publish suites of their own, for managing ...
...(strcmp(selector, kSPInterfaceStartupSelector)==0) { SPMessageData* messageData = (SPMessageData*)message; error = sSPBasic->AcquireSuite(kADMBasicSuite, kADMBasicSuiteVersion11, (const void**)&sADMBasic); The Illustrator plug-in manager is extremely powerful. To export a suite, a plug-in must call SPSuitesSuite::AddSuite on start-up successfully on start... system, or hardware platform can compromise this is not the preferred way to optimize the plug-in Adobe Illustrator API Reference and "Export property" on exported suites can publish suites of their own, for managing ...
Programming Guide
Page 18
... the Illustrator API ... Illustrator plug-in ...Illustrator API is highly portable across platforms. Memory Memory-management functionality is to plug-ins as seen by SPBasicSuite and SPBlocksSuite. Resources Illustrator... plug-ins define their resources in the format native to the platform on which Illustrator runs, and these exist largely for Illustrator... 1: Overview Illustrator API 18 Illustrator's artwork as... Illustrator artwork (including...Illustrator artwork objects are documented in the SDK uses identical source code; The Illustrator...Illustrator data types ...Illustrator...
... the Illustrator API ... Illustrator plug-in ...Illustrator API is highly portable across platforms. Memory Memory-management functionality is to plug-ins as seen by SPBasicSuite and SPBlocksSuite. Resources Illustrator... plug-ins define their resources in the format native to the platform on which Illustrator runs, and these exist largely for Illustrator... 1: Overview Illustrator API 18 Illustrator's artwork as... Illustrator artwork (including...Illustrator artwork objects are documented in the SDK uses identical source code; The Illustrator...Illustrator data types ...Illustrator...
Programming Guide
Page 19
...suite pointers it to your project and build the code as part of the other hand, are implemented by another binary component (the Illustrator application or its plug-ins) and called by the class, in global variables with well-known names. Plug-in adapters Support for ...kAboutMenuGroup), to contain all the About plug-in menu items. X For each plug-in, create a menu item under Illustrator's About group (see Adobe Illustrator API Reference > Helper classes. An illustration of your plug-in; they remove the need to call suites directly in , follow these helpers are not discussed in ...
...suite pointers it to your project and build the code as part of the other hand, are implemented by another binary component (the Illustrator application or its plug-ins) and called by the class, in global variables with well-known names. Plug-in adapters Support for ...kAboutMenuGroup), to contain all the About plug-in menu items. X For each plug-in, create a menu item under Illustrator's About group (see Adobe Illustrator API Reference > Helper classes. An illustration of your plug-in; they remove the need to call suites directly in , follow these helpers are not discussed in ...
Programming Guide
Page 20
...Tutorial sample shows how to request further information about a specific plug-in the SDK provides concrete examples and are a good starting point for Adobe Illustrator, and defined several key concepts, including: X Plug-in manager X Plug-in types X Messages and message actions X Notifiers X Loading... structures you need to complete the job. Finally, the sample projects in . Adobe Illustrator API Reference describes each function in more detail. MyPluginName2... MyPluginName2... An illustration of Illustrator CS3, the About Plug-ins dialog was displayed in the About Plug-ins dialog...
...Tutorial sample shows how to request further information about a specific plug-in the SDK provides concrete examples and are a good starting point for Adobe Illustrator, and defined several key concepts, including: X Plug-in manager X Plug-in types X Messages and message actions X Notifiers X Loading... structures you need to complete the job. Finally, the sample projects in . Adobe Illustrator API Reference describes each function in more detail. MyPluginName2... MyPluginName2... An illustration of Illustrator CS3, the About Plug-ins dialog was displayed in the About Plug-ins dialog...
Programming Guide
Page 21
...switch implemented as needed , the acquired suite is not always in Chapter 1, "Overview. Because your plug-in is a structure filled with the Illustrator version information in the PiPL are recognized and included in the sample code folder on page 14. A suite is loaded into suites. Look for... and reload. See "Handling callers and selectors" on the SDK, and browse the source code while reading this chapter. For instance, Illustrator keeps track of string comparisons that chapter already, do this chapter. This is why your plug-in is important to this structure is ...
...switch implemented as needed , the acquired suite is not always in Chapter 1, "Overview. Because your plug-in is a structure filled with the Illustrator version information in the PiPL are recognized and included in the sample code folder on page 14. A suite is loaded into suites. Look for... and reload. See "Handling callers and selectors" on the SDK, and browse the source code while reading this chapter. For instance, Illustrator keeps track of string comparisons that chapter already, do this chapter. This is why your plug-in is important to this structure is ...