Clases
bicotiFrame
bicotiFrame2D
bicotiFrame3D
bicotiFrame2DInternal
bicotiFrame2DExternal
bicotiFrame3DInternal
bicotiFrame3DExternal
Templates Clases
class bicotiFrame < class PixelType > ( Abstracta )
virtual
~bicotiFrame ( )
virtual
void First (
) = 0
virtual
void Next (
) = 0
PixelType&
CurrentPixel ( )
bool
IsDone ( )
int
GetFrameSize
(
)
Desstrutor.
A pesar de ser virtual, las clases bases necesitan tener definidos destructores
virtuales, que no hacen nada, para que se llame al constructor de los correspondientes
hijos, cuando se hace algo del
tipo :
bicotiFrame< int > * ptr_frame; // declaro un puntero
a la clase base
ptr_frame = new bicotiFrame2DInternal< int >( 3 ); // creo
un objeto concreto
.
.
delete ptr_frame; // libero la
memoria
Esta es una
de las funciones típicas de la interfáz de "Iteradores",
ver Dessign Patterns, las que proveen una forma estandar de recorrer al
Frame, independientemente de su dimensión. Esta función simplemente
coloca el iterador en el primer lugar del frame, el que tendría
índices ( 0 , 0 , .., 0 ).
Por ejemplo si tenemos un Frame2D 3x3 , como el de la
figura.
Obs : En esta clase la función es virtual
pura, se declara porque es parte de la interfáz estándar,
es decir
que
todo
Frame dede tener declarada la función First ( )
Esta es una
otra de las funciones típicas de la interfáz de "Iteradores",
ver Dessign Patterns.
Lo que hace
es mover el "puntero" al siguiente pixel.
Por ejemplo
si tenemos :
bicotiFrame2DInternal< int > frame( 3 );
.
.
frame.First()
frame.Next()
Pasaría algo como se indica en la figura :
Obs : En esta clase la función es virtual
pura, se declara porque es parte de la interfáz estándar,
es decir
que
todo
Frame dede tener declarada la función Next ( )
Esta es una
otra de las funciones típicas de la interfáz de "Iteradores",
ver Dessign Patterns.
Esta función
sirve para setear o leer el pixel actualmente apuntado por el iterador.
pix = frame.CurrentPixel();
obtendría pix = 3 , y si hago :
frame.CurrentPixel() = 6;
pongo un 6 en el lugar actual, como se muestra en la figura.
Obs : Al ser esta función parte de
la interfáz estándar,
todo
Frame dede tener declarada la función CurrentPixel ( )
Esta es una
otra de las funciones típicas de la interfáz de "Iteradores",
ver Dessign Patterns.
La función
devuelve "true" ( verdadero ) cuando el iterador está apuntando
al último lugar
del Frame
e intento moverme un lugar más, llamando nuevamente a Next( ).
Por ejemplo,
si estuvieramos en el caso de la figura :
is_done = frame.IsDone();
obtengo is_done
= false
Luego hago
:
frame.Next();
is_done = frame.IsDone();
quedo apuntando
al último lugar pero aún btengo is_done = false.
Si vuelvo
a hacer :
frame.Next();
is_done = frame.IsDone();
ahora el iterador no se moverá , porque estoy en el último lugar , y obtengo is_done = true.
Obs : Es importante aclarar que si el Frame
es n x n x...x n , el primer lugar es el de índices
( 0
, 0 , ... , 0 ) y el último el de índices ( n-1 , n-1 , ...
, n-1 ).
Obs : Al ser esta función parte de
la interfáz estándar,
todo
Frame dede tener declarada la función IsDone ( )
Esta es una
otra de las funciones típicas de la interfáz de "Iteradores",
ver Dessign Patterns.
Devuelve
el tamaño del frame, es decir si tenemos por ejemplo un frame 2D
3x3 o uno 3D 3x3x3,
GetFrameSize(
) devuelve 3.
Obs : Al ser esta función parte de
la interfáz estándar,
todo
Frame dede tener declarada la función GetFrameSize ( )