Sign in Join
Wiki copytemporary

X11/es: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: X11/es

OldNewLine
1+El paquete X11 contiene algunas unidades con las traducciones de los ficheros de cabecera X.
2+
3+## Listado de unidades
4+
5+Las unidades más elementales son:
6+
7+- **X** rutinas básicas de X.
8+- **xcms** Algunas gestiones de color.
9+- **xlib** Xlib toolkit.
10+- **xrender** Extensión de renderizado de X.
11+- **xresource** Gestión de recursos de X.
12+- **xshm** Extensión de memoria compartida de X.
13+- **xutil** X util lib.
14+- Actualmente existe [XCB](https://xcb.freedesktop.org/) (Ennlace entre el lenguaje C y el protocolo del sistema X) que sería el reemplazo de XLIB que tiene mejoras sobre este. Si alguien sabe realizar el ejemplo de abajo con este nuevo reemplazo, adelante [Programación basica con XCB](https://www.x.org/releases/X11R7.6/doc/libxcb/tutorial/index.html).
15+
16+Por lo que pone en <https://en.wikipedia.org/wiki/XCB> los desarrolladores han implementado un lenguaje neutral de descripción de interface para facilitar su uso desde otros lenguajes de programación.
17+
18+Unidades más nuevas:
19+
20+- cursorfont
21+- xinerama
22+- xrandr
23+- keysym
24+- xf86dga.pp
25+- xkb
26+- xv
27+- xf86vmode
28+- xkblib
29+- xvlib
30+- xatom
31+- xi
32+
33+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.
34+
35+## Ejemplos
36+
37+### Una ventana mostrando un mensaje de texto
38+
39+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):
40+
41+``` pascal
42+program xshowwindow;
43+
44+{$mode objfpc}{$H+}
45+
46+uses
47+ xlib, x, ctypes;
48+
49+procedure ModalShowX11Window(AMsg: string);
50+var
51+ d: PDisplay;
52+ w: TWindow;
53+ e: TXEvent;
54+ msg: PChar;
55+ s: cint;
56+begin
57+ msg := PChar(AMsg);
58+
59+ { Abre la conexión con el servidor }
60+ d := XOpenDisplay(nil); //https://www.x.org/releases/X11R7.7-RC1/doc/man/man3/XOpenDisplay.3.xhtml
61+ if (d = nil) then
62+ begin
63+ WriteLn('[ModalShowX11Window] NO puedo abrir el Display');
64+ exit;
65+ end;
66+
67+ s := DefaultScreen(d);
68+
69+ { Crear la ventana } // https://www.x.org/releases/X11R7.7/doc/libX11/libX11/libX11.html#XCreateWindow
70+ w := XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 400, 100, 1,
71+ BlackPixel(d, s), WhitePixel(d, s));
72+
73+ { Seleccionar el tipo de eventos en los que estamos interesados }
74+ XSelectInput(d, w, ExposureMask or KeyPressMask);
75+
76+ { Mapear (mostrar) la ventana }
77+ XMapWindow(d, w); // https://www.x.org/releases/X11R7.7-RC1/doc/man/man3/XMapWindow.3.xhtml
78+
79+ { bucle de eventos }
80+ while (True) do
81+ begin
82+ XNextEvent(d, @e); // https://www.x.org/releases/current/doc/man/man3/XNextEvent.3.xhtml
83+ { dibuja o redibuja la ventana }
84+ if (e._type = Expose) then
85+ begin
86+ XFillRectangle(d, w, DefaultGC(d, s), 30, 40, 10, 10); //https://www.x.org/releases/X11R7.7-RC1/doc/man/man3/XFillRectangle.3.xhtml
87+ 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
88+ end;
89+ { Salir al presionar una tecla }
90+ if (e._type = KeyPress) then Break;
91+ end;
92+
93+ { Cerrar la conexión con el servidor }
94+ XCloseDisplay(d); // https://www.x.org/archive/X11R6.8.2/doc/XOpenDisplay.3.html
95+end;
96+
97+begin
98+ ModalShowX11Window('Hola, Esto es un mensaje de texto en la ventana :)');
99+end.
100+```
101+
102+Podemos utilizar más funciones como XDrawLine, XDrawArc,.....
103+
104+<https://www.x.org/releases/X11R7.7-RC1/doc/man/man3/index.xhtml>
105+
106+## See Also
107+
108+- <http://en.wikipedia.org/wiki/Xlib>
109+
110+Go back to [[Package List|Packages List]]
111+
112+---
113+*From the Free Pascal wiki, page "X11/es", as it stood on 2020-03-03 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history