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
|
/*
* Pure Data Packet header file: xwindow glue code
* Copyright (c) by Tom Schouten <pdp@zzz.kotnet.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
// x stuff
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include "pdp_list.h"
#include "pdp_mem.h"
/* x display class */
typedef struct _pdp_xdisplay
{
Display *dpy; // the display connection
int screen; // the screen
t_pdp_list *windowlist; // all windows belonging to this connection
// this contains (id, eventlist)
int dragbutton;
} t_pdp_xdisplay;
/* cons */
t_pdp_xdisplay *pdp_xdisplay_new(char *dpy_string);
/* des */
void pdp_xdisplay_free(t_pdp_xdisplay *d);
struct _pdp_xwindow;
void pdp_xdisplay_register_window(t_pdp_xdisplay *d, struct _pdp_xwindow *w);
void pdp_xdisplay_unregister_window(t_pdp_xdisplay *d, struct _pdp_xwindow *w);
/* x window class */
typedef struct _pdp_xwindow
{
//Display *dpy;
//int screen;
t_pdp_xdisplay *xdisplay; // the display object
Window win; // window reference
GC gc; // graphics context
Atom WM_DELETE_WINDOW;
int winwidth; // dim states
int winheight;
int winxoffset;
int winyoffset;
int initialized;
int autocreate;
char lastbut; // last button pressed (for drag)
//t_symbol *dragbutton;
float cursor;
} t_pdp_xwindow;
/* cons */
void pdp_xwindow_init(t_pdp_xwindow *b);
t_pdp_xwindow *pdp_xwindow_new(void);
/* des */
void pdp_xwindow_cleanup(t_pdp_xwindow *b);
void pdp_xwindow_free(t_pdp_xwindow *b);
/* move the pointer */
void pdp_xwindow_warppointer(t_pdp_xwindow *xwin, int x, int y);
/* fullscreen message */
void pdp_xwindow_fullscreen(t_pdp_xwindow *xwin);
/* resize window */
void pdp_xwindow_resize(t_pdp_xwindow *b, int width, int height);
/* resize window */
void pdp_xwindow_moveresize(t_pdp_xwindow *b, int xoffset, int yoffset, int width, int height);
/* fill a tile of the screen */
void pdp_xwindow_tile(t_pdp_xwindow *xwin, int x_tiles, int y_tiles, int i, int j);
/* move window */
void pdp_xwindow_move(t_pdp_xwindow *xwin, int xoffset, int yoffset);
/* receive events */
t_pdp_list *pdp_xwindow_get_eventlist(t_pdp_xwindow *xwin);
/* enable/disable cursor */
void pdp_xwindow_cursor(t_pdp_xwindow *b, int flag);
/* create xwindow. return code != NULL on succes */
int pdp_xwindow_create_on_display(t_pdp_xwindow *b, t_pdp_xdisplay *d);
/* close window */
void pdp_xwindow_close(t_pdp_xwindow *b);
/* set title */
void pdp_xwindow_title(t_pdp_xwindow *xwin, char *title);
|