next up previous
Next: Ejemplo de I/O Up: Entrada/Salida Previous: Dispositivos

Mapeadores

El siguiente esquema propone una jerarquía de clases correspondientes a los mapeadores.

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

El propósito de los mapeadores(mappers) es convertir desde y hacia el formato de imagen BICOTI-I , imágenes en cualquier formato gráfico. Se ven como ejemplos JPG, GIF, TWAIN, BICOTI y Visualization. A este nivel se han abstraído las fuentes de datos (encapsuladas en los devices), evitando por ende la dependencia de los dispositivos físicos y/o sistemas operativos subyacentes. La idea es que los mappers usan a los devices como drivers y por lo tanto los detalles específicos de implementación de los métodos en los mappers, solo involucran problemas relacionados con el formato en particular.

Los primeros tres ejemplos no merecen mayores comentarios, son tres formatos estándar ampliamente difundidos. La existencia del formato de conversión BICOTI puede parecer algo extraño en principio, sin embargo permite fácilmente extender la ortogonalidad incluso hasta el nivel de las aplicaciones. Como ejemplo concreto pensemos en dos aplicaciones, aplic1 y aplic2 independientes, interactuando de la siguiente manera: aplic1 lee una imagen de disco en formato JPG, realiza un cierto procesamiento y produce como salida una imagen BICOTI-I ; posteriormente aplic2 recibe esta imagen BICOTI-I y realiza su propio procesamiento. Este esquema es realizable en forma natural dada la existencia de bicotiDeviceMemory y bicotiMapperBICOTI. Ilustramos este ejemplo mediante la Fig.3.

Figure 3: El Mapper Bicoti
\includegraphics[scale=0.5]{EjemMemory.eps}

Otro caso destacable es el bicotiMapperVisualization cuyo cometido es convertir la imagen BICOTI-I a elementos de algún modelo de visualización. Un caso que deja clara la idea es la visualización 3D. Las bibliotecas gráficas en general permiten incrustar elementos en una escena, el propósito de esta subfamilia de mappers es generar este tipo de elementos a partir de una imágen digital. Por ejemplo si la imagen BICOTI-I fuera una esfera sólida, un mapper de este tipo podría hallar un conjunto de puntos sobre la superficie y agruparlos en triángulos para entregar a la biblioteca de visualización.

Figure 4: Una representación sólida de la esfera
\includegraphics[scale=0.5]{Sphere.eps}

La anterior no es la única representación espacial posible a partir de los puntos calculados. En este caso hemos elegido un aspecto sólido, pero podríamos haber optado por un wireframe[*]. Ver Fig.5.

Figure 5: Una representación wireframe de la esfera
\includegraphics[scale=0.5]{Spherew.eps}

Lo que es importante destacar es que al mapper solo le competen los detalles de representación de la imagen (en este caso encontrar los puntos); en este ejemplo es el device el encargado de interpretar las directivas de iluminación, textura, etc. relacionadas estrictamente con el medio físico. Notar que en realidad este dispositivo debe implementar métodos de mucho más alto nivel que Get o Put y es un candidato por ende a encabezar una jerarquía separada.


next up previous
Next: Ejemplo de I/O Up: Entrada/Salida Previous: Dispositivos
Claudio Risso 2001-06-02