home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / datafiles / text / howtocode / source / codemanual / scale.c < prev   
C/C++ Source or Header  |  1995-02-27  |  3KB  |  122 lines

  1. /*   Open a window & scale a bitmap   
  2. */ SET TABS TO 8
  3. /* PLEASE TAKE NOTE  I DO NOT EVEN OWN A C COMPILER!!
  4. IT MOST PROBABLY DOES NOT WORK BUT ITS FAIRLY CLOSE I THINK. IT IS FOR
  5. DEMONSTRATION PURPOSES ONLY FOR THE ENCONN.CODEMANUAL VOLUME2!!!!!!!!
  6.  
  7. AS WITH THE CODEMANUAL, LINES MARKED WITH "!" are Additions or
  8. Corrections added in by Andrew Patterson.
  9.  
  10. */
  11.  
  12. #include <exec/types.h>
  13. #include <intuition/intuition.h>
  14. #include <graphics/scale.h>
  15. #include <graphics/gfx.h>
  16. #include <graphics/rastport.h>
  17.  
  18. struct IntuitionBase *IntuitionBase;
  19. struct GfxBase *GfxBase;
  20.  
  21. /*************************************/
  22.  
  23. /*
  24. Mydat = incbin 'dh0:bmap' HEEHEE. This is wrong. I thing they are supposed
  25. to link in binary files later MAKE SURE ITS IN CHIP RAM
  26. */
  27.  
  28. /*
  29. ! If only you could. the actual code is something like
  30. ! extern UBYTE MyDat[];
  31. ! And the person has to compile mydat seperately and link it in later.
  32. */
  33.  
  34. extern UBYTE MyDat[];
  35.  
  36. /*****************************/
  37.  
  38. void main()
  39. {
  40. struct Window *win;
  41. struct BitMap bm;
  42. struct TagItem wdtags =
  43.  {
  44.  WA_Top, 20,
  45.  WA_Left, 100,
  46.  WA_InnerWidth, 100,
  47.  WA_InnerHeight, 100,
  48.  WA_Flags, WFLG_DRAGBAR | WFLG_ACTIVATE | 
  49.            WFLG_DEPTHGADGET,
  50.  WA_Title, "Scaling",
  51.  }
  52. struct BitScaleArgs bsa;
  53.  
  54.  
  55.     if (IntuitionBase = OpenLibrary("intuition.library", 37))
  56.     {
  57.         if (GfxBase = OpenLibrary("graphics.library", 37))
  58.      {
  59.         if (win = OpenWindowTagList(NULL,&wdtags)
  60.         {
  61.         InitBitMap(&bm,3,400,200);
  62.  
  63.                 bm.Planes[0] = &MyDat[0];
  64.                 bm.Planes[1] = &MyDat[10000];
  65.                 bm.Planes[2] = &MyDat[20000];
  66.  
  67.         bsa.SrcX = 0;
  68.         bsa.SrcY = 0;
  69.         bsa.SrcWidth = 400;
  70.          bsa.SrcHeight = 200;
  71.                 bsa.XSrcFactor = 400;
  72.         bsa.YSrcFactor = 200;
  73.                 bsa.DestX = win->BorderLeft;
  74.         bsa.DestY = win->BorderTop;
  75.                 bsa.DestWidth = 0;
  76.         bsa.DestHeight = 0;
  77.          bsa.XDestFactor = 400;
  78.                 bsa.YDestFactor = 200;
  79.         bsa.SrcBitMap = &bm;
  80.         bsa.DestBitMap = win->Rport.BitMap;
  81.         bsa.Flags = 0;
  82.                 bsa.XDDA = 0;
  83.                 bsa.YDDA = 0;
  84.  
  85.         BitMapScale(&bsa);
  86.  
  87.         Delay(50);
  88. /*
  89. !        How about a SetRast(win->Rport,0) so that the window is
  90. !        cleared before the next bitmap scale
  91. */
  92.         bsa.XDestFactor = 650;
  93.                 bsa.YDestFactor = 250;
  94.  
  95.         BitMapScale(&bsa);
  96.  
  97.         Delay(50);
  98.  
  99.         bsa.XDestFactor = 650;
  100.                 bsa.YDestFactor = 250;
  101.  
  102.         BitMapScale(&bsa);
  103.  
  104.         Delay(50);
  105.  
  106.         
  107.         bsa.XDestFactor = 100;
  108.                 bsa.YDestFactor = 100;
  109.  
  110.         BitMapScale(&bsa);
  111.  
  112.         Delay(50);
  113.  
  114.         
  115.         CloseWindow(win);
  116.         }
  117.  
  118.        CloseLibrary(GfxBase);
  119.      }
  120.     CloseLibrary(IntuitionBase);
  121.     }
  122. }