Suppose that you want to write a screensaver application. You could define a screensaver interface that allows you to write
addons containing screensaver functionality. Each addon would have a known interface that the application would use to start,
stop, and set options for that particular screensaver. To write such an application, you must perform these general steps with
the Addon Interfaces Library:
- Determine the mandatory functionality for the application. For each screensaver addon, you need a function that creates and
populates an options pane. You may also want a function that initializes the addon and another to uninitialize it to restore
any resources acquired during initialization.
- Next, you need a function to start and stop the screensaver display. Your interface might look like this:
typedef struct
{
int32_t Initialize(void);
int32_t Uninitialize(void);
int32_t *Options(void);
int32_t Start(void);
int32_t Stop(void);
} ScreenSaver;
- In your addon, you must declare the available interfaces to allow the AOI library to discover and use them:
AOInterface_t interfaces[] =
{
{ "Name", 0, "my_screensaver" },
{ "ScreenSaver", SS_VERSION, &SS2 },
{ "ScreenSaverPrefs", SS_PREFSVERSION, &SSP2 }
{ 0,0,0 }
};
- Your application can use the AOI library to find the available addons (which are loaded DLLs containing the screensavers)
that have this set of interfaces. It can then allow the user to select a screensaver (and options for that screensaver) to use.
- A screensaver addon might have user-set preferences. In this case, the addon would have a preferences interface.
The application would display preferences for only those screensavers with a ScreenSaverPrefs interface, which might
look like this:
typedef struct
{
int32_t LoadPrefs(void);
int32_t SavePrefs(void);
} ScreenSaverPrefs;