1/*
2 * Icon releated definitions
3 *
4 *
5 * Copyright 1989 Massachusetts Institute of Technology
6 *
7 * $XConsortium: icons.h,v 1.4 89/07/18 17:16:24 jim Exp $
8 *
9 * 10-Apr-89 Tom LaStrange        Initial Version.
10 *
11 * Copyright 1992 Claude Lecommandeur.
12 */
13
14#ifndef _CTWM_ICONS_H
15#define _CTWM_ICONS_H
16
17/* Where did the Image for the Icon come from? */
18typedef enum {
19	match_none,
20	match_list,                 /* shared Image: iconslist and Scr->ImageCache */
21	match_icon_pixmap_hint,     /* Pixmap copied from IconPixmapHint */
22	match_net_wm_icon,          /* Pixmap created from NET_WM_ICON */
23	match_unknown_default,      /* shared Image: Scr->UnknownImage */
24} Matchtype;
25
26struct Icon {
27	Matchtype   match;
28	Window      w;              /* the icon window */
29	OtpWinList *otp;            /* OnTopPriority info for the icon */
30	Window      bm_w;           /* the icon bitmap window */
31	Image       *image;         /* image icon structure */
32	int         x;              /* icon text x coordinate */
33	int         y;              /* icon text y coordiante */
34	int         w_x;            /* x coor of the icon window !!untested!! */
35	int         w_y;            /* y coor of the icon window !!untested!! */
36	int         w_width;        /* width of the icon window */
37	int         w_height;       /* height of the icon window */
38	int         width;          /* width of the icon bitmap */
39	int         height;         /* height of the icon bitmap */
40	Pixel       border;         /* border color */
41	ColorPair   iconc;
42	int         border_width;
43	struct IconRegion   *ir;
44	bool        has_title, title_shrunk;
45	bool        w_not_ours;     /* Icon.w comes from IconWindowHint */
46};
47
48struct IconRegion {
49	struct IconRegion   *next;
50	int                 x, y, w, h;
51	RegGravity          grav1, grav2;
52	int                 stepx, stepy;       // allocation granularity
53	TitleJust           TitleJustification;
54	IRJust              Justification;
55	IRAlignement        Alignement;
56	name_list           *clientlist;
57	struct IconEntry    *entries;
58};
59
60struct IconEntry {
61	struct IconEntry    *next;
62	int                 x, y, w, h;
63	TwmWindow           *twm_win;
64	bool                used;
65};
66
67
68/* Placement and IconsRegion handling */
69name_list **AddIconRegion(const char *geom, RegGravity grav1, RegGravity grav2,
70                          int stepx, int stepy, const char *ijust,
71                          const char *just, const char *align);
72
73/* Icon [window] creation/destruction */
74void CreateIconWindow(TwmWindow *tmp_win, int def_x, int def_y);
75void DeleteIconsList(TwmWindow *tmp_win);
76void DeleteIcon(Icon *icon);
77void ReleaseIconImage(Icon *icon);
78
79/* Handling for bringing them up or down */
80void IconUp(TwmWindow *tmp_win);
81void IconDown(TwmWindow *tmp_win);
82
83/* Drawing */
84void PaintIcon(TwmWindow *tmp_win);
85void ShrinkIconTitle(TwmWindow *tmp_win);
86void ExpandIconTitle(TwmWindow *tmp_win);
87int GetIconOffset(Icon *icon);
88void RedoIcon(TwmWindow *win);
89void RedoIconName(TwmWindow *win);
90
91#endif /* _CTWM_ICONS_H */
92