Veamos otra versión del ejemplo (2.3), usando fachadas.
#include <image_2D_array_char.hpp> void main( int argc, char ** argv ) { bicotiImage2DArrayChar imagen; imagen.BuildMapper(); imagen.GetMapper()->BuildDeviceFile( "archivos1.jpg" ); imagen.GetMapper()->BuildMapperJPEGIJG(); imagen.GetMapper()->Read(); imagen.GetMapper()->BuildDeviceFile( "salida1.jpg" ); imagen.GetMapper()->Write(); imagen.DestroyMapper(); };Podemos ver la idea práctica de las fachadas. Cuando se elige una instancia de esta, se selecciona además de la dimensión e implementación, el tipo de pixel a usar
En el siguiente ejemplo se usa la nueva fachada de Actor Image para leer la imagen de disco y mostrarla en una ventana del mismo tamaño de la imagen leída. Aunque a veces puede ser tedioso escribir los nombre de las clases BiCoTI, son estos ejemplos casi autoexplicativos los que muestran la conveniencia en la elección. Merece comentario en el ejemplo la instrucción SetMainActor( true ) del actor, indica que al cerrar la ventana se detenga el Event Loop.
#include <actor_image_2D_rgb_char_qt.hpp> void main( int argc, char ** argv ) { bicotiActorImage2DRGBCharQT imagen; bicotiActorImage2DRGBCharQT :: EventLoopManager event_loop( argc, argv ); bicotiActorImage2DRGBCharQT :: HomologousFactory factory; imagen.BuildMapper(); imagen.GetMapper()->BuildDeviceFile( "archivos.jpg" ); imagen.GetMapper()->BuildMapperJPEGIJG(); imagen.GetMapper()->Read(); imagen.DestroyMapper(); int width = imagen.GetImplementation()->GetX0Size(); int height = imagen.GetImplementation()->GetX1Size(); imagen.GetActor()->SetSize( width , height ); imagen.GetActor()->SetMainActor( true ); factory.CreateHomologous( imagen.GetActor() ); event_loop.Start(); };
Terminaremos viendo otro ejemplo en el que leemos la imagen sobre un actor monocromático, le sumamos 1, calculamos el logaritmo y multiplicamos por 42 todos los pixeles de la imagen para finalmente mostrarlo.
#include <actor_image_2D_char_qt.hpp> void main( int argc, char ** argv ) { bicotiActorImage2DCharQT imagen; bicotiActorImage2DCharQT :: EventLoopManager event_loop( argc, argv ); bicotiActorImage2DCharQT :: HomologousFactory factory; imagen.BuildMapper(); imagen.GetMapper()->BuildDeviceFile( "archivos.jpg" ); imagen.GetMapper()->BuildMapperJPEGIJG(); imagen.GetMapper()->Read(); imagen.DestroyMapper(); imagen.BuildOperatorUnary(); imagen.GetOperatorUnary()->Addition( 1 ); imagen.GetOperatorUnary()->Logarithm(); imagen.GetOperatorUnary()->Product( 42 ); imagen.DestroyOperatorUnary(); int width = imagen.GetImplementation()->GetX0Size(); int height = imagen.GetImplementation()->GetX1Size(); imagen.GetActor()->SetSize( width , height ); imagen.GetActor()->SetMainActor( true ); factory.CreateHomologous( imagen.GetActor() ); event_loop.Start(); };