next up previous
Next: Ejemplo de I/O Up: Modelo I/O Previous: Devices


Mapeadores

Los responsables de interpretar la información de los devices son los mappers. Estos últimos son la abstracción de los formatos gráficos y posibilitan esencialmente el almacenamiento y recuperación de imágenes. Como caso típico, un mapper asociado a un archivo(bicotiDeviceFile) y a una bicotiImageImplementation[Val99], es responsable de interpretar la información del archivo y volcarla en forma consistente en la imagen.

Figure 2: Los Mapeadores
\includegraphics[scale=0.35]{Mappers.eps}


En cuanto a la implementación, un problema adicional a considerar es la generalidad en el pixel de BiCoTI-I, dado que en efecto, la mayoría (¿todos?) de los formatos actuales de imagen están limitados a un pixel rgb. Nuestro esfuerzo se centró en resolver el problema de importar imágenes hacia una imagen BiCoTI. En algunos casos el proceso inverso puede significar pérdida de información[*] y seguramente se deberá definir en el futuro un formato propietario para algunos tipos de pixel no soportados convencionalmente. Para resolver el problema se ha re-utilizado el concepto de bicotiPixelConverter, basándonos en que de los formatos comunes es posible obtener pixels RGBA[*]. Como el mismo problema de generalidad se da en la visualización, no nos extenderemos ahora en los detalles de esta clase. De todos modos para fijar ideas, adelantaremos que cada implementación de esta clase nos permite convertir un formato de pixel a otro.
En Fig.2 se observa que bicotiMapper es un template. Este hecho es inevitable debido a la presencia de bicotiImageImplementation<PixelType>. El esquema usado para JPEG[IJG01] y TIFF[SGI01], así como el propuesto para incorporar un nuevo formato estándar (supongamos BMP), es escribir la especialización del mapper correspondiente (en este caso bicotiMapperBMP) basándose en bicotiPixelRGBA y usar como segundo parámetro del template a bicotiPixelConverterChar2RGBA, si se quiere escribir en una imagen monocromática. Este mecanismo que implica convertir uno por uno, todos los pixeles de la imagen a otro intermedio, no ha mostrado un pérdida importante de performance y da un interesante mecanismo para leer imágenes estándar, sobre cualquier tipo de pixel.


next up previous
Next: Ejemplo de I/O Up: Modelo I/O Previous: Devices
Claudio Risso 2001-06-02