home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / datafiles / text / howtocode / source / codemanual / scale.asm < prev    next >
Assembly Source File  |  1995-02-27  |  5KB  |  265 lines

  1. ;
  2. ; NOTE! This code is not CJ approved! It is purely here to accompany
  3. ; the article Reading_C
  4. ;
  5.  
  6.  
  7. ;******SET TABS TO 8*********
  8.  
  9.     include 'exec/types.i'
  10.     include 'exec/exec_lib.i'
  11.     include 'dos/dos_lib.i'
  12.     include 'intuition/intuition.i'
  13.     include 'intuition/intuition_lib.i'
  14.     include 'graphics/graphics_lib.i'
  15.     include 'graphics/scale.i'
  16.     include 'graphics/gfx.i'
  17.     include 'graphics/rastport.i'
  18.  
  19. ;-------------------------------
  20.  
  21. OPENLIB MACRO
  22.     lea    \1,a1
  23.     move.l    #\2,d0
  24.     jsr    _LVOOpenLibrary(a6)
  25.     move.l    d0,\3
  26.     ENDM
  27.  
  28. CLOSELIB MACRO
  29.       movea.l    (4).w,a6    
  30.      movea.l    \1,a1
  31.      jsr    _LVOCloseLibrary(a6)
  32.      ENDM
  33.  
  34. ;-------------------------------
  35.  
  36. Start:
  37.     
  38.         movea.l (4).w,a6
  39.     OPENLIB    dosname,37,dosbase
  40.     tst.l    d0
  41.     beq    nodos
  42.     OPENLIB    intname,37,intbase
  43.     tst.l    d0
  44.     beq    closedos
  45.     OPENLIB    gfxname,37,gfxbase
  46.     tst.l    d0
  47.     bne    main
  48.     bra    closeInt
  49. main:    
  50.     movea.l intbase,a6
  51.     sub.l    a0,a0
  52.     lea    WindowTags,A1
  53.     jsr    _LVOOpenWindowTagList(a6)
  54.     move.l    d0,WindowHD
  55.  
  56.     movea.l    gfxbase,a6
  57.     lea     MyBitMap,a0
  58.     moveq    #3,d0
  59.     move.l    #400,d1
  60.     move.l    #200,d2
  61.     jsr    _LVOInitBitMap(a6)
  62.     lea    MyBitMap,a0
  63.     adda.l    #bm_Planes,a0
  64.     move.l    #dat,(a0)+
  65.     move.l    #dat+10000,(a0)+
  66.     move.l    #dat+20000,(a0)+
  67.     
  68.     movea.l    WindowHD,a2
  69.     movea.l    wd_RPort(a2),a1
  70.     moveq    #0,d2
  71.     moveq    #0,d3
  72.     move.b    wd_BorderLeft(a2),d2
  73.     move.b    wd_BorderTop(a2),d3
  74.     lea     bsa,a0
  75.     move.w    d2,bsa_DestX(a0)
  76.     move.w    d3,bsa_DestY(a0)
  77.  
  78.     
  79.     movea.l    wd_RPort(a2),a2
  80.     move.l    rp_BitMap(a2),bsa_DestBitMap(a0)
  81.  
  82.     move.l    #4,d7
  83.     bra    .pt
  84. .loop:
  85.     jsr    _LVOBitMapScale(a6)
  86. .pt    lea     bsa,a0
  87.     addi.w    #47,bsa_XDestFactor(a0)
  88.     addi.w   #9,bsa_YDestFactor(a0)
  89.     dbf    d7,.loop
  90.  
  91.  
  92.     move.l    #12,d7
  93.     bra   .pt2
  94. .loop2
  95.     jsr    _LVOBitMapScale(a6)
  96. .pt2:    lea     bsa,a0
  97.     subi.w    #47,bsa_XDestFactor(a0)
  98.     subi.w   #15,bsa_YDestFactor(a0)
  99.     dbf    d7,.loop2
  100.  
  101.     lea (bsa),a0
  102.     move.w    #600,bsa_XDestFactor(a0)
  103.     move.w    #250,bsa_YDestFactor(a0)
  104.     move.w    #100,bsa_XSrcFactor(a0)
  105.     move.w    #100,bsa_YSrcFactor(a0)
  106.     move.w    #100,bsa_SrcWidth(a0)
  107.     move.w    #100,bsa_SrcHeight(a0)
  108.  
  109.     jsr    _LVOBitMapScale(a6)
  110.  
  111.     move.l    #50,d1        ;OUR DELAY ROUTINE
  112.     bsr    del
  113.  
  114.     lea     bsa,a0
  115.     move.w    #600,bsa_XDestFactor(a0)
  116.     move.w    #250,bsa_YDestFactor(a0)
  117.     move.w    #40,bsa_XSrcFactor(a0)
  118.     move.w    #40,bsa_YSrcFactor(a0)
  119.     move.w    #40,bsa_SrcWidth(a0)
  120.     move.w    #40,bsa_SrcHeight(a0)
  121.     move.w    #100,bsa_SrcX(a0)
  122.     move.w    #100,bsa_SrcY(a0)
  123.  
  124.     jsr    _LVOBitMapScale(a6)
  125.     move.l    #50,d1
  126.     bsr    del
  127.  
  128.     lea     bsa,a0
  129.     move.w    #600,bsa_XDestFactor(a0)
  130.     move.w    #250,bsa_YDestFactor(a0)
  131.     move.w    #90,bsa_XSrcFactor(a0)
  132.     move.w    #90,bsa_YSrcFactor(a0)
  133.     move.w    #90,bsa_SrcWidth(a0)
  134.     move.w    #90,bsa_SrcHeight(a0)
  135.     move.w    #230,bsa_SrcX(a0)
  136.     move.w    #50,bsa_SrcY(a0)
  137.  
  138.     jsr    _LVOBitMapScale(a6)
  139.     move.l    #50,d1
  140.     bsr    del
  141.  
  142.     lea     bsa,a0
  143.     move.w    #600,bsa_XDestFactor(a0)
  144.     move.w    #250,bsa_YDestFactor(a0)
  145.     move.w    #200,bsa_XSrcFactor(a0)
  146.     move.w    #200,bsa_YSrcFactor(a0)
  147.     move.w    #200,bsa_SrcWidth(a0)
  148.     move.w    #200,bsa_SrcHeight(a0)
  149.     move.w    #2000,bsa_SrcX(a0)
  150.     move.w    #0,bsa_SrcY(a0)
  151.  
  152.     jsr    _LVOBitMapScale(a6)
  153.     move.l    #50,d1
  154.     bsr    del
  155.  
  156.     lea     bsa,a0
  157.     move.w    #600,bsa_XDestFactor(a0)
  158.     move.w    #250,bsa_YDestFactor(a0)
  159.     move.w    #12,bsa_XSrcFactor(a0)
  160.     move.w    #12,bsa_YSrcFactor(a0)
  161.     move.w    #12,bsa_SrcWidth(a0)
  162.     move.w    #12,bsa_SrcHeight(a0)
  163.     move.w    #350,bsa_SrcX(a0)
  164.     move.w    #180,bsa_SrcY(a0)
  165.  
  166.     jsr    _LVOBitMapScale(a6)
  167.     move.l    #50,d1
  168.     bsr    del
  169.  
  170.  
  171.     lea bsa,a0
  172.     move.w    #0,bsa_SrcX(a0)
  173.     move.w    #0,bsa_SrcY(a0)
  174.     move.w    #600,bsa_XDestFactor(a0)
  175.     move.w    #250,bsa_YDestFactor(a0)
  176.     move.w    #400,bsa_XSrcFactor(a0)
  177.     move.w    #200,bsa_YSrcFactor(a0)
  178.     move.w    #400,bsa_SrcWidth(a0)
  179.     move.w    #200,bsa_SrcHeight(a0)
  180.  
  181.     jsr    _LVOBitMapScale(a6)
  182.  
  183.     move.l    #150,d1
  184.     bsr    del
  185.  
  186.     movea.l    intbase,a6
  187.     movea.l    WindowHD,a0
  188.     jsr    _LVOCloseWindow(a6)
  189.  
  190. closegfx:    
  191.     movea.l    (4).w,a6
  192.     movea.l    gfxbase,a1    
  193.     jsr    _LVOCloseLibrary(a6)
  194. closeInt:    
  195.     movea.l    (4).w,a6
  196.     movea.l    intbase,a1
  197.     jsr    _LVOCloseLibrary(a6)
  198. closedos:    
  199.     movea.l    (4).w,a6
  200.     movea.l    dosbase,a1
  201.     jsr    _LVOCloseLibrary(a6)
  202.  
  203. nodos:    rts
  204. del:
  205.     movem.l d0/a0/a6,-(sp)
  206.     movea.l    dosbase,a6
  207.     jsr    _LVODelay(a6)
  208.     movem.l (Sp)+,d0/a0/a6
  209.     rts
  210.  
  211. ;--------------------------------------------------
  212.  
  213. intname:
  214.         dc.b    'intuition.library',0
  215. gfxname:    
  216.         dc.b    'graphics.library',0
  217. dosname:    
  218.         dc.b    'dos.library',0
  219.         even
  220. intbase:     dc.l    0
  221. WindowHD:     dc.l    0
  222. dosbase:    dc.l     0
  223. gfxbase:     dc.l    0
  224. WindowTags:    dc.l    WA_Left,0
  225.         dc.l    WA_Top,0
  226.                 dc.l    WA_InnerWidth,600
  227.                 dc.l    WA_InnerHeight,250
  228.         dc.l    WA_Flags
  229.         dc.l    0
  230.         dc.l    WA_Title
  231.         dc.l    titletext
  232.         dc.l    0               ;TAG_DONE
  233. titletext:
  234.           dc.b 'Scaling some bitmaps Dude! Do ME on an 8 color WB ',0
  235.         even
  236. MyBitMap:
  237.         ds.b  bm_SIZEOF
  238. bsa:
  239.     ;        STRUCTURE    ;BitScaleArgs,0
  240.     dc.w 0        ;UWORD    bsa_SrcX        ; source origin
  241.     dc.w 0        ;UWORD    bsa_SrcY
  242.     dc.w 400    ;UWORD    bsa_SrcWidth    ; source size
  243.     dc.w 200    ;UWORD    bsa_SrcHeight
  244.     dc.w 400    ;UWORD    bsa_XSrcFactor    ; scale factor denominators
  245.     dc.w 200    ;UWORD    bsa_YSrcFactor
  246.     dc.w 0        ;UWORD    bsa_DestX    ; destination origin
  247.     dc.w 0        ;UWORD    bsa_DestY
  248.     dc.w 0        ;UWORD    bsa_DestWidth    ; destination size result
  249.     dc.w 0        ;UWORD    bsa_DestHeight
  250.     dc.w 400    ;UWORD    bsa_XDestFactor    ; scale factor numerators
  251.     dc.w 200    ;UWORD    bsa_YDestFactor
  252.     dc.l MyBitMap    ;APTR    bsa_SrcBitMap    ; source BitMap
  253. WDBM:     dc.l 0        ;APTR    bsa_DestBitMap    ; destination BitMap
  254.     dc.l 0        ;ULONG    bsa_Flags        ; reserved.  Must be zero!
  255.     dc.w 0        ;UWORD    bsa_XDDA        ; reserved
  256.     dc.w 0        ;UWORD    bsa_YDDA
  257.     dc.l 0        ;LONG    bsa_Reserved1
  258.     dc.l 0        ;LONG    bsa_Reserved2
  259.             ;LABEL    bsa_SIZEOF
  260.     
  261.  
  262.     section nn,data_c
  263.  
  264. dat:    incbin 'dh0:Bmap'
  265.