next up previous contents
Next: B.1.7 Virtual mouse Up: LE-LISP Previous: Mesajes multi-idioma

B.1.6 Virtual bitmap display

El sistema LE-LISP proporciona una utilidad de gráficos denominada Virtual Bitmap Display o abreviadamente VBD con la que consigue gestionar una pantalla de mapa de puntos y un dispositivo apuntador de modo independiente al hardware subyacente. La portabilidad del VBD ha permitido su migración a diferentes sistemas de ventanas, servidores y gestores.

Pantallas

Una pantalla (screen) es una estructura LE-LISP que permite manipular el dispositivo físico de la pantalla. Las funciones del VBD permiten construir simultáneamente pantallas sobre diferentes dispositivos. Esto es útil, por ejemplo, cuando queremos mostar ventanas en más de un terminal gráfico. La función bitprologue crea, inicializa y devuelve como resultado una pantalla. Con current-display podemos hacer que una de las pantallas previamente creadas se convierta en la actual. Todas las funciones del VBD actúan sobre la pantalla actual excepto aquellas que permiten especificar explícitamente un nombre de pantalla. Mediante bitepilogue se cierra una pantalla. Con bitmap-save se puede guardar para ser restaurada posteriormente con bitmap-restore. La función bitmap-flush se utiliza en sistemas con buffer, como X Window System, para indicar explícitamente que se realicen las operaciones almacenadas en el buffer. Mediante funciones VBD se puede obtener información concerniente a la resolución, los colores disponibles, las texturas (patterns), las fuentes, el cursor, etc.

Ventanas

Las ventanas son estructuras que tienen asociadas representaciones gráficas en la pantalla. Cada ventana tiene asociada un entorno gráfico que almacena información concerniente al cursor, los colores, la fuente, la textura, el estilo de línea, el modo de dibujo y la zona de clipping actualmente utilizados en esa ventana. Los eventos asociados a las ventanas pueden estar causados por movimientos o clicks del ratón o por operaciones realizadas por el gestor de ventanas. Una ventana puede contener subventanas, las cuales a su vez pueden contener más subventanas, lo cual permite establecer una jerarquía. Todas las operaciones que se pueden realizar sobre ventanas son aplicables también a las subventanas.

Fuentes

Indican cómo se van a representar los caracteres en pantalla. EN VBD, una fuente se referencia mediante un entero pequeño. Mediante llamadas a load-font se pueden cargar fuentes disponibles en el sitema, teniendo en cuenta que el string que se le pasa como argumento varía según el sistema usado y por tanto no es portable. En X11 tendría un aspecto así:

-adobe-helvetica-bold-r-normal--12-120-75-75-p-82-iso8859-1

Mediante font-max se puede conocer el número máximo de fuentes disponibles y mediante current-font se puede establecer la fuente actual.

Colores

El color de primer plano o foreground se establece mediante current-foreground y se utiliza para dibujar las líneas y los caracteres y para el relleno de zonas cuando la textura de relleno es standard-foreground-pattern. El color de fondo o background se establece mediante current-background y se utiliza como color de fondo en los caracteres y para el relleno de zonas cuando la textura actual es standard-background-pattern.

Mediante make-color se puede crear un nuevo color indicando los componentes RGB. La función make-named-color devuelve un color cuyos componentes RGB están especificados en la base de datos de color del sistema. Mediante make-mutable-color podemos crear colores cuyos componentes RGB se pueden cambiar dinámicamente, lo cual es útil para conseguir efectos de parpadeo y animación. Cuando un color no se va a utilizar más, es conveniente llamar a kill-color.

Cursores

El cursor es la imagen del ratón sobre la pantalla. En LE-LISP se referencian mediante un entero pequeño. Mediante current-cursor se cambia el cursor actual. Utilizando make-cursor es posible crear un cursor a partir de un bitmap. Existe un conjunto de cursores definidos en el sistema a los que se puede acceder llamando a make-named-cursor.

Texturas

Para rellenar áreas se usan texturas (patterns) de uno o de dos colores. Se pueden crear texturas a partir un icono. El relleno se efectuará repitiendo regularmente la imagen del icono. Funciones que tratan con texturas son current-pattern, pattern-max y make-pattern.

Modos de dibujo

El modo en que se combinan los puntos en la pantalla cuando se realizan dibujos se puede establecer mediante la función current-mode. Hay 16 modos disponibles para combinar un pixel de la imagen a dibujar con los pixels ya presentes en la pantalla.

Primitivas gráficas

Las funciones draw-polyline, draw-polymarker, fill-area y draw-substring implementan las cuatro primitivas de menor nivel definidas en el estándar GKS [Hopgood et al. 83]. Las primitivas para dibujar objetos elipsoidales se implementan mediante draw-ellipse y full-ellipse. Por razones de eficiencia, LE-LISP proporciona funciones adicionales de más alto nivelgif que incluyen el dibujo de puntos, línea, rectángulos, círculos y arcos circulares, así como el relleno de zonas rectangulares y circulares,incluyendo sectores circulares. También se proporcionan funciones adicionales para el manejo de texto.

Bitmaps

Un mapa de bits es un array bidimensional de bits que se implementa mediante la estructura bitmap. Actualmente el VBD tan sólo es capaz de manipular bitmaps de dos colores. La modificación y consulta de las características de un bitmap se realiza por medio de métodos asociados a la estructura. Una característica interesante es la posibilidad de comprimir un bitmap hasta en un factor de 5 a 1. La compresión se realiza siempre que la variable #:system:compressed-icon es distinta de (), con la facilidad de que la lectura de los bitmaps siempre se realiza correctamente ya que se determina dinámicamente si la fuente está comprimida o no.

Los bitmap se crean mediante create-bitmap y se puede liberar la memoria que ocupan cuando no se utilizan llamando a kill-bitmap. Se pueden examinar y modificar bits individuales mediante bmref y bmset, respectivamente. Mediante bitblit se pueden copiar zonas rectangulares de un bitmap fuente a otro destinogif.

Bytemaps

Un mapa de bytes es un subtipo de bitmap sin campos adicionales que permite manipular hasta 256 colores. Se crean mediante create-bytemap y se manipulan mediante funciones similares a las utilizadas con los bitmaps así como otras que manipulan los colores.


next up previous contents
Next: B.1.7 Virtual mouse Up: LE-LISP Previous: Mesajes multi-idioma

Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997