diff options
Diffstat (limited to 'src/icon.h')
-rw-r--r-- | src/icon.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/src/icon.h b/src/icon.h new file mode 100644 index 0000000..ad9645a --- /dev/null +++ b/src/icon.h @@ -0,0 +1,110 @@ +/** + * @file icon.h + * @author Joe Wingbermuehle + * @date 2004-2006 + * + * @brief Header file for icon functions. + * + */ + +#ifndef ICON_H +#define ICON_H + +struct ClientNode; + +/** Structure to hold a scaled icon. */ +typedef struct ScaledIconNode { + + int width; /**< The scaled width of the icon. */ + int height; /**< The scaled height of the icon. */ + + Pixmap image; + Pixmap mask; +#ifdef USE_XRENDER + Picture imagePicture; + Picture maskPicture; +#endif + + struct ScaledIconNode *next; + +} ScaledIconNode; + +/** Structure to hold an icon. */ +typedef struct IconNode { + + char *name; /**< The name of the icon. */ + struct ImageNode *image; /**< The image data. */ + struct ScaledIconNode *nodes; /**< Scaled versions of the icon. */ + + struct IconNode *next; /**< The next icon in the list. */ + struct IconNode *prev; /**< The previous icon in the list. */ + +} IconNode; + +#ifdef USE_ICONS + +/*@{*/ +void InitializeIcons(); +void StartupIcons(); +void ShutdownIcons(); +void DestroyIcons(); +/*@}*/ + +/** Add an icon path. + * This adds a path to the list of icon search paths. + * @param path The icon path to add. + */ +void AddIconPath(char *path); + +/** Render an icon. + * This will scale an icon if necessary to fit the requested size. The + * aspect ratio of the icon is preserved. + * @param icon The icon to render. + * @param d The drawable on which to place the icon. + * @param x The x offset on the drawable to render the icon. + * @param y The y offset on the drawable to render the icon. + * @param width The width of the icon to display. + * @param height The height of the icon to display. + */ +void PutIcon(IconNode *icon, Drawable d, int x, int y, + int width, int height); + +/** Load an icon for a client. + * @param np The client. + */ +void LoadIcon(struct ClientNode *np); + +/** Load an icon. + * @param name The name of the icon to load. + * @return A pointer to the icon (NULL if not found). + */ +IconNode *LoadNamedIcon(const char *name); + +/** Destroy an icon. + * @param icon The icon to destroy. + */ +void DestroyIcon(IconNode *icon); + +/** Create and initialize a new icon structure. + * @return The new icon structure. + */ +IconNode *CreateIcon(); + +#else + +#define ICON_DUMMY_FUNCTION 0 + +#define InitializeIcons() ICON_DUMMY_FUNCTION +#define StartupIcons() ICON_DUMMY_FUNCTION +#define ShutdownIcons() ICON_DUMMY_FUNCTION +#define DestroyIcons() ICON_DUMMY_FUNCTION +#define AddIconPath( a ) ICON_DUMMY_FUNCTION +#define PutIcon( a, b, c, d, e, f ) ICON_DUMMY_FUNCTION +#define LoadIcon( a ) ICON_DUMMY_FUNCTION +#define LoadNamedIcon( a ) ICON_DUMMY_FUNCTION +#define DestroyIcon( a ) ICON_DUMMY_FUNCTION + +#endif /* USE_ICONS */ + +#endif /* ICON_H */ + |