home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / converters / spr2jpeg_1 / !Spr2Jpeg / !RunImage (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1995-04-28  |  18KB  |  672 lines

  1.  !RunImage for Sprite 2 Jpeg
  2.  David Rodgman '95
  3.  Freeware !
  4.  See Help file for details
  5. $+" at line "+
  6.  "XOS_CLI","Unset S2J$Dir":
  7. ONERROR PROCerror("Error from Sprite 2 Jpeg",%11,REPORT$+" at line "+STR$ERL,1)
  8.  "WimpExt_PrePoll"
  9.  "Wimp_Poll",,q% 
  10.  reason%
  11.  "WimpExt_Action",s2jpeg%,q%,reason% 
  12.  reason%
  13.  reason% 
  14.  "WimpExt_AutoRedraw",,q%
  15.  "WimpExt_OpenLinked",,q%
  16.  "WimpExt_CloseLinked",,q%:
  17.  !q%=save% 
  18. "XOS_CLI","X Remove <S2J$Scrap>.Jpeg":
  19. empty_scrap
  20. click
  21. drag_end
  22.  !q%=innards% 
  23.  q%!24=13 
  24.  "WimpExt_SlabIcon",,,options%,2:sl%=-1 
  25.  "Wimp_ProcessKey",q%!24:sl%=-1
  26. menu_sel
  27.  17,18,19:
  28. recieve
  29.  sl% 
  30.  q%!12=options%:q%!16=2:sl%=
  31. click
  32.  quit%=
  33. empty_scrap
  34. *Unset S2J$Dir
  35.  "WimpExt_CloseDown",s2jpeg%
  36.  "Wimp_CloseDown"
  37. click
  38. slab%=q%!16
  39.  q%!12 
  40.  info%:
  41.  q%!16=2 
  42. author
  43.  q%!16=iconbar% 
  44. icon_click
  45.  save%:
  46. save_click
  47.  options%:
  48. options
  49.  innards%:
  50. innards
  51. SYS "XWimpExt_SlabIcon",,,0,slab%,0
  52. author
  53.  "WimpExt_GetIcon",,,info%,2 
  54.  ,,,t%:t$=
  55. string(t%,-1)
  56. t$,5)="David" 
  57.  t$="The Intelligent Stoat" 
  58.  t$="David Rodgman"
  59.  "WimpExt_SetIconString",0,,info%,2,t$
  60. icon_click
  61.  q%!8=2 
  62.  "WimpExt_CreateMenu",,main_menu%,!q%-64,96+44*3:menu%=main_menu%
  63. set_vars:!q%=options%
  64.  "Wimp_GetWindowState",,q%:q%!28=-1
  65.  "WimpExt_OpenLinked",,q%
  66.  "WimpExt_PutCaretIcon",,,innards%,4
  67. options
  68.  q%!16=-1 
  69.  q%!8=2 
  70.  q%!8<>1 
  71.  !q%=options%:
  72.  "WimpExt_CloseLinked",,q%
  73.  q%!16 
  74. set_vars
  75. read_vars:
  76. save_options
  77. read_vars
  78. innards
  79. menu_sel
  80.  menu% 
  81.  main_menu%
  82.  !q% 
  83. set_vars:!q%=options%
  84. P1        
  85.  "Wimp_GetWindowState",,q%:q%!28=-1
  86. Q'        
  87.  "WimpExt_OpenLinked",,q%
  88. R2        
  89.  "WimpExt_PutCaretIcon",,,innards%,4
  90.  2:quit%=
  91.  type_menu%
  92.  item%=!q%
  93. type_tick(type_tick%,0)
  94. type_tick(item%,1)
  95.  type_tick%=item%
  96. type_tick(item%,tick%)
  97.  tick%=0 
  98. _<type_menu%!(28+24*item%)=type_menu%!(28+24*item%) 
  99. a9type_menu%!(28+24*item%)=type_menu%!(28+24*item%) 
  100.  tick%=1 
  101.  item%<6 
  102.  item% 
  103.  0:t$="file_c85":i$="Jpeg"
  104.  1:t$="file_690":i$="Clear"
  105.  2:t$="file_ff9":i$="8-bit Sprite"
  106.  3:t$="file_ff9":i$="24-bit Sprite"
  107.  4:t$="file_695":i$="GIF"
  108.  5:t$="file_69d":i$="Targa"
  109. outspr$=t$
  110. m#t$="S"+t$+";wpptr_hand,6,1"+
  111. n/!q%=save%:q%!4=3:
  112.  "Wimp_GetIconState",,q%
  113. $(q%!32)=t$:q%!8=0:q%!12=0
  114.  "Wimp_SetIconState",,q%
  115. q/!q%=save%:q%!4=4:
  116.  "Wimp_GetIconState",,q%
  117. $(q%!28)=i$:q%!8=0:q%!12=0
  118.  "Wimp_SetIconState",,q%
  119. recieve
  120.  i%:i%=q%!16:
  121.  0:quit%=
  122. save_to_disc
  123. load_from_disc
  124.  **** Filing routines
  125. empty_scrap
  126.  "XOS_CLI","X Remove <S2J$Scrap>.Jpeg"
  127.  "XOS_CLI","X Remove <S2J$Scrap>.Jpeg2"
  128.  "XOS_CLI","X Remove <S2J$Scrap>.Output"
  129.  "OS_FSControl",9,"<Wimp$ScrapDir>.S2Jpeg" 
  130.  ,,,,size%
  131.  size%<=10240 
  132.  10k is not worth the hassle
  133.  "XOS_CLI","Wipe <Wimp$ScrapDir>.S2Jpeg ~CF~VR"
  134.  "XOS_CLI","CDir <Wimp$ScrapDir>.S2Jpeg"
  135. load_from_disc
  136. err_click%=0
  137. &sender%=q%!4:
  138.  sender%=s2jpeg% 
  139. ;type%=q%!40:
  140.  type%<>&FF9 
  141.  type%<>&690 
  142.  type%<>&C85 
  143. error("Message from Sprite 2 Jpeg",%011,"This does not look like an image file - continue ?",0)
  144.  err_click%=1 
  145. !fn$=
  146. string(q%+44,-1):in$=fn$
  147. 4!q%=256:q%!16=4:
  148.  "Wimp_SendMessage",17,q%,q%!4
  149.  type% 
  150.  &FF9,&690:dodgy%=
  151. :outspr$="file_c85":
  152. cjpeg
  153.  &c85:outspr$="file_690":
  154. open_save
  155. &outspr$="file_c85":dodgy%=
  156. cjpeg
  157. open_save
  158.  type%<>&C85 
  159.  ot$="Jpeg"
  160.  i%=0 
  161.  i%=0 
  162.  s%=0 
  163.  s%=1
  164.  s%=1 
  165. B type_menu%!(28+(24*i%)+8)=type_menu%!(28+(24*i%)+8) 
  166.  (1<<22)
  167. C type_menu%!(28+(24*i%)+8)=type_menu%!(28+(24*i%)+8) 
  168. (1<<22)
  169. type_tick(0,1)
  170.  ot$="Clear":type_tick%=1
  171.  i%=0 
  172.  i%<>0 s%=0 
  173.  s%=1
  174. type_tick(i%,0)
  175.  s%=1 
  176. B type_menu%!(28+(24*i%)+8)=type_menu%!(28+(24*i%)+8) 
  177.  (1<<22)
  178. C type_menu%!(28+(24*i%)+8)=type_menu%!(28+(24*i%)+8) 
  179. (1<<22)
  180. type_tick(1,1)
  181. < type_menu%!(28+24*5+8)=type_menu%!(28+24*5+8) 
  182.  (1<<22)
  183.  "WimpExt_SetIconString",0,,save%,4,ot$
  184.  "WimpExt_SetIconString",0,,save%,2,fn$
  185. *!q%=save%:
  186.  "Wimp_GetWindowState",,q%
  187.  "Wimp_OpenWindow",,q%
  188.  "WimpExt_PutCaretIcon",,,save%,2
  189. save_click
  190.  q%!16 
  191. begin_drag
  192.  5:!q%=save%:
  193.  "Wimp_GetWindowState",,q%:ox%=q%!4-q%!20:oy%=q%!16-q%!24
  194.  "WimpExt_CreateMenu",,type_menu%,ox%+266,oy%-200:menu%=type_menu%
  195. save_to_disc
  196. string(q%+44,-1)
  197. do_save(fn$)
  198. begin_drag
  199.  os%>=310 
  200.  sol%=
  201.  sol%=
  202.  "XOS_SWINumberFromString",,"DragASprite_Start" 
  203.  (e% 
  204.  1)=1 
  205.  sol%=
  206.  sol% 
  207. solid_drag 
  208. outline_drag
  209. drag%=
  210. solid_drag
  211.  f%=%01000101:
  212. bbox(q%,q%+16)
  213. s$=outspr$
  214.  "DragASprite_Start",f%,1,s$,q%,q%+16
  215. outline_drag
  216. &!q%=save%:q%!4=5:
  217. bbox(q%+8,q%+24)
  218.  "Wimp_DragBox",,q%
  219. bbox(cbox%,bbox%)
  220. 4!buffer%=save%:
  221.  "Wimp_GetWindowState",,buffer%
  222. 6ox%=buffer%!4-buffer%!20:oy%=buffer%!16-buffer%!24
  223. /buffer%!4=3:
  224.  "Wimp_GetIconState",,buffer%
  225. 0cbox%!0=ox%+buffer%!8:cbox%!4=oy%+buffer%!12
  226. 2cbox%!8=ox%+buffer%!16:cbox%!12=oy%+buffer%!20
  227. :bbox%!0=0:bbox%!4=0:bbox%!8=&7FFFFFFF:bbox%!12=bbox%!8
  228.  "WimpExt_GetIcon",,,save%,2 
  229.  ,,,t%:out$=
  230. string(t%,-1)
  231. do_save(out$)
  232. drag_end
  233. drag%=
  234.  sol% 
  235.  "XDragASprite_Stop" 
  236.  "XWimp_DragBox",,-1
  237. check_save
  238. check_save
  239.  "WimpExt_GetIcon",,,save%,2 
  240.  ,,,t%:t$=
  241. string(t%,-1)
  242.  "WimpExt_FindLeaf",t$ 
  243.  leaf$
  244.  "OS_File",17,"<Wimp$ScrapDir>.S2Jpeg.Jpeg" 
  245.  ,,,,size%
  246.  "Wimp_GetPointerInfo",,q%:win%=q%!12:ic%=q%!16
  247. =q%!16=1:q%!20=win%:q%!24=ic%:q%!28=!q%:q%!32=q%!4:!q%=100
  248. ,q%!36=size%:q%!40=&c85:$(q%+44)=leaf$+
  249.  "Wimp_SendMessage",17,q%,win% 
  250.  reciever%
  251. do_save(out$)
  252.  "XOS_File",17,out$ 
  253.  e%:go%=
  254. error("Message from Sprite 2 Jpeg",%10,"A directory exists with this name",0):go%=
  255. error("Message from Sprite 2 Jpeg",%111,"This file already exists - continue ?",0)
  256. !       
  257.  err_click%=0 
  258.  go%=
  259.  No file exists here
  260.  go% 
  261.  outspr$<>"file_c85" 
  262. djpeg
  263.  "OS_SetVarVal","Temp$Temp",out$
  264.  "Wimp_StartTask","Copy <S2J$Scrap>.Jpeg <Temp$Temp> D~V~CFSL~N~PQ~R~T"
  265.  "OS_CLI","Unset Temp$Temp"
  266. '!q%=save%:
  267.  "Wimp_CloseWindow",,q%
  268. cjpeg
  269. <switches$="-Q "+
  270. quality%:
  271.  optimise% 
  272.  switches$+=" -o"
  273.  cdebug% 
  274.  switches$+=" -d"
  275.  interleave% 
  276.  switches$+=" -I"
  277.  arithmetic% 
  278.  switches$+=" -a"
  279.  cxtra$<>"" 
  280.  switches$+=" "+cxtra$
  281.  "OS_SetVarVal","Temp$Temp",fn$
  282. Lcomm$="<ChangeFSI$Dir>.ChangeFSI <Temp$Temp> <S2J$Scrap>.PBM P6 -nomode"
  283.  "Wimp_StartTask",comm$
  284. Xredir$=" { > <Wimp$ScrapDir>.S2Jpeg.Output }":
  285.  dodgy%) 
  286.  (cdebug%=
  287.  redir$=""
  288. Kcomm$="S2J:cjpeg "+switches$+" <S2J$Scrap>.PBM <S2J$Scrap>.Jpeg"+redir$
  289.  dodgy%=
  290.  "XOS_CLI","Remove <Wimp$ScrapDir>.S2Jpeg.Output"
  291.  "Wimp_StartTask",comm$
  292.  "XOS_File",17,"<S2J$Scrap>.Jpeg" 
  293.  e%<>1 
  294.  dodgy% 
  295. error("Message from Sprite 2 Jpeg",1,"Sorry, something went wrong - Jpeg creation has failed.",0):
  296. error("Message from Sprite 2 Jpeg",1,"Sorry, something went wrong - Jpeg creation has failed. (Bad input file ?)",0):
  297.  "XOS_CLI","Remove <S2J$Scrap>.PBM"
  298.  "XOS_CLI","X SetType <S2J$Scrap>.Jpeg c85"
  299.  "OS_CLI","Unset Temp$Temp"
  300. open_save
  301. djpeg
  302.  type_tick% 
  303.  1:cfo$=""
  304.  2:cfo$="28"
  305.  3:cfo$="s32"
  306.  4:cfo$=""
  307.  5:cfo$=""
  308. :switches$=""
  309.  quantize% 
  310.  switches$="-q "+
  311. quant_to%
  312.  passes% 
  313.  switches$+=" -1"
  314.  dither% 
  315.  switches$+=" -D"
  316.  grey% 
  317.  switches$+=" -g"
  318.  xblock% 
  319.  switches$+=" -b"
  320.  ddebug% 
  321.  switches$+=" -d"
  322.  dxtra$<>"" 
  323.  switches$+=" "+dxtra$
  324.  type_tick% 
  325.  1,2,3:switches$+=" -P"
  326.  4:switches$+=" -G"
  327.  5:switches$+=" -T"
  328.  "OS_SetVarVal","Temp$Temp",in$
  329. :Kredir$=" { > <Wimp$ScrapDir>.S2Jpeg.Output }":
  330.  (ddebug%=
  331.  redir$=""
  332. ;Hcomm$="S2J:djpeg "+switches$+" <Temp$Temp> <S2J$Scrap>.Jpeg2"+redir$
  333.  "Wimp_StartTask",comm$
  334.  "WimpExt_PrePoll"
  335.  "Wimp_Poll",,q% 
  336.  reason%
  337.  "WimpExt_Action",s2jpeg%,q%,reason% 
  338.  reason%
  339.  reason% 
  340.  17,18,19:
  341.  q%!16=0 
  342.  quit%=
  343.  "XOS_File",17,"<S2J$Scrap>.Jpeg2" 
  344.  e%=1
  345.  grey% 
  346.  s$=" -d" 
  347.  s$=""
  348.  type_tick% 
  349. pbm_clear("<S2J$Scrap>.Jpeg2","<S2J$Scrap>.Jpeg",0)
  350. J4       
  351.  "XOS_CLI","X Remove <S2J$Scrap>.Jpeg2"
  352.  2:comm$="<ChangeFSI$Dir>.ChangeFSI <S2J$Scrap>.Jpeg2 <S2J$Scrap>.Jpeg 28 -nomode"+s$
  353. LL       
  354.  "Wimp_StartTask",comm$:
  355.  "XOS_CLI","Remove <S2J$Scrap>.Jpeg2"
  356.  3:comm$="<ChangeFSI$Dir>.ChangeFSI <S2J$Scrap>.Jpeg2 <S2J$Scrap>.Jpeg S32,90,90 -nomode"
  357. NL       
  358.  "Wimp_StartTask",comm$:
  359.  "XOS_CLI","Remove <S2J$Scrap>.Jpeg2"
  360.  "XOS_CLI","SetType <S2J$Scrap>.Jpeg2 695"
  361. PC       
  362.  "XOS_CLI","Rename <S2J$Scrap>.Jpeg2 <S2J$Scrap>.Jpeg"
  363.  "XOS_CLI","SetType <S2J$Scrap>.Jpeg2 69D"
  364. RC       
  365.  "XOS_CLI","Rename <S2J$Scrap>.Jpeg2 <S2J$Scrap>.Jpeg"
  366. string(a%,l%)
  367. d$="":
  368.  l%>0 
  369.  i%=0 
  370.  l%-1
  371.  d$+=
  372. (a%?i%)
  373. \# i%=0:max%=255:
  374.  l%<-1 max%=-l%
  375. d$,1)<>
  376. d$,1)<>
  377.  i%<=max%
  378.  d$+=
  379. (a%?i%):i%+=1
  380. d$,1)=
  381. d$-1)
  382. error(title$,buttons%,mess$,fatal%)
  383. LOCAL ERROR:ONERROR ERROR 0,REPORT$+" in error handler at line "+STR$ERL:SYS "XOS_CLI","Unset S2J$Dir":END
  384.  buttons% 
  385.  0:$buffer%="OK"+
  386. 0:die%=-1
  387.  1:$buffer%="OK"+
  388. 0:die%=-1
  389.  2:$buffer%="Cancel"+
  390. 0:die%=0
  391.  3:$buffer%="OK"+
  392. 0+"Cancel"+
  393. 0:die%=1
  394.  7:$buffer%="Cancel"+
  395. 0+"OK"+
  396. 0:die%=0
  397.  "WimpExt_OpenRequester",,,title$,mess$,buffer%,die%
  398.  "WimpExt_PrePoll"
  399.  "Wimp_Poll",,buffer% 
  400.  reason%
  401.  "WimpExt_Action",s2jpeg%,buffer%,reason% 
  402.  reason%
  403.  reason% 
  404.  "WimpExt_AutoRedraw",,buffer%
  405.  "WimpExt_OpenLinked",,buffer%
  406.  "WimpExt_CloseLinked",,buffer%
  407.  buffer%!16=die% 
  408.  fatal%=1 
  409.  quit%=
  410.  17,18,19:
  411. recieve
  412.  ((reason%=6 
  413.  buffer%!12=-3) 
  414.  quit%=
  415. err_click%=buffer%!16
  416.  "Wimp_Initialise",200,&4B534154,"Sprite 2 Jpeg" 
  417.  os%,s2jpeg%
  418.  "WimpExt_Initialise",14,s2jpeg%,1874:q_size%=32*1024
  419. 6quit%=
  420. :sl%=
  421. :type_tick%=0:
  422.  q% q_size%,buffer% 64
  423.  "WimpExt_IconBarSprite",,,-1,"!spr2jpeg",,3 
  424.  iconbar%
  425.  "WimpExt_Heap",0,
  426.  "WimpExt_Heap",2,0,1800 
  427.  ,temp_block%
  428.  temp_block%=0 
  429.  Error 0,"Insufficient memory - please free some memory and try again"
  430. load_sprites
  431. load_templates
  432. make_menu
  433. load_options
  434. create_dir
  435. create_dir
  436.  "XOS_File",17,"<Wimp$ScrapDir>.S2Jpeg" 
  437.  e%=0 
  438.  "OS_CLI","CDir <Wimp$ScrapDir>.S2Jpeg"
  439. read_vars
  440.  "WimpExt_GetNumberIcon",10,,innards%,4 
  441.  quality%
  442. icon_state(5,optimise%,0)
  443. icon_state(6,cdebug%,0)
  444. icon_strng(7,cxtra$,0)
  445. icon_state(9,interleave%,0)
  446. icon_state(10,arithmetic%,0)
  447. icon_state(11,quantize%,0)
  448.  "WimpExt_GetNumberIcon",10,,innards%,12 
  449.  quant_to%
  450. icon_state(13,passes%,0)
  451. icon_state(14,dither%,0)
  452. icon_state(15,grey%,0)
  453. icon_state(16,xblock%,0)
  454. icon_state(17,ddebug%,0)
  455. icon_strng(18,dxtra$,0)
  456.  quant_to%<8 quant_to%=8
  457.  quant_to%>256 quant_to%=256
  458.  quality%>100 quality%=100
  459.  "WimpExt_SetIconString",0,,innards%,12,
  460. quant_to%
  461.  "WimpExt_SetIconString",0,,innards%,4,
  462. quality%
  463. set_vars
  464.  quant_to%<8 quant_to%=8
  465.  quant_to%>256 quant_to%=256
  466.  quality%>100 quality%=100
  467.  "WimpExt_SetIconString",0,,innards%,4,
  468. quality%
  469. icon_state(5,optimise%,1)
  470. icon_state(6,cdebug%,1)
  471. icon_strng(7,cxtra$,1)
  472. icon_state(9,interleave%,1)
  473. icon_state(10,arithmetic%,1)
  474. icon_state(11,quantize%,1)
  475. icon_state(13,passes%,1)
  476. icon_state(14,dither%,1)
  477. icon_state(15,grey%,1)
  478. icon_state(16,xblock%,1)
  479. icon_state(17,ddebug%,1)
  480. icon_strng(18,dxtra$,1)
  481. shade(12,-(quantize%=0))
  482. shade(13,-(quantize%=0))
  483. shade(i%,s%)
  484. 3!q%=innards%:q%!4=i%:
  485.  "Wimp_GetIconState",,q%
  486.  0:c%=1<<22:e%=0
  487.  1:c%=1<<22:e%=c%
  488.  2:c%=0:e%=1<<22
  489. c%=0:e%=0
  490. :q%!8=e%:q%!12=c%
  491.  "Wimp_SetIconState",,q%
  492. icon_strng(i%,
  493.  x$,w%)
  494.  "WimpExt_GetIcon",,,innards%,i% 
  495.  ,,,t%
  496.  $t%=x$+
  497. string(t%,-1)
  498. save_options
  499. ("<S2J$Dir>.Resources.Choices")
  500. #f%,quality%
  501. #f%,optimise%
  502. #f%,cdebug%
  503. #f%,interleave%
  504. #f%,arithmetic%
  505. #f%,quantize%
  506. #f%,quant_to%
  507. #f%,passes%
  508. #f%,dither%
  509. #f%,grey%
  510. #f%,xblock%
  511. #f%,ddebug%
  512. #f%,dxtra$
  513. load_options
  514. ("<S2J$Dir>.Resources.Choices")
  515. quality%=
  516. optimise%=
  517. cdebug%=
  518. interleave%=
  519. arithmetic%=
  520. quantize%=
  521. quant_to%=
  522. passes%=
  523. dither%=
  524. grey%=
  525. xblock%=
  526. ddebug%=
  527. dxtra$=
  528. set_vars
  529. icon_state(i%,
  530.  v%,wr%)
  531.  wr%=1 v%=v% 
  532. B!buffer%=innards%:buffer%!4=i%:
  533.  "Wimp_GetIconState",,buffer%
  534. $f%=buffer%!24:old%=((f%>>21)
  535.  wr%=0 
  536.  v%=old% 
  537. v%=v% 
  538.  1:f%=0
  539.  v%=1 
  540.  c%=1<<21:e%=1<<21
  541.  c%=1<<21:e%=0
  542. buffer%!8=e%:buffer%!12=c%
  543.  "Wimp_SetIconState",,buffer%
  544. v%=old% 
  545. load_sprites
  546. ("<S2J$Dir>.Resources.Sprites")
  547. size%=
  548.  #f%+4:
  549.  sprites% size%
  550. !!sprites%=size%:sprites%!8=16
  551.  "OS_SpriteOp",&10A,sprites%,"<S2J$Dir>.Resources.Sprites"
  552. load_templates
  553. $buffer%=
  554.  ind% 1375
  555.  "WimpExt_LoadTemplates",buffer%,!temp_block%,ind%,ind%+1375,-1,"<S2J$Dir>.Resources.Templates",sprites%
  556. Iinfo%=!buffer%:options%=buffer%!4:save%=buffer%!8:innards%=buffer%!12
  557.  "WimpExt_LinkWindows",,,options%,innards%
  558.  "WimpExt_Heap",13
  559. make_menu
  560.  main_menu% 28+24*3,type_menu% 28+24*8,d% 14
  561.  os%<310 
  562. ! $main_menu%="Sprite2Jpeg"+
  563. ! $main_menu%="Sprite2Jpeg"+
  564. Lmain_menu%!12=&70207:main_menu%!16=9*16:main_menu%!20=44:main_menu%!24=0
  565. Vmain_menu%!28=0:main_menu%!32=info%:main_menu%!36=&7000021:$(main_menu%+40)="Info"
  566. Ymain_menu%!52=0:main_menu%!56=-1:main_menu%!60=&7000021:$(main_menu%+64)="Options..."
  567. Umain_menu%!76=&80:main_menu%!80=-1:main_menu%!84=&7000021:$(main_menu%+88)="Quit"
  568. Hm%=type_menu%:$m%="Save as":m%!12=&70207:m%!16=9*16:m%!20=44:m%!24=0
  569.  :m%!28=3:m%!32=-1:m%!36=&7000021:$(m%+40)="Jpeg":m%+=24
  570. !;m%!28=0:m%!32=-1:m%!36=&7000021:$(m%+40)="Clear":m%+=24
  571. "Bm%!28=0:m%!32=-1:m%!36=&7000021:$(m%+40)="8-bit sprite":m%+=24
  572. #-m%!28=&0:m%!32=-1:m%!36=&7000121:m%!40=d%
  573. $3$d%="24-bit sprite"+
  574. 0:m%!44=-1:m%!48=14:m%+=24
  575. %9m%!28=0:m%!32=-1:m%!36=&7000021:$(m%+40)="GIF":m%+=24
  576. &=m%!28=&80:m%!32=-1:m%!36=&7000021:$(m%+40)="Targa":m%+=24
  577. pbm_clear(pbm$,clr$,dir%)
  578.  0,"Error: "+
  579. $+" at line "+
  580.  "XOS_CLI","Unset S2J$Dir":
  581.  dir=0, pbm->clr, dir=1, clr->pbm
  582.  "XOS_File",17,pbm$ 
  583.  "XOS_File",17,clr$ 
  584.  p%=0 
  585.  c%=0 
  586. error("Message from Sprite 2 Jpeg",%10,"Neither a PBM or Clear image exists",0):
  587.  p%=2 
  588.  c%=2 
  589. error("Message from Sprite 2 Jpeg",%10,"One file is a directory",0):
  590.  dir%=0 
  591.  "OS_ReadMemMapInfo" 
  592.  "Wimp_SlotSize",-1,-1 
  593.  c%,n%,f%:f%-=ps%*40
  594.   block%=q%:bs%=q_size%
  595.  "WimpExt_Heap",0,
  596.  "WimpExt_Heap",2,0,f% 
  597.  ,temp_block%
  598.  temp_block%<>0 
  599. 9!   block%=!temp_block%:bs%=f%
  600.    block%=q%:bs%=q_size%
  601.  convert PBM to Clear
  602.  pbm%=
  603.  pbm$
  604. #pbm%
  605.  p$<>"P6" 
  606. PRINT "converting to P6"
  607.  #pbm%
  608.  "OS_SetVarVal","Temp$Temp",pbm$
  609. EO  comm$="<ChangeFSI$Dir>.ChangeFSI <Temp$Temp> <S2J$Scrap>.PBM6 P6 -nomode"
  610.  "Wimp_StartTask",comm$:
  611.  convert PX to P6
  612.  "XOS_CLI","Remove Temp$Temp"
  613.  "XOS_CLI","Copy <SJ2$Scrap>.PBM6 <Temp$Temp> D~V~CFSL~N~PQ~R~T"
  614.   pbm%=
  615.  pbm$
  616.   a%=
  617. #pbm%:a%=
  618. #pbm%+48
  619.  pbm is now 24-bpp, binary encoded
  620. #pbm%:
  621. m$,1)<>"#" 
  622. #pbm%
  623.  s$=m$:m$="Sprite 2 Jpeg"
  624.  width%=
  625. s$," ")-1))
  626. P! height%=
  627. s$," ")))
  628.  max%=
  629. #pbm%)
  630.  clr%=
  631. (clr$):m$+=
  632. m=LENm$:m$+=STRING$(4-(m MOD 4),CHR$0)
  633. IF (m MOD 4)=0 THEN m$+=STRING$(CHR$0,4)
  634. so(clr%,m$)
  635. wo(clr%,107)
  636. wo(clr%,width%)
  637. wo(clr%,height%)
  638. wo(clr%,24)
  639.  i%=1 
  640.  ((height%*width%*3) 
  641.  bs%)
  642.  "OS_GBPB",4,pbm%,block%,bs% 
  643.  ,,,not_done%
  644.  "OS_GBPB",2,clr%,block%,bs%
  645. ^& spare%=((height%*width%*3) 
  646.  bs%)
  647.  "OS_GBPB",4,pbm%,block%,spare% 
  648.  ,,,not_done%
  649.  "OS_GBPB",2,clr%,block%,spare%
  650. # clr%
  651. # pbm%
  652.  "XOS_CLI","SetType "+clr$+" 690"
  653.  "XWimpExt_Heap",13
  654. error("Message from Sprite 2 Jpeg",%10,"Cannot convert from Clear to PBM",0):
  655. wo(fh%,wo%)
  656. b%=wo% 
  657.  255:
  658.  #fh%,b%
  659. b%=(wo%>>8) 
  660.  255:
  661.  #fh%,b%
  662. m b%=(wo%>>16) 
  663.  255:
  664.  #fh%,b%
  665. n b%=(wo%>>24) 
  666.  255:
  667.  #fh%,b%
  668. so(fh%,s$)
  669. i%=1 
  670. #fh%,
  671. s$,i%,1))
  672.