Biblioteca de curses
La biblioteca curses proporciona un conjunto de funciones que le permiten manipular la pantalla de un terminal independientemente del tipo de terminal. La biblioteca de maldiciones soporta el color. Sin embargo, los caracteres de varios bytes no están soportados. Todas las referencias a caracteres en la documentación de curses hacen referencia a caracteres de un solo byte.
A lo largo de esta documentación, la biblioteca de curses se conoce como curses.
La base de la programación de maldiciones es la estructura de datos de la ventana. Utilizando esta estructura, puede manipular datos en la pantalla de un terminal. Puede indicar a los curses que traten toda la pantalla de terminal como una ventana grande, o puede crear varias ventanas en la pantalla. Las ventanas pueden ser de diferentes tamaños y pueden solaparse entre sí. Una aplicación de curses típica tiene una sola ventana grande y una subventana dentro de ella.
Cada ventana en la pantalla de un terminal tiene su propia estructura de datos de ventana. Esta estructura mantiene información de estado sobre la ventana, como por ejemplo su tamaño y dónde se encuentra en la pantalla. Curses utiliza la estructura de datos de la ventana para obtener la información relevante que necesita para llevar a cabo sus instrucciones.
Terminología
Al programar con maldiciones, debe estar familiarizado con los siguientes términos:
| Plazo | Definición |
|---|---|
| carácter actual | El carácter en el que está actualmente el cursor lógico. |
| línea actual | La línea en la que está actualmente el cursor lógico. |
| curscr | Una ventana predeterminada virtual proporcionada por curses. El curscr (pantalla actual) es una representación interna de lo que aparece actualmente en la pantalla externa del terminal. No modifique el curscr. |
| mostrar | Pantalla física conectada a una estación de trabajo. |
| cursor lógico | La ubicación del cursor dentro de cada ventana. La estructura de datos de ventana realiza un seguimiento de la ubicación de su cursor lógico. |
| pad | Un teclado es una ventana que no está restringida por el tamaño de la pantalla |
| cursor físico | El cursor que aparece en una pantalla. La estación de trabajo utiliza este cursor para grabar en la pantalla. Sólo hay un cursor físico por pantalla. |
| Pantalla | La ventana que llena toda la pantalla. La pantalla es sinónimo del stdscr. |
| stdscr | Una ventana predeterminada virtual (pantalla estándar) proporcionada por curses que representa toda la visualización. |
| ventana | Puntero a una estructura de datos C y la representación gráfica de dicha estructura de datos en la pantalla. Una ventana se puede considerar como una matriz bidimensional que representa cómo se ve toda o parte de la pantalla en cualquier punto en el tiempo. |
Convenios de denominación
Una subrutina de maldiciones individuales puede tener más de una versión. Las subrutinas curses con varias versiones siguen distintos convenios de denominación que identifican las distintas versiones. Estas convenciones añaden un prefijo a una subrutina de maldiciones estándar e identifican qué argumentos requiere la subrutina o qué acciones tienen lugar cuando se llama a la subrutina. Las distintas versiones de los nombres de subrutinas curses utilizan los prefijos siguientes:
| prefijo | Descripción |
|---|---|
| w | Identifica una subrutina que requiere un argumento de ventana |
| p | Identifica una subrutina que requiere un argumento de relleno |
| mv | Identifica una subrutina que primero realiza un movimiento a las coordenadas proporcionadas por el programa |
Si una subrutina curses tiene varias versiones y no incluye uno de los prefijos anteriores, se utiliza la ventana predeterminada curses stdscr (pantalla estándar). La mayoría de las subrutinas que utilizan stdscr son macros creadas en el archivo /usr/include/curses.h utilizando sentencias #define . El preprocesador sustituye estas sentencias en el momento de la compilación. Como resultado, estas macros no aparecen en el código ensamblador compilado, un rastreo, un programa de depuración o el código fuente de curses.
Si una subrutina curses sólo tiene una única versión, no utiliza necesariamente stdscr. Por ejemplo, la subrutina printw imprime una serie en stdscr. La subrutina wprintw imprime una serie en una ventana específica proporcionando el argumento window . La subrutina mvprintw mueve las coordenadas especificadas a stdscr y, a continuación, realiza la misma función que la subrutina printw . Del mismo modo, la subrutina mvwprintw mueve las coordenadas especificadas a la ventana especificada y, a continuación, realiza la misma función que la subrutina wprintw .
Estructura de un programa Pprogram curses
En general, un programa de maldiciones tiene la siguiente progresión:
- Iniciar maldiciones.
- Compruebe el soporte de color (opcional).
- Color de inicio (opcional).
- Cree una o más ventanas.
- Manipular ventanas.
- Destruya una o más ventanas.
- Detener maldiciones.
Algunos pasos son opcionales, por lo que su programa no tiene que seguir esta progresión exactamente.
Valores de retorno
Con algunas excepciones, todas las subrutinas curses devuelven el valor entero ERR o el valor entero OK. Las subrutinas que no siguen esta convención se anotan adecuadamente. Las subrutinas que devuelven punteros siempre devuelven un puntero nulo o un error.