version Adobe Illustrator Plug-in Software Development Kit Programmer s Guide for Macintosh and Windows Revised: September2003

Size: px
Start display at page:

Download "version Adobe Illustrator Plug-in Software Development Kit Programmer s Guide for Macintosh and Windows Revised: September2003"

Transcription

1 version Adobe Illustrator TM CS Plug-in Software Development Kit Programmer s Guide for Macintosh and Windows Revised: September2003

2 FrontMatter Adobe Illustrator Software Development Kit Copyright Adobe Systems Incorporated. All rights reserved. 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 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 Visual C++ are registered trademarks of Microsoft Corporation. CodeWarrior is a registered trademark of Metrowerks. All other products or name brands are trademarks of their respective holders. Adobe Illustrator SDK Programmers Guide 2

3 AI Programmers Guide TOC About This Document 6 Viewing and Printing This Document Sample Code Supporting Documentation Chapter 1 - Overview 7 Introduction What is a Plug in? A Brief History of the Adobe Illustrator API Plug in Categories Anatomy of a Plug in Types of Plug ins Action Plug-ins Plug in File Formats Plug in Filters Plug in Menu Commands Plug in Notifiers and Timers Plugin Group Plug-ins Plug in Tools Combining Multiple Plug in Types Where Plug ins Live PiPL Resources Required Properties Exporting Functions Plug in Loading Order Illustrator's Artwork as Seen by a Plug in Plug in Messages Message Actions Strings Core Message Actions Reload and Unload Messages Startup and Shutdown Messages About Messages Notifiers Handling Callers and Selectors Message Data Illustrator Suites Publishing Suites Adobe Illustrator SDK Programmers Guide 3

4 AI Programmers Guide TOC Acquiring and Releasing Suites Where to Now? Chapter 2 - Tutorial 19 Illustrator Plug-ins What Defines a Plug-in? PiPLs The Plug-in Entry Point Message Actions: Callers and Selectors Handling Callers and Selectors Message Data Using Suites and Callback Functions Acquiring and Releasing Suites Calling a Suite Function A Simple Example Callers and Selectors Caller: kspinterfacecaller, Selector: kspinterfacestartupselector26 Caller: kspinterfacecaller, Selector: kspinterfaceshutdownselector27 Caller: kspaccesscaller, Selector: kspaccessreloadselector28 Caller: kspaccesscaller, Selector: kspaccessunloadselector29 Caller: kspinterfacecaller, Selector: kspinterfaceaboutselector29 Plug-in Type Specific Messages Filter Plug-ins Tool Plug-ins Action Plug-ins Continuing On Chapter 3 - PipLs 39 PiPLs in Illustrator The PiPL Structure Properties Notes Types General properties Plug-in Kind (OSType) Version of kind specific API (int32) Code Descriptor Properties PowerPC code fragment descriptor (AICFMCodeDesc)42 Import and Export Properties Imports List Property Descriptor AIImportsList Exports List Property Descriptor AIExportsList Adobe Illustrator SDK Programmers Guide 4

5 AI Programmers Guide TOC AIIEListsDesc Dynamically Declared Properties Working with PiPLs Sample PiPLs Chapter 4 - Porting Plug-ins 46 Cross Platform Support Cross Platform Considerations Memory Resources Byte Information and Structures Project Considerations Changes Since Adobe Illustrator 6.0 (Macintosh only)48 The Entry Point The Main Function Messages The Basic Suite Properties Basics Properties - Imports, Exports & Plug-in Loading Order51 Summary of Changing a AI 6.0 plug-in to AI Support for Adobe Illustrator 6.0 Plug-ins Chapter 5 - Project Workspace 54 Create Project Folders Microsoft Visual C Debugging Windows Plug-Ins Metrowerks CodeWarrior Project Debugging Macintosh Plug-Ins Adobe Illustrator SDK Programmers Guide 5

6 About this Document About This Document This document introduces the Adobe Illustrator Plug-in API. Chapter 1, entitled Introduction, describes the basic concepts behind what plug-ins are and how they work. Chapter 2, entitled Tutorial, takes you through the stages of developing a plug-in. Chapter 3 discusses PiPL resources (which are introduced in chapter 1) in more detail. Chapter 4 contains information for converting an older Illustrator 6, 7 or 8 plug-in to the latest version of Illustrator. Viewing and Printing This Document This document was designed to be usable on the screen and on paper. When viewing on screen, a reduction of 90% will make it fit on half a 17 inch monitor. When printing, choose the Shrink to Fit option. This will give a printed page layout suitable for use in a 3-ring bind, even with double sided pages. Sample Code Chapter 2, entitled Tutorial, takes you through the stages of developing a plug-in. The cross-platform sample project which is described in Chapter 2 is on the SDK. Look for the Tutorial project in the Sample Code folder. Supporting Documentation There are three companion documents to this Programmers Guide: Table 1: Supporting Documentation Document Title AI Function Reference The Adobe Dialog Manager API The Adobe PICA API AI File Format Description Reference to suites and functions in the Adobe Illustrator API Reference manual for the ADM API. This is the crossplatform user interface toolkit used in Illustrator. Reference manual for the PICA API. This documents the plug-in loading mechanism for Illustrator File format specification for Illustrator 7.0 files Adobe Illustrator SDK Programmers Guide 6

7 Chapter 1 - Overview 1 Overview Introduction This chapter provides a brief introduction to the Illustrator plug in architecture. It will show you how plug ins interact with Illustrator and give you an idea of the amazing power of plug ins. The later chapters contain additional tutorial and reference information to get you started. What is a Plug in? A plug in for Adobe Illustrator is a special type of software program that adds features and functions to Illustrator. The plug in architecture in Illustrator is extremely powerful. Plug ins have complete access to Illustrator s elegant vector, text, and raster engines, as well as Illustrator s user interface. The API is a fundamental part of the application, in fact, most of Illustrator itself is implemented as plug ins! You can create plug ins that add completely new tools to the drawing, shading, and raster tools already in Illustrator. Plug ins can turn Illustrator into a powerful CAD, cartigraphic, or other custom design application. Users can add or remove plug ins to quickly and easily customize Illustrator to their needs. The Adobe Illustrator application programming interface (API) offer several benefits to plug in developers. Because Illustrator handles the larger application tasks like printing and saving files, you can concentrate on the implementation of your plug in s unique features. Plug ins do not need to support undo or window updating, these are handled by the API and are invisible to the plug in. This translates into shorter development cycles. Your plug in can also take advantage of the Adobe Dialog Manager (ADM), Adobe s cross platform user interface API. Plug ins that use ADM floating palettes are completely integrated with Illustrator the palettes can be docked, undocked, and controlled as if they were built right into Illustrator. A Brief History of the Adobe Illustrator API The Adobe Illustrator application programming interface (API) first appeared in version 5.0. It supported a single type of plug in, filters. This was extended in Adobe Illustrator 5.5 to include file formats. The 5.x APIs displayed characteristics of many early API design efforts; the interface was monolithic, incorporating enough functionality to achieve its intended purpose, but not allowing for future expansion. A single callback function table was provided, with no means to extend or update it. Platform Adobe Illustrator SDK Programmers Guide 7

8 Introduction abstraction was minimal, and interaction with the user was restricted to modal only. The Adobe Illustrator 6.0 API began to address these limitations. A modular and extensible approach was used to export the application s functionality. Callback functions were organized into suites that could easily be replaced or extended. The plug in types were abstracted and extended to include tools, floating windows, menu items, events, and combinations of these types. The first steps towards platform abstraction were taken. The Adobe Illustrator 7.0 API refined these previous efforts. The API was extended to be truly cross-platform (the Windows version of Adobe Illustrator jumped from 4.2 directly to 7.0), including a complete set of user interface suites. The plug in management core was generalized for not only cross platform, but cross product as well. More of Illustrator s core functionality was implemented through plug ins, allowing the application s behavior to change without modifying the application itself. The most significant change in the Illustrator 8.0 API was the switch from fixed numbers to floating point numbers. All suites that used fixed parameters were updated to use floating point parameters; in some cases, Adobe changed function names to reflect this. The Illustrator 8.0 API also included more than a dozen new suites, many corresponding to new user features such as plug in groups, cursor snapping, and actions. The Japanese version of Adobe Illustrator 5.0 had the same version of the API as its US counterpart. This unfortunately did not allow for full manipulation of Japanese text, though the graphic elements worked. Extensions for Japanese text appeared in the 5.5J version of the API. These are available in the 8.0J application as well, using the new suite based architecture. Plug in Categories Illustrator plug ins fall into four categories: Adobe Illustrator 9 plug ins Adobe Illustrator 8 plug ins Adobe Illustrator 7 plug ins Adobe Illustrator 6.0, 5.5 or 5.0 plug ins (Mac only) Adobe Photoshop Filter or Format plug ins This document only discusses Adobe Illustrator 9 plug ins in detail. For information about Adobe Photoshop Filter and Format plug ins, refer to the Adobe Photoshop SDK. Support for older plug ins, as well as for Photoshop plug ins, is provided through plug in adapters, plug ins that map API calls between Illustrator 9.0 and the older or non native APIs of the other plug ins. Adapters will not be discussed in detail in this document. Adobe Illustrator SDK Programmers Guide 8

