home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 3 / AACD03.BIN / AACD / Programming / ImageLib / Image_lib / lib_source / ScaleBitMap.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-04-17  |  2.0 KB  |  89 lines

  1. /* ScaleBitMap.c © PaweîMarciniak <pmarciniak@lodz.home.pl>*/
  2. #include <exec/types.h>
  3. #include <exec/memory.h>
  4. #include <graphics/scale.h>
  5. #include <utility/tagitem.h>
  6. #include <proto/exec.h>
  7. #include <proto/graphics.h>
  8. #include <proto/utility.h>
  9.  
  10. #include "/include/libraries/image.h"
  11.  
  12. /**ScaleBitMap**********************************************************/
  13.  
  14.  
  15. /* ScaleBitMap() (c) 1997 Paweî Marciniak
  16.   Modify date  |  Version  |  Comment
  17. ---------------+-----------+------------------------------
  18. 14-08-97 12:12 |  1.0      |
  19. */
  20. struct BitMap * __saveds __asm ScaleBitMapA( register __a0 struct BitMap *SrcBM_reg, register __a1 struct TagItem *Tags )
  21. {
  22.   struct BitScaleArgs *BSA;
  23.   struct TagItem *ti, *TagsTmp;
  24.   struct BitMap *DestBM, *SrcBM = SrcBM_reg;
  25.  
  26.   if(!(BSA = AllocVec( sizeof( struct BitScaleArgs ), MEMF_PUBLIC | MEMF_CLEAR )))
  27.     return( 0 );
  28.  
  29.  
  30. /* Tagi */
  31.   TagsTmp = Tags;
  32.   while ( ti = NextTagItem( &TagsTmp ) )
  33.   {
  34.     switch ( ti->ti_Tag )
  35.     {
  36.       case SBA_SrcX:
  37.         BSA->bsa_SrcX = ( UWORD )ti->ti_Data;
  38.       break;
  39.  
  40.       case SBA_SrcY:
  41.         BSA->bsa_SrcY = ( UWORD )ti->ti_Data;
  42.       break;
  43.  
  44.       case SBA_SrcWidth:
  45.         BSA->bsa_SrcWidth = ( UWORD )ti->ti_Data;
  46.         BSA->bsa_XSrcFactor = ( UWORD )ti->ti_Data;
  47.       break;
  48.  
  49.       case SBA_SrcHeight:
  50.         BSA->bsa_SrcHeight = ( UWORD )ti->ti_Data;
  51.         BSA->bsa_YSrcFactor = ( UWORD )ti->ti_Data;
  52.       break;
  53.  
  54.       case SBA_DestWidth:
  55.         BSA->bsa_XDestFactor = ( UWORD )ti->ti_Data;
  56.       break;
  57.  
  58.       case SBA_DestHeight:
  59.         BSA->bsa_YDestFactor = ( UWORD )ti->ti_Data;
  60.       break;
  61.  
  62.       default:
  63.       break;
  64.     }
  65.   }
  66.  
  67.   if(!(DestBM = AllocBitMap( BSA->bsa_XDestFactor,
  68.                              BSA->bsa_YDestFactor,
  69.                                SrcBM->Depth,
  70.                                BMF_CLEAR | BMF_INTERLEAVED,
  71.                                0 )))
  72.     {
  73.       FreeVec( BSA );
  74.       return( 0 );
  75.     }
  76.   BSA->bsa_SrcBitMap = SrcBM;
  77.   BSA->bsa_DestBitMap = DestBM;
  78.  
  79.   BitMapScale( BSA );
  80.   WaitBlit();
  81.   FreeVec( BSA );
  82.   return( DestBM );
  83. }
  84.  
  85.  
  86.  
  87.  
  88.  
  89.