home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / pocketbk / developmen / oplexamp / BITMAP.OPL < prev    next >
Text File  |  1992-10-09  |  2KB  |  130 lines

  1. APP Bit
  2. TYPE 3
  3. PATH "\PIC"
  4. EXT "PIC"
  5. ICON "\PIC\BITMAP.PIC"
  6. ENDA
  7.  
  8. PROC Bitmap:
  9.     GLOBAL bit%,wid%,hgt%
  10.  
  11.     LOCAL left%,top%,fname$(128),index%
  12.     LOCAL cm$(128),ev%(6),f$(1),nochg%,step%
  13.  
  14.     bit% = 0
  15.     index% = 0
  16.     f$ = CMD$(3)
  17.     IF f$ = "O"
  18.         fname$ = cmd$(2)
  19.         LoadBit:(fname$,index%)
  20.         left% = (240 - wid%)/2
  21.         top% = (80 - hgt%)/2
  22.         ShowBit:(left%,top%)
  23.     ELSEIF f$ = "C"
  24.         STOP
  25.     ENDIF
  26.     DO
  27.         nochg% = 0
  28.         GETEVENT ev%()
  29.         IF ev%(2) AND 4 REM Control
  30.             step% = 32
  31.         ELSEIF ev%(2) AND 2 REM Shift
  32.             step% = 1
  33.         ELSE
  34.             step% = 8
  35.         ENDIF
  36.         IF ev%(1) = $404
  37.             cm$ = GETCMD$
  38.             IF LEFT$(cm$,1) = "X"
  39.                 STOP
  40.             ELSEIF LEFT$(cm$,1) = "O"
  41.                 fname$ = MID$(cm$,2,128)
  42.                 LoadBit:(fname$,index%)
  43.                 nochg% = 1
  44.             ENDIF
  45.         ELSEIF ev%(1) = $278 REM Rem Psion-x
  46.             STOP
  47.         ELSEIF ev%(1) = $104 REM Page Up
  48.             top% = 0
  49.         ELSEIF ev%(1) = $105 REM Page Down
  50.             top% = 80 - hgt%
  51.         ELSEIF ev%(1) = $106 REM Home
  52.             left% = 0
  53.         ELSEIF ev%(1) = $107 REM End
  54.             left% = 240 - wid%
  55.         ELSEIF ev%(1) = $100 REM Up
  56.             top% = top% + step%
  57.               IF top% > 0
  58.                   top% = 0
  59.               ENDIF
  60.         ELSEIF ev%(1) = $101 REM Down
  61.             top% = top% - step%
  62.               IF top% < 80 - hgt%
  63.                   top% = 80 - hgt%
  64.               ENDIF
  65.         ELSEIF ev%(1) = $102 REM Right
  66.             left% = left% - step%
  67.               IF left% < 240 - wid%
  68.                   left% = 240 - wid%
  69.               ENDIF
  70.         ELSEIF ev%(1) = $103 REM Left
  71.             left% = left% + step%
  72.             IF left% > 0
  73.                 left% = 0
  74.             ENDIF
  75.         ELSEIF ev%(1) = 9    REM tab
  76.             index% = index%+1
  77.         ELSEIF ev%(1) = 32   REM space
  78.             REM position to centre
  79.             left% = (240 - wid%)/2
  80.             top% = (80 - hgt%)/2
  81.         ELSE
  82.             nochg% = 1
  83.         ENDIF
  84.         IF nochg% = 0
  85.             ShowBit:(left%,top%)
  86.         ENDIF
  87.     UNTIL 0
  88. ENDP
  89.  
  90. PROC LoadBit:(fname$,index%)
  91.     LOCAL i%
  92.  
  93.     ONERR LoadErr
  94.     i% = index%
  95. Load1::
  96.     IF bit% > 0
  97.         gCLOSE bit%
  98.     ENDIF
  99.     bit% = gLOADBIT(fname$,0,i%)
  100.     SETNAME fname$
  101.     wid% = gWidth
  102.     hgt% = gHeight
  103.     gUSE 1
  104.     RETURN
  105. LoadErr::
  106.     i% = 0
  107.     ONERR OFF
  108.     GOTO Load1
  109. ENDP
  110.  
  111. PROC ShowBit:(left%,top%)
  112.     LOCAL x%,y%
  113.  
  114.     IF wid% < 240
  115.         x% = 0
  116.     ELSE
  117.         x% = left%
  118.     ENDIF
  119.     IF hgt% < 240
  120.         y% = 0
  121.     ELSE
  122.         y% = top%
  123.     ENDIF
  124.  
  125.     gAT x%,y%
  126.     gCOPY bit%,0,0,wid%,hgt%,3
  127.     gUPDATE
  128. ENDP
  129.  
  130.