X11

From Lazarus wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The X11 package contains some units which contain the translations of the X header files.

List of units

The most basic units are:

  • X basic X routines.
  • xcms Some color management.
  • xlib Xlib toolkit.
  • xrender X Render extension.
  • xresource X resource management.
  • xshm X shared memory extension.
  • xutil X util lib.

Newer units:

  • cursorfont
  • xinerama
  • xrandr
  • keysym
  • xf86dga.pp
  • xkb
  • xv
  • xf86vmode
  • xkblib
  • xvlib
  • xatom
  • xi

All these units link to the various X libraries. These units interface to the documented client libraries, and are thus largely immune to the X11<->Xorg changes.

Examples

A window with a message

This is a very simple application which show a window with a written message.

<delphi> program xshowwindow;

{$mode objfpc}{$H+}

uses

 xlib, x, ctypes;

procedure ModalShowX11Window(AMsg: string); var

 d: PDisplay;
 w: TWindow;
 e: TXEvent;
 msg: PChar;
 s: cint;

begin

 msg := PChar(AMsg);
 { open connection with the server }
 d := XOpenDisplay(nil);
 if (d = nil) then
 begin
   WriteLn('[ModalShowX11Window] Cannot open display');
   exit;
 end;
 s := DefaultScreen(d);
 { create window }
 w := XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 200, 200, 1,
                          BlackPixel(d, s), WhitePixel(d, s));
 { select kind of events we are interested in }
 XSelectInput(d, w, ExposureMask or KeyPressMask);
 { map (show) the window }
 XMapWindow(d, w);
 { event loop }
 while (True) do
 begin
   XNextEvent(d, @e);
   { draw or redraw the window }
   if (e._type = Expose) then
   begin
     XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);
     XDrawString(d, w, DefaultGC(d, s), 50, 50, msg, strlen(msg));
   end;
   { exit on key press }
   if (e._type = KeyPress) then Break;
 end;
 { close connection to server }
 XCloseDisplay(d);

end;

begin

 ModalShowX11Window('My message');

end. </delphi>

See Also

Go back to Packages List