Home
Indigo Rose Software Indigo Rose Plugin SDK
Contents
1. lt Arg gt lt Arguments gt lt Action gt lt Action gt lt Name gt IRClipboard GetText lt Name gt lt Description gt Retrieves text from the Windows clipboard lt Description gt lt ReturnValueType gt string lt ReturnValueType gt lt Arguments gt Page 37 Indigo Rose Plugin SDK lt Arguments gt lt Action gt lt Action gt lt Name gt IRClipboard IsTextAvailable lt Name gt lt Description gt Determines whether text is available on the Windows clipboard lt Description gt lt ReturnValueType gt boolean lt ReturnValueType gt lt Arguments gt lt Arguments gt lt Action gt lt ActionTemplates gt lt ActionTemplates gt This is the main tag This tag must surround all of the other action XML data lt Action gt The tag that surrounds a single action You can have one or more Action tags per file lt Name gt The name of the action Make sure that this name exactly matches the name that you mapped into the Lua engine Also try to use the dot notation as it helps avoid naming conflicts That is use MyPlugin MyFunction not just MyFunction lt Description gt The description of the action as it will appear in the action wizard at design time lt ReturnValueT ype gt The return value type Although Lua is a typeless language this will indicate to the user what kind of return value to expect if any This field can be empty if your action does not return
2. video web input hotspot listbox tree 99 66 dr 66 combobox progress plugin or all Page 41 Indigo Rose Plugin SDK tree combobox and progress are only supported in AutoPlay Media Studio 6 0 The plugin constraint will show all plugins on the page regardless of the plugin type Use the data type pluginobject if you want to filter by a certain type of plugin The all option will display all objects on the page multiline Multiline text editing This will allow the user to type into the field as well as providing a browse button that will open the text editor complete with spell checking Same as the constraints for string pagename Supported in AutoPlay Media Studio only Shows a combo box filled with the names of all pages currently in the project The user can also type in a name or variable if they want to None proj_folder An editable field with a browse button that allows the user to select a folder from their project None color Shows a color selector field None pluginobject Supported in AutoPlay Media Studio only Shows a combo box filled with plugin objects of a certain type The type of plugin object to accept This will be the internal identifier of the plugin object which is usually only known by the plugin author Button Supported in Setup F
3. Indigo Rose Plugin SDK lt Version gt This identifies the version of the button file As of this writing all button files whould use 1 0 as the version This field is there so that if the button file format changes in the future programs can identify which version of the file format it uses lt Type gt The default type of the button 0 push button 1 toggle button Note that this just tells the program that uses the button what the preferred or default button type is and does not necessarily mean that the button will not or cannot be used with the other style lt Info gt This section contains a number of fields that can be used to specify custom descriptive information about the button and its author Although all of these fields are optional it is a good idea to at least fill in the lt Name gt and lt Desc gt fields lt HitThreshold gt The alpha value at or below which a mouse hit will return FALSE Use 1 to have the mouse always hit at all points This allows you to create the effect of non rectangular objects You see button files support 32 bit images with alpha channels in the form of PNG files By setting this threshold you can tell the host program that the button is not hit if the mouse is over a transparent or semi transparent area of the current state s image If you do not understand this feature it is usually safe to leave the setting at 200 lt Caption gt This section lets you specify defau
4. in A pointer to a SIZE structure for your class to fill in Returns Nothing CIRPIuginObject IsWindowedObject Purpose To return whether or not the plugin is a windowed object Windowed objects are objects that will create their own window for the object A non windowed object is one that will draw itself directly onto the run time windows client area For example the Shape object that ships with AutoPlay Media Studio is a non windowed object whereas the Slider one is The only real difference that this makes to the run time engine is how it passes screen co ordinates to the plugin Page 51 Indigo Rose Plugin SDK Prototype virtual BOOL IsWindowedObject Parameters None Returns TRUE if the plugin is a windowed object or FALSE if not CIRPIuginObject GetWindowHandle Purpose To return the handle to the objects window if it is a windowed object The run time uses this handle for things such as determining if the object has input focus Prototype virtual HWND GetWindowHandle Parameters None Returns The handle to the object s window if it has one Otherwise NULL CIRPIuginObject DrawDesign Purpose This function draws the object on the screen at design time This function will only be called when the object is displayed at design time Prototype virtual void DrawDesign HDC hDC HWND hMainWnd RECT rcObRect BOOL bVisible BOOL bEnabled Parameters hDC in A handle to
5. to the upper left corner of the page area Returns Nothing CIRPluginObject OnLBtnUp Purpose To handle the left mouse button being released over object s area at run time Note that windowed objects may not ever get this message from the run time but will Page 58 Indigo Rose Plugin SDK have to catch this in their own message handlers This is generally where an On Click event would take place Prototype virtual void OnLBtnUp HWND hWndParent POINT ptMousePos RECT rcObRect Parameters hWndParent in A handle to the run time window s page view area ptMousePos in A POINT structure containing the mouse coordinates relative to the upper left corner of the run time window s client area rcObRect in A RECT structure that contains the object s coordinates and size relative to the upper left corner of the page area Returns Nothing CIRPluginObject OnLBtnDoubleClick Purpose To handle the left mouse button being double clicked over object s area at run time Note that windowed objects may not ever get this message from the run time but will have to catch this in their own message handlers Prototype virtual void OnLBtnDoubleClick HWND hWndParent POINT ptMousePos RECT rcObRect Parameters hWndParent in A handle to the run time window s page view area ptMousePos in A POINT structure containing the mouse coordinates relative to the upper left c
6. FALSE if it failed irPlg ShowHelpForAction Purpose To show help information for a specific action in the plugin What exactly this function does is completely up to you Usually opening an html document either locally or on the Internet is sufficient Prototype bool irPlg ShowHelpForAction char lpszActionName char lpszPluginPath HWND hParentWnd Parameters IpszActionName in A pointer to a character buffer that contains the name of the action to show help for IpszPluginPath in A pointer to a character buffer that contains the folder that the plugin is currently located in This can be useful if you want to open a help file from the same folder hParentWnd in A handle to the window that is calling the function It is sometimes necessary to have this value when opening files Returns TRUE if the help was successfully displayed or FALSE if it failed irPlg GetAuthorlnfo Purpose To return information about the plugin and its author This information will be displayed in the About Plugin screen at design time Prototype int irPlg GetAuthorInfo char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the author info of the transition This information can contain and be formatted in any way that you wish pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of c
7. For example vt_Sunset png Page 20 Indigo Rose Plugin SDK Dependency Plugins This section applies to e AutoPlay Media Studio 5 0 e AutoPlay Media Studio 6 0 Dependency plugins are files that tell AutoPlay Media Studio how to detect certain technologies and applications at run time Required Skills In order to create dependency plugins you will need to be proficient with AutoPlay Media Studio s scripting language and the available actions Other minor skills include the ability to create and edit zip archives as well as a familiarity with XML Detection Files Dependency plugins are implemented in files called detection files that have the file extension det They are located in the Plugins Detect subfolder of the AutoPlay Media Studio installation folder Detection files are available to AutoPlay Media Studio projects through the Dependencies screen select Project gt Dependencies from the menu This screen dynamically displays all available detection files Page 21 Indigo Rose Plugin SDK Dependencies x By Applications F Dialog Choose Ea to Detect er 4 0 or Adobe Acrobat 4 0 4 0 0 0 Fiintemet Explorer ActiveX Control 4 1 0 0 Macromedia Flash Activex Control 6 0 0 0 Microsoft Excel Viewer 97 or Microsoft Excel 97 8 0 0 0 Microsoft PowerPoint Viewer 97 or Microsoft PowerPoint 97 8 0 0 0 Microsoft Word Viewer 97 or Microsoft Word 97 8 0 0 0 QuickTime Activex Cont
8. The mass of men lead lives of quiet S confirmed desperation From the de confirmed desperation From the de country and have to console yours country and have to console yours stereotyped but unconscious despe stereotyped but unconscious despe games and amusements of mankin games and amusements of mankin work But it is a characteristic of wi work But it is a characteristic of wi When we consider what to use the When we consider what to use the chief end of man and what are the chief end of man and what are the ese baol dell eed A osse so id see es lew A A AAA A rus or DUS vo Standard Transports Skinned Transports These skin files are nothing more than image files with certain specific requirements The sections below will describe these image files in more detail Paragraph Scrollbars Paragraph scrollbars are really one large image made up of 19 smaller images Each small image must be square height and width the same and can vary in size from 16x16 to 48x48 So for example a paragraph scrollbar image that contains 16x16 images must be 304x16 pixels in size For example VODIVDOVH I NVI 13 Page 17 Indigo Rose Plugin SDK Note The above image is called sb_Corporate png and is included in the Samples subfolder in the SDK folder These images can be 24 bit non transparent or 32 bit with alpha transparency png only Here is a description of each image indexed from at the
9. a value Be sure to stick to string number boolean or table as return values Note Even though Lua functions can return multiple return values we do not recommend doing so in your action plugins because it breaks from the standard used in Indigo Rose products and will not work as well with the intellisense code editing and action wizard lt Arguments gt This tag will surround all of your action s arguments This can be an empty tag Your action does not have to accept arguments lt Arg gt Surrounds a single argument Page 38 Indigo Rose Plugin SDK lt Name gt The name of the argument This argument name does not truly mean anything except to help describe the argument itself to the user lt Description gt The argument s description This should be a simple one line description of what the argument is for The description will be seen by the user in the action wizard lt Type gt The argument type Although Lua is a typeless language this will indicate to the user what kind of value to pass in All arguments must have a type Be sure to stick to string number boolean table or variant meaning it can take any type of argument as types lt Default gt The default value of the argument Use this only if your C code for the action is able to deal with an argument not being supplied Also all arguments that support defaults should be at the end o
10. an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the transition s author information If you return 1 be sure that you set pnBufferSize to the number of characters actually required irPlg_IsValidLicense Purpose To determine if license information for the plugin is valid The license information comes from a license file that is located in the same folder as your plugin DLL at design time License files are covered in more detail in the topic License Files on page 30 Prototype bool irPlg_IsValidLicense char lpszLicenseInfo Parameters IpszLicenselnfo in A pointer to a character buffer that contains text from the license file Returns TRUE is the license information is valid or FALSE if it is not If you return FALSE the user will not be able to use the transition irPlg_Transition_GetSettings Purpose To display and update the transition s custom settings This function takes in the current settings of the plugin displays a dialog that allows the user to change the settings and then returns the new settings back to the calling program Note that the transition s settings are completely arbitrary and specific to the transition You can supply any kind and amount of data as long as it is
11. be explained more in the next section Prototype CIRPluginObject irPlg_Object_CreateObject Parameters None Returns A pointer to a CIRPluginObject derived class irPlg Object DeleteObject Purpose Destroy an instance of a previously created CIRPluginObject derived class The CIRPluginObject class will be explained more in the next section Prototype void irPlg Object DeleteObject CIRPluginObject pObject Parameters pObject in A pointer to a previously created CIRPluginObject derived class Returns Page 48 Indigo Rose Plugin SDK Nothing irPlg GetlRPluginObjectVersion Purpose To return the version of the CIRPluginObject class to the calling program This function should always return the defined constant IR PLUGIN CLASS VERSION This function is used to ensure future compatibility Prototype int irPlg_GetIRPluginObjectVersion Parameters None Returns A numeric value which should always be the value IR PLUGIN CLASS VERSION which is defined in TRPluginObject h irPlg_GetDependencies OPTIONAL Please see the explanation for this function in the action plugin section on page 36 irPlg Object GetFonts OPTIONAL Purpose To return information about fonts required by the plugin This function will be called at build time and will cause any fonts used by the plugin to be collected by the internal font manager and included in the application This interface is optional and
12. identify different versions of your plugin It can be any version number but it should be in the format HAHA Prototype int irPlg_GetPluginVersion char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the version of the plugin pnBufferSize in out pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the plugin s version If you return 1 be sure that you set pnBufferSize to the number of characters actually required irPlg ShowHelpForPlugin Purpose To show help information for the plugin What exactly this function does is completely up to you Usually opening an html document either locally or on the Internet is sufficient Prototype Page 33 Indigo Rose Plugin SDK bool irPlg ShowHelpForPlugin char lpszPluginPath HWND hParentWnd Parameters IpszPluginPath in A pointer to a character buffer that contains the folder that the plugin is currently located in This can be useful if you want to open a help file from the same folder hParent Wnd in A handle to the window that is calling the function It is sometimes necessary to have this value when opening files Returns TRUE if the help was successfully displayed or
13. page transition plugin DLL irPlg_GetPluginName Purpose To return the name of the transition effect to the calling program Prototype int irPlg_GetPluginName char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the name of the transition pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the transition s name If you return 1 be sure that you set pnBufferSize to the number of characters actually required Page 26 Indigo Rose Plugin SDK irPlg_GetPluginVersion Purpose To return the version of the transition effect to the calling program This version number is used to identify different versions of your plugin It can be any version number but it should be in the format HHAHH Prototype int irPlg_GetPluginVersion char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the version of the transition pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copi
14. page area Returns Page 57 Indigo Rose Plugin SDK Nothing CIRPIuginObject OnMouseLeave Purpose To handle the mouse leaving the object s area at run time Note that windowed objects may not ever get this message from the run time but will have to catch this in their own message handlers Prototype virtual void OnMouseLeave HWND hWndParent POINT ptMousePos RECT rcObRect Parameters hWndParent in A handle to the run time windows page view area ptMousePos in A POINT structure containing the mouse coordinates relative to the upper left corner of the run time window s client area rcObRect in A RECT structure that contains the object s coordinates and size relative to the upper left corner of the page area Returns None CIRPluginObject OnLBtnDown Purpose To handle the left mouse button being pressed down object s area at run time Note that windowed objects may not ever get this message from the run time but will have to catch this in their own message handlers Prototype virtual void OnLBtnDown HWND hWndParent POINT ptMousePos RECT rcObRect Parameters hWndParent in A handle to the run time window s page view area ptMousePos in A POINT structure containing the mouse coordinates relative to the upper left corner of the run time window s client area rcObRect in A RECT structure that contains the object s coordinates and size relative
15. that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the XML If you return 1 be sure that you set pnBufferSize to the number of characters actually required irPlg_GetLuaVersion Purpose To tell the calling program which version of Lua the plugin links to Prototype Page 35 Indigo Rose Plugin SDK int irPlg GetLuaVersion char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the Lua version pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the Lua version string If you return 1 be sure that you set pnBufferSize to the number of characters actually required Note This function should always return LUA VERSION which is defined in lua h irPlg_Action_RegisterActions Purpose To add the plugin s actions to the Lua engine at run time Prototype int irPlg_Action_RegisterActions lua_State L Parameters L in out A pointer to the lua State structure that is used by the run time pro
16. the device context that the object can use to draw to hMainWnd in A handle to the parent window of the object the design environment s page view area rcObRect in A RECT structure that contains the coordinates and size of the object relative to the upper left corner of the page area The object should not draw outside of this area bVisible in Whether the object is visible at design time or not If FALSE the function should not draw the object and should destroy or hide the object s window if applicable bEnabled in Whether the object should be drawn in a disabled state Objects do not have to show a disabled representation Returns Page 52 Indigo Rose Plugin SDK Nothing CIRPIuginObject DrawRun time Purpose This function draws the object on the screen at run time This function will only be called when the object is displayed at run time Prototype virtual void DrawRun time HDC hDC HWND hMainWnd RECT rcObRect BOOL bVisible BOOL bEnabled Parameters hDC in A handle to the device context that the object can use to draw to hMainWnd in A handle to the parent window of the object the run time windows client area rcObRect in A RECT structure that contains the coordinates and size of the object The object should not draw outside of this area bVisible in Whether the object is visible at run time or not If FALSE the function should not draw the object and shou
17. time will be able to automatically change the cursor for windowed objects so they should generally return FALSE Page 55 Indigo Rose Plugin SDK Prototype virtual BOOL LetAMSHandleCursorChange Parameters None Returns TRUE if the AutoPlay Media Studio run time should handle cursor changes automatically or FALSE if the plugin handles it internally CIRPluginObject LetAMSHandleSounds Purpose To tell the run time engine whether you want it to handle mouse over and mouse down sounds according to the Plugin object s properties at design time or not In general this is only really an option for non windowed objects It is unlikely that AutoPlay Media Studio run time will be able to automatically play sounds for windowed objects so they should generally return FALSE Prototype virtual BOOL LetAMSHandleSounds Parameters None Returns TRUE if the AutoPlay Media Studio run time should handle sounds automatically or FALSE if the plugin handles it internally CIRPluginObject LetAMSHandleT ooltip Purpose To tell the run time engine whether you want it to handle the displaying of tooltips according to the Plugin object s properties at design time or not In general this is only really an option for non windowed objects It is unlikely that AutoPlay Media Studio run time will be able to automatically display tooltips for windowed objects so they should generally return FALSE Prototype virtual BOOL
18. valid ASCII text Prototype int irPlg Transition GetSettings char szCurrentSettings HWND hParent char szNewSettings int nNewSettingsSize Parameters szCurrent Settings in A pointer to a character buffer that contains the current settings This string can be empty if it was not previously initialized Page 28 Indigo Rose Plugin SDK hParent in A handle to the parent window This can be useful when showing properties dialogs as child windows szNewSettings out A pointer to a character buffer that will receive the new settings for the transition nNewsSettingsSize in out A pointer to an integer that contains the number of characters in szNewSettings on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the transition s settings If you return 1 be sure that you set pnBufferSize to the number of characters actually required irPlg_Transition_DoPageTransition Purpose This is the function that actually gets called at run time to perform the transition on the screen Prototype void irPlg Transition DoPageTransition HDC hCurrentPage HDC hNextPage SIZE sizeImage POINT ptOffset HWND hWindow char szSettings Parameters hCurrentPage in A device context handle to the current page that is the page that is being transitioned f
19. 54 CIRPIuginObject GetNumEvent ie Re AA Re ee AA RA ee ek de ee eke ee ee 54 CIRPIuginObject GetEvent ii Re ee RA ee ee AR Re ee ee ee GR RR ee ee ee ee RR Re ee ee 55 CIRPIuginObject Registerl UAFunCHONS ie RA ee AR RA ee ee ee GR RR ee ee ee 55 CIRPIuginObject LetAMSHandleCursorChange iese ee ee AA ee ee ee RR Re ee ee 55 CIRPIuginObject LetAMSHandleSounds ie Re AA ee ee ee GR RR ee ee ee 56 CIRPIuginObject LetAMSHandleTOoIHD ie ee RR ee RR ee ee ke ee GR RR cnn 56 CIRPIuginObject CanSetFOCUS iii ee RA AR RR AA ee ke ee RR AA ee ee ee ee RR Re ee ee 57 CIRPIuginObject DoSetFOCUS ii ee AA RA ee AR AA ee ee ee RR AA ee ee ee ee GR RR ee ee ee 57 CIRPIuginObject OnMouseOVer ee RA AA Re AA RA ee ee eke ee ee 57 CIRPIuginObject OnMouseLeave ie Re ee AA ee ee ee AR RR ee ee ee ee ee GR RR ee ee ee 58 CIRPIuginObject OnLBINDOWN ee RA Ee AR RR ee ee ee AR RA ee ee ee ee GR RA ee ee ee 58 CIRPIuginObject OnLBtnUp ie AA AR RR ee ee AR RA ee ee ee ee ee RR Re ee ee ee ee 58 CIRPIuginObject OnLBinDouble Click RA ER RA ee ee ee GR RA cnn 59 CIRPIuginObject OnRBinDown ee RR EE RR RR ee ee AR RR ee ee ee ee ee RR ee ee ee 59 CIRPIuginObject OnRBENUPD RR ee AR RR ee ee ee AR RR ee ee ee ee ee GR RA ee ee ee 60 Page 6 Indigo Rose Plugin SDK CJP PiuoimcCObiect COofiGintoublecChck nc nn nn nn GR RR cnn 60 CIRPluginObject FireEVeNt ooooocccnnnconocccoconancconanoncnconnnnnnnnnnonnn ee ek Ak R
20. A ee rra cnn ek nn ee ee ee 61 CIRPIuginObject GetObjecHD ee RA RR RA ee AR RA ee ee ee ee AR Re ee ee ee ee 61 CIRPluginObject ShowWiNdOW ooccconcccoccccnnncconanononcccnnccconnnonnnnccnnnccnnnnanrn nn nn nnncnnnnarnnnnnnns 61 CIRPluginObject m_pLuaStale ooooocccnnccccocccccnccconanononccnnnnccnnnnnnrn cnn nn nn cnn naar nn cnn nn nn ee RR anno 62 CIRPIuginObject m szZObjeCHD see RR Ee RR RR ee ee ee AR RR nn nn nn nc ee GR Re cnn 62 IRLUA PLUGIN Getbiechf iese ee ee Re Re Re Re Re Re ee ee Re ee Re ee ee ee ee 62 IRLUA PLUGIN Gedawcbiect eise ee Re Re Re Re Re Re ee ee Re ee Re ee ee ee ee 62 DISTRIBUTING OBJECT EE UGINE 63 INT AND TIRS 63 SE A A O 63 Test Your Plugin Thoroughly iii ee ee RA ee ee RR RA ee ee ee ee RR RA ee ee nn ee anar nc ee ee ee 63 Page 7 Indigo Rose Plugin SDK Introduction This document covers creating add ons and plugins for Indigo Rose s suite of development tools Namely AutoPlay Media Studio v5 0 Setup Factory v7 0 TrueUpdate v2 0 and Visual Patch v2 0 Note that all of the sections in this document do not apply to all of these products Each section denotes which products the information applies to Topics Covered In this document we will cover the following ways in which to extend Indigo Rose products Buttons Indigo Rose Corporation has created a simple file format for multi state button files that is used by AutoPlay Media Studio These buttons are easy to
21. Direct email or telephone technical support is not provided by Indigo Rose Corporation for any SDK issues including but not limited to creating buttons plugins or images However there is a forum devoted to this subject at http www indigorose com where you can discuss plugin development issues with other developers and Indigo Rose staff Page 9 Indigo Rose Plugin SDK Buttons This section applies to e AutoPlay Media Studio 5 0 e AutoPlay Media Studio 6 0 Introduction Button objects are powerful objects that are natively supported in AutoPlay Media Studio Buttons are simply interactive graphical elements that support multiple states as well as caption text Here is a button in normal state Here it is when the mouse cursor passes over it There are actually two types of buttons or more correctly two ways in which a button can be used as a push button or a toggle button A push button called Standard in AutoPlay Media Studio is the most common type of button and is the kind you usually see in Windows programs A push button presses down when the mouse clicks on it and then comes back up when the mouse button is released or the mouse cursor leaves the button s area A toggle button is a button that remembers its state That is the first time that you click it with the mouse it stays down The next time you click it it comes back up Either way it remains in the last state that you put it in either up or do
22. GEER GER GE ERGE GESE ERGE RE ER ER DREK ERGE EER ER ER PR EE BR SE nd 8 Page Transition ae n OE OO EE N 8 lee Be EE 8 ee 1911 2 0 e 8 Re 9 TECHNICAE SUPPORTE AES 9 BUNNS 10 geleet EE 10 BUTTON FILES EXPLAINED esse ee ee ee ee ee ee ee ee ee ed ee ee ee ke ee ee de ee RA ee ee de ee ee AA ee de ee ee ee ke ee ee 11 Ee te ES annesinin ani anaiena enhan ea aa e ea aa aa a aeai aaa ai a aan 11 Ups Normal secrets tare AAA AAA A a 11 Up HIGKIIGN EE EE SATS ANG SANG ANSA EG ANAS DAG ANS DAG ANNAS DATING 11 Up DiSADICO ee 11 Down Normal ee 12 Bol e E e ee er 12 Down DEE AA 12 THEMANIEESTE IE GE EN trees 12 SIR BUUUONS RE EE EE N 13 EE EE RE RE ER EE iaesnnnsbansbans bansnnnneassaes 14 DEEL ER ER EE ME ee palacios 14 le EE 14 E A Re ee AR Re ee ee AR RA ee ee ee RR AA ee ee ee AR AA ee ee ee GR RR ee ee ee 14 ie Te ER OE OR OE 14 HALO SOU ER canesasooasasonscacssaseeasasonsdanssanneetaaes 15 THE AUTOPLAY MEDIA STUDIO BUTTON MAKER iese ees ee ee ee ee ee ee eek ee ee de ee ee eke ee ee ee ee ee ekke 15 DISTRIBUTING BUTTON FLESH 16 ONTO SKINS Sn en 17 PARAGRAPH DGCHROLLBARS nan n EAEE RR rn ee ek ke ee nn rre ee ke ee ee ee 17 VIDEO TRANSPORT CONTROLS aan 19 Page 3 Indigo Rose Plugin SDK DISTRIBUTING CONTROL SKIN EES 20 DEPENDENCY PLUGINS EE GE GR KS RS ike 21 REQUIRED SKILLS ARE tannete RE EE 21 DETECTION FILES SE IE DE A DE DR ae 21 Configuration File cna ER ER ER Ee kb SR ee Ee SR GR Ge iin 23 ITT 24 A Sb Sk Sk EE 25 DIST
23. Indigo Rose Software Indigo Rose Plugin SDK Revision 1 0 1 0 Indigo Rose Plugin SDK Proprietary Notice The software described in this document is a proprietary product of Indigo Rose Software Design Corporation and is furnished to the user under a license for use as specified in the license agreement The software may be used or copied only in accordance with the terms of the agreement Information in this document is subject to change without notice and does not represent a commitment on the part of Indigo Rose Software Design Corporation No part of this document may be reproduced transmitted transcribed stored in any retrieval system or translated into any language without the express written permission of Indigo Rose Software Design Corporation Trademarks AutoPlay Media Studio Setup Factory Visual Patch TrueUpdate and the Indigo Rose logo are trademarks of Indigo Rose Software Design Corporation All other trademarks and registered trademarks mentioned in this document are the property of their respective owners Copyright Copyright 2003 2005 Indigo Rose Software Design Corporation All Rights Reserved FMOD sound and music system is copyright Firelight Technologies Pty Ltd 1994 2003 LUA is copyright 2003 Tecgraf PUC Rio Page 2 Indigo Rose Plugin SDK Table of Contents INTRODUCTION eee 8 TOPICS COVERED ENEE 8 BUON Sii 8 PA MEE EE AE AE AE 8 Dependency Plugins EER SESSE EREE REEKSE EES ERGE ERGE RE
24. LetAMSHandleTooltip Parameters None Returns TRUE if the AutoPlay Media Studio run time should handle tooltip displaying automatically or FALSE if the plugin handles it internally Page 56 Indigo Rose Plugin SDK CIRPIuginObject CanSetFocus Purpose To tell the run time engine whether your object is capable of having input focus In general only windowed objects can have input focus Prototype virtual BOOL CanSetFocus Parameters None Returns TRUE if the plugin s object can have input focus or FALSE if not CIRPIuginObject DoSetFocus Purpose To set the input focus to the object In general only windowed objects can have the input focus Prototype virtual void DoSetFocus Parameters None Returns Nothing CIRPIuginObject OnMouseOver Purpose To handle the mouse moving over the object s area at run time Note that windowed objects may not ever get this message from the run time but will have to catch this in their own message handlers Prototype virtual void OnMouseOver HWND hWndParent POINT ptMousePos RECT rcObRect Parameters hWndParent in A handle to the run time window s page view area ptMousePos in A POINT structure containing the mouse coordinates relative to the upper left corner of the run time window s client area rcObRect in A RECT structure that contains the object s coordinates and size relative to the upper left corner of the
25. PIG ISVANGLICONS Cs AA 35 IFPIQ GetPIUGINACHIONX ML sg Se Rd Abels 35 PIO COLA VEO 35 irPlg Action RegisterACHONS ie RA ER RA ee ee RR nn ee ee ee RR ee ee ee ee 36 irPlg GetDependencies OPTIONAL ii ee RA RR Re ee ee ee GR RR Re ee ee ee 36 IN dE en ie PAR EE 37 Action SOEN SE EE OE RE OE OE ER RE basse 38 Sn EO dies 38 AE RR ER OE LO EE OE 38 AB Ee dai RE RR RR RR EE EE 38 lt PRELUNVAIUC TY IA 38 lt Arg umen s 38 A ee eda 38 Name unna 39 Re A EE EE EE EE EE EE EE EE reer Terre 39 ke EE OE EE EE ED IN 39 BENE EE EO N 39 ae Ee MR OER EE AE OO OE OE OE 39 AI ER RR ER RR ER EE ER l caios 39 SIELE OE OE OE AA AA A OE IG 39 BEEN Ge SS ONE EER TT OR RE ER TR 40 INCLUDING THE ANINE 43 SEET 43 Adding the Lua Library to Your Droe 44 More About the Lua Library 45 INCLUDING IRPLUGINHELPERFUNCTIONS Lesse see ee ee ee ee ee ee ee ee dd ee ee ek ee ee dd ee ee ek ee ee ed ee ee ee 45 DISTRIBUTING ACTION PLUGINS iese ee Re ed ee RA nn ee ee ee ek ee ee ed ee ee ee 45 PINTS RE EE ER EE EE EO EE OO EES 45 Sample COTO E SMEER RE ORR E 45 Test Your Plugin Thoroughly OR RE OE EE EE N 46 OBJECT PLUGINS coincidan 47 REQUIRED Gig 47 OBJECT PLUGIN RIES Te 47 REQUIRED EXPORTED FUNCTIONS iese sesse ee ee ee ee ee ee ee ee ee ee ee ek de ee dd ee nan n rr nn carr rr ee ee ee ee 47 e die EE le le 47 Page 5 Indigo Rose Plugin SDK irPlg GetPluginVersion AA Re AR RA ee ee AA RR AA ee ee ee AR RA ee ee ee ee GR Re ee
26. RIBUTING DEPENDENCY PLUGINS anrrrrvnvnnnnnnnnnrrrnnnnnnnnrnnnnnrrnnneennnrnnnnnrrnnnneeesrnnnnnrrrnneenesernnnnnn 25 PAGE TRANSITION PLUGINS ue 26 ales line KEES AE ER EE Na 26 PAGE TRANSITION FILES iese sesde ee ee ee ee ee ee dd ee ee ee RA ee ee ee ee Ad ee ee ek ke ee ed ee ee ek ee ee ed ee 26 REQUIRED EXPORTED se Nee SA EE EE EE OE 26 e ORE ie TAIN EE 26 AE NATA A 27 IPlo ZGhomeiotorfiuoin cnn anar n nn ee ke ee ee RR Re ee ee ee 27 AC Ee lee DE 27 Plos IS Ee ET initia RA tind did 28 irPIg Transition GetSettings a eee a 28 irPlg Transition DoPageTransition oooocococccnnccoooccconnnoconnnonnnccnnnncnnnnnnnn cnn nn arc RR nn ee ee ee 29 blo Geienendencles AAA 30 LICENSE FILES Trana deren tues AS 30 DISTRIBUTING PAGE TRANSITION PLUGINS iese see ee ee ee ee ee ee ee Re ee ek ee ee de ee ee 30 HINTS AND TIRS penge Ee de eege ere Dee ee 31 Sample COG RS REK EE EE EE EE ee 31 Making Transitions Hamen 31 Test Your Plugin 1419 AAA II tebie atinan ira AAAA RnS ETE EEn 31 engl en ME KE 32 REQUIRED SKILLS Arsene 32 ACTIONPLUGINELES LAS 32 REQUIRED EXPORTED FUNGTIONS vinn nnnnenennnanenennnanenennnansnennnansnenst 32 De lie E le ln 33 EPI GETPIUQINV OF SION A EN ee 33 irPlg ZGhomeiotorfiuoin RA ee ee ee ee AA RR ee ee ee ee ee RR Re ee ee ee 33 blo ZGhoatelotor ction cnn cnn cnn RA ee ke ee RA ee ee ee ee 34 Page 4 Indigo Rose Plugin SDK MESA IA RR ee AA AR RA ee ek AA ee AR RR ee ed ee kk RA ee ek kk ee GE ee ee ee 34 I
27. The small horizontal thumbtack This will be used if the size of the horizontal thumbtack is too small to accommodate a multi part thumbtack Otherwise images 13 15 will be used 17 The tracking area behind the thumbtack on the vertical scrollbar 18 The tracking area behind the thumbtack on the horizontal scrollbar 19 The area in the bottom right corner of the paragraph object if both vertical and horizontal scrollbars are displayed Video Transport Controls The custom video transport controls are really one large image made up of 15 smaller images Each small image must be square height and width the same and can vary in size from 16x16 to 48x48 So for example a paragraph scrollbar image that contains 16x16 images must be 240x16 pixels in size For example COC TD TOO ALD Note The above image is called vt_Corporate png file is in the Samples subfolder of the SDK folder These images can be 24 bit non transparent or 32 bit with alpha transparency png only Here is a description of each image indexed from at the left to 15 at the right Index Use 1 The play button in normal state 2 The play button when the mouse is over it but the left mouse button is Page 19 Indigo Rose Plugin SDK not pressed 3 The play button when the mouse is over it and the left mouse button is pressed 4 The pause button in norm
28. actory TrueUpdate and Visual Patch only Shows a combo box filled with button objects None Button Supported in Setup Factory TrueUpdate and Visual Patch only Shows a combo box filled with Button objects None CheckBox Supported in Setup Factory TrueUpdate and Visual Patch only Shows a combo box filled with CheckBox objects None ComboBox Supported in Setup Factory TrueUpdate and Visual Patch None Page 42 Indigo Rose Plugin SDK only Shows a combo box filled with ComboBox objects EditField Supported in Setup Factory None TrueUpdate and Visual Patch only Shows a combo box filled with EditField objects ComboBox Supported in Setup Factory None TrueUpdate and Visual Patch only Shows a combo box filled with ComboBoxobjects ListBox Supported in Setup Factory None TrueUpdate and Visual Patch only Shows a combo box filled with ListBox objects ProgressBar Supported in Setup Factory None TrueUpdate and Visual Patch only Shows a combo box filled with ProgressBar objects RadioButton Supported in Setup Factory None TrueUpdate and Visual Patch only Shows a combo box filled with RadioButton objects ScrollingText Supported in Setup Factory None TrueUpdate and Visual Patch only Shows a combo box filled with ScrollingText objects SelectPackages Supported in Setup Factory None only Shows a combo box filled w
29. actually required Specifying Action XML The XML string that is returned by the irPlg_GetPluginActionXML function must be formatted in a specific format This is the same format used by Indigo Rose to specify action information for the products built in actions You can take a look at these files in the Data Actions subfolder of the product s application folder This XML is only for the use of the design environment It has no real affect on how your actions are called or what they do It is just there for the sake of the action wizard editor and the intellisense editor when typing script You do not have to provide this XML but without it users may have a harder time using your plugin However if you are just making a plugin for your own use you can just return an empty string as XML if you wish Here is some sample action XML data lt ActionTemplates gt lt Action gt lt Name gt IRClipboard CopyText lt Name gt lt Description gt Copies text to the Windows clipboard lt Description gt lt ReturnValueType gt lt ReturnValueType gt lt Arguments gt lt Arg gt lt Name gt Text lt Name gt lt Description gt The text to copy to the clipboard lt Description gt lt Type gt string lt Type gt Default gt lt Default gt Required gt 1 lt Required gt EasyMode gt lt Default gt My Text lt Default gt lt DataType gt string lt DataType gt lt Constraints gt none lt Constraints gt lt EasyMode gt NA N
30. aking Transitions Happen The best way to make a transition happen is to use the Windows API function BitBlt to copy rectangle areas from the hNextPage to hCurrentPage Take a look at the Wipe transition source code to see how it is done Of course you can use any method that you wish assuming that you can do it with the variable passed into the irPlg_Transition_DoPageTransition function Test Your Plugin Thoroughly Make sure to fully test your plugin before sharing it with others Try it with all sorts of window sizes and types Make sure that you test it with the kiosk mode It is important to test it thoroughly because a buggy plugin could cause the entire run time to crash Page 31 Indigo Rose Plugin SDK Action Plugins This section applies to AutoPlay Media Studio 5 0 AutoPlay Media Studio 6 0 Setup Factory 7 0 TrueUpdate 2 0 Visual Patch 2 0 Action plugins allow you to extend the actions that ship with the product Using action plugins you can add new actions in a very seamless manner Required Skills You will need the following skills to create action plugins C or C programming Be able to create Windows DLLs A familiarity with the Lua C API Knowledge of working with XML Action Plugin Files Action plugin files are Windows DLLs that have the file extension Imd These DLLs expose a certain set of exported functions that the product uses for informational and functional purposes The integration of act
31. al state 5 The pause button when the mouse is over it but the left mouse button is not pressed 6 The pause button when the mouse is over it and the left mouse button is pressed 7 The stop button in normal state 8 The stop button when the mouse is over it but the left mouse button is not pressed 9 The stop button when the mouse is over it and the left mouse button is pressed 10 The left portion of the slider area behind the slider thumbtack 11 The center portion of the slider area behind the slider thumbtack 12 The right portion of the slider area behind the slider thumbtack 13 The slider thumbtack button in normal state 14 The slider thumbtack button when the mouse is over it but the left mouse button is not pressed 15 The slider thumbtack button when the mouse is over it and the left mouse button is pressed Distributing Control Skin Files Control skin files are automatically scanned and ready for use in AutoPlay Media Studio as long as they are in the correct folders Scrollbar skins should be located in the Plugins Scrollbars subfolder of the AutoPlay Media Studio installation folder In order to be recognized all scrollbar skins must start with the prefix sb_ For example sb_Funky Red png Video transport skins should be located in the Plugins Transports subfolder of the AutoPlay Media Studio installation folder In order to be recognized all scrollbar skins must start with the prefix vt
32. cause problems Note that the product run times as well as the SDK Lua distribution links to the multithreaded static versions of the C run time libraries so your plugins should do the same Including IRPIuginHelperFunctions Indigo Rose has provided a set of functions that may prove useful when developing your actions in plugin DLLs These functions are located in the files IRPluginHelperFunctions h and IRPluginHelperFunctions cpp which are located in the Includes subfolder of the SDK folder The functions in these files are well commented within the source files and are used in many of the sample projects Although you do not have to use these functions to make plugins they can certainly help Distributing Action Plugins The action plugin DLL Imd file the license file lic and any accompanying help files should be copied to a unique subfolder of the Plugins Actions subfolder of the product installation folder in order to be visible to the design environment For example Plugins Actions MyPlugin Hints and Tips Here are some things that may help you out when creating action plugins Sample Code An entire sample Visual C 6 0 project is available for you to see and learn from It is the source code used to produce the IRClipboard plugin that ships with all Indigo Rose products This project is located in the Samples IRClipboard subfolder of the SDK folder This project will show you all of the details behi
33. create and there is even a custom made tool available for their creation and editing Control Skins The paragraph and video objects support the use of custom image maps to represent their scrollbars and transport controls This allows you to create attractive skins for these controls Dependency Plugins Dependency plugins allow you to create scripts that can be used to detect various applications and technologies at run time Page Transition Plugins In this product the transitions that can occur between pages are implemented through page transition plugins Action Plugins Sometimes you need functionality that is not provided by the product s actions nor possible to create with scripts alone In these cases it is possible to create action plugins that can extend the product to do almost anything Object Plugins Object plugins allow you to add new custom objects to AutoPlay Media Studio This enables you to create very powerful flexible applications Page 8 Indigo Rose Plugin SDK SDK Files There are a number of files that are provided to help you use this SDK These files are located in the folder where you installed the SDK There is a subfolder called Samples that contains sample Visual C projects made with Visual C 6 0 SP5 as well as some image and button samples and a subfolder called Includes that contains the source files needed to create action and object plugins Technical Support
34. does not need to be exposed if not applicable to the plugin Prototype int irPlg Object GetFonts CIRPluginObject pObject char szBuffer int pnBufferSize Parameters pObject in A pointer to a previously created CIRPluginObject derived class szBuffer out A pointer to a character buffer that will receive the font information This information must be XML formatted in the following format lt PluginFonts gt lt Font gt lt Weight gt lt Weight gt lt Italic gt lt Italic gt lt CharSet gt lt CharSet gt lt FaceName gt lt FaceName gt lt StyleName gt lt StyleName gt lt Font gt lt PluginFonts gt Page 49 Indigo Rose Plugin SDK You may have one or more lt Font gt entries These entries have the values from the Windows API LOGFONT structure Usually your object will be using more information than the above to create and use fonts at runtime but these are all that is needed to properly include the font at built time Example lt PluginFonts gt lt Font gt lt Weight gt 700 lt Weight gt lt Italic gt 1 lt Italic gt lt CharSet gt 0 lt CharSet gt lt FaceName gt Palatino Linotype lt FaceName gt lt StyleName gt Bold Italic lt StyleName gt lt Font gt lt Font gt lt Weight gt 400 lt Weight gt lt Italic gt 0 lt Italic gt lt CharSet gt 0 lt CharSet gt lt FaceName gt Arial lt FaceName gt lt StyleName gt Regular lt StyleName gt lt Font gt lt PluginFo
35. e of your Lua script file within the detection zip file lt ScriptFnc gt The name of the function within the ScriptFile that should be called in order to detect the technology More details about the script file and script function are in the next section lt Image gt The name of the image file that will be used to represent the technology at run time The file named here must exist in the detection zip file Page 23 Indigo Rose Plugin SDK lt DefMinVer gt The default minimum version of the technology or application that should be used for the dependency plugin at design time The user can change this value according to their needs Try to choose a version that you think would be the most commonly needed by developers lt DefMessage gt The default instructions that will appear with the missing technology at run time The user can change this according to their needs at design time lt DefLink gt The default link that will be executed if the end user double clicks on the technology at run time The user can change this according to their needs at design time Although this can be a link to a local file it is best to use a Web address as a default lt DefVar gt The default variable that will be used to store the detected version of the technology at run time The user can change this according to their needs at design time Try to use a variable name that is very specific to your dependency plugin It is also a g
36. ed to the buffer or 1 if the buffer was not large enough to contain the transition s version If you return 1 be sure that you set pnBufferSize to the number of characters actually required irPlg ShowHelpForPlugin Purpose To show help information for the transition plugin Note This function is not currently called from AutoPlay Media Studio 5 0 It is here for compatibility purposes and for possible future use For now it is fine to just return TRUE Prototype bool irPlg ShowHelpForPlugin char lpszPluginPath HWND hParentWnd Parameters IpszPluginPath in A pointer to a character buffer that contains the folder that the plugin is currently located in This can be useful if you want to open a help file from the same folder hParentWnd in A handle to the window that is calling the function It is sometimes necessary to have this value when opening files Returns TRUE if the help was successfully displayed or FALSE if it failed irPlg GetAuthorlnfo Purpose To return information about the plugin and its author This information will be displayed in the About Plugin screen at design time Prototype int irPlg GetAuthorInfo char szBuffer int pnBufferSize Page 27 Indigo Rose Plugin SDK Parameters szBuffer out A pointer to a character buffer that will receive the author info of the transition This information can contain and be formatted in any way that you wish pnBufferSize in out A pointer to
37. edia Flash ActiveX Control lt Description gt lt Author gt Indigo Rose Corporation lt Author gt lt Email gt support indigorose com lt Email gt lt Web gt http www indigorose com lt Web gt lt Copyright gt Copyright 2003 Indigo Rose Corporation lt Copyright gt lt Info gt lt Name gt Macromedia Flash ActiveX Control lt Name gt lt ScriptFile gt flashax lua lt ScriptFile gt lt ScriptFcn gt ir GetFlashAXVersion lt ScriptFcn gt lt Image gt flash bmp lt Image gt lt DefMinVer gt 6 0 0 0 lt DefMinVer gt lt DefMessage gt Click here to download the newest Flash control lt DefMessage gt lt DefLink gt http www macromedia com lt DefLink gt lt DefVar gt FlashVer lt DefVar gt lt MissingTechConfig gt lt Info gt Allows you to specify information about you the plugin author This information will be displayed on the Dependencies screen at design time lt Name gt The name of the dependency that you are detecting This name should precisely describe the technology or application that your script will detect For example if you make a detection file that detects Microsoft Word make sure that you specify in the name the exact version that it will detect For example if you have tested and verified that the script detects Microsoft Word 97 and up but have not tested it with earlier versions specify that in the name by using something like Microsoft Word 97 lt ScriptFile gt The nam
38. ee ee 47 irPlg GetPluginActionXML ee RA EE RA ee ee AR RR ee ee ee ee RR Re ee ee ee 48 IFPIQ SHOWHEIDFOrACHON EE EE EE EE N 48 e lie ee Ee Ur E 48 Plg isValidlieenses SEO REL EE EE Ee ee ida EE 48 IWPIQ2 GELLUAVENSION N OR OE ER A 48 PIG OTAN E 48 irPlg Object CreateObjeCH ee RR ee RR RA ee ee AR RA ee ee ee GR RA nn ee ee ee ee 48 e lie Object Delete Object aida tt N Ee EE Ed Ee 48 IPlo GeibiPluoiocbiechVereion nn cnn nn cn ee RR RA ee ee ee ee 49 irPlg GetDependencies OPTIONAL ii ee RR AR RR Re ee ee ee RR Re ee ee ee 49 irPlg Object GetFonts OPTIONAL eie ee RA RR RA ee ee ee ee RR Re ee ee ee 49 irPlg Object TranslateMessage OPTIONAL i e Re ee RR Re ee RR Re ee ee ee 50 THE GIRPLUGINOBJEGT CLASS see anaa Ek GE eg GE EE EE ee ee eg ee EE Ee 51 CIRPIuginObject GetDefaultSize iii ee RA AR AA ee ee AR RA ee ee ee ee ee 51 CIRPIuginObject IsWindowedObjecC ee Re AR RA ee AR AA ee ee ee GR RR ee ee ee 51 CIRPIuginObject GetlmdouwHandle ee Re AE RA ee AR AA ee ee ee GR RR ee ee ee 52 CIRPluginObject DrawDesiQD oooooocnnincnoocccccnnnconanooncnconccnnonnnnrnn cnn Ak RA cnn nan ner eke ee ee 52 CIRPIuginObject DrawRun me 53 CIRPIuginObject GetCustomProperties i iii Re RR ee ee AR AA ee ee ee GR Re ee ee 53 CIRPIuginObject SetCustomProperlieS iii ee AA ee AR AA ee ee ee GR RR ee ee ee 54 CIRPIuginObject ShowProperties ie Re AA ee ee AR Re ee ee ee ee RR ee ee ee
39. ent Note that the arguments should be in the form of properly formed Lua script as it will be passed to the event verbatim Returns Nothing CIRPIuginObject GetObjectID Purpose Gets the unique ID of the plugin object This is not a virtual function so you should not override it All that this function basically does is to return the value of the member variable m szObjectID Make sure to set this value in your constructor This ID must be completely unique to your plugin Prototype int GetObjectID char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the ID of the object pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the properties If you return 1 be sure that you set pnBufferSize to the number of characters actually required CIRPIuginObject ShowWindow Purpose Called at run time to have the plugin object show or hide its window It is usually only necessary to implement this function in your derived class if your plugin is a windowed object Page 61 Indigo Rose Plugin SDK Prototype void ShowWindow BOOL bVisible Parameters bVisible in A boolean that tells the function whether t
40. ex in The index of the event to return information about pEventInfo out A pointer to an already allocated IRPluginEventInfo structure This structur is defined in IRPluginObject h It consists of the name of the event as well as a prototype for any event arguments that it supports Returns TRUE if the requested event index was found and the structure successfully filled with event information CIRPIuginObject RegisterLUAFunctions Purpose To register any actions that might be provided by the plugin with the Lua engine at run time Note Your derived class should ALWAYS call the base class function before making its own modifications to the Lua engine CIRPluginObject RegisterLUAFunctions L Doing this will ensure that the class m pLuaState member variable gets set properly Prototype virtual int RegisterLUAFunctions lua State L Parameters L in out A pointer to the lua State structure that is used by the run time program This instance of the Lua engine has been properly initialized so all that you need to do is to register your functions and variables Returns 0 if successful any other number if not CIRPluginObject LetAMSHandleCursorChange Purpose To tell the run time engine whether you want it to handle cursor changes according to the Plugin object s properties at design time or not In general this is only really an option for non windowed objects It is unlikely that AutoPlay Media Studio run
41. f the arguments list together string MyPlugin MyFunction string Text number Option 1 boolean Switch true Note that this default value is only really significant when the user is typing script into the editor when the tooltip with the function prototype appears and means nothing to the action wizard lt Required gt Whether the argument is required or optional Use 0 for not required or 1 for required As a rule arguments without defaults are required and arguments with defaults are not required lt EasyMode gt This section specifies information for the argument that will only be used in the action editor The information will not be used when typing in seript mode lt Default gt The default value for the argument This is not the same as the Default tag outside of the EasyMode section This is simply the default value that will appear when the user creates a new action in the action wizard It is there to help them out with a default value You do not have to provide a default value Page 39 Indigo Rose Plugin SDK lt DataType gt lt Constraints gt The type of data that the argument uses This will help the action editor determine which kind of grid cell to use for the argument The Constraints tag is used to further modify which kind of data that the grid cell will accept Here is a description of the various acceptable data types and the constraints that apply to them lt DataType gt Descript
42. fest File Every button contains a manifest file called _manifest xml This file contains all of the information that AutoPlay Media Studio or any other program needs to know in order to properly display a button file The manifest file is in XML format XML is simply specially marked text that allows you to organize and describe data in a text file You can open an XML file with notepad or any other text editor Try extracting and opening the manifest file of a button file You will see something like this lt IR_Button gt lt Version gt 1 0 lt Version gt lt Type gt 0 lt Type gt lt Info gt lt Name gt Blue Diamond lt Name gt Desc gt Shimmering water upon a deep blue background lt Desc gt Author gt Indigo Rose Software lt Author gt Copyright gt Copyright 2003 Indigo Rose Software lt Copyright gt U lt lt lt Co lt URL gt http www indigorose com lt URL gt lt Em Email gt sales indigorose com lt Email gt lt Other gt lt Other gt lt Info gt lt Hit Threshold gt 200 lt HitThreshold gt lt Caption gt lt Text gt Click Here lt Text gt lt Font gt lt Face gt Arial lt Face gt lt CharSet gt 0 lt CharSet gt lt Size gt 12 lt Size gt lt Bold gt 0 lt Bold gt lt Italic gt 0 lt lt Italic gt Page 12 Indigo Rose Plugin SDK lt Underline gt 0 lt Underline gt lt Strikeout gt 0 lt Strikeout gt lt Font gt lt CenterX gt 50 lt CenterX gt lt CenterY gt 50
43. g Preparada ze Dm Type Standard Copyright Copyright 2 200 wa _ od Em B Caption Taxt Chick Here Port Verdana t EE LE E EEE KIL A ott E Down Nomel down png Down Highight down pag Deen Disabled drabled pg Coren e Distributing Button Files Button files can be dragged and dropped onto AutoPlay Media Studio from any folder on your system from Windows Explorer However if you would like to make your buttons readily available to your projects they should be copied to the Gallery folder The Gallery folder is a subfolder of the AutoPlay Media Studio installation folder Usually it is located at C Program Files AutoPlay Media Studio version Gallery Specifically you should copy your button files to a custom subfolder of the Gallery Buttons folder For example C Program Files AutoPlay Media Studio version Gallery Buttons My_Buttons This way they will show up in the Gallery pane inside of AutoPlay Media Studio and will be easily accessible Page 16 Indigo Rose Plugin SDK Control Skins This section applies to e AutoPlay Media Studio 5 0 e AutoPlay Media Studio 6 0 There are two built in AutoPlay Media Studio objects that support custom skinning They are the paragraph and video objects Both of these objects have default views that don t use skins but they can both be enabled to use custom skins as well The mass of men lead lives of quiet
44. gram This instance of the Lua engine has been properly initialized so all that you need to do is to register your functions and variables Returns Zero if success some other number if it fails irPlg_GetDependencies OPTIONAL Purpose To return additional dependency files required by the plugin This function should return only the filenames of files needed by the plugin at run time in a bar CT separated string The files must be located in the same folder as the plugin file at design time For example support dillsplash png tells the product to collect and bring along the files support dll and splash png with the plugin at build time These files will be copied to the same folder as the plugin file This interface is optional and does not need to be exposed if not applicable to the plugin Prototype int irPlg_GetDependencies char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the list of dependency files Page 36 Indigo Rose Plugin SDK pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the dependency files string If you return 1 be sure that you set pnBufferSize to the number of characters
45. haracters actually copied to the buffer on the way out Returns Page 34 Indigo Rose Plugin SDK The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the plugin s author information If you return 1 be sure that you set pnBufferSize to the number of characters actually required irPlg IsValidLicense Purpose To determine if license information for the plugin is valid The license information comes from a license file that is located in the same folder as your plugin DLL at design time License files are covered in more detail in the topic License Files on page 30 Prototype bool irPlg IsValidLicense char lpszLicenselInfo Parameters IpszLicenselnfo in A pointer to a character buffer that contains text from the license file Returns TRUE is the license information is valid or FALSE if it is not If you return FALSE the user will not be able to use the transition irPlg GetPluginActionXML Purpose The calling program will call this function to retrieve information about all of the actions that are provided in this plugin The function should return the information in XML format The XML formatting details are covered elsewhere in this document Prototype int irplg GetPluginActionXML char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the XML pnBufferSize in out A pointer to an integer
46. he class itself it is a helper function that is defined in IRPluginObject h It is used to force the run time engine to redraw the object that you name This is useful when you have made changes to a property of the plugin through actions and you need to force the display to update the object Page 62 Indigo Rose Plugin SDK Prototype void IRLUA PLUGIN RedrawObject lua State luaState LPCTSTR strObjectName Parameters luaState in A pointer to the run time engine s lua_State structure strObjectName in The name of the object that you want to redraw Returns Nothing Distributing Object Plugins The object plugin DLL apo file the license file lic and any accompanying help files should be copied to a unique subfolder of the Plugins Objects subfolder of the AutoPlay Media Studio installation folder in order to be visible to the design environment For example Plugins Objects MyPlugin Hints and Tips Here are some things that may help you out when creating object plugins Sample Code Two sample Visual C 6 0 projects are available for you to see and learn from They are the source code used to produce the Shape and Slider plugins that ship with AutoPlay Media Studio The projects are in the Samples Slider and Samples Shape subfolders of the SDK folder These projects will show you how to make both windowed and non windowed objects Note that this DLL statically links to MFC f
47. he mouse coordinates relative to the upper left corner of the run time window s client area rcObRect in A RECT structure that contains the object s coordinates and size relative to the upper left corner of the page area Returns Nothing CIRPluginObject OnRBtnDoubleClick Purpose To handle the right mouse button being double clicked over object s area at run time Note that windowed objects may not ever get this message from the run time but will have to catch this in their own message handlers Prototype virtual void OnRBtnDoubleClick HWND hWndParent POINT ptMousePos RECT rcObRect Parameters hWndParent in A handle to the run time window s page view area ptMousePos in A POINT structure containing the mouse coordinates relative to the upper left corner of the run time window s client area rcObRect in A RECT structure that contains the object s coordinates and size relative to the upper left corner of the page area Page 60 Indigo Rose Plugin SDK Returns Nothing CIRPluginObject FireEvent Purpose Allows the object to fire one of its own events This is not a virtual function It is part of the base class to provide this functionality Prototype void FireEvent LPCTSTR strEventName LPCTSTR strArguments Parameters strEventName in The name of the event to fire strArguments in A string containing the arguments to be passed to the ev
48. ile The image file is a small bmp image that will be used to represent your technology at run time EC Missing Applications x This program requires the following free technologies which cannot be located on your system Please double click on an item to find out how to install the technology Macromedia Flash Ac 6 0 Continue The image file should be a 32x32 bitmap The color depth should be 8 or 24 bits per pixel Make any parts of the image that you want to be transparent RGB 255 0 255 FFOOFF Distributing Dependency Plugins Dependency plugins detection files should be copied to the Plugins Detect subfolder of the AutoPlay Media Studio installation folder Page 25 Indigo Rose Plugin SDK Page Transition Plugins This section applies to e AutoPlay Media Studio 5 0 e AutoPlay Media Studio 6 0 Page transition plugins allow you to create different page transition effects at run time Required Skills You will need the following skills to create page transition plugins e Cor C programming e Be able to create Windows DLLs e Be familiar with the Windows GDI API Page Transition Files Page transition files are Windows DLLs that have the file extension ms These DLLs expose a certain set of exported functions that AutoPlay Media Studio uses for informational and functional purposes Required Exported Functions Below is a list and description of functions that must be exported from your
49. ilenames of files needed by the plugin at run time in a bar CT separated string The files must be located in the same folder as the plugin file at design time For example support dlllsplash png tells AutoPlay Media Studio to collect and bring along the files support dll and splash png with the plugin at build time These files will be copied to the same folder as the plugin file Prototype int irPlg_GetDependencies char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the list of dependency files pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the transition s name If you return 1 be sure that you set pnBufferSize to the number of characters actually required License Files Page transition action and object plugins use license files in order to protect the usage and distribution of the plugin License files are simply text files with the file extension lic These files can be empty or contain any text that you want but the file must exist in order to be used at design time License files should have the same name as the plugin s DLL file with the lic extension So for example if yo
50. in the up state Up Highlight This state is displayed when the mouse pointer is over the button and it is in the up state This state usually provides the user with some sort of visual feedback that the mouse is over the button Up Disabled This state is displayed if the button is in the up state and is disabled Whether or not a button is disabled or even can be disabled is up to the program that uses the button Usually this state is a grayed out version of the button that will signify to the user that it is not interactive Page 11 Indigo Rose Plugin SDK Down Normal This state is displayed if the user has the mouse over a push button with the left mouse button down or a toggle button is in the down state but does not have the mouse over it Down Highlight This state is displayed when the mouse pointer is over the button and it is in the down state This state usually provides the user with some sort of visual feedback that the mouse is over the button Down Disabled This state is displayed if the button is in the down state and is disabled Whether or not a button is disabled or even can be disabled is up to the program that uses the button Usually this state is a grayed out version of the button that will signify to the user that it is not interactive Note that this state will only be displayed if the button is a toggle button because a push button will only show the Up Disabled state The Mani
51. ion lt Constraints gt string String data This will accept any kind of textual input The user can type in anything that they want including a variable name or a function etc Can be none if the user can enter any amount of text Otherwise you can specify the number of characters in the format Where is any number and can also be to indicate that there is no limit Examples 1 10 Number of characters must be between 1 and 10 1 One or more characters 0 Any amount of characters same as using none Note that a user could also use a variable such as x here which would have only one character but could contain any number of characters For this reason it is generally best to leave the constraints fairly open with strings unless you have a good reason not to number Numerical data This will accept any number or a variable Can be none if you don t want validation performed on the number Otherwise you can specify a contraint in the format where is any number that specifies a minimum or maximum acceptable value Examples 1 10 Accepts a number between 1 and 10 inclusive 1 Accepts any positive number Page 40 Indigo Rose Plugin SDK Accepts any number same as using none Note that a number field will also accept textual data because it could be a variable name such as MyNumber For thi
52. ion plugins at run time is done by mapping C functions into the run time s Lua engine For more information about this process please read the Lua Reference Manual which is available from http www lua org manual It is important that you have a good understanding of Lua s C API and how Lua works before creating action plugins Required Exported Functions Below is a list and description of functions that must be exported from your action plugin DLL Page 32 Indigo Rose Plugin SDK irPlg_GetPluginName Purpose To return the name of the action plugin to the calling program Keep this short but descriptive For example if your plugin is used to access ADO databases call it something like ADODatabase Prototype int irPlg_GetPluginName char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the name of the plugin pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the plugin s name If you return 1 be sure that you set pnBufferSize to the number of characters actually required irPlg_GetPluginVersion Purpose To return the version of the plugin to the calling program This version number 1s used to
53. ith SelectPackages objects StaticText Supported in Setup Factory None TrueUpdate and Visual Patch only Shows a combo box filled with StaticText objects Including the Lua Library The Lua library itself is the main required component that must be linked with your DLL All of the Lua files are located in the Includes subfolder of the SDK folder Required Files lua h This is the main include file for the Lua library It includes declarations for all of the base functionality of Lua lauxlib h Page 43 Indigo Rose Plugin SDK This contains declarations for many useful functions that assist in the creation of Lua libraries which is what the actions in our plugins are lualib h Contains declarations for the standard Lua libraries such as string math etc lua lib The release version of the Lua library that will be statically linked into your plugins luaD lib The debug version of the Lua library which will be statically linked into your plugins Make sure that you configure your C projects only to link with this library when doing debug builds Do not use it for the release final versions of your plugins Instead use the lua lib file Adding the Lua Library to Your Project In order to link the Lua static library into your projects there are just a few steps to follow 1 Add lua h lualib h lauxlib h lua lib and luaD lib optional to your project In Visual C this can be done by
54. ld destroy or hide the object s window if applicable bEnabled in Whether the object should be drawn in a disabled state Objects do not have to show a disabled representation Returns Nothing CIRPIuginObject GetCustomProperties Purpose Gets the custom properties of an object plugin in its current state This function can return any type of string data in any format The contents of the string is up to the plugin to interpret Prototype virtual int GetCustomProperties char szBuffer int pnBufferSize Parameters szBuffer out A pointer to a character buffer that will receive the custom properties of the object pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the properties If you return 1 be sure that you set pnBufferSize to the number of characters actually required Page 53 Indigo Rose Plugin SDK CIRPIuginObject SetCustomProperties Purpose Sets the custom properties of the object This information was previously obtained using the GetCustomProperties function It is up to the plugin to interpret this data in a way that makes sense to it Prototype virtual void SetCustomProperties char szPropsList Parameters szPropsList in A poi
55. le from http www lua org manual It is important that you have a good understanding of Lua s C API and how Lua works before creating action plugins Required Exported Functions Below is a list and description of functions that must be exported from your object plugin DLL Note that most of the functions are identical in form and function to those exposed by action plugins except where noted irPlg_GetPluginName Please see the explanation for this function in the action plugin section on page 33 irPlg_GetPluginVersion Please see the explanation for this function in the action plugin section on page 33 Page 47 Indigo Rose Plugin SDK irPlg GetPluginActionXML Please see the explanation for this function in the action plugin section on page 35 irPlg ShowHelpForAction Please see the explanation for this function in the action plugin section on page 34 irPlg ShowHelpForPlugin Please see the explanation for this function in the action plugin section on page 33 irPlg IsValidLicense Please see the explanation for this function in the action plugin section on page 35 irPlg GetLuaVersion Please see the explanation for this function in the action plugin section on page 35 irPlg GetAuthorlnfo Please see the explanation for this function in the action plugin section on page 34 irPlg Object CreateObject Purpose To create an instance of a CIRPluginObject derived class and return a pointer to it The CIRPluginObject class will
56. led lt Normal gt lt Highlight gt and lt Disabled gt Here is a description of each of the states sub fields Field Name Description Image The name of the image file to use for the state It should just be the name of the file without a path such as up_normal png You can use bmp jpg pcx png tga tif uncompressed pcx wmf apm emf psd or ped image files However we recommend using png files Note that you can use the same image for more than one state and that every state MUST specify an image name Font Color A 24 bit hexadecimal color value e g FFOOFF that represents the default caption color of the text for the state DeltaX The amount in percent to adjust the button s horizontal center for each state Can be a negative value DeltaY The amount in percent to adjust the button s vertical center for each state Can be a negative value The AutoPlay Media Studio Button Maker Indigo Rose Corporation has created a separate WYSIWYG environment for creating button files in a more natural visual manner rather than having to assemble the button file manually This editor is shipped along with AutoPlay Media Studio You can access it be selecting Tools gt Button Maker from the menu Page 15 Indigo Rose Plugin SDK Ei zeck medernbtn AutoPlay me da Studio Bukten Maker pe pim Ven Took Ge Sh gh voo EET Up Might over pr Deeabied deaked pn
57. left to 19 at the right Index Use 1 The up arrow in normal state This is the arrow that points upward located at the top of the vertical scrollbar Pressing this arrow scrolls the text up The up arrow when the left mouse button is pressed on it This is the arrow that points upward located at the top of the vertical scrollbar Pressing this arrow scrolls the text up The down arrow in normal state This is the arrow that points downward located at the bottom of the vertical scrollbar Pressing this arrow scrolls the text down The down arrow when the left mouse button is pressed on it This is the arrow that points downward located at the bottom of the vertical scrollbar Pressing this arrow scrolls the text down The left arrow in normal state This is the arrow that points leftward located at the left of the horizontal scrollbar Pressing this arrow scrolls the text left The left arrow when the left mouse button is pressed on it This is the arrow that points leftward located at the left of the horizontal scrollbar Pressing this arrow scrolls the text left The right arrow in normal state This is the arrow that points rightward located at the right of the horizontal scrollbar Pressing this arrow scrolls the text right The right arrow when the right mouse button is pressed on it This is the arrow that points rightward located at the right of the horizontal scrollbar Pressing this arrow scro
58. lls the text right The top portion of the vertical thumbtack This will be used if the size of the vertical thumbtack is large enough to accommodate a multi part thumbtack Otherwise image 12 will be used 10 The middle portion of the vertical thumbtack This will be used if the size of the vertical thumbtack is large enough to accommodate a multi part thumbtack Otherwise image 12 will be used 11 The bottom portion of the vertical thumbtack This will be used if the size of the vertical thumbtack is large enough to accommodate a multi Page 18 Indigo Rose Plugin SDK part thumbtack Otherwise image 12 will be used 12 The small vertical thumbtack This will be used if the size of the vertical thumbtack is too small to accommodate a multi part thumbtack Otherwise images 9 11 will be used 13 The left portion of the horizontal thumbtack This will be used if the size of the horizontal thumbtack is large enough to accommodate a multi part thumbtack Otherwise image 16 will be used 14 The center portion of the horizontal thumbtack This will be used if the size of the horizontal thumbtack is large enough to accommodate a multi part thumbtack Otherwise image 16 will be used 15 The right portion of the horizontal thumbtack This will be used if the size of the horizontal thumbtack is large enough to accommodate a multi part thumbtack Otherwise image 16 will be used 16
59. lt CenterY gt lt Caption gt lt Up gt lt Normal gt lt Image gt up png lt Image gt lt FontColor gt FFFFFF lt FontColor gt lt DeltaX gt 0 lt DeltaX gt lt DeltaY gt 0 lt DeltaY gt lt Normal gt lt Highlight gt lt Image gt up high png lt Image gt lt FontColor gt FFFFFF lt FontColor gt lt DeltaX gt 0 lt Deltax gt lt DeltaY gt 0 lt DeltaY gt lt Highlight gt lt Disabled gt lt Image gt up dis png lt Image gt lt FontColor gt FFFFFF lt FontColor gt lt DeltaX gt 0 lt Deltax gt lt DeltaY gt 0 lt DeltaY gt lt Disabled gt lt Up gt lt Down gt lt Normal gt lt Image gt down png lt Image gt lt FontColor gt FFFFFF lt FontColor gt lt Deltax gt 5 lt Deltax gt lt DeltaY gt 0 lt DeltaY gt lt Normal gt lt Highlight gt lt Image gt down_high png lt Image gt lt FontColor gt FFFFFF lt FontColor gt lt DeltaX gt 5 lt Deltax gt lt DeltaY gt 0 lt DeltaY gt lt Highlight gt lt Disabled gt lt Image gt down dis png lt Image gt lt FontColor gt FFFFFF lt FontColor gt lt DeltaX gt 5 lt DeltaX gt lt DeltaY gt 0 lt DeltaY gt lt Disabled gt lt Down gt lt IR_Button gt What follows in this section is a breakdown of the specific sections of the manifest file lt IRButton gt This is the main XML tag of the button file It must surround all other button data Without this tag the button file will not be recognized as valid Page 13
60. lts for the caption text of the button file Note that it is up to the host program whether to use these defaults or to show a caption at all In AutoPlay Media Studio 5 0 these caption defaults are used as the default caption settings for the object Here is a brief description of the sub fields of the lt Caption gt section Field Name Description Text The default text for the button Font gt Face The face name of the font Font gt CharSet A numerical value for the character set Use 0 for ASCI_CHARSET Default Font gt Size The size of the font in pixels Font gt Bold Whether the font is bold by default 0 No 1 Yes Page 14 Indigo Rose Plugin SDK Font gt Italic Whether the font is italicized by default 0 No 1 Yes Font gt Underlined Whether the font is underlined by default 0 No 1 Yes Font gt Strikeout Whether the font is striked out by default 0 No 1 Yes CenterX The horizontal center of the button in percent for text placement purposes Use 50 to center the caption horizontally CenterY The vertical center of the button in percent for text placement purposes Use 50 to center the caption vertically State Sections The rest of the sections represent options for the specific states of the button There are two major sections lt Up gt and lt Down gt Both of these major sections each have three sub sections cal
61. nd making your own action plugin Note that this DLL statically links to MFC for the sake of the properties dialog However it is possible to make action plugins that don t rely on MFC Page 45 Indigo Rose Plugin SDK Test Your Plugin Thoroughly Make sure to fully test your plugin before sharing it with others It is important to test it thoroughly because a buggy plugin could cause the entire run time to crash Page 46 Indigo Rose Plugin SDK Object Plugins This section applies to e AutoPlay Media Studio 5 0 e AutoPlay Media Studio 6 0 Object plugins allow you to extend the AutoPlay Media Studio objects Using object plugins you can add new objects in a very seamless manner Required Skills You will need the following skills to create action plugins e C and object oriented programming e Be able to create Windows DLLs e A familiarity with the Lua C API e Knowledge of working with XML Object Plugin Files Object plugin files are Windows DLLs that have the file extension apo These DLLs expose a certain set of exported functions that AutoPlay Media Studio uses for informational and functional purposes These new objects can not only add visual elements to the product but can also add new actions as well The integration of an object plugins actions at run time is done by mapping C functions into the run time s Lua engine For more information about this process please read the Lua Reference Manual which is availab
62. nter to a string that contains the plugin s properties Returns Nothing CIRPluginObject ShowProperties Purpose Shows the properties dialog if any of the plugin Thiswill be called when the user tries to edit the plugin object s custom properties at design time How this dialog looks and operates is completely up to you the plugin developer Prototype virtual BOOL ShowProperties char szPluginFolder Parameters szPluginFolder in A pointer to a string that contains the location of the plugin file apo This can be useful if you want to provide a Help button on your properties dialog and may need to know the location of a help file Returns TRUE if the user made changes to the object through the properties dialog or FALSE if they did not or if they did and then cancelled CIRPIuginObject GetNumEvents Purpose To return the number of events supported by the object These are the events that will be exposed to the AutoPlay Media Studio developer at design time and fired at run time Prototype virtual int GetNumEvents Parameters None Returns Page 54 Indigo Rose Plugin SDK The number of events supported by the object Return 0 if the object does not support events CIRPIuginObject GetEvent Purpose To fill an IRPluginEventInfo structure with information about an event Prototype virtual BOOL GetEvent int nIndex IRPluginEventInfo pEventInfo Parameters nInd
63. nts gt pnBufferSize in out A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out Returns The number of characters copied to the buffer or 1 if the buffer was not large enough to contain the font data If you return 1 be sure that you set pnBufferSize to the number of characters actually required irPlg Object TranslateMessage OPTIONAL Purpose To pass window messages from the runtime engine to the object plugin This is sometimes necessary if you are using a window with the style WS POPUP from your plugin and are statically linking to the MFC libraries In this case messages are not properly passed to the DLL CWinApp derived message queue due to a limitation of the MFC libraries You only need to implement this function if you are having troubles getting windows messages through to your windows Most of the time you should not need to implement this function You can also use this function if you want to make a plugin that captures low level window messages of the runtime engine itself Prototype BOOL irPlg Object TranslateMessage MSG pMsg Parameters pMsg in pointer to MSG structure see MSDN for more details about this structure Page 50 Indigo Rose Plugin SDK Returns A boolean Usually you should just return FALSE The most common implementation is to pass the pMsg thro
64. o show the window TRUE or hide it FALSE Returns Nothing CIRPluginObject m_pLuaState This member variable holds a pointer to the run time engine s lua_State structure This way it can be accessed from functions throughout the class CIRPIuginObject m szObjectID This member variable is a character array that holds the unique identifier of the plugin This identifier is not seen by the user but is used for internal purposes Make sure to set this variable in your derived class constructor IRLUA_PLUGIN_GetObjectPtr Purpose Although this function is not part of the class itself it is a helper function that is defined in IRPluginObject h It is used to pass in the name of a plugin object and to retrieve a pointer to the CIRPluginObject that implements it This function is really useful when writing actions that operate on the plugin itself Prototype CIRPluginObject IRLUA_PLUGIN_GetObjectPtr lua_State luaState LPCTSTR strObjectName Parameters luaState in A pointer to the run time engine s lua_State structure strObjectName in The name of the object that you want to get the pointer to This is the name of the object as assigned to it by the developer at design time Returns A pointer to the CIRPluginObject that is associated with the named object You can then cast this to your derived class and use it as you wish IRLUA_PLUGIN_RedrawObject Purpose Although this function is not part of t
65. ood idea to begin the variable name with an underscore to help avoid variable naming conflicts Lua Script File Every dependency plugin must contain a Lua script file that actually does the work of detecting the technology or application These scripts can use any and all available AutoPlay Media Studio actions as well as the standard Lua language Here is the abbreviated content of a sample script file function ir GetFlashAXVersion strVersion 0 0 0 0 Do your detection here are return strVersion end Here are the important things to know about your script file 1 It must have a function that takes no arguments and always returns a string that contains a version number even if the version number is 0 0 0 0 2 Version numbers should be in the format whenever possible 3 The script file can contain other variables and functions but only one function can be specified as the one that gets called at run time And again that one function must conform to the guidelines in 1 Page 24 Indigo Rose Plugin SDK 4 The function can have any valid Lua function name However because it will be loaded into the global Lua engine at run time it should be a unique name Consider prefixing it with your initials or some other identifier Don t for example use function Detect 5 Your script file should be well coded documented and tested Don t leave room for a run time error Image F
66. or the sake of the properties dialogs However it is possible to make object plugins that don t rely on MFC Test Your Plugin Thoroughly Make sure to fully test your plugin before sharing it with others It is important to test it thoroughly because a buggy plugin could cause the entire run time to crash Page 63
67. orner of the run time window s client area rcObRect in A RECT structure that contains the object s coordinates and size relative to the upper left corner of the page area Returns Nothing CIRPluginObject OnRBtnDown Purpose To handle the right mouse button being pressed down object s area at run time Note that windowed objects may not ever get this message from the run time but will have to catch this in their own message handlers Prototype virtual void OnRBtnDown HWND hWndParent POINT ptMousePos RECT rcObRect Page 59 Indigo Rose Plugin SDK Parameters hWndParent in A handle to the run time windows page view area ptMousePos in A POINT structure containing the mouse coordinates relative to the upper left corner of the run time window s client area rcObRect in A RECT structure that contains the object s coordinates and size relative to the upper left corner of the page area Returns Nothing CIRPluginObject OnRBtnUp Purpose To handle the right mouse button being released over object s area at run time Note that windowed objects may not ever get this message from the run time but will have to catch this in their own message handlers Prototype virtual void OnRBtnUp HWND hWndParent POINT ptMousePos RECT rcObRect Parameters hWndParent in A handle to the run time window s page view area ptMousePos in A POINT structure containing t
68. rol 6 3 0 0 TRealPlayer Activex Control 6 0 0 0 windows Media Player Actives Control 6 0 0 0 froperbes Display Name Adobe Acrobat Reader 4 0 or Adobe Minimum Version 4 0 0 0 Message Click here to download the latest versic Download Install Link http www adobe com variable _AcrobatReaderVer Required False DI Module taformation Description Detects Adobe Acrobat Reader 4 0 am Detection files are actually zip archives with several files within them You can open and view the contents of a detection file by opening it with WinZip or a similar zip program Gi WinZip FlashAX det File Actions Options Help IA Favorites Add Extract ie CheckOut Wizard 8 25 2003 9 42 AM 668 50 336 A Be bmp Paint Shop Pro 7 Image 5 2 2003 11 14AM 3 126 77 729 A 2 flashax lua LUA File 9 18 2003 10 18 AM 1 169 63 431 4 otal 3 files SKB d Vi vA Note There is a detection file called FlashAX det file is in the Samples subfolder of the SDK folder lected 0 Files O bytes Detection files contain three components a configuration file a Lua script file and an image file Page 22 Indigo Rose Plugin SDK Configuration File The configuration file is an XML file and can be edited with any text editor Each detecion file must contain a configuration file called config xml Here is a sample configuration file lt MissingTechConfig gt lt Info gt lt Description gt Detects Macrom
69. rom This DC is the size of the entire client area of the run time s window hNextPage in A device context handle to the next page that is the page that is being transitioned to This DC is the size of the entire client area of the run time s window sizelmage in The size the area that the transition should be applied to Note that this is usually but not necessarily the size of the client area of the run time s window In the case of a run time that is in kiosk mode this area may be smaller than the actual DC because of the way that the page is drawn in the center of the client area ptOffset in A POINT structure that contains the x and y offsets of the page area the area that the transition should be applied to relative to the upper left corner of the run time window s client area In most cases this is x 0 y 0 except in the case of a run time in kiosk mode in which case the page area may be centered in the client area Either way your transition should always take this point into consideration hWindow in A handle to the run time view s window Normally this is not needed szSettings in A pointer to a character buffer that contains the current settings How you interpret this information is specific to your plugin Returns Nothing Page 29 Indigo Rose Plugin SDK irPlg_GetDependencies Purpose To return additional dependency files required by the plugin This function should return only the f
70. s reason data validation is only performed if the input is determined to be numeric For example the input x1 would not be validated but 98 23 would be boolean A boolean value This field will None be a dropdown that contains true and false as well as accepting a variable value combo A dropdown combo will be A comma separated list of combo presented with options that you options want to offer the user The user will also be able to type in a Examples value or variable if they wish Apple Orange Pear MY CONSTI MY CONST2 2 4 8 24 32 file A field with a file selector The type of files that you want to button The file that is selected accept and browse for The will be brought into the project following values are acceptable resource folder when the user selects it Audio Buttons Docs Flash Images Scripts or Videos Note that using Docs will allow the user to browse for any type of file fileedit Works exactly like file but Same as the constraints for file allows the user to type into the field objectname Supported in AutoPlay Media The type of object to display Studio only Shows a combo box filled with all of the object names of a certain type on the current page The user can also type in a name or variable if they want to button label paragraph image flash
71. selecting Project gt Add to Project gt Files from the menu If you are not concerned with being able to debug the Lua library you do not have to include luaD lib 2 Include three Lua header files in any other source files that need the Lua functions In C simply include the following in your c file that uses the Lua functions include lua h include lauxlib h include lualib h In C use the following extern C include lua h finclude lauxlib h include lualib h y If you are using Visual C and are using pre compiled headers put the code above into your stdafx h file and then it will be visible to the entire application 3 Make sure that the lua lib files are linked into your build Page 44 Indigo Rose Plugin SDK In Visual C this can be done by selecting Project gt Settings from the menu and selecting the Link tab Add luaD lib to the Object library modules field of your debug builds and lua lib to the same field in your release builds More About the Lua Library Although you can download and compile Lua for yourself from http www lua org we ask that you use the one provided by this SDK when making plugins The reason for this is that statically linking to the library eliminates the need to distribute another DLL As well the Lua library that we provide has been slightly modified to use global heap memory allocation instead of per process memory allocation which can
72. ugh to your application class PreTranslateMessage function BOOL irPlg Object TranslateMessage MSG pMsg return theApp PreTranslateMessage pMsg The CIRPluginObject Class As you can see in the previous section the functions irPlg Object CreateObject and irPlg Object DeleteObject are used to create and destroy a CIRPluginObject class In this section we will look at this class closely and discover how it works Basically the CIRPluginObject class is the basis of all plugin objects All plugin objects must make a class which derives from this base class in order to be used by AutoPlay Media Studio You can get the source code for this class from the Includes subfolder of the SDK folder The files are called IRPluginObject cpp and IRPluginObject h Note that they are C files and can only be used as C classes Unlike all other plugins presented so far it is not possible to make object plugins without using C So in order to make an object plugin first derive a class of your own from CIRPluginObject derive publically The rest is just a matter of filling in the virtual functions and adding your own member variables and functions to make things happen Below is a list of the member variables and functions exposed by CIRPluginObject CIRPluginObject GetDefaultSize Purpose To return the default size that a new object of this type should be Prototype virtual void GetDefaultSize SIZE pSize Parameters pSize
73. ur plugin is called SuperEffect tns your license file must be called SuperEffect lic and be located in the same folder at design time License files are not distributed or used at run time At design time AutoPlay Media Studio reads the contents of the license file and then calls the irPlg_IsValidLicense function to determine if the license is valid If the license file is not found or the irPlg_IsValidLicense function returns FALSE the plugin will not be available to the developer Distributing Page Transition Plugins The page transition plugin DLL tns file and the license file lic should be copied to the Plugins Transitions subfolder of the AutoPlay Media Studio installation folder in order to be visible to the design environment Page 30 Indigo Rose Plugin SDK Hints and Tips Here are some things that may help you out when creating page transition plugins Sample Code An entire sample Visual C 6 0 project is available for you to see and learn from It is the source code used to produce the Wipe transition that ships with AutoPlay Media Studio This project is located in the Samples R WipeTransition subfolder of the SDK installation folder This project will show you all of the details behind making your own page transition plugin Note that this DLL statically links to MFC for the sake of the properties dialog However it is possible to make page transition plugins that don t rely on MFC M
74. wn Notice how there is actually different images displayed for each button state even though a button is just one file in the case above black pill btn Note The black pill btn file is in the Samples subfolder of the SDK folder Page 10 Indigo Rose Plugin SDK Button Files Explained Button files have the file extension btn These files are simply zip files with certain image and data files inside of them You can see this by opening a button file with WinZip or a similar zip utility Gi WinZip black pill btn File Actions Options Help LALALA New Open Favorites Add Extract View Checkout Wizard Modified l manifest xml 2 28 2003 12 37 AM 1 266 70 379 hee up png 2 28 2003 12 37 AM 6 356 0 6 343 over png 2 28 2003 12 37 AM 6 883 1 6 839 he disabled pna 2 28 2003 12 37 AM 7 072 O 7 072 Ka down pna 2 28 2003 12 37 AM 6 552 0 6 525 Selected 0 files 0 bytes Total 5 files 28KB The button file is made up of one to six images as well as a file called manifest xml Each image file can represent one or more of the six supported button states Button States The six states supported by button files are Up Normal This is the state that a push button is normally in This is the default state that will be displayed if the mouse is not over and or clicking the button and the button is not disabled In the case of a toggle button this is the default view of the button when it is
Download Pdf Manuals
Related Search
Related Contents
Copyright © All rights reserved.
Failed to retrieve file