1645f5050Syouri/*
20bbfda8aSnia * Icon releated definitions
3645f5050Syouri *
4645f5050Syouri *
50bbfda8aSnia * Copyright 1989 Massachusetts Institute of Technology
6645f5050Syouri *
7645f5050Syouri * $XConsortium: icons.h,v 1.4 89/07/18 17:16:24 jim Exp $
8645f5050Syouri *
9645f5050Syouri * 10-Apr-89 Tom LaStrange        Initial Version.
10645f5050Syouri *
110bbfda8aSnia * Copyright 1992 Claude Lecommandeur.
120bbfda8aSnia */
13645f5050Syouri
140bbfda8aSnia#ifndef _CTWM_ICONS_H
150bbfda8aSnia#define _CTWM_ICONS_H
16645f5050Syouri
170bbfda8aSnia/* Where did the Image for the Icon come from? */
180bbfda8aSniatypedef enum {
190bbfda8aSnia	match_none,
200bbfda8aSnia	match_list,                 /* shared Image: iconslist and Scr->ImageCache */
210bbfda8aSnia	match_icon_pixmap_hint,     /* Pixmap copied from IconPixmapHint */
220bbfda8aSnia	match_net_wm_icon,          /* Pixmap created from NET_WM_ICON */
230bbfda8aSnia	match_unknown_default,      /* shared Image: Scr->UnknownImage */
240bbfda8aSnia} Matchtype;
25645f5050Syouri
260bbfda8aSniastruct Icon {
270bbfda8aSnia	Matchtype   match;
280bbfda8aSnia	Window      w;              /* the icon window */
290bbfda8aSnia	OtpWinList *otp;            /* OnTopPriority info for the icon */
300bbfda8aSnia	Window      bm_w;           /* the icon bitmap window */
310bbfda8aSnia	Image       *image;         /* image icon structure */
320bbfda8aSnia	int         x;              /* icon text x coordinate */
330bbfda8aSnia	int         y;              /* icon text y coordiante */
340bbfda8aSnia	int         w_x;            /* x coor of the icon window !!untested!! */
350bbfda8aSnia	int         w_y;            /* y coor of the icon window !!untested!! */
360bbfda8aSnia	int         w_width;        /* width of the icon window */
370bbfda8aSnia	int         w_height;       /* height of the icon window */
380bbfda8aSnia	int         width;          /* width of the icon bitmap */
390bbfda8aSnia	int         height;         /* height of the icon bitmap */
400bbfda8aSnia	Pixel       border;         /* border color */
410bbfda8aSnia	ColorPair   iconc;
420bbfda8aSnia	int         border_width;
430bbfda8aSnia	struct IconRegion   *ir;
440bbfda8aSnia	bool        has_title, title_shrunk;
450bbfda8aSnia	bool        w_not_ours;     /* Icon.w comes from IconWindowHint */
46645f5050Syouri};
47645f5050Syouri
480bbfda8aSniastruct IconRegion {
490bbfda8aSnia	struct IconRegion   *next;
500bbfda8aSnia	int                 x, y, w, h;
510bbfda8aSnia	RegGravity          grav1, grav2;
520bbfda8aSnia	int                 stepx, stepy;       // allocation granularity
530bbfda8aSnia	TitleJust           TitleJustification;
540bbfda8aSnia	IRJust              Justification;
550bbfda8aSnia	IRAlignement        Alignement;
560bbfda8aSnia	name_list           *clientlist;
570bbfda8aSnia	struct IconEntry    *entries;
58645f5050Syouri};
59645f5050Syouri
600bbfda8aSniastruct IconEntry {
610bbfda8aSnia	struct IconEntry    *next;
620bbfda8aSnia	int                 x, y, w, h;
630bbfda8aSnia	TwmWindow           *twm_win;
640bbfda8aSnia	bool                used;
65645f5050Syouri};
66645f5050Syouri
67645f5050Syouri
680bbfda8aSnia/* Placement and IconsRegion handling */
690bbfda8aSnianame_list **AddIconRegion(const char *geom, RegGravity grav1, RegGravity grav2,
700bbfda8aSnia                          int stepx, int stepy, const char *ijust,
710bbfda8aSnia                          const char *just, const char *align);
720bbfda8aSnia
730bbfda8aSnia/* Icon [window] creation/destruction */
740bbfda8aSniavoid CreateIconWindow(TwmWindow *tmp_win, int def_x, int def_y);
750bbfda8aSniavoid DeleteIconsList(TwmWindow *tmp_win);
760bbfda8aSniavoid DeleteIcon(Icon *icon);
770bbfda8aSniavoid ReleaseIconImage(Icon *icon);
780bbfda8aSnia
790bbfda8aSnia/* Handling for bringing them up or down */
800bbfda8aSniavoid IconUp(TwmWindow *tmp_win);
810bbfda8aSniavoid IconDown(TwmWindow *tmp_win);
820bbfda8aSnia
830bbfda8aSnia/* Drawing */
840bbfda8aSniavoid PaintIcon(TwmWindow *tmp_win);
850bbfda8aSniavoid ShrinkIconTitle(TwmWindow *tmp_win);
860bbfda8aSniavoid ExpandIconTitle(TwmWindow *tmp_win);
870bbfda8aSniaint GetIconOffset(Icon *icon);
880bbfda8aSniavoid RedoIcon(TwmWindow *win);
890bbfda8aSniavoid RedoIconName(TwmWindow *win);
900bbfda8aSnia
910bbfda8aSnia#endif /* _CTWM_ICONS_H */
92