Para ver una imagen completa o una parte de la imagen con varios atributos, necesitamos organizar la información de la imagen de una manera particular, ya que la estructura existente del archivo de visualización no satisface nuestros requisitos para ver una imagen. Para lograr esta visualización, el archivo se divide en Segmentos . Cada segmento corresponde a un componente y está asociado con un conjunto de atributos y parámetros de transformación de imagen como escalado, rotación. La presencia de segmento permite:
- Subdivisión de la imagen.
- Visualización de una parte particular de la imagen.
- Escalado, rotación y traslación de la imagen.
Tipos de segmentos:
- Segmento publicado: cuando el atributo visible del segmento se establece en 1, se denomina segmento publicado. Esto se incluye en la lista de segmentos activos.
- Segmento no publicado: cuando el atributo visible del segmento se establece en 0, se denomina segmento no publicado. Esto no está incluido en la lista de segmentos activos.
Funciones para segmentar la pantalla:
- Creación de segmento: el segmento debe crearse o abrirse cuando no hay otro segmento abierto, ya que no se pueden abrir dos segmentos al mismo tiempo porque es difícil asignar instrucciones de dibujo a un segmento en particular. Al segmento creado se le debe dar un nombre que lo identifique el cual debe ser válido y no debe existir ningún segmento con el mismo nombre. Después de esto, inicializamos los elementos en la tabla de segmentos con nuestro nombre de segmento y la primera instrucción de este segmento se asigna en el siguiente almacenamiento gratuito en el archivo de visualización y los atributos de los segmentos se inicializan a los valores predeterminados.
Algoritmo:- Si algún segmento está abierto, dé el mensaje de error: «El segmento todavía está abierto» y vaya al paso 8.
- Lea el nombre del nuevo segmento.
- Si el nombre del segmento no es válido, envíe el mensaje de error: «El nombre del segmento no es un nombre válido» y vaya al paso 8.
- Si el nombre del segmento dado ya existe, proporcione el mensaje de error: «El nombre del segmento ya existe en la lista de nombres» y vaya al paso 8.
- Cree la siguiente área de almacenamiento libre en el archivo de visualización como inicio de un nuevo segmento.
- Inicialice el tamaño del nuevo segmento a 0 y todos sus atributos a sus valores predeterminados.
- Informar que el nuevo segmento ya está abierto.
- Deténgase.
- Cerrar un segmento: después de completar la entrada de todas las instrucciones del archivo de visualización, el segmento debe cerrarse, por lo que debe cambiarse el nombre, lo que se hace cambiando el nombre del segmento actualmente abierto como 0. Ahora el segmento con el nombre 0 está abierto, es decir el segmento sin nombre está abierto y si hay dos segmentos sin nombre presentes en el archivo de visualización, uno debe eliminarse.
Algoritmo:- Si algún segmento no está abierto, dé el mensaje de error: «Ningún segmento está abierto ahora» y vaya al paso 6.
- Cambie el nombre del segmento actualmente abierto a cualquier segmento sin nombre, digamos 0.
- Elimine cualquier otra instrucción de segmento sin nombre que se haya guardado e inicialice encima del segmento sin nombre sin instrucciones.
- Haga que la siguiente área de almacenamiento libre esté disponible en el archivo de visualización como inicio del segmento sin nombre.
- Inicialice el tamaño del segmento sin nombre a 0.
- Deténgase.
- Eliminación de un segmento: para eliminar un segmento en particular del archivo de visualización, solo debemos eliminar ese segmento sin destruir o reformar toda la visualización y recuperar el espacio ocupado por este segmento. Utilice este espacio para algún otro segmento. El método para lograr esto depende de la estructura de datos utilizada para representar el archivo de visualización. En el caso de arrays, el espacio dejado por el segmento eliminado se llena desplazando hacia arriba todos los segmentos que le siguen.
Algoritmo:
- Lea el nombre del segmento a eliminar.
- Si el nombre del segmento no es válido, envíe el mensaje de error: «El nombre del segmento no es un nombre válido» y vaya al paso 8.
- Si el segmento está abierto, muestra el mensaje de error: «No se puede eliminar un segmento abierto» y vaya al paso 8.
- Si el tamaño del segmento es menor que 0, no se requiere procesamiento y vaya al paso 8.
- Los segmentos que siguen al segmento eliminado se desplazan según su tamaño.
- Recupere el espacio eliminado reiniciando el índice de la siguiente instrucción libre.
- La posición inicial de los segmentos desplazados se ajusta restando el tamaño del segmento eliminado.
- Deténgase.
- Cambiar el nombre de un segmento: Esto se hace para lograr el almacenamiento en búfer doble , es decir, la idea de almacenar dos imágenes, una para mostrar y otra para crear, modificar y animar.
Algoritmo:- Si los nombres de los segmentos anterior y nuevo no son válidos, envíe el mensaje de error: «Los nombres de los segmentos no son nombres válidos» y vaya al paso 6.
- Si alguno de los dos segmentos está abierto, muestra el mensaje de error: «Los segmentos todavía están abiertos» y vaya al paso 6.
- Si el nuevo nombre de segmento dado ya existe en la lista de visualización, proporcione el mensaje de error: «El nombre de segmento ya existe» y vaya al paso 6.
- La entrada de la tabla de segmentos anterior se copia en la nueva posición.
- Eliminar el segmento antiguo.
- Deténgase.
Ventajas de usar una pantalla segmentada:
- La segmentación permite organizar los archivos de visualización en una estructura de subimagen.
- Permite aplicar diferentes conjuntos de atributos a diferentes partes de la imagen.
- Facilita la imagen cambiando/reemplazando segmentos.
- Permite la aplicación de transformación en porciones selectivas de la imagen.