aboutsummaryrefslogtreecommitdiff
path: root/src/icon.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/icon.h')
-rw-r--r--src/icon.h110
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 */
+