[go: nahoru, domu]

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м робот добавил: de:Xlib
Спасено источников — 1, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.8
 
(не показано 35 промежуточных версий 29 участников)
Строка 1:
'''Xlib''' ('''X library''', [[транслитерация{{lang-ru|транслит.]]библиотека Икс-библиотека«икс»}}) - — библиотека функций клиента [[X Window System|системы X Window]], написанная на [[Си (язык программирования)|языке Си]].
 
Содержит функции для взаимодействия с т. н. X-[[сервер]]омсервером. Библиотека позволяет использовать более высокий уровень [[абстракция исполнения|абстракции]], без знания деталей работы [[Основной протокол X Window System|основного протокола системы X Window]].
 
Некоторые пользовательские приложения используют Xlib напрямую (например, [[Opera]]), другие используют специальные инструментарии «[[виджет]]ов» - «надстройки» над базовой библиотекой Xlib.
 
[[ИзображениеФайл:Xlib and XCB in the X-client-libraries Window System graphics stack.svg|frame|Xlib и другие библиотеки её использующие|мини|455x455пкс]]
 
* [[X Toolkit Intrinsics|Встроенные средства]] (Xt)
* [[Xaw|Набор виджетов Athena]] (Xaw)
* [[Motif]]
* [[GTK+]]
* [[Qt]] (версия для X11)
* [[wxWidgets]]
* [[Simple DirectMedia Layer|SDL]]
* [[SFML]]
 
Библиотека Xlib появилась около [[1985]] года и на настоящее время используется как основа и как основной [[графический интерфейс пользователя]] во многих [[Юникс]]-подобных [[операционная система|операционных системах]].
Строка 17 ⟶ 20 :
Библиотека [[XCB]] - попытка разработки замены Xlib.
 
== Функции XLib ==
Функции XLib могут быть сгруппированы в несколько категорий:
# Операции управления соединением с X сервером, такие как <code>XOpenDisplay</code>, <code>XCloseDisplay</code>
# Запросы X серверу, такие как <code>XCreateWindow</code>, <code>XCreateSimpleWindow</code>, <code>XCreateGC</code>, <code>XCreateColomap</code>
# Операции клиентской части, такие как управления событиями: <code>XNextEvent</code>, или операции с локальными данными <code>XCreateImage</code>.
 
== Пример программы ==
Следующий пример программы устанавливает соединение с X сервером и выводит на экран окно с приветствием:
 
<source lang="C">
/*
Компилируется след. строкой: cc test.c -o test -lX11
*/
 
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
 
extern int errno;
 
int main(void) {
Display *d;
Window w;
XEvent e;
const char *msg = "Hello, World!";
int s;
 
/* Соединиться с X сервером, если X сервер на удаленной машине
* следует разрешить на машине, где запущен X Server
* удаленные соединения командой xhost+ (см. man xhost)
*/
if ((d = XOpenDisplay(getenv("DISPLAY"))) == NULL) {
printf("Can't connect X server:%s\n", strerror(errno));
exit(1);
}
 
s = XDefaultScreen(d);
 
/* Создать окно */
w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 200, 200, 1,
XBlackPixel(d, s), XWhitePixel(d, s));
 
/* На какие события будем реагировать */
XSelectInput(d, w, ExposureMask | KeyPressMask);
 
/* Вывести окно на экран */
XMapWindow(d, w);
 
/* Бесконечный цикл обработки событий */
while (1) {
XNextEvent(d, &e);
 
/* Перерисовать окно */
if (e.type == Expose) {
XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);
XDrawString(d, w, DefaultGC(d, s), 50, 50, msg, strlen(msg));
}
/* При нажатии кнопки-выход */
if (e.type == KeyPress)
break;
}
 
/* Закрыть соединение с X сервером */
XCloseDisplay(d);
 
return 0;
}
</source>
 
Клиент (программа) создает соединение с X сервером функцией <code>XOpenDisplay</code>, в которую передается указатель на DISPLAY, определенный через переменную среды исполнения. В [[UNIX]] это можно сделать командой export DISPLAY=":0.0". В качестве переменной DISPLAY можно указать и удаленную машину с запущенным X сервером. Функция (макрос) <code>DefaultScreen</code> выбирает текущий экран (в X Window может быть несколько экранов), <code>XCreateSimpleWindow</code> создает окно, а <code>XSelectInput</code>
определяет события, на которые окно должно реагировать. <code>XMapWindow</code> выводит окно на экран, а <code>XNextEvent</code> выбирает из очереди событие, которое выше было определено. При событии <code>Expose</code> в окне рисуется прямоугольник и выводится строка "Hello World!". При нажатии клавиши на клавиатуре программа завершает работу.
 
== Ссылки ==
* {{ref-en}} [https://web.archive.org/web/20090217235848/http://www.sbin.org/doc/Xlib/ Руководство по программированию с использованием библиотеки Xlib]
* {{ref-en}} [http://tronche.com/gui/x/xlib/function-index.html Список функций библиотеки Xlib]
* {{ref-en}} [http://www.rahul.net/kenton/bib.html Kenton Lee's pages on X Window and Motif] {{Wayback|url=http://www.rahul.net/kenton/bib.html |date=20130520013725 }}
* {{ref-en}} [http://tronche.com/gui/x/xlib-tutorial/ Учебник по Xlib]
* {{ref-en}} [https://web.archive.org/web/20071018025425/http://users.actcom.co.il/~choo/lupg/tutorials/xlib-programming/xlib-programming.html#create_window Подробный обучающий курс Xlib]
* {{ref-en}} [http://www.dis.uniroma1.it/%7eliberato/screensaver Использование Xlib для создания скринсейвера]
* {{ref-ru}} [https://web.archive.org/web/20111202230359/http://motif.opennet.ru/book3.html Xlib - интерфейс с X Window на языке C]
* {{ref-ru}} [https://web.archive.org/web/20100111040051/http://gazette.linux.ru.net/lg78/articles/rus-tougher.html Программирование с Xlib на C++] {{недоступная ссылка|число=14|месяц=05|год=2013|url=http://gazette.linux.ru.net/lg78/articles/rus-tougher.html}}
* {{ref-ru}} [http://dfe3300.karelia.ru/koi/posob/X/index.html Программирование в среде X Window на основе библиотеки Xlib]
 
{{XWinSysX Window System}}
{{Инструментарии виджетов}}
{{Widget Toolkits}}
 
[[Категория:X Window System]]
 
[[de:Xlib]]
[[en:Xlib]]
[[es:Xlib]]
[[fi:Xlib]]
[[fr:Xlib]]
[[ja:Xlib]]
[[pl:Xlib]]
[[zh:Xlib]]