Região (X11)
O tipo de dados da Xlib para uma área arbitrária expressa como um conjunto de retângulos que não se sobrepõem — aquilo contra o qual se recorta, em que se juntam eventos Expose e com que se calcula o que precisa ser redesenhado.
Uma região começa vazia com XCreateRegion, ou a partir de um polígono, e vai sendo construída com XUnionRectWithRegion, interseção, diferença e XOR com outras regiões. Internamente, é uma lista de retângulos ordenados em faixas horizontais, de modo que a união de mil caixas sobrepostas vira uma forma compacta e sem ambiguidade, sem nada contado duas vezes. O uso clássico é o tratamento de Expose: o servidor envia um evento para cada pedaço visível de uma janela que foi descoberta, o cliente vai colocando cada retângulo numa região até o contador chegar a zero, define a região como máscara de recorte do seu graphics context com XSetRegion e redesenha uma única vez. Tudo o que fica fora da máscara o servidor descarta.
O servidor tem a mesma estrutura do seu lado, a miRegion, e é nela que falam as extensões Shape, Damage e XFIXES: o formato de uma janela é uma região, uma área danificada é uma região, e o XFIXES permitiu que os clientes enviassem regiões pelo protocolo em vez de listas de retângulos. O código se mostrou tão durável que o pixman, o rasterizador por baixo do Cairo, carrega adiante o código de regiões do servidor, com a linha de copyright da DEC de 1987 ainda no topo do arquivo.