home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / anwor032.zip / antiword.0.32 / imgtrans.c < prev    next >
C/C++ Source or Header  |  2001-01-29  |  2KB  |  72 lines

  1. /*
  2.  * imgtrans.c
  3.  * Copyright (C) 2000,2001 A.J. van Os; Released under GPL
  4.  *
  5.  * Description:
  6.  * Generic functions to translate Word images
  7.  */
  8.  
  9. #include <stdio.h>
  10. #include "antiword.h"
  11.  
  12.  
  13. /*
  14.  * bTranslateImage - translate the image
  15.  *
  16.  * This function reads the type of the given image and and gets it translated.
  17.  *
  18.  * return TRUE when sucessful, otherwise FALSE
  19.  */
  20. BOOL
  21. bTranslateImage(diagram_type *pDiag, FILE *pFile, BOOL bMinimalInformation,
  22.     long lFileOffsetImage, const imagedata_type *pImg)
  23. {
  24.     options_type    tOptions;
  25.  
  26.     DBG_MSG("bTranslateImage");
  27.  
  28.     fail(pDiag == NULL);
  29.     fail(pFile == NULL);
  30.     fail(lFileOffsetImage < 0);
  31.     fail(pImg == NULL);
  32.     fail(pImg->iHorSizeScaled <= 0);
  33.     fail(pImg->iVerSizeScaled <= 0);
  34.  
  35.     vGetOptions(&tOptions);
  36.     fail(tOptions.eImageLevel == level_no_images);
  37.  
  38.     if (bMinimalInformation) {
  39.         return bAddDummyImage(pDiag, pImg);
  40.     }
  41.  
  42.     switch (pImg->eImageType) {
  43.     case imagetype_is_dib:
  44.         return bTranslateDIB(pDiag, pFile,
  45.                 lFileOffsetImage + pImg->iPosition,
  46.                 pImg);
  47.     case imagetype_is_jpeg:
  48.         return bTranslateJPEG(pDiag, pFile,
  49.                 lFileOffsetImage + pImg->iPosition,
  50.                 pImg->iLength - pImg->iPosition,
  51.                 pImg);
  52.     case imagetype_is_png:
  53.         if (tOptions.eImageLevel == level_ps_2) {
  54.             return bAddDummyImage(pDiag, pImg);
  55.         }
  56.         return bTranslatePNG(pDiag, pFile,
  57.                 lFileOffsetImage + pImg->iPosition,
  58.                 pImg->iLength - pImg->iPosition,
  59.                 pImg);
  60.     case imagetype_is_emf:
  61.     case imagetype_is_wmf:
  62.     case imagetype_is_pict:
  63.     case imagetype_is_external:
  64.         /* FIXME */
  65.         return bAddDummyImage(pDiag, pImg);
  66.     case imagetype_is_unknown:
  67.     default:
  68.         DBG_DEC(pImg->eImageType);
  69.         return bAddDummyImage(pDiag, pImg);
  70.     }
  71. } /* end of bTranslateImage */
  72.