Difference between revisions of "X11"
From Lazarus wiki
Jump to navigationJump to search (New page: The X11 package contains some units which contain the translations of the X header files. The following files exist: * '''X''' basic X routines. * '''xcms''' Some color management. * '''x...) |
Sekelsenmat (talk | contribs) |
||
Line 1: | Line 1: | ||
− | The X11 package contains some units which contain the translations of the X header files. The | + | The X11 package contains some units which contain the translations of the X header files. |
+ | __TOC__ | ||
+ | ==List of units== | ||
+ | The most basic units are: | ||
* '''X''' basic X routines. | * '''X''' basic X routines. | ||
Line 25: | Line 28: | ||
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. | 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=== | ||
− | Go to | + | This is a very simple application which was translated from http://en.wikipedia.org/wiki/Xlib#Example |
+ | |||
+ | <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('[ShowX11MessageBox] 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 [[Package_List|Packages List]] |
Revision as of 08:57, 16 August 2011
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 was translated from http://en.wikipedia.org/wiki/Xlib#Example
<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('[ShowX11MessageBox] 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