Movatterモバイル変換


[0]ホーム

URL:


Перейти до вмісту
Вікіпедія
Пошук

Xlib

Очікує на перевірку
Матеріал з Вікіпедії — вільної енциклопедії.

Статус версії сторінки

На цій сторінці показано неперевірені зміни

Xlib
Типбібліотека
РозробникX.Org Foundation
Перший випуск~1985
Операційна системаGNU/Linux і BSD[d] Редагувати інформацію у Вікіданих
Мова програмуванняC
ЛіцензіяExpat licensed[1], X11 licensed[1] і Historical Permission Notice and Disclaimerd[1] Редагувати інформацію у Вікіданих
Онлайн-документаціяx.org/releases/current/doc/libX11/libX11/libX11.html Редагувати інформацію у Вікіданих
Репозиторійgitlab.freedesktop.org/xorg/lib/libx11
Вебсайтwww.x.org/docs/X11/xlib.pdf
Xlib і інші бібліотеки, що її використовують

Xlib (libX11,X library — бібліотека X) —програмна бібліотека функційклієнтасистеми X Window (X11), написана намові Сі. Містить функції для взаємодії з так званим X-сервером. Бібліотека дозволяє використовувати вищий рівень абстракції, без знання деталей роботи основного протоколу системи X Window.

Деякі користувацькі програми використовують Xlib безпосередньо (наприклад,Opera), інші використовують спеціальні інструментарії«віджетів» — «надбудови» над базовою бібліотекою Xlib:

  • Вбудовані засоби (Xt)
  • Набір віджетів Athena (Xaw)
  • Motif
  • GTK+
  • Qt (версія для X11)
  • wxWidgets

Бібліотека Xlib з'явилася близько 1985 року і натепер використовується як основа і як основнийграфічний інтерфейс користувача в багатьох Юнікс-подібних операційних системах.

Як альтернативу можна відзначити бібліотекуXCB, спробу розробки заміни Xlib.

Функції XLib

[ред. |ред. код]

Функції XLib можуть бути згруповані в декілька категорій:

  • Операції управління з'єднанням з X сервером, такі як XOpenDisplay, XCloseDisplay
  • Запити X серверу, такі як XCreateWindow, XCreateSimpleWindow, XCreateGC, XCreateColomap
  • Операції клієнтської частини, такі як управління подіями: XNextEvent, або операції з локальними даними XCreateImage

Приклад програми

[ред. |ред. код]

Наступний приклад програми встановлює з'єднання з X сервером і виводить на екран вікно з привітанням:

/*  Компілюється таким рядком:   cc test.c -o test -lX11 */#include<X11/Xlib.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>externinterrno;intmain(void){Display*d;Windoww;XEvente;char*msg="Hello, World!";ints;/* З'єднатися з 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=DefaultScreen(d);/* Створити вікно */w=XCreateSimpleWindow(d,RootWindow(d,s),10,10,200,200,1,BlackPixel(d,s),WhitePixel(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);return0;}

Клієнт (програма) створює з'єднання з X сервером функцією XOpenDisplay, в яку передається вказівник на DISPLAY, визначений через змінну середовища виконання. У UNIX це можна зробити командою export DISPLAY = ".0:0". Як змінну DISPLAY можна вказати і віддалену машину з запущеним X сервером. Функція (макрос) DefaultScreen вибирає поточний екран (в X Window може бути декілька екранів), XCreateSimpleWindow створює вікно, а XSelectInput визначає події, на які вікно має реагувати. XMapWindow виводить вікно на екран, а XNextEvent вибирає з черги подію, яку вище було визначено. При подію Expose у вікні малюється прямокутник і виводиться рядок "Hello World!". При натисканні клавіші на клавіатурі програма завершує роботу.

Реалізації

[ред. |ред. код]

Xlib створено для Unix-подібних операційних систем, тому інших платформ було створено власні реалізації:

Примітки

[ред. |ред. код]
  1. абвhttps://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/COPYING
  2. waddlesplash (29 серпня 2024),waddlesplash/xlibe, процитовано 8 вересня 2024
  3. Xlib for BeOS.SourceForge.JP[en](яп.).
  4. tmzt (20 жовтня 2015),tmzt/androix-lib-libX11, процитовано 8 вересня 2024
  5. Google Code Archive - Long-term storage for Google Code Project Hosting.code.google.com. Процитовано 8 вересня 2024.
  6. termux/termux-x11, Termux, 8 вересня 2024, процитовано 8 вересня 2024
  7. The Python X Library.python-xlib.sourceforge.net. Процитовано 8 вересня 2024.
  8. python-xlib/python-xlib, python-xlib, 5 вересня 2024, процитовано 8 вересня 2024

Посилання

[ред. |ред. код]
Архітектура
Менеджери вікон
Розширення
Реалізації
Cygwin/X · X11.app · X.Org Server · X-Win32 · XFree86 · XDarwin · Xming · Xsun · Xgl
Стандарти
Додатки
Отримано зhttps://uk.wikipedia.org/w/index.php?title=Xlib&oldid=46694779
Категорії:
Приховані категорії:

[8]ページ先頭

©2009-2026 Movatter.jp