Difference between revisions of "X11/es"
Line 81: | Line 81: | ||
while (True) do | while (True) do | ||
begin | begin | ||
− | XNextEvent(d, @e); | + | XNextEvent(d, @e); // https://www.x.org/releases/current/doc/man/man3/XNextEvent.3.xhtml |
{ dibuja o redibuja la ventana } | { dibuja o redibuja la ventana } | ||
if (e._type = Expose) then | if (e._type = Expose) then |
Revision as of 15:05, 7 August 2017
│
Deutsch (de) │
English (en) │
español (es) │
El paquete X11 contiene algunas unidades con las traducciones de los ficheros de cabecera X.
Listado de unidades
Las unidades más elementales son:
- X rutinas básicas de X.
- xcms Algunas gestiones de color.
- xlib Xlib toolkit.
- xrender Extensión de renderizado de X.
- xresource Gestión de recursos de X.
- xshm Extensión de memoria compartida de X.
- xutil X util lib.
Unidades más nuevas:
- cursorfont
- xinerama
- xrandr
- keysym
- xf86dga.pp
- xkb
- xv
- xf86vmode
- xkblib
- xvlib
- xatom
- xi
Todas estas unidades enlazan a varias librerias X. Estas unidades hacen de interface a las librerías cliente documentadas y son por tanto ampliamente inmunes a los cambios en X11<->Xorg.
Ejemplos
Una ventana mostrando un mensaje de texto
Esta es una aplicación muy sencilla que muestra una ventana con un mensaje de texto. De forma rápida lo podemos salvar a un fichero con extensión .pas y cargarlo desde el IDE de fp (si no lo tenemos lo podemos instalar facilmente descargándolo previamente desde sourceforge (Freepascal para Linux):
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);
{ Abre la conexión con el servidor }
d := XOpenDisplay(nil); //https://www.x.org/releases/X11R7.7-RC1/doc/man/man3/XOpenDisplay.3.xhtml
if (d = nil) then
begin
WriteLn('[ModalShowX11Window] NO puedo abrir el Display');
exit;
end;
s := DefaultScreen(d);
{ Crear la ventana }
w := XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 400, 100, 1,
BlackPixel(d, s), WhitePixel(d, s));
{ Seleccionar el tipo de eventos en los que estamos interesados }
XSelectInput(d, w, ExposureMask or KeyPressMask);
{ Mapear (mostrar) la ventana }
XMapWindow(d, w); // https://www.x.org/releases/X11R7.7-RC1/doc/man/man3/XMapWindow.3.xhtml
{ bucle de eventos }
while (True) do
begin
XNextEvent(d, @e); // https://www.x.org/releases/current/doc/man/man3/XNextEvent.3.xhtml
{ dibuja o redibuja la ventana }
if (e._type = Expose) then
begin
XFillRectangle(d, w, DefaultGC(d, s), 30, 40, 10, 10); //https://www.x.org/releases/X11R7.7-RC1/doc/man/man3/XFillRectangle.3.xhtml
XDrawString(d, w, DefaultGC(d, s), 50, 50, msg, strlen(msg)); // https://www.x.org/releases/X11R7.7-RC1/doc/man/man3/XDrawString.3.xhtml
end;
{ Salir al presionar una tecla }
if (e._type = KeyPress) then Break;
end;
{ Cerrar la conexión con el servidor }
XCloseDisplay(d); // https://www.x.org/archive/X11R6.8.2/doc/XOpenDisplay.3.html
end;
begin
ModalShowX11Window('Hola, Esto es un mensaje de texto en la ventana :)');
end.
Podemos utilizar más funciones como XDrawLine, XDrawArc,.....
https://www.x.org/releases/X11R7.7-RC1/doc/man/man3/index.xhtml
See Also
Go back to Packages List