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...) |
(Fixed syntax highlighting; fixed typos; deleted categories included in page template) |
||
(7 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | The X11 package contains some units which contain the translations of the X header files. The | + | {{X11}} |
+ | |||
+ | 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 26: | Line 31: | ||
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=== | ||
+ | |||
+ | This is a very simple application which shows a window with a written message. | ||
+ | |||
+ | <syntaxhighlight lang=pascal> | ||
+ | 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. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==See Also== | ||
+ | |||
+ | * http://en.wikipedia.org/wiki/Xlib |
Latest revision as of 03:33, 21 December 2019
│
Deutsch (de) │
English (en) │
español (es) │
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 shows a window with a written message.
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.