home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / grafik / disptiff / readhdr.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-04-27  |  1.2 KB  |  64 lines

  1. #include <tiff.h>
  2.  
  3. extern LONG bigRead();
  4. extern LONG lseek();
  5. extern BOOL reorder();
  6. extern BOOL correct_version();
  7.  
  8. BOOL _TIFF_reorder_bytes = FALSE;
  9.  
  10. /* read TIFF file header record */
  11. SHORT
  12. read_header(fhandle, header_buff)
  13. SHORT fhandle;
  14. TIFF_HEADER far *header_buff;
  15. {
  16.     LONG nbytes;
  17.  
  18.     /* make sure buffer isn't null */
  19.     if(!header_buff)
  20.     {
  21.         return(0);
  22.     }
  23.  
  24.     /* seek to start of file */
  25.     if(lseek(fhandle, 0L, 0) == (LONG)(-1))
  26.     {
  27.         return(0);
  28.     }
  29.  
  30.     /* do the read */
  31.     nbytes = bigRead(fhandle, header_buff, (LONG)TIFF_HEADER_SIZE);
  32.     if(nbytes != TIFF_HEADER_SIZE)
  33.     {
  34.         return(0);
  35.     }
  36.  
  37.     /* reorder the bytes, if necessary */
  38.     switch(header_buff->byte_order)
  39.     {
  40.     case INTEL:
  41.         _TIFF_reorder_bytes = FALSE;
  42.         break;
  43.  
  44.     case MOTOROLA:
  45.         _TIFF_reorder_bytes = TRUE;
  46.         break;
  47.  
  48.     default:        /* illegal byte order flag */
  49.         return(0);
  50.     }
  51.  
  52.     /* routine does nothing unless the _TIFF_reorder_bytes flag is set */
  53.     reorder((LONGPTR)&(header_buff->version), SHORT_SIZE);
  54.     reorder((LONGPTR)&(header_buff->dir_offset), LONG_SIZE);
  55.  
  56.     /* make sure version is correct */
  57.     if(!correct_version(header_buff->version))
  58.     {
  59.         return(0);
  60.     }
  61.  
  62.     return(LOWORD(nbytes));
  63. }
  64.