1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
/*
* Copyright 1989 Massachusetts Institute of Technology
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of M.I.T. not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission. M.I.T. makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* [ ctwm ]
*
* Copyright 1992 Claude Lecommandeur.
*
* Permission to use, copy, modify and distribute this software [ctwm] and
* its documentation for any purpose is hereby granted without fee, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting documen-
* tation, and that the name of Claude Lecommandeur not be used in adverti-
* sing or publicity pertaining to distribution of the software without
* specific, written prior permission. Claude Lecommandeur make no represen-
* tations about the suitability of this software for any purpose. It is
* provided "as is" without express or implied warranty.
*
* Claude Lecommandeur DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL Claude Lecommandeur BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* Author: Claude Lecommandeur [ lecom@sic.epfl.ch ][ April 1992 ]
*/
/**********************************************************************
*
* $XConsortium: icons.h,v 1.4 89/07/18 17:16:24 jim Exp $
*
* Icon releated definitions
*
* 10-Apr-89 Tom LaStrange Initial Version.
*
**********************************************************************/
#ifndef _CTWM_ICONS_H
#define _CTWM_ICONS_H
/* Where did the Image for the Icon come from? */
typedef enum {
match_none,
match_list, /* shared Image: iconslist and Scr->ImageCache */
match_icon_pixmap_hint, /* Pixmap copied from IconPixmapHint */
match_net_wm_icon, /* Pixmap created from NET_WM_ICON */
match_unknown_default, /* shared Image: Scr->UnknownImage */
} Matchtype;
struct Icon {
Matchtype match;
Window w; /* the icon window */
OtpWinList *otp; /* OnTopPriority info for the icon */
Window bm_w; /* the icon bitmap window */
Image *image; /* image icon structure */
int x; /* icon text x coordinate */
int y; /* icon text y coordiante */
int w_x; /* x coor of the icon window !!untested!! */
int w_y; /* y coor of the icon window !!untested!! */
int w_width; /* width of the icon window */
int w_height; /* height of the icon window */
int width; /* width of the icon bitmap */
int height; /* height of the icon bitmap */
Pixel border; /* border color */
ColorPair iconc;
int border_width;
struct IconRegion *ir;
bool has_title, title_shrunk;
bool w_not_ours; /* Icon.w comes from IconWindowHint */
};
struct IconRegion {
struct IconRegion *next;
int x, y, w, h;
RegGravity grav1, grav2;
int stepx, stepy; // allocation granularity
TitleJust TitleJustification;
IRJust Justification;
IRAlignement Alignement;
name_list *clientlist;
struct IconEntry *entries;
};
struct IconEntry {
struct IconEntry *next;
int x, y, w, h;
TwmWindow *twm_win;
bool used;
};
/* Placement and IconsRegion handling */
name_list **AddIconRegion(const char *geom, RegGravity grav1, RegGravity grav2,
int stepx, int stepy, const char *ijust,
const char *just, const char *align);
/* Icon [window] creation/destruction */
void CreateIconWindow(TwmWindow *tmp_win, int def_x, int def_y);
void DeleteIconsList(TwmWindow *tmp_win);
void DeleteIcon(Icon *icon);
void ReleaseIconImage(Icon *icon);
/* Handling for bringing them up or down */
void IconUp(TwmWindow *tmp_win);
void IconDown(TwmWindow *tmp_win);
/* Drawing */
void PaintIcon(TwmWindow *tmp_win);
void ShrinkIconTitle(TwmWindow *tmp_win);
void ExpandIconTitle(TwmWindow *tmp_win);
int GetIconOffset(Icon *icon);
void RedoIcon(TwmWindow *win);
void RedoIconName(TwmWindow *win);
#endif /* _CTWM_ICONS_H */
|