/*--------------------------------------------------------------------
 * FICHERO:  TifLeIBN.c
 * OBJETIVO: Definir la funcin Tif_LeeImagenBN()
 * AUTOR:    Pedro Reina
 * FECHA:    V.14.7.1995
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Ficheros de cabecera
 *------------------------------------------------------------------*/

#include "Tiff.h"

/*--------------------------------------------------------------------
 * Definicin de funciones
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------Olimpo
 * FUNCION:  Tif_LeeImagenBN()
 * OBJETIVO: Leer los datos que realmente expresan la imagen
 *           que se est manejando y est en blanco y negro
 *           sin comprimir
 * ENTRADAS: Un tiff y la direccin de memoria donde
 *           dejar los datos
 * SALIDAS:  Lgica, que indica que todo ha ido bien
 * EJEMPLO:  Tif_LeeImagenBN ( Imagen, Aux )
 *------------------------------------------------------------------*/
logico Tif_LeeImagenBN (Tiff, Dato)
tiff    Tiff;
memoria Dato;
  {
  logico   Error;
  entero   Tamano, Pos;
  contador Banda;

  if ( Tif_Compresion(Tiff) == TIF_SIN_COMPRESION )
    {
    
    if ( Tif_TotalBanda(Tiff) == 1 )
      {
      Error = SI;
      if ( (Pos = Tif_Desplazamiento(Tiff, 0)) &&
           (Tamano = Tif_Tamano(Tiff))         &&
           Fch_Coloca (Tif_Fichero(Tiff), Pos) &&
           Fch_LeeOcteto (Tif_Fichero(Tiff), Dato, Tamano) )
        { Error = NO; }
      }
      
    else  /* La imagen tiene ms de una banda */
      {
      Error = NO;
      for ( Banda=0 ; Banda<Tif_TotalBanda(Tiff) && !Error ; Banda++ )
        {
        Error = SI;
        if ( (Pos = Tif_Desplazamiento(Tiff, Banda)) &&
             (Tamano = Tif_TamanoBanda(Tiff, Banda)) &&
             Fch_Coloca (Tif_Fichero(Tiff), Pos)     &&
             Fch_LeeOcteto (Tif_Fichero(Tiff), Dato, Tamano) )
          {
          Error = NO;
          Dato += Tamano;
          }
        }
      }
    } /* Fin if TIF_SIN_COMPRESION */
    
  return ( !Error );
  }