9 Anatomy of a Plug in Introduction Like most programs, Adobe Illustrator plug ins contain both code and data. The Illustrator plug in manager loads and executes a plug in s code when required, sending various messages to the plug in. The plug in manager will also unload plug ins that are no longer needed. Required Plug ins Adobe Illustrator Plug in Manager Additional Plug ins Plug ins are notified by Illustrator when they have just been loaded or are about to be unloaded, permitting them to restore or save any state information. Types of Plug ins This section describes the various different types of Illustrator plug ins you can create. A single plug in file can contain more than one plug in type. For example, a shape creation plug in may implement several Plug in Filters and a Plug in Tool. Table 2: Types of plug ins Plug in Type Action File Format Effects Filter Menu Command Notifier Plugin Group Suite Timer Tool Transform again What it does Playback or register actions. Add file types to the open and save commands. Add menu items to the Effects menu. Add menu items to the Filters menu. Add menu items to the general menu structure. Receive and process art state events. Maintain display art which is associated with another art object Implement and publish your own suite of callback functions. Receive periodic notification. Add tools to the tool palette. Set transform again feature. Adobe Illustrator SDK Programmers Guide 9

10 Introduction Action Plug-ins Action plug-ins are used to execute Illustrator menu commands in a programmatic fashion, much like that of the Actions Palette. An Action plugin can register itself so that it can be recordable via the Actions Palette. Plug in File Formats Plug in File Formats are used to extend the number of file types Illustrator can read and write. Plug ins indicate which file formats they support during initialization, specifying the supported names and file types (or extensions). One plug in can register as many formats as it wants. Once a file format plug in has registered a file type, files of that type will appear in the file list of the Open dialog. All file format plug ins that support saving will appear in the format menu of the Save As dialog. Figure 1: The Save As Dialog Plug in Filters Plug in filters appear under the Filter menu and are used to create or manipulate Illustrator artwork. Filters typically present a modal interface to the user, who can set parameters before executing. Illustrator 9.0 still supports version 7.0, 6.0 and 5.5 filter plug ins. Note: In other applications (including Adobe PageMaker and FrameMaker), the term filter or filter plug in is sometimes used to describe software that reads and writes non native files (e.g. TIFF or JPEG). In Adobe Illustrator these are called File Format plug ins. Illustrator uses the term filter plug in in a way similar to Adobe Photoshop; a filter plug in modifies the artwork in an algorithmic fashion. Illustrator updates the repeat and undo menus automatically, making filters one of the simplest plug in types to create. Plug in Menu Commands Plug in menus are used to add menu items to Illustrator's menu structure other than the Filter menu. A typical use of this plug in type is to add a hide/show window menu to Illustrator's Window menu. Plug in menu commands can be added at a variety of places in the menu structure. Adobe Illustrator SDK Programmers Guide 10

11 Introduction Plug in Notifiers and Timers Plug in notifiers and timers are used by a plug in to have Adobe Illustrator inform it of certain events. A timer plug in is notified at regular time intervals. For example, a timer plug in may request to be notified once a second. A notifier plug in is notified when the state of an Illustrator document changes. For example, a plug in may request that it be notified when the selection state has changed. A notifier plug in registers for one or more notifications during startup. Plugin Group Plug-ins Plugin Group plug-ins maintain one or more plugin groups. A plug-in group is a special art object which contains editable art as well as art that is displayed but not editable. A plugin group plug-in is responsible for regenerating the display art (or result art) whenever there is a change in the edit art. Plugin groups are utilized to make special art types like Live Blends and Brushes. Plug in Tools Plug in tools add an icon to the main tool palette., expanding the number of tools available to the user. Many of the standard Illustrator tools, including the knife tool, the shape tools, and the twirl tool are implemented as plug in tools. When selected, a tool plug in can track the mouse, determine which artwork was selected, and act upon it. For example, a tool might create or distort objects. Some things are handled automatically for plug in tools, such as scrolling the window. Combining Multiple Plug in Types As mentioned before, it is quite likely that a single plug in file will implement multiple plug in types. A plug in may also need to add multiple instances of a single plug in type. The plug in API supports both of these cases. Where Plug ins Live Plug ins reside in the Plug ins folder. In general, each plug in type is located in a specific sub-folder, for example, tool plug ins are located in a folder named Tools. Adobe Illustrator SDK Programmers Guide 11

12 Introduction On both Mac and Windows platforms, Illustrator will only consider files with PiPL resources (PiPLs are introduced later in this chapter) to be plug ins. The type and extension are not important, however, by convention Macintosh plug ins have a creator/type of ART5 / ARPI, and on Windows an.aip extension. PiPL Resources PiPL resources contain metadata used by the Illustrator plug in manager, including: the type of the plug in, the calling mechanism for the plug in code, and the entry point name. It may also contain other information about the plug in. Refer to Plug in Property Lists on page 39 for more information about PiPL resources. The PiPL resource contains information about your plug in s type and how it is to be called. Illustrator will only consider files with PiPL resources to be potential plug ins. The type or extension of a file is not important, although most plug ins follow a standard convention for type and extension. Required Properties Your plug in s PiPL resource must include three required properties: The kind property indicates the type of the plug in file; it is akin to a file type. All Illustrator version 7 or 9 plug ins must contain a kind PiPL of SPEA. The interface version property ivrs describes to Illustrator the calling conventions expected by the plug in. It is currently 2. A code descriptor property indicates to Illustrator where your plug in code resides. Code descriptor values are defined for PowerPC Macintosh and Windows based plug ins. Adobe Illustrator SDK Programmers Guide 12

13 Introduction Exporting Functions Plug ins can export one or mores suites of functions (suites are discussed later in this chapter) for use by other plug ins. To ensure that the interdependencies of plug ins are handled correctly, plug ins declare in advance what they export. The loading order of plug ins becomes important when one plug in depends on a suites provided by another plug in. This export information is declared in PiPL export properties, expt, which contain the names and API version numbers of the suites that a plug in provides. The plug in manager uses this information to load and execute plug ins, ensuring that suites and other resources are available when needed. Plug in Loading Order The loading order of plug ins becomes important when one plug in depends on a resource provided by another, as the resource providing plug in must be loaded first. To ensure that the interdepencies of plug ins are handled correctly, plug ins that export one or more suites must declare what they export. Illustrator will use this information when loading and executing plug ins, ensuring that suites and other resources are available. The export information is declared in the PiPL resource as mentioned above. Illustrator's Artwork as Seen by a Plug in Most plug ins manipulate Illustrator artwork (including paths, text, and raster art) in some manner. Illustrator artwork objects are presented to plug ins as a hierarchical tree, which plug ins can freely modify. Plug ins can create, remove, and change the characteristics of artwork objects. For example, plug ins can: group objects, move or distort paths, adjust colors, search and change text. Plug in Messages The Illustrator plug in manager communicates with your plug in by loading the plug in code into memory if necessary, then calling its entry point. By convention, the entry point is called main on Mac OS, and PluginMain on Windows: #if Macintosh SPAPI SPErr main( char *caller, char *selector, void *data ) #else SPAPI SPErr PluginMain( char *caller, char *selector, void *data ) #endif {... Three arguments are passed to the main( ) routine, collectively they make up a message. The first two parameters represent the message action, describing what the plug in is supposed to do. The caller string identifies the sender of the message and a general category of action. The selector string specifies the action to take within the category of action. All plug ins will receive at least five message actions: reload, unload, startup, shutdown, and about. In addi- Adobe Illustrator SDK Programmers Guide 13

14 Introduction tion, your plug in may receive additional message actions specific to the plug in type. For example, plug ins that publish suites will receive acquire and release message actions when clients use a suite. The third parameter is a pointer to a data structure, which varies depending on the message action. Each time your plug in is called, it receives a message action from Illustrator. The message action notifies your plug in that an event has happened or tells your plug in to perform an action. Message Actions Strings By convention, caller strings begin with the name or abbreviation of the caller s application or company. For example, all action identifiers sent by the plug in manager begin with SP (short for Suite Pea, a now obsolete term used to describe Illustrator s plug in architecture). Illustrator message actions use four callers with many associated selectors. The standard Illustrator callers and selectors are described further below. Core Message Actions Table 3, Core Messages, on page 14 contains the set of core message actions received by all plug ins, and corresponding actions your plug in should take. Table 3: Core Messages Caller Selector Action to Perform kspaccesscaller ( SP Access ) kspinterfacecaller ( SP Interface ) kspaccessreloadselector ( Reload ) kspaccessunloadselector ( Unload ) kspinterfacestartupselector ( Startup ) Save any state information (globals) kspinterfaceshutdownselector ( Shutdown ) kspinterfaceaboutselector ( About ) Restore any state information (globals) Initialize globals, add features to the application Free globals, remove features from the application, and save preferences Show a dialog with information about your plug in Reload and Unload Messages Whenever a plug in is loaded into memory or unloaded from memory, the plug in manager sends an access message (caller SP Access ). This is your plug in s opportunity to setup, restore, or save state information. Access messages bracket all other messages. Reload will be the first message your plug in receives, Unload will be the last. Your plug in should not acquire or release suites other than those built into Illustrator at these times. Startup and Shutdown Messages When Illustrator is first launched, it sends a Startup message to each plug in it finds. This allows your plug in to allocate global memory, add user interface items to Illustrator, register suites, or perform other initialization. Adobe Illustrator SDK Programmers Guide 14

