En el sistema X Window , la extensión X Nonrectangular Window Shape permite que las ventanas tengan formas arbitrarias y no rectangulares.
Dos applets muy conocidos que utilizan la extensión shape son oclock , un sencillo reloj analógico redondo, y xeyes , que muestra dos ojos saltones que siguen el cursor en la pantalla como si lo estuvieran observando. La mayoría de los sistemas X incluyen uno u otro (o ambos) en sus instalaciones estándar. Además, algunos gestores de ventanas utilizan la extensión shape para dibujar iconos no rectangulares.
Implementación
Las aplicaciones solo pueden crear ventanas rectangulares, pero pueden modificar su forma para que formen parte del rectángulo original. El área restante del rectángulo no solo es transparente (deja ver lo que hay debajo de la ventana), sino que, de hecho, no forma parte de ella. Por ejemplo, si una ventana tiene un agujero en el centro, no solo se ve lo que hay debajo, sino que al hacer clic en el agujero se considera que se hace clic en el contenido de la ventana.

Las aplicaciones crean ventanas como de costumbre (especificando ancho y alto), pero luego pueden cambiar la forma de una ventana para que sea un subconjunto del área original. Esto se logra enviando al servidor de visualización X una lista de rectángulos o un mapa de píxeles con profundidad de color uno (un mapa de píxeles en blanco y negro). Más precisamente, un cliente puede solicitar que los rectángulos o el mapa de píxeles se establezcan como la nueva forma, pero también que se combinen de diversas maneras (por ejemplo, intersectando o añadiendo) con la forma anterior. Una tercera forma de cambiar la forma de una ventana es utilizando la forma actual de la ventana o una parte de ella.
La extensión permite definir la forma de dos regiones distintas: la región de recorte y la región delimitadora. Estas dos áreas se definen incluso para ventanas que no utilizan la extensión de forma: la región de recorte es el área que se puede usar para dibujar, y la región delimitadora es el área total que cubre la ventana (es decir, la región de recorte más el borde). La extensión de forma permite definir dos formas independientes para estas dos regiones.
Tanto el recorte como el delimitador están asociados, en la extensión de forma, a dos áreas: una región rectangular predeterminada y una región del cliente que puede no ser rectangular, definida y modificada por el cliente según lo especificado anteriormente. La región efectiva, que es la forma real de la ventana, es la intersección de estas dos áreas. Esta intersección se realiza cada vez que se modifica alguna de las regiones: por ejemplo, si la región del cliente contiene partes que están fuera de la región predeterminada, pero esta última se amplía, la región efectiva incluirá dichas partes.
Véase también
Enlaces externos
- "Biblioteca de extensión de formas de ventana no rectangulares X" .Biblioteca de extensión de formas de ventana no rectangulares X
- "Protocolo de extensión de forma de ventana no rectangular X" .Protocolo de extensión de forma de ventana no rectangular X
- Extensiones de X Window
