home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / d / discopy / !Discopy / !RunImage (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1996-04-11  |  8KB  |  292 lines

  1.  >!Discopy.!RunImage
  2.  Copyright: Fractal Bonsai Software 1996
  3.     Author: Chris Whitworth
  4.  " @ ";
  5.  "<Discopy$Resources>.Library"
  6. Local_NonWimpInit
  7. Lib_ScriptLoad("<Discopy$Resources>.Task")
  8. Lib_ScriptInt
  9. Lib_ReportError(
  10. Lib_Report("This is an unregistered copy of Discopy! Please see the Docs directory for details on registering.")
  11. Local_WimpInit
  12. Local_Poll
  13. Lib_Report("This is an unregistered copy of Discopy! Please see the Docs directory for details on registering.")
  14. Lib_CloseDown(task_handle%)
  15.  Initialisation procedures
  16.  -------------------------
  17. Local_NonWimpInit
  18. quit_menu_item=2
  19. image_loaded=
  20. license$="Unregistered"
  21. "datestamp$="1.11d (06-Apr-96)"
  22. "<Discopy$Resources>.!Config"
  23. bufsize=
  24. #A)*1024
  25. ds=800*1024
  26.  discbuffer bufsize
  27. Local_WimpInit
  28. Lib_UpdateIconIndir(window(1),10,license$)
  29. Lib_UpdateIconIndir(window(1),4,datestamp$)
  30.  Main polling routine
  31.  --------------------
  32. Local_Poll
  33. (1)*5*6000)
  34.  "Wimp_Poll",0,block% 
  35.  event
  36.  event 
  37.  "Wimp_OpenWindow",,block%
  38.  "Wimp_CloseWindow",,block%
  39. Local_KeyPress
  40. Local_MouseClick
  41. Local_InitSave
  42. Local_MenuSelect
  43.  17,18:
  44. Local_MessageHandle(block%!16)
  45. Lib_Report("This is an unregistered copy of Discopy! Please see the Docs directory for details on registering."):T=
  46. (1)*5*6000)
  47.  quit
  48. Local_KeyPress
  49. ;!char=block%!24:window=!block%
  50.  window 
  51.  window(5):
  52.  char=13 
  53. Local_WriteImage
  54.  window(4):
  55.  char 
  56. @B    
  57.  d_arrow,u_arrow:
  58.  "Wimp_GetCaretPosition",,waste_block%
  59. A&    icn=waste_block%!4:icn=icn 
  60. Bf    
  61.  "Wimp_SetCaretPosition",!waste_block%,icn,waste_block%!8,waste_block%!12,waste_block%!16,-1
  62.  Menu handler
  63.  ------------
  64. Local_MenuSelect
  65.  "Wimp_GetPointerInfo",,waste_block%
  66. button=waste_block%!8
  67. x=!waste_block%
  68.  cur_menu 
  69.  menu(1):
  70.  !block% 
  71. Q     
  72.  quit_menu_item: quit=
  73.  button=1 
  74. Lib_ShowMenu(x,cur_menu)
  75.  Mouse clicked
  76.  -------------
  77. Local_MouseClick
  78. button=block%!8
  79. window=block%!12
  80. icon=block%!16
  81.  window 
  82.  icon 
  83.  i_bar_handle%:
  84. b8    
  85.  (button 
  86.  (button 
  87. Local_BarSelect
  88. c7    
  89.  (button 
  90. Lib_ShowMenu(!block%,menu(1))
  91.  window(2)
  92.  icon 
  93. Local_ReadImage1
  94. Local_WriteImage1
  95.  window(4)
  96.  icon 
  97. lB    
  98. Local_ReadImage($(
  99. Lib_GetIconIndir(window(4),2))+
  100. m;    
  101.  (button 
  102.  (button 
  103. Local_InitDrag
  104. n        
  105.  window(5)
  106.  icon 
  107. Local_WriteImage
  108.  window(6)
  109.  icon 
  110.  1:ds=800*1024
  111.  2:ds=720*1024
  112.  3:ds=640*1024
  113. Local_BarSelect
  114. Lib_OpenWindow(window(2),256,192,256+288,192+96)
  115. Lib_OpenWindow(window(3),150,640,150+874,640+204)
  116.  Message handler
  117.  ---------------
  118. Local_MessageHandle(message_id)
  119.  message_id 
  120.  0:quit=
  121. Local_ReadImage(
  122. zerostr(block%+44))
  123. Local_LoadFile
  124.  Message_DataLoad handler
  125.  ------------------------
  126. Local_LoadFile
  127. block%!12=block%!8
  128. to=block%!4
  129.  "Wimp_SendMessage",17,block%,to
  130. Csize=block%!36:type=block%!40:current_name$=
  131. zerostr(block%+44)
  132.  type<>&0A0 
  133. image_loaded=
  134. (current_name$)
  135. image_name$=
  136. .image_name$=
  137. image_name$,
  138. (image_name$)-1)
  139. )str$=image_name$+" ("+
  140. (ds/1024)+"k)"
  141. Lib_UpdateIconIndir(window(3),1,str$)
  142.  Initialise save (send Message_DataSave to Filer)
  143.  ---------------
  144. Local_InitSave
  145. Lib_CheckDAS 
  146.  "DragASprite_Stop"
  147.  "Wimp_GetPointerInfo",,waste_block%
  148. x=!waste_block%
  149. y=waste_block%!4
  150. window=waste_block%!12
  151. icon=waste_block%!16
  152. size=800*1024
  153. type=&0A0
  154. .name$=$(
  155. Lib_GetIconIndir(window(4),2))+
  156. (name$)/4 <> 
  157. (name$) 
  158. name$+=
  159. lenblock=44+
  160. (name$)
  161. !waste_block%=lenblock
  162. waste_block%!12=0
  163. waste_block%!16=1
  164. waste_block%!20=window
  165. waste_block%!24=icon
  166. waste_block%!28=x
  167. waste_block%!32=y
  168. waste_block%!36=size
  169. waste_block%!40=type
  170. $(waste_block%+44)=name$
  171.  "Wimp_SendMessage",17,waste_block%,window
  172.  Initialise drag (assumed to be from save window)
  173.  ---------------
  174. Local_InitDrag
  175.  "Wimp_GetPointerInfo",,waste_block%
  176. x=!waste_block%
  177. y=waste_block%!4
  178. Iwaste_block%!100=window(4):
  179.  "Wimp_GetWindowState",,waste_block%+100
  180. 1winmx=waste_block%!104:winmy=waste_block%!116
  181. Zwaste_block%!100=window(4):waste_block%!104=3:
  182.  "Wimp_GetIconState",,waste_block%+100
  183. =minxi=winmx+waste_block%!108:minyi=winmy+waste_block%!120
  184. =maxxi=winmx+waste_block%!116:maxyi=winmy+waste_block%!112
  185. )waste_block%!100=4:waste_block%!104=5
  186. ?waste_block%!108=11:waste_block%!112=12:waste_block%!116=-1
  187.  "OS_ReadVduVariables",waste_block%+100,waste_block%+100
  188. -sx=(waste_block%!108)<<(waste_block%!100)
  189. -sy=(waste_block%!112)<<(waste_block%!104)
  190. Lib_CheckDAS 
  191. flags=%11000000
  192. !r1=1:$waste_block%="file_0a0"
  193. waste_block%!100=minxi
  194. waste_block%!104=minyi
  195. waste_block%!108=maxxi
  196. waste_block%!112=maxyi
  197.  "DragASprite_Start",flags,r1,waste_block%,waste_block%+100
  198. !waste_block%=window(4)
  199. waste_block%!4=5
  200. waste_block%!8=minxi
  201. waste_block%!12=minyi
  202. waste_block%!16=maxxi
  203. waste_block%!20=maxyi
  204. waste_block%!24=0
  205. waste_block%!28=0
  206. waste_block%!32=sx
  207. waste_block%!36=sy
  208.  "Wimp_DragBox",,waste_block%
  209.  Read image part 1
  210.  ----------
  211. Local_ReadImage1
  212. Lib_OpenWindow(window(4),512,512,512+276,512+272)
  213.  Read Image part 2
  214.  ----------
  215. Local_ReadImage(path$)
  216. Lib_UpdateIconIndir(window(3),3,"Reading image...")
  217. offset=0
  218. file=
  219.  path$
  220. bufs=bufsize:reading=
  221. 4image_name$=$(
  222. Lib_GetIconIndir(window(4),4))+
  223. #A,image_name$
  224.  "Hourglass_On"
  225.  bufs<bufsize 
  226.  reading=
  227.  "ADFS_DiscOp",,1,offset,discbuffer,bufs
  228.  "OS_GBPB",2,file,discbuffer,bufs
  229. offset+=bufs
  230. bufs=ds-offset
  231.  bufs>bufsize 
  232.  bufs=bufsize
  233.  "Hourglass_Percentage",(offset/ds)*100
  234.  reading
  235.  #file
  236.  "Settype "+path$+" 0A0"
  237.  "Hourglass_Off"
  238. Lib_CloseWindow(window(4))
  239. image_loaded=
  240. current_name$=path$
  241. Lib_UpdateIconIndir(window(3),1,image_name$)
  242. Lib_UpdateIconIndir(window(3),3,"Idle")
  243.  Write image part 1
  244.  -----------
  245. Local_WriteImage1
  246.  image_loaded=
  247. Lib_Report("No image loaded"):
  248. Lib_OpenWindow(window(5),512,512,512+362,512+180)
  249.  Write image part 2
  250.  -----------
  251. Local_WriteImage
  252. &adr=
  253. Lib_GetIconIndir(window(5),1)
  254. images=
  255. ($adr)
  256.  a=1 
  257.  images
  258. Lib_UpdateIconIndir(window(3),3,"Inserting disc "+
  259. a+" of "+
  260. images)
  261. Lib_Report("Please insert disc "+
  262. a+" of "+
  263. images)
  264.  "Wimp_Poll",0,block% 
  265.  event
  266. Lib_UpdateIconIndir(window(3),3,"Writing image: Disc "+
  267. a+" of "+
  268. images)
  269. offset=0
  270. file=
  271.  current_name$
  272. dummy$=
  273. size=
  274. bufs=bufsize:reading=
  275.  "Hourglass_On"
  276.  bufs<bufsize 
  277.  reading=
  278.  "OS_GBPB",4,file,discbuffer,bufs
  279.  "ADFS_DiscOp",,2,offset,discbuffer,bufs
  280. offset+=bufs
  281. bufs=size-offset
  282.  bufs>bufsize 
  283.  bufs=bufsize
  284.  "Hourglass_Percentage",(offset/size)*100
  285.  reading
  286.  #file
  287.  "OS_CLI","ADFS"
  288.  "OS_CLI","Dismount 0"
  289.  "Hourglass_Off"
  290. Lib_CloseWindow(window(5))
  291. Lib_UpdateIconIndir(window(3),3,"Idle")
  292.