15 Introduction When the user quits Illustrator, it sends each plug in a Shutdown message. Shutdown is intended for flushing files and preserving preferences, not for destruction. A plug in that exports a suite should not dispose its plug in globals or suite information, since it may be called after its own shutdown by another plug in s shutdown. For example, if your plug in implements a preferences suite that other plug ins use, they may call you in their shutdown handlers after you ve already shut down. About Messages The About message action is used to display information about your plug in on the screen. Notifiers Some message actions are also referred to as notifiers, indicating that something in Illustrator has been changed by the user, for example when the user selects an object. Plug ins must register for notifiers (it would be very inefficient for Illustrator to notify every plug in when the user clicks on a object). The Notifier Suite is used to register and remove notification requests. Plug ins can also create their own notifiers, which can be used to broadcast changes to other plug ins. Handling Callers and Selectors Your plug in s organization is largely based on the messages it receives. The main routine of your plug in must first determine the message action using the caller and selector parameters. For example: SPAPI SPErr main( char *caller, char *selector, void *data ) { SPErr error = kspnoerror; if ( strcmp( caller, kspaccesscaller ) == 0 ) { if ( strcmp( selector, kspaccessunloadselector ) == 0 ) error = MyPreserveGlobals( data ); else if ( strcmp( selector, kspaccessreloadselector ) == 0 ) error = MySetupGlobals( data ); ) else if ( strcmp( caller, kspinterfacecaller ) == 0 ) { if ( strcmp( selector, kspinterfacestartupselector ) == 0 ) error = MyStartupPlugin( data ); else if ( strcmp( selector, kspinterfaceaboutselector ) == 0 error = MyAboutPlugin( data ); // check for each of the other callers and selectors... else if ( strcmp( caller, kmyappmenucaller ) == 0 && strcmp( selector, kmyappgomenuselector ) == 0 ) error = MyHandleMenu( data ); // else if... return error; Message Data The last argument passed to your plug in entry point is a pointer to a message data structure, which contains information appropriate to the Adobe Illustrator SDK Programmers Guide 15

16 Introduction message action. For example, when a mouse clicked message action is received, the message data structure will contain the mouse position. While the contents of the message data varies, by convention all message data structures begin with three common fields, which are grouped into the SPMessageData structure: typedef struct { SPPluginRef self; void *globals; SPBasicSuite *basic; SPMessageData; The self field is a reference to the plug in being called. It is only needed when registering plug in suites, adapters, and other plug in data to Illustrator. The globals pointer is for use by your plug in. It is used to preserve any information between calls that it needs, and is usually a pointer to a block of memory allocated by your plug in at startup. Globals is preserved by Illustrator if your plug in is unloaded and reloaded. The basic field is a pointer to the Basic Suite, which allows your plug in to acquire and use other suites (suites are described in the next section.) Illustrator Suites The Illustrator plug in manager calls a plug in through the plug in s entry point, sending various messages as described in the previous section. When a plug in is active, it needs a way to perform actions within Illustrator. The mechanism for this is through plug in suites, which are one or more related functions grouped together in a C structure. Functions are grouped into suites based on the services they provide, for example the Path Suite contains functions that create and manipulate paths and segments. Typical suites contain 6 8 functions, although some suites may contain as few as one or more than 30 functions. In all, the Illustrator API offers more than 40 suites containing over 500 functions. Illustrator s suite architecture, known as the Plug in Component Architecture (PiCA) is also found in the latest versions of Adobe Photoshop and other Adobe applications. Conceptually, PiCA is similar to other software component architectures such as Microsoft s COM. Suites fall into two general categories. A suite either implements a plug in type (see Types of Plug ins on page 9) or it provides general functions. Suites which provide general functions make up the majority of the API; they provide a wide range of capabilities for manipulating text, gradients or raster images, or performing math functions. The following table lists several of the major suites and what they do: Adobe Illustrator SDK Programmers Guide 16

17 Introduction Table 4: Core Suites Suite Name Art Suite Block Suite Custom Color Suite Document Suite Fixed Math Suite Gradient Suite Group Suite Layer Suite Path Suite Random Suite Raster Suite Tag Suite Text Suite Services Provided access the artwork tree allocate and free memory create or work with custom colors get and set document information many useful math functions create or work with gradients make clipped groups get information about layers work with Illustrator paths generate random numbers work with raster objects associate information with art objects work with text objects Please refer to the Adobe Illustrator Suite Reference for a detailed description of each suite and its associated functions. Publishing Suites All plug ins will use suites, since they are the fundamental mechanism of the Illustrator API. Plug ins can also publish suites of their own, for use by other plug ins. This feature, where plug ins may be both clients of suites and publishers of suites, is extremely powerful. Several of the plug ins that are included with the Adobe Illustrator application (including all in the Required folder) publish suites that are used by many other plug ins. From the plug in s perspective, it is unimportant whether a particular suite is implemented within the Illustrator application itself or as a plug in. The Illustrator plug in manager is responsible for managing suites among various plug ins and the application. For more information on how to publish suites, refer to the Adobe Illustrator Suite Reference. Acquiring and Releasing Suites Before you can use a function in a suite, you must first acquire the suite. When the suite s functions are no longer needed, your plug in must release the suite. It is important to release suites so that the Illustrator plug in manager can run optimally. The plug in manager uses the acquire/release mechanism to determine when plug ins can be unloaded to free memory. When your plug in is first called, it only knows about the Basic Suite, which was introduced earlier in this chapter (as part of the SPMessageData structure). The Basic Suite is used to acquire and release other suites. The following code snippet shows how to use the Art suite (note that this code snippet is only intended to show the concepts of acquiring, using and releasing a suite, this is not the preferred way to acquire and release suites. Adobe Illustrator SDK Programmers Guide 17

18 Introduction Refer to the sample project source code to see how suites are normally acquired and released): SPAPI SPErr main( char *caller, char *selector, void *data ) { SPBasicSuite * sbasic = ((SPMessageData *) data)->basic; AIArtSuite *sart; sbasic->acquiresuite(kaiartsuite, kaiartsuiteversion, &sart); // use the Art suite functions. sart->getartfirstchild(...); sart->getartsibling(...);... sbasic->releasesuite(kaiartsuite, kaiartsuiteversion); return error; Where to Now? In this chapter we introduced plug ins for Adobe Illustrator, and defined a number of key concepts including: plug in manager plug in types messages and message actions notifiers loading and unloading acquiring, using and releasing suites The next chapter, Plug in Tutorial will explain the process of writing a plug in in more detail. The Adobe Illustrator Suite Reference describes each function in detail, and provides information on the various artwork objects and data structures you will need to complete the job. Finally, the sample projects in the SDK provides concrete examples and are a good starting point for your actual project. Adobe Illustrator SDK Programmers Guide 18

19 2Tutorial Chapter 2 - Tutorial Illustrator Plug-ins A plug-in is a piece of stand alone code that interfaces with the Illustrator application. The plug-in file is located in the application s plug-in folder. Your plug-in should have at least two properties: a resource of type PiPL, and a code entry point conforming to the one described below. Your plug-in will have the behavior and functionality provided by the Illustrator API. This would allow it to load and unload, provide suites of its own, and manage other plug-ins, for instance, sending other plug-ins messages. The capabilities of a plug-in beyond this will primarily depend on the API suites provided by Illustrator. What Defines a Plug-in? An Illustrator plug-in must have two characteristics. It must have a valid Plug-in Property List ( PiPL ) resource and it must have a code entry point described by the PiPL. A PiPL resource contains information about your plug-in s type and how it is to be called. Illustrator will only consider files with PiPL resources to be potential plug-ins. The type or extension of a file is not important in this regard. Files with the correct properties as described in the next section will be added to the plug-in list. The second characteristic of an Illustrator plug-in is that it must have code native to the platform on which it is to run. The entry point of the code is specified in the PiPL resource. While early plug-in APIs from Adobe would run 68k plug-ins from a PowerPC application or vice-versa, this mechanism is not provided to Illustrator 9 plug-ins. The entry point of the plug-in code will be called with a variety of messages telling it actions to take. Only plug-ins with the Illustrator 9 version information in the PiPL are recognized and included in Illustrator 9 s initial startup process. However, Illustrator version 6 and 5.5 plug-ins are supported by Adapters. A plug-in will be loaded into and unloaded from memory as needed by Illustrator. Your plug-in needs to be written assuming it will not always be kept in memory. This is why your plug in should save and restore state information during unload and reload. Your plug-in can expect certain services from the application. Because your plug-in may be unloaded, Illustrator provides it a means of storing important data when it is unloaded. Each time the plug-in is called it will be given enough information to accomplish the action to be performed. In most cases, this will include the basic suite so that it can acquire other suites. Adobe Illustrator SDK Programmers Guide 19

20 Tutorial PiPLs The PiPL is a resource critical to Illustrator 9 plug-ins as it contains the information needed to use the plug-in. As a minimum, it informs the Illustrator 9 plug-in manager about the type of the plug-in, the calling mechanism for the plug-in code, and where that code exists. It may also contain other information about the plug-in. PiPL stands for Plug-in Property List and PiPLs are described fully in the document "PiPLs in Adobe Illustrator.pdf". Your plug-in s PiPL must contain 3 properties: The kind property indicates the type of the plug-in file; it is akin to a file type. Illustrator 9 will find and use plug-ins with a PiPL kind of SPEA. The interface version property ivrs describes to Illustrator the calling conventions expected by the plug-in. It is currently 2. A code descriptor property indicates to Illustrator where your plug-in code resides. Code descriptors are available for 68k-based Macintosh, PowerPC Macintosh, and Windows based plug-ins. Your plug-in can have multiple code descriptor resources if is to run on several platforms. For example, a fat Macintosh plug-in would have 68k and PowerPC code descriptors. If your plug-in exports one or mores suites of functions it must have a fourth property to indicate this. The export property, expt, lists the names and api version numbers of the suites that a plug-in provides. When a request for an external suite is made, Illustrator will use the export PiPL to find the providing plug-in. When this has been done, the now available suite reference will be returned to the requesting code. The kind, version, and code descriptor properties described above should be in a standard platform resource. Examples are provided with the source code accompanying this document. Illustrator also provides a means of creating resources at runtime. The Plug-in Entry Point The compiled plug-in code referenced by the code descriptor is written in C. Illustrator communicates with your plug-in by calling its entry point (e.g. main( ) ), which is defined by the platform code descriptor in the PiPL. Here s what and entry point looks like: SPAPI SPErr PluginMain( char *caller, char *selector, void *data ) { SPErr error = kspnoerror;... return error; Three arguments are passed to the main( ) routine regardless of the reason it is called; together they make up a message. The first two are C style strings which identify the message action. The third is a pointer to a data structure. It is undefined at main( ) because it s content depends on the message action received. When you determine the message action, you will type cast the data as needed. The result of main( ) is a 4-byte error code. Message Actions: Callers and Selectors The message action passed to your plug-in consists of two identifiers, a caller and a selector. The caller indicates the sender of the message (the Suite Pea Adobe Illustrator SDK Programmers Guide 20

21 Tutorial API, the host application, or a plug-in) and a general category of action. The selector defines the action to take within that category. For instance, Adobe Illustrator will send a plug-in a message action based on these two unidentified strings: // Caller and Selector from the Menu Suite #define kcalleraimenu AI Menu #define kselectoraigomenuitem "Go Menu" The caller and selector identifiers are C style strings. This is so that new message actions can be easily defined by other applications and plug-ins with little chance of conflict. The convention used is as follows: for the caller to have a name or abbreviation of the caller s application or company at the start of the string. Since Illustrator 9 uses the Suite Pea API, all action identifiers begin with SP. Illustrator message actions use four callers with many associated selectors. The standard Illustrator callers and selectors are described further below. Whenever a plug-in is loaded into memory or unloaded from memory, Illustrator will send it an access message. The action will be the access caller and a reload or unload selector. This is your plug-ins opportunity to setup, restore, or save state information. The access caller/selectors bracket all other callers and selectors. The access/reload will be the first message received. The access/unload will be the last message received. A plug-in should not acquire or release suites other than those built into Illustrator at this time. #define kspaccesscaller "SP Access" #define kspaccessunloadselector"unload" #define kspaccessreloadselector"reload" Illustrator has three interface actions, where the plug-in can interact with the application. Illustrator will supplement these with its own interface-like actions. When Illustrator is first launched, it will startup all the plug-ins it finds. This is an opportunity for your plug-in to allocate global memory, add user interface items to Illustrator, and do other initialization. A plug-in adding components to Illustrator, such as suites and adapters, would do it at this time. The startup message action is received at this time: the interface caller and the startup selector. When the user quits Illustrator, it tells all of its plug-ins that it is shutting down. It will send each a shutdown message action, consisting of an interface caller and shutdown selector. Shutdown is intended for flushing files and preserving preferences, not for destruction. A plug-in that exports a suite should not dispose its plug-in globals or suite information, since it may be called after its own shutdown by another plug-in s shutdown. For example, if your plug-in implements a preferences suite that other plug-ins use, they may call you in their shutdown handlers after you ve already shut down. A third message action received by your plug-in is an opportunity to display information about a plug-in on the screen. The action is indicated by the interface caller and the about selector. #define kspinterfacecaller #define kspinterfacestartupselector #define kspinterfaceshutdownselector #define kspinterfaceaboutselector "SP Interface" "Startup" "Shutdown" "About" Adobe Illustrator SDK Programmers Guide 21

22 Tutorial The remaining Illustrator message actions are used by plug-ins to specify properties at runtime and by plug-ins that add API adapters. More information on using these selectors is in the related chapters. Handling Callers and Selectors Your plug-in s organization is largely based on the messages received by its main( ). The main routine of your plug-in basically becomes a switch implemented as a series of string compares that call functions appropriate for the message action caller and selector. For example: SPAPI SPErr main( char *caller, char *selector, void *message ) { SPErr error = kspnoerror; if ( strcmp( caller, kspaccesscaller ) == 0 ) { if ( strcmp( selector, kspaccessunloadselector ) == 0 ) error = UnloadPlugin( message ); else if ( strcmp( selector, kspaccessreloadselector ) == 0 ) error = ReloadPlugin( message ); else if ( strcmp( caller, kspinterfacecaller ) == 0 ) { if ( strcmp( selector, kspinterfacestartupselector ) == 0 ) error = StartupPlugin( message ); else if ( strcmp( selector, kspinterfaceshutdownselector)==0) error = ShutdownPlugin( message ); else if ( strcmp( selector, kspinterfaceaboutselector ) == 0) error = AboutPlugin( message ); // check for each of the other callers and selectors... else if ( strcmp( caller, kcalleraimenu ) == 0 && strcmp( selector, kselectoraigomenuitem ) == 0 ) error = GoMenuItem( message ); // else if... return error; Message Data The other argument passed to your plug-in entry point is a pointer to a message data structure. This structure contains enough information for the plug-in to handle the message. For example, if the message action was that a mouse was clicked, the message data structure would contain the mouse position. The contents of the message data structure depend on the message action and are not completely known until your plug-in has identified this. Most Suite PEA messages will have a minimum set of information embedded in the structure, the SPMessageData structure at the beginning of the message data structure. Illustrator plug-ins expect that the message data is embedded. typedef struct { SPPluginRef self; void *globals; SPBasicSuite *basic; SPMessageData; typedef struct { SPMessageData d; SPcallerMessage; Adobe Illustrator SDK Programmers Guide 22

23 Tutorial The core of any plug-in message data is set by Illustrator and includes the basic information for the plug-in to operate. The self member is a reference to the plug-in being called. The globals member is a 4-byte value specified by and preserved for your plug-in. The basic member is a reference to the Basic Suite. The reference to the running plug-in s self is used to add plug-in suites, adapters, and other plug-in data to Illustrator. Illustrator will store this value with the added data. It will then be used to recall your plug-in as needed. Your plug-in can set the globals member to any four byte value; most likely this will be a pointer to a block of memory allocated by your plug-in. This value will be preserved by Illustrator when your plug-in is unloaded and passed back to the plug-in each time it is called. Plug-ins use this block to store any state information they need to maintain. The SPBasic suite reference basic contains functions with which the plug-in can acquire and release any other suites it needs to run. The message data structure received by your plug-in when the message action s caller is kspinterfacecaller is an SPIntefaceMessage structure. This is simply a container for the SPMessageData: typedef struct SPInterfaceMessage { SPMessageData d; SPInterfaceMessage; The message data structure received by your plug-in when the message action s caller is kspaccesscaller is an SPAccessMessage structure. This is simply a container for the SPMessageData: typedef struct SPAccessMessage { SPMessageData d; SPAccessMessage; When Illustrator or a plug-in wishes to send a message to your plug-in, it will pass in a relevant message data structure. Each caller has a unique message structure. For example, Illustrator s Menu Suite has the following message structure: typedef struct { SPMessageData d; AIMenuItemHandle menuitem; AIMenuMessage; It includes the SPMessageData at the beginning of the structure followed by a reference to a menu item that has been executed. Using Suites and Callback Functions Illustrator s API is composed of callback functions organized into suites. Before your plug-in can use a function that is part of a suite, the suite containing it must first be acquired. A function suite is a structure filled with function pointers and when your plug-in acquires a suite, a pointer to this structure is returned. Adobe Illustrator SDK Programmers Guide 23

24 Tutorial When the function suite is no longer needed, the acquired suite is released. It is important to do this so that the Illustrator plug-in manager can run optimally. For instance, Illustrator keeps track of how many times a suite has been acquired. If a suite added by plug-in is no longer in use (its access count is 0), the plug-in may be unloaded to free memory. Acquiring and Releasing Suites When your plug-in is first called it only knows about one suite. The message data structure passed to all plug-ins has a member variable basic, which points to the SP Basic Suite. The basic suite is used to access other suites and contains two important functions for doing so: SPAPI SPErr (*AcquireSuite)( char *name, long version,void **suite ); SPAPI SPErr (*ReleaseSuite)( char *name, long version ); A plug-in uses the first function, AcquireSuite( ), to gain access to a suite of functions. All acquired suites must be released with the ReleaseSuite( ) function when the suite is unneeded. To acquire a suite, you first need to declare a suite pointer. For instance, suppose you need to use Illustrator s Menu Suite which defines the following: #define kaimenusuite "AI Menu Suite" #define kaimenuversion 5 typedef struct { AIAPI AIErr (*AddMenuItem) ( SPPluginRef self, char *name, AIPlatformAddMenuItemData *data, long options, AIMenuItemHandle *menuitem ); AIAPI AIErr (*GetMenuItemName) ( AIMenuItemHandle menuitem, char **name ); AIAPI AIErr (*GetMenuItemOptions) ( AIMenuItemHandle menuitem, long *options ); AIAPI AIErr (*SetMenuItemOptions) ( AIMenuItemHandle menuitem, long options ); AIAPI AIErr (*GetMenuItemPlugin) ( AIMenuItemHandle menuitem, SPPluginRef *plugin ); AIMenuSuite; The plug-in s reference to the above suite would be: AIMenuSuite *saimenu; // The "AI" stands for Adobe Illustrator // because it is an AI suite A suite is acquired and released using its name and version number, found in its public header file. So to acquire the above menu, you would do something like this: SPErr error; error = (*message)->d.basic->acquiresuite( kaimenusuite, kaimenusuiteversion, &saimenu ); A pointer to the acquired suite s functions is returned in saimenu. Adobe Illustrator SDK Programmers Guide 24

25 Tutorial Calling a Suite Function The example above calls a function in the basic suite. Functions in other suites are called using a pointer to an acquired suite. For instance, the above variable saimenu points to the structure with the AI menu suite function pointers. The suite function pointer is dereferenced and used as a function pointer using the calling form: saimenu->somefunction(); Since they are used throughout the plug-in code, it is convenient to make suite variables global. The convention used for these global variables is a small s followed by the owner of the suite, followed by the suite name, e.g. sbasic as shown above, saimenu for the menu suite, etc. A Simple Example Suppose your plug-in is going to add a menu item to Illustrator. To do this it must use the AddMenu( ) function, which is a part of the AI Menu Suite, version 5. The suite name and version number are passed to the Acquire- Suite( ) function. After the function is used, the suite is release. This whole process is demonstrated below. SPBasicSuite *sbasic = message->d.basic; AIMenuSuite *saimenu; SPErr error; // request the needed suite error = sbasic->acquiresuite( kaimenusuite, 5, &saimenu ); if ( error ) goto error; // use the suite error = saimenu->addmenu( message->plugin, nil ); // release the suite sbasic->releasesuite( kaimenusuite, 5 ); error: handleerror( error ); Suite.h Files Every suite will have the suite name and version in the suite header file as well as other definitions, such as error strings, particular to their function. If the suite defines plug-in messages they will also be found in the header file. At the end are the suite functions. The function pointers should be fully prototyped. Callers and Selectors This section will describe and illustrate what the various caller/selector pairs mean and what your plug-in is expected to do in response to receiving them. There will be references to the Tutorial sample throughout this section. The Tutorial sample can be found in the Sample Code folder on the SDK. Adobe Illustrator SDK Programmers Guide 25

Chapter 1: PageMaker Commands and InDesign Equivalents

Chapter 1: PageMaker Commands and InDesign Equivalents 1 Chapter 1: PageMaker Commands and InDesign Equivalents Adobe InDesign and Adobe PageMaker use many of the same commands. If you are accustomed to Adobe PageMaker, the tables below will help you quickly

More information

Pippin Launch. version 001. Abstract: This document describes the Pippin Launch file used for multiple-application interfaces.

Pippin Launch. version 001. Abstract: This document describes the Pippin Launch file used for multiple-application interfaces. Pippin Launch version 001 Abstract: This document describes the Pippin Launch file used for multiple-application interfaces. Please send questions and comments via e-mail to pippindev@apple.com. 1996,

More information

The diverse software in Adobe Creative Suite 2 enables you to create

The diverse software in Adobe Creative Suite 2 enables you to create Chapter 1: Introducing Adobe Creative Suite 2 In This Chapter Looking over InDesign Drawing with Illustrator Introducing Photoshop Getting started with Acrobat Going over GoLive Integrating the programs

More information

Reader. PDF Writer. PostScript File. Distiller. Control whether or not the Save File As dialog box is displayed.

Reader. PDF Writer. PostScript File. Distiller. Control whether or not the Save File As dialog box is displayed. In This Issue Integrating with the Acrobat File-Creation Products Volume 3, Number 11 p 1 Integrating with the Acrobat File-Creation Products The previous two articles in this series described Adobe Acrobat

More information

ADOBE DRIVE 4.2 USER GUIDE

ADOBE DRIVE 4.2 USER GUIDE ADOBE DRIVE 4.2 USER GUIDE 2 2013 Adobe Systems Incorporated. All rights reserved. Adobe Drive 4.2 User Guide Adobe, the Adobe logo, Creative Suite, Illustrator, InCopy, InDesign, and Photoshop are either

More information

Adobe InDesign Notes. Adobe InDesign CS3

Adobe InDesign Notes. Adobe InDesign CS3 Adobe InDesign Notes Adobe InDesign CS3 Page 2 Introduction These notes have been put together for basic and advanced methods, features and language. I have also created notes on other Adobe products.

More information

Chapter 3. Texture mapping. Learning Goals: Assignment Lab 3: Implement a single program, which fulfills the requirements:

Chapter 3. Texture mapping. Learning Goals: Assignment Lab 3: Implement a single program, which fulfills the requirements: Chapter 3 Texture mapping Learning Goals: 1. To understand texture mapping mechanisms in VRT 2. To import external textures and to create new textures 3. To manipulate and interact with textures 4. To

More information

FACULTY AND STAFF COMPUTER FOOTHILL-DE ANZA. Office Graphics

FACULTY AND STAFF COMPUTER FOOTHILL-DE ANZA. Office Graphics FACULTY AND STAFF COMPUTER TRAINING @ FOOTHILL-DE ANZA Office 2001 Graphics Microsoft Clip Art Introduction Office 2001 wants to be the application that does everything, including Windows! When it comes

More information

RenderMonkey SDK Version 1.71

RenderMonkey SDK Version 1.71 RenderMonkey SDK Version 1.71 OVERVIEW... 3 RENDERMONKEY PLUG-IN ARCHITECTURE PHILOSOPHY... 3 IMPORTANT CHANGES WHEN PORTING EXISTING PLUG-INS... 3 GENERAL... 4 GENERATING A RENDERMONKEY PLUG-IN FRAMEWORK...

More information

Overview of Adobe Fireworks CS6

Overview of Adobe Fireworks CS6 Overview of Adobe Fireworks CS6 Lesson topics: Work with the Adobe Fireworks CS6 workspace: tools, Document windows, menus, and panels. Customize the workspace. Change the magnification of a document.

More information

Machine Language Instructions Introduction. Instructions Words of a language understood by machine. Instruction set Vocabulary of the machine

Machine Language Instructions Introduction. Instructions Words of a language understood by machine. Instruction set Vocabulary of the machine Machine Language Instructions Introduction Instructions Words of a language understood by machine Instruction set Vocabulary of the machine Current goal: to relate a high level language to instruction

More information

With Dreamweaver CS4, Adobe has radically

With Dreamweaver CS4, Adobe has radically Introduction to the Dreamweaver Interface With Dreamweaver CS4, Adobe has radically reengineered the Dreamweaver interface to provide a more unified experience across all of the Creative Suite applications.

More information

ai-cut plugin User Manual

ai-cut plugin User Manual User Manual Contents 1. Copyright Notice... 3 2. Installing ai-cut...5 2.1 Compatibility...5 2.2 Installation...5 2.2.1 Installing ai-cut on Windows...5 2.2.2 Installing ai-cut on Mac... 5 3. Using ai-cut...

More information

m At Ease 3.0 or later (earlier versions of At Ease are not supported)

m At Ease 3.0 or later (earlier versions of At Ease are not supported) 1 Getting Started The emate Classroom Exchange software allows you to connect one or several emates to a Mac OS computer and transfer information between the emate devices and the computer simultaneously.

More information

COPYRIGHTED MATERIAL PHOTOSHOP WORKSPACE. Interface Overview 3. Menus 15. The Toolbox 29. Palettes 61. Presets and Preferences 83 WEB TASKS

COPYRIGHTED MATERIAL PHOTOSHOP WORKSPACE. Interface Overview 3. Menus 15. The Toolbox 29. Palettes 61. Presets and Preferences 83 WEB TASKS PHOTOSHOP WORKSPACE CHAPTER 1 Interface Overview 3 CHAPTER 2 Menus 15 CHAPTER 3 The Toolbox 29 CHAPTER 4 Palettes 61 CHAPTER 5 Presets and Preferences 83 COPYRIGHTED MATERIAL PHOTOSHOP WORK SPACE UNIVERSAL

More information

4D Write. User Reference Mac OS and Windows Versions. 4D Write D SA/4D, Inc. All Rights reserved.

4D Write. User Reference Mac OS and Windows Versions. 4D Write D SA/4D, Inc. All Rights reserved. 4D Write User Reference Mac OS and Windows Versions 4D Write 1999-2002 4D SA/4D, Inc. All Rights reserved. 4D Write User Reference Version 6.8 for Mac OS and Windows Copyright 1999 2002 4D SA/4D, Inc.

More information

Press-Ready Cookbook Page Guidelines

Press-Ready Cookbook Page Guidelines Press-Ready Cookbook Page Guidelines table of contents These instructions are for all pages of your cookbook: Title Page, Special Pages, Table of Contents, Dividers, Recipe Pages, etc. WHAT IS PRESS-READY?

More information

Basic Concepts. Launching MultiAd Creator. To Create an Alias. file://c:\documents and Settings\Gary Horrie\Local Settings\Temp\~hh81F9.

Basic Concepts. Launching MultiAd Creator. To Create an Alias. file://c:\documents and Settings\Gary Horrie\Local Settings\Temp\~hh81F9. Page 1 of 71 This section describes several common tasks that you'll need to know in order to use Creator successfully. Examples include launching Creator and opening, saving and closing Creator documents.

More information

Basic Editing. Back to Contents. Tutorial PREMIERE 5.0. Lesson 1

Basic Editing. Back to Contents. Tutorial PREMIERE 5.0. Lesson 1 Back to Contents Tutorial PREMIERE 5.0 Lesson 1 Basic Editing Editing a video program is at the heart of the work you ll do with Adobe Premiere. Adobe Premiere makes it easy to trim video clips or other

More information

Overview of Adobe Fireworks

Overview of Adobe Fireworks Adobe Fireworks Overview of Adobe Fireworks In this guide, you ll learn how to do the following: Work with the Adobe Fireworks workspace: tools, Document windows, menus, and panels. Customize the workspace.

More information

ILLUSTRATOR TUTORIAL-1 workshop handout

ILLUSTRATOR TUTORIAL-1 workshop handout Why is Illustrator a powerful tool? ILLUSTRATOR TUTORIAL-1 workshop handout Computer graphics fall into two main categories, bitmap graphics and vector graphics. Adobe Illustrator is a vector based software

More information

Interface. 2. Interface Adobe InDesign CS2 H O T

Interface. 2. Interface Adobe InDesign CS2 H O T 2. Interface Adobe InDesign CS2 H O T 2 Interface The Welcome Screen Interface Overview The Toolbox Toolbox Fly-Out Menus InDesign Palettes Collapsing and Grouping Palettes Moving and Resizing Docked or

More information

Introduction to Windows

Introduction to Windows Introduction to Windows Naturally, if you have downloaded this document, you will already be to some extent anyway familiar with Windows. If so you can skip the first couple of pages and move on to the

More information

HP SmartStream Designer 21 For Adobe Illustrator

HP SmartStream Designer 21 For Adobe Illustrator HP SmartStream Designer 21 For Adobe Illustrator Readme HP Indigo Division Notice Copyright 2017 HP Development Company, L.P. All Rights Reserved. Reproduction, adaptation, or translation without prior

More information

Interface. 2. Interface Illustrator CS H O T

Interface. 2. Interface Illustrator CS H O T 2. Interface Illustrator CS H O T 2. Interface The Welcome Screen The Illustrator Workspace The Toolbox Keyboard Shortcuts Palette Control Setting Preferences no exercise files Illustrator CS H O T Illustrator

More information

DjVu Technology Primer

DjVu Technology Primer DjVu Technology Primer NOVEMBER 2004 LIZARDTECH, INC. OVERVIEW LizardTech s Document Express products are powered by DjVu, a technology developed in the late 1990s by a team of researchers at AT&T Labs.

More information

Three OPTIMIZING. Your System for Photoshop. Tuning for Performance

Three OPTIMIZING. Your System for Photoshop. Tuning for Performance Three OPTIMIZING Your System for Photoshop Tuning for Performance 72 Power, Speed & Automation with Adobe Photoshop This chapter goes beyond speeding up how you can work faster in Photoshop to how to make

More information

The diverse software in the Adobe Creative Suite enables you to create

The diverse software in the Adobe Creative Suite enables you to create 556010 Bk01Ch01.qxd 2/6/04 7:28 PM Page 9 Chapter 1: Introducing the Adobe Creative Suite In This Chapter Looking over InDesign Drawing with Illustrator Introducing Photoshop Getting started with Acrobat

More information

Solo 4.6 Release Notes

Solo 4.6 Release Notes June9, 2017 (Updated to include Solo 4.6.4 changes) Solo 4.6 Release Notes This release contains a number of new features, as well as enhancements to the user interface and overall performance. Together

More information

CPS311 Lecture: Procedures Last revised 9/9/13. Objectives:

CPS311 Lecture: Procedures Last revised 9/9/13. Objectives: CPS311 Lecture: Procedures Last revised 9/9/13 Objectives: 1. To introduce general issues that any architecture must address in terms of calling/returning from procedures, passing parameters (including

More information

9 Using Appearance Attributes, Styles, and Effects

9 Using Appearance Attributes, Styles, and Effects 9 Using Appearance Attributes, Styles, and Effects You can alter the look of an object without changing its structure using appearance attributes fills, strokes, effects, transparency, blending modes,

More information

Accelerated Library Framework for Hybrid-x86

Accelerated Library Framework for Hybrid-x86 Software Development Kit for Multicore Acceleration Version 3.0 Accelerated Library Framework for Hybrid-x86 Programmer s Guide and API Reference Version 1.0 DRAFT SC33-8406-00 Software Development Kit

More information

CHAPTER 1 COPYRIGHTED MATERIAL. Getting to Know AutoCAD. Opening a new drawing. Getting familiar with the AutoCAD and AutoCAD LT Graphics windows

CHAPTER 1 COPYRIGHTED MATERIAL. Getting to Know AutoCAD. Opening a new drawing. Getting familiar with the AutoCAD and AutoCAD LT Graphics windows CHAPTER 1 Getting to Know AutoCAD Opening a new drawing Getting familiar with the AutoCAD and AutoCAD LT Graphics windows Modifying the display Displaying and arranging toolbars COPYRIGHTED MATERIAL 2

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

Copyright Roland DG Corporation

Copyright Roland DG Corporation Quick Start Guide Thank you very much for purchasing this product. To ensure correct and safe usage with a full understanding of this product's performance, please be sure to read through this manual completely

More information

FinsGateway Network Service Provider SDK Manual. FinsGateway. Network Service Provider SDK Manual. (FinsGateway Communication Unit Addition)

FinsGateway Network Service Provider SDK Manual. FinsGateway. Network Service Provider SDK Manual. (FinsGateway Communication Unit Addition) Page: 1 FinsGateway Network Service Provider SDK Manual (FinsGateway Communication Unit Addition) First Edition Novenber 1999 OMRON Corporation Page: 2 Contents 1 Network Service Provider SDK...3 2 Copyright...4

More information

PHOTOSHOP WORKSPACE. Interface Overview. Menus. The Tools. Palettes. Presets and Preferences PHOTOSHOP WORKSPACE UNIVERSAL TASKS PHOTO AND VIDEO TASKS

PHOTOSHOP WORKSPACE. Interface Overview. Menus. The Tools. Palettes. Presets and Preferences PHOTOSHOP WORKSPACE UNIVERSAL TASKS PHOTO AND VIDEO TASKS 12/30/03 2:19 PM Page 1 CHAPTER 1 Interface Overview 3 AL Menus RI 13 27 CHAPTER 4 59 ED Palettes CHAPTER 5 87 PRINT TASKS PY R IG HT Presets and Preferences PHOTO AND VIDEO TASKS MA TE CHAPTER 3 The Tools

More information

TeamSpot 3. Introducing TeamSpot. TeamSpot 3 (rev. 25 October 2006)

TeamSpot 3. Introducing TeamSpot. TeamSpot 3 (rev. 25 October 2006) TeamSpot 3 Introducing TeamSpot TeamSpot 3 (rev. 25 October 2006) Table of Contents AN INTRODUCTION TO TEAMSPOT...3 INSTALLING AND CONNECTING (WINDOWS XP/2000)... 4 INSTALLING AND CONNECTING (MACINTOSH

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

EL6483: Brief Overview of C Programming Language

EL6483: Brief Overview of C Programming Language EL6483: Brief Overview of C Programming Language EL6483 Spring 2016 EL6483 EL6483: Brief Overview of C Programming Language Spring 2016 1 / 30 Preprocessor macros, Syntax for comments Macro definitions

More information

MerlinX Extension. For Adobe Creative Cloud Applications. MerlinOne Inc. 17 Whitney Road Quincy, MA T (617)

MerlinX Extension. For Adobe Creative Cloud Applications. MerlinOne Inc. 17 Whitney Road Quincy, MA T (617) MerlinX Extension For Adobe Creative Cloud Applications 17 Whitney Road Quincy, MA 02169 T (617) 328-6645 http://www.merlinone.com Table of Contents Table of Contents 1 Introduction 3 Installing the Extension

More information

WPS Workbench. user guide. "To help guide you through using the WPS user interface (Workbench) to create, edit and run programs"

WPS Workbench. user guide. To help guide you through using the WPS user interface (Workbench) to create, edit and run programs WPS Workbench user guide "To help guide you through using the WPS user interface (Workbench) to create, edit and run programs" Version: 3.1.7 Copyright 2002-2018 World Programming Limited www.worldprogramming.com

More information

Getting Started with Transparency

Getting Started with Transparency Getting Started with Transparency Using Adobe Creative Suite 2 Software 1 Introduction to transparency 3 Creating transparency effects 4 Saving, exporting, and printing files with transparency 7 Transparency-related

More information

Chapter 2. Operating-System Structures

Chapter 2. Operating-System Structures Chapter 2 Operating-System Structures 2.1 Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

What s New in Adobe InDesign CS4 Products SDK

What s New in Adobe InDesign CS4 Products SDK What s New in Adobe InDesign CS4 Products SDK For the benefit of previous users, this document summarizes the changes to the SDK in this release. C++ IDE Requirements On Windows, the required C++ development

More information

Installing Komplete 5 with Direct Install

Installing Komplete 5 with Direct Install Installing Komplete 5 with Direct Install This document discusses how to use Receptor s Direct Install feature to install and update Komplete 5, its plugins, and its libraries. In order to install Komplete

More information

A Tour of Photoshop Elements 8 What s what and what it does

A Tour of Photoshop Elements 8 What s what and what it does The Muvipix.com Guide to Photoshop Elements & Premiere Elements 8 Chapter 2 A Tour of Photoshop Elements 8 What s what and what it does Welcome to Photoshop Elements a terrific, affordable photo retouching

More information

We do not teach programming

We do not teach programming We do not teach programming We do not teach C Take a course Read a book The C Programming Language, Kernighan, Richie Georgios Georgiadis Negin F.Nejad This is a brief tutorial on C s traps and pitfalls

More information

Microsoft Expression Studio 4 Editions

Microsoft Expression Studio 4 Editions Quick Start Guide Addendum for Version 4 Information in this document, including URL and other Internet website references, is subject to change without notice. Unless otherwise noted, the companies, organizations,

More information

CID-Keyed Font Technology Overview

CID-Keyed Font Technology Overview CID-Keyed Font Technology Overview Adobe Developer Support Technical Note #5092 12 September 1994 Adobe Systems Incorporated Adobe Developer Technologies 345 Park Avenue San Jose, CA 95110 http://partners.adobe.com/

More information

Tetra4D Reviewer. Version 5.1. User Guide. Details on how to use Tetra4D Reviewer.

Tetra4D Reviewer. Version 5.1. User Guide. Details on how to use Tetra4D Reviewer. Tetra4D Reviewer Version 5.1 User Guide Details on how to use Tetra4D Reviewer. ii Contents Chapter 1: Work area... 7 Looking at the work area... 7 Toolbars and toolbar presets... 8 About toolbars and

More information

For Windows users: <install drive>:\program Files\Adobe\PageMaker 7.0\Converter for MSP_QXP\Converter for MSP_QXP.pdf

For Windows users: <install drive>:\program Files\Adobe\PageMaker 7.0\Converter for MSP_QXP\Converter for MSP_QXP.pdf ADOBE PAGEMAKER 7.0 Application ReadMe for Windows and Macintosh Editions This document includes supplementary or last minute information not covered in Adobe PageMaker 7.0 documentation or online help.

More information

Thank you very much for purchasing this product.

Thank you very much for purchasing this product. Quick Start Guide Thank you very much for purchasing this product. To ensure correct and safe usage with a full understanding of this product's performance, please be sure to read through this manual completely

More information

Automatically search for holes and locate hole centers to offset measurement

Automatically search for holes and locate hole centers to offset measurement New Tools in PolyWorks 2018 InnovMetric Software Inc. All rights reserved. PolyWorks is a registered trademark of InnovMetric Software Inc. InnovMetric, PolyWorks Inspector, PolyWorks Modeler, PolyWorks

More information

Read Me First! Start Here. Read Me First! Start Here.

Read Me First! Start Here. Read Me First! Start Here. Getting Started with for Mac OS JAVA Welcome! Hardware Software Disk Space B A S I C S Y S T E M R E Q U I R E M E N T S Classic Mac OS development PowerPC 601 or greater processor (no 68K support), 64

More information

Lesson 5: Multimedia on the Web

Lesson 5: Multimedia on the Web Lesson 5: Multimedia on the Web Learning Targets I can: Define objects and their relationships to multimedia Explain the fundamentals of C, C++, Java, JavaScript, JScript, C#, ActiveX and VBScript Discuss

More information

HP SmartStream Designer 22 For Adobe Illustrator

HP SmartStream Designer 22 For Adobe Illustrator HP SmartStream Designer 22 For Adobe Illustrator Readme HP Indigo Division Notice Copyright 2018 HP Development Company, L.P. All Rights Reserved. Reproduction, adaptation, or translation without prior

More information

Drawing shapes and lines

Drawing shapes and lines Fine F Fi i Handmade H d d Ch Chocolates l Hours Mon Sat 10am 6pm In this demonstration of Adobe Illustrator CS6, you will be introduced to new and exciting application features, like gradients on a stroke

More information

IBM. Software Development Kit for Multicore Acceleration, Version 3.0. SPU Timer Library Programmer s Guide and API Reference

IBM. Software Development Kit for Multicore Acceleration, Version 3.0. SPU Timer Library Programmer s Guide and API Reference IBM Software Development Kit for Multicore Acceleration, Version 3.0 SPU Timer Library Programmer s Guide and API Reference Note: Before using this information and the product it supports, read the information

More information

The History behind Object Tools A Quick Overview

The History behind Object Tools A Quick Overview The History behind Object Tools Object Tools is a 4D plug-in from Automated Solutions Group that allows a developer to create objects. Objects are used to store 4D data items that can be retrieved on a

More information

Windows Device Driver and API Reference Manual

Windows Device Driver and API Reference Manual Windows Device Driver and API Reference Manual 797 North Grove Rd, Suite 101 Richardson, TX 75081 Phone: (972) 671-9570 www.redrapids.com Red Rapids Red Rapids reserves the right to alter product specifications

More information

Xerox FreeFlow Print Server Clear Dry Ink User Guide Bring out the shine!

Xerox FreeFlow Print Server Clear Dry Ink User Guide Bring out the shine! Helpful Tips when Designing with Clear Dry Ink Xerox Color 800/1000 Presses FreeFlow Print Server Clear Dry Ink User Guide Dry Ink in itself adds a certain amount of sheen to the page. To maximize the

More information

Eclipse 4. Brian de Alwis. Abstract

Eclipse 4. Brian de Alwis. Abstract Eclipse 4 Brian de Alwis Abstract This year's Juno release sees the mainstream deployment of Eclipse 4, the new application platform from the Eclipse Foundation. Over four years in the making, Eclipse

More information

For Windows users: <install drive>:\program Files\Adobe\PageMaker 7.0\Converter for MSP_QXP\Converter for MSP_QXP.pdf

For Windows users: <install drive>:\program Files\Adobe\PageMaker 7.0\Converter for MSP_QXP\Converter for MSP_QXP.pdf ADOBE PAGEMAKER 7.0.1 Application ReadMe for Windows and Macintosh Editions This document includes supplementary or last minute information not covered in Adobe PageMaker 7.0.1 documentation or online

More information

Libgdb. Version 0.3 Oct Thomas Lord

Libgdb. Version 0.3 Oct Thomas Lord Libgdb Version 0.3 Oct 1993 Thomas Lord Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

More information

Product Enhancements May 2011

Product Enhancements May 2011 Product Enhancements May 2011 Features Product Enhancements May 2011 As part of our ongoing commitment to providing you with the most powerful, easy-to-use investment research tool, MarketSmith will implement

More information

WEB GRAPHICS ADOBE PHOTOSHOP CS3. Learning Outcomes:

WEB GRAPHICS ADOBE PHOTOSHOP CS3. Learning Outcomes: WEB GRAPHICS ADOBE PHOTOSHOP CS3 Learning Outcomes: At the end of the course the participant will Design layouts for web pages, Paper Adverts, Brouchers, CD Covers, Package Designing Event and Exhibition

More information

CodeWarrior Development Tools IDE 5.1 SDK Developer s Guide

CodeWarrior Development Tools IDE 5.1 SDK Developer s Guide CodeWarrior Development Tools IDE 5.1 SDK Developer s Guide Revised: 9/27/02 Metrowerks, the Metrowerks insignia, and CodeWarrior are registered trademarks of Metrowerks Corp. in the US and/or other countries.

More information

Adobe Photoshop CS6 Voluntary Product Accessibility Template

Adobe Photoshop CS6 Voluntary Product Accessibility Template Adobe Photoshop CS6 Voluntary Product Accessibility Template The purpose of the Voluntary Product Accessibility Template is to assist Federal contracting officials in making preliminary assessments regarding

More information

INTERACTIVE EDITING WITH

INTERACTIVE EDITING WITH INTERACTIVE EDITING WITH 1.0 Interactive Editing with Artlandia LivePresets User Guide Version 1 Artlandia, Inc. How to Contact Artlandia Web http://www.artlandia.com General information info@artlandia.com

More information

NDA ISSUE 1 STOCK # MATWorX 32 User s Guide. December, NEC America, Inc.

NDA ISSUE 1 STOCK # MATWorX 32 User s Guide. December, NEC America, Inc. NDA-24215 ISSUE 1 STOCK # 151942 MATWorX 32 User s Guide December, 1997 NEC America, Inc. LIABILITY DISCLAIMER NEC America, Inc. reserves the right to change the specifications, functions, or features,

More information

JScript Reference. Contents

JScript Reference. Contents JScript Reference Contents Exploring the JScript Language JScript Example Altium Designer and Borland Delphi Run Time Libraries Server Processes JScript Source Files PRJSCR, JS and DFM files About JScript

More information

Adobe InDesign CS6 Tutorial

Adobe InDesign CS6 Tutorial Adobe InDesign CS6 Tutorial Adobe InDesign CS6 is a page-layout software that takes print publishing and page design beyond current boundaries. InDesign is a desktop publishing program that incorporates

More information

Welcome to the world of Flash, one of today s hottest applications for

Welcome to the world of Flash, one of today s hottest applications for Chapter 1: Getting Started with Flash 9 In This Chapter Creating and saving new documents Getting familiar with the workspace and tools Managing your workspace and panels Thinking about FLA and SWF file

More information

A process. the stack

A process. the stack A process Processes Johan Montelius What is a process?... a computation KTH 2017 a program i.e. a sequence of operations a set of data structures a set of registers means to interact with other processes

More information

with TestComplete 12 Desktop, Web, and Mobile Testing Tutorials

with TestComplete 12 Desktop, Web, and Mobile Testing Tutorials with TestComplete 12 Desktop, Web, and Mobile Testing Tutorials 2 About the Tutorial With TestComplete, you can test applications of three major types: desktop, web and mobile: Desktop applications - these

More information

CS 4300 Computer Graphics

CS 4300 Computer Graphics CS 4300 Computer Graphics Prof. Harriet Fell Fall 2011 Lecture 8 September 22, 2011 GUIs GUIs in modern operating systems cross-platform GUI frameworks common GUI widgets event-driven programming Model-View-Controller

More information

Worksheet #4. Foundations of Programming Languages, WS 2014/15. December 4, 2014

Worksheet #4. Foundations of Programming Languages, WS 2014/15. December 4, 2014 Worksheet #4 Foundations of Programming Languages, WS 2014/15 December 4, 2014 In this exercise we will re-examine the techniques used for automatic memory management and implement a Cheney-style garbage

More information

Inspiration Quick Start Tutorial

Inspiration Quick Start Tutorial Inspiration Quick Start Tutorial 1 Inspiration Quick Start Tutorial This tutorial is a great starting point for learning how to use Inspiration. Please plan on about 45 minutes from start to finish. If

More information

Doing a flash animation for animb

Doing a flash animation for animb Doing a flash animation for animb Mathieu Clabaut May 22, 2008 Introduction This tutorial should provide the user with a tour through the most important functionalities allowing to build a flash animation

More information

Simple Text Setting Calculations for PostScript Language Drivers

Simple Text Setting Calculations for PostScript Language Drivers Simple Text Setting Calculations for PostScript Language Drivers Adobe Developer Support Technical Note #5041 31 March 1992 Adobe Systems Incorporated Adobe Developer Technologies 345 Park Avenue San Jose,

More information

Step-by-Step Guide to. Creating High Resolution Adobe Acrobat PDFs from your Desktop Applications

Step-by-Step Guide to. Creating High Resolution Adobe Acrobat PDFs from your Desktop Applications Step-by-Step Guide to Creating High Resolution Adobe Acrobat PDFs from your Desktop Applications This guide has been created in-house at GAM to better help you, the client, with creating an easy to print;

More information

CodeWarrior Kernel-Aware Debug API

CodeWarrior Kernel-Aware Debug API CodeWarrior Kernel-Aware Debug API Revised: 17 October 2006 Freescale and the Freescale logo are trademarks of Freescale Semiconductor, Inc. CodeWarrior is a trademark or registered trademark of Freescale

More information

IBM Rational Rhapsody Gateway Add On. User Guide

IBM Rational Rhapsody Gateway Add On. User Guide User Guide Rhapsody IBM Rational Rhapsody Gateway Add On User Guide License Agreement No part of this publication may be reproduced, transmitted, stored in a retrieval system, nor translated into any

More information

Building Web Sites Using the EPiServer Content Framework

Building Web Sites Using the EPiServer Content Framework Building Web Sites Using the EPiServer Content Framework Product version: 4.60 Document version: 1.0 Document creation date: 28-03-2006 Purpose A major part in the creation of a Web site using EPiServer

More information

Industrial Centre The Hong Kong Polytechnic University

Industrial Centre The Hong Kong Polytechnic University Industrial Centre The Hong Kong Polytechnic University Microsoft Image Composer 1.5 Simon C.S. Hui Kevin H.K. Yip Creating graphic for web page using Microsoft Image Composer 1.5 Background : Image Composer

More information

The Myx Architectural Style

The Myx Architectural Style The Myx Architectural Style The goal of the Myx architectural style is to serve as an architectural style that is good for building flexible, high performance tool-integrating environments. A secondary

More information

Photoshop Domain 3: Setting Project Requirements. Dreamweaver Domain 3

Photoshop Domain 3: Setting Project Requirements. Dreamweaver Domain 3 Photoshop Domain 3: Setting Project Requirements 1 Objectives Identify elements of the Photoshop CS5 user interface and demonstrate knowledge of their functions. Demonstrate knowledge of layers and masks.

More information

This book will help you quickly create your first documents, spreadsheets, and slideshows.

This book will help you quickly create your first documents, spreadsheets, and slideshows. Getting Started Welcome to iwork 08 Preface This book will help you quickly create your first documents, spreadsheets, and slideshows. iwork 08 includes three applications that integrate seamlessly with

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

A brief introduction to C programming for Java programmers

A brief introduction to C programming for Java programmers A brief introduction to C programming for Java programmers Sven Gestegård Robertz September 2017 There are many similarities between Java and C. The syntax in Java is basically

More information

Photofont Start 2.0. for Macintosh and Windows. User Manual

Photofont Start 2.0. for Macintosh and Windows. User Manual Photofont Start 2.0 for Macintosh and Windows User Manual PhotoFont Start Copyright 1992-2007 by Fontlab, Ltd. All rights reserved. No part of this publication may be reproduced, stored in a retrieval

More information

EMC Documentum Composer

EMC Documentum Composer EMC Documentum Composer Version 6.0 SP1.5 User Guide P/N 300 005 253 A02 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com Copyright 2008 EMC Corporation. All

More information

A Guide to Quark Publishing Platform Adapter for InDesign and InCopy 12.0

A Guide to Quark Publishing Platform Adapter for InDesign and InCopy 12.0 A Guide to Quark Publishing Platform Adapter for InDesign and InCopy 12.0 CONTENTS Contents Introduction...4 The Quark Publishing Platform User Interface (InDesign and InCopy).5 Menus (Adobe InDesign)...5

More information

Graphic Inspector 2 User Guide

Graphic Inspector 2 User Guide www.zevrix.com support@zevrix.com Graphic Inspector 2 User Guide Installation & System Requirements 2 Scanning Files and Folders 2 Checkup Presets 3 File Table and Info Panel 4 Export Data 5 Support 6

More information

AUTOMATOR REFERENCE MANUAL

AUTOMATOR REFERENCE MANUAL AUTOMATOR REFERENCE MANUAL Improvision, Viscount Centre II, University of Warwick Science Park, Millburn Hill Road, Coventry, CV4 7HS Tel: +44 (0) 24 7669 2229 Fax: +44 (0) 24 7669 0091 e-mail: admin@improvision.com

More information

PART I. The Lay of the Land. CHAPTER 1: Exploring SharePoint Designer

PART I. The Lay of the Land. CHAPTER 1: Exploring SharePoint Designer PART I RI AL The Lay of the Land CO PY RI GH TE D MA TE CHAPTER 1: Exploring SharePoint Designer 1Exploring SharePoint Designer WHAT YOU WILL LEARN IN THIS CHAPTER How SharePoint Designer fits into Microsoft

More information

Web Client Manual. for Macintosh and Windows. Group Logic Inc Fax: Internet:

Web Client Manual. for Macintosh and Windows. Group Logic Inc Fax: Internet: Web Client Manual for Macintosh and Windows Group Logic Inc. 703-528-1555 Fax: 703-527-2567 Email: info@grouplogic.com Internet: www.grouplogic.com Copyright (C) 1995-2007 Group Logic Incorporated. All

More information

Heap Arrays. Steven R. Bagley

Heap Arrays. Steven R. Bagley Heap Arrays Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index a[42] = 35; Variables and arrays have a type int, char, double,

More information

Photoshop tutorial: Final Product in Photoshop:

Photoshop tutorial: Final Product in Photoshop: Disclaimer: There are many, many ways to approach web design. This tutorial is neither the most cutting-edge nor most efficient. Instead, this tutorial is set-up to show you as many functions in Photoshop

More information