Leksykon IT › Infrastruktura › Drawable (X11)

Drawable (X11)

Infrastruktura Svenska → Zaktualizowano: 2026-10-08

Zbiorcza nazwa w protokole X na wszystko, po czym można rysować: okno lub pixmapę, traktowane przez każde żądanie rysowania identycznie.

X11 oddziela to, co widoczne, od miejsca, w którym się rysuje. Okno to powierzchnia na ekranie z pozycją, miejscem w kolejności nakładania i zdarzeniami; pixmapa to blok pamięci serwera, który niczego z tego nie ma. Mimo to każde żądanie rysowania — PolyLine, FillRectangle, PutImage, CopyArea — przyjmuje jako cel wyłącznie drawable, a protokołowi jest obojętne, który rodzaj dostanie. Dlatego podwójne buforowanie można zrobić ręcznie: rysujemy w pixmapie, kopiujemy do okna. Wymagania są takie, że głębia drawable i kontekstu graficznego musi się zgadzać, oba muszą należeć do tego samego ekranu, a okno musi być klasy InputOutput; okno InputOnly, istniejące wyłącznie po to, by przechwytywać zdarzenia, na każdą próbę rysowania odpowiada błędem BadMatch.

Rodzina z czasem się rozrosła. Rozszerzenie Composite zamienia każde przekierowane okno w tle w pixmapę, a XCompositeNameWindowPixmap ją udostępnia, by kompozytowy menedżer okien mógł malować okno jako teksturę. XRender nakłada swój Picture na drawable, GLX ma GLXDrawable dla okien, pixmap i pbufferów, a backend X biblioteki Cairo przyjmuje drawable jako argument. W Xlib ten typ to po prostu identyfikator zasobu, więc drawable jest w istocie obietnicą, że wysłana liczba wskazuje coś, po czym serwer potrafi rysować. Wayland nie ma odpowiednika; tam klient wysyła gotowe bufory, a serwer nikomu niczego nie rysuje.

← Wróć do leksykonu