<li><a class="subsection" href="#DoesBackingStore">DoesBackingStore</a>
<li><a class="subsection" href="#EventMaskOfScreen">EventMaskOfScreen</a>
</ol>
- <li><a class="subsection" href="#misc">Miscellaneaous macros</a>
+ <li><a class="subsection" href="#misc">Miscellaneous macros</a>
<ol>
<li><a class="subsection" href="#DisplayOfScreen">DisplayOfScreen</a>
<li><a class="subsection" href="#DisplayCells">DisplayCells / CellsOfScreen</a>
with the <a href="http://xcb.freedesktop.org">XCB</a>
library. keep in mind that XCB, like the
<a href="http://tronche.com/gui/x/xlib/introduction">Xlib</a>
- library, isn't what post programmers wanting to write X
+ library, isn't what most programmers wanting to write X
applications are looking for. They should use a much higher
level GUI toolkit like Motif,
<a href="http://www.lesstif.org">LessTiff</a>,
<a href="http://www.gtk.org">GTK</a>,
- <a href="http://www.trolltech.com">QT</a> or
- <a href="http://www.enlightenment.org">EWL</a>, or use
+ <a href="http://www.trolltech.com">QT</a>,
+ <a href="http://www.enlightenment.org">EWL</a>,
+ <a href="http://www.enlightenment.org">ETK</a>, or use
<a href="http://cairographics.org">Cairo</a>.
However,
we need to start somewhere. More than this, knowing how things
diff = end - start;
/* free var */
- for (i = 0; i < count; ++i)
- free (names[i]);
free (atoms);
free (cs);
printf ("ratio : %f\n", diff_x / diff);
free (atoms_x);
+ for (i = 0; i < count; ++i)
+ free (names[i]);
free (names);
XCloseDisplay (disp);
/* We draw the polygonal line */
xcb_poly_line (c, XCB_COORD_MODE_PREVIOUS, win, foreground, 4, polyline);
- /* We draw the segements */
+ /* We draw the segments */
xcb_poly_segment (c, win, foreground, 2, segments);
/* We draw the rectangles */
</pre>
<p>
If the window has already been created, we can use the
- <span class="code">xcb_configure_window()</span> function to set
+ <span class="code">xcb_change_window_attributes()</span> function to set
the events that the window will receive. The subsection
<a href="#winconf">Configuring a window</a> shows its
prototype. As an example, here is a piece of code that
/* The connection c and the window win are supposed to be defined */
-xcb_configure_window (c, win, XCB_CW_EVENT_MASK, values);
+xcb_change_window_attributes (c, win, XCB_CW_EVENT_MASK, values);
</pre>
<div class="emph">
<p>
- Note: A common bug programmers do is adding code to handle new
+ Note: A common bug programmers have is adding code to handle new
event types in their program, while forgetting to add the
masks for these events in the creation of the window. Such a
- programmer then should sit down for hours debugging his
+ programmer would then sit there for hours debugging their
program, wondering "Why doesn't my program notice that I
released the button?", only to find that they registered for
button press events but not for button release events.
keyboard focus using the window manager (often by clicking
on the title bar of the desired window). Once our window
has the keyboard focus, every key press or key release will
- cause an event to be sent to our program (if it regsitered
+ cause an event to be sent to our program (if it registered
for these event types...).
</p>
<li class="subsubtitle"><a name="keypress">Keyboard press and release events</a>
<pre class="code">
xcb_font_t xcb_generate_id (xcb_connection_t *c);
</pre>
- <p>
+ <br>
<li class="subtitle"><a name="openingfont">Opening a Font</a>
<p>
To open a font, we use the following function:
Once a font is opened, you have to create a Graphic Context
that will contain the informations about the color of the
foreground and the background used when you draw a text in a
- Drawable. Here is an exemple of a Graphic Context that will
+ Drawable. Here is an example of a Graphic Context that will
allow us to draw an opened font with a black foreground and a
white background:
</p>
This example draw a text at 10 pixels (for the base line) of
the bottom of a window. Pressing the Esc key exits the program.
</p>
- <pre class="code">#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+ <pre class="code">
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
-#include <xcb/xcb.h>
+#include <xcb/xcb.h>
#define WIDTH 300
#define HEIGHT 100
int screen_number;
/* getting the connection */
- c = xcb_connect (NULL, &screen_number);
+ c = xcb_connect (NULL, &screen_number);
if (!c) {
fprintf (stderr, "ERROR: can't connect to an X server\n");
return -1;
screen = NULL;
screen_iter = xcb_setup_roots_iterator (setup);
- for (; screen_iter.rem != 0; --screen_number, xcb_screen_next (&screen_iter))
+ for (; screen_iter.rem != 0; --screen_number, xcb_screen_next (&screen_iter))
if (screen_number == 0)
{
screen = screen_iter.data;
while (1) {
e = xcb_poll_for_event(c);
if (e) {
- switch (e->response_type) {
+ switch (e->response_type & ~0x80) {
case XCB_EXPOSE: {
char *text;
const void *data); /* Data */
</pre>
<p>
- The <span class="code">mode</span> parameter coud be one of
+ The <span class="code">mode</span> parameter could be one of
the following values (defined in enumeration xcb_prop_mode_t in
the xproto.h header file):
</p>
latter case, each time the mouse moves onto your window, the
screen color map will be replaced by your window's color map,
and you'll see all the other windows on screen change their
- colors into something quite bizzare. In fact, this is the
+ colors into something quite bizarre. In fact, this is the
effect you get with X applications that use the "-install"
command line option.
</p>
<li class="title"><a name="mousecursor">Messing with the mouse cursor</a>
<p>
It it possible to modify the shape of the mouse pointer (also
- called the X pointer) when in certain states, as we otfen see in
+ called the X pointer) when in certain states, as we often see in
programs. For example, a busy application would often display
- the sand clock over its main window, to give the user a visual
- hint that he should wait. Let's see how we can change the mouse
+ the hourglass cursor over its main window, to give the user a visual
+ hint that they should wait. Let's see how we can change the mouse
cursor of our windows.
</p>
<ol>
</p>
<p>
So we first open that font (see <a href="#loadfont">Loading a Font</a>)
- and create the new cursor. As for every X ressource, we have to
+ and create the new cursor. As for every X resource, we have to
ask for an X id with <span class="code">xcb_generate_id</span>
first:
</p>
while (1) {
e = xcb_poll_for_event(c);
if (e) {
- switch (e->response_type) {
+ switch (e->response_type & ~0x80) {
case XCB_EXPOSE: {
char *text;