Home » Archimedes archive » Acorn User » AU 1997-04 A.adf » Features1 » StarInfo/Goodliffe/!GraphPlus/!RunImage
StarInfo/Goodliffe/!GraphPlus/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
| Tape/disk: | Home » Archimedes archive » Acorn User » AU 1997-04 A.adf » Features1 |
| Filename: | StarInfo/Goodliffe/!GraphPlus/!RunImage |
| Read OK: | ✔ |
| File size: | 1CDAD bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
10REM ++----------------------++
20REM || GraphPlus (RunImage) ||
30REM || by Pete Goodliffe ||
40REM || LEN Trax Software 1995 ||
50REM || v3.08 10-Jan-95 ||
60REM ++----------------------++
70:
80ONERROR ERROR0,"Startup error; "+REPORT$+" "+STR$~(ERL)
90SYS"Hourglass_On"
100PROCinit_init:PROCinit_prog:PROCinit_wimp:PROCinit_template
110ONERROR PROCerror
120SYS"Hourglass_Off"
130PROCinit_firstwindow
140mask%=1
150:
160REPEAT
170SYS"Wimp_Poll",mask%,poll%TOevent%
180CASEevent%OF
190 WHEN1 :PROCwindow_requestRedraw
200 WHEN2 :PROCwindow_requestOpen
210 WHEN3 :PROCwindow_requestClose
220 WHEN6 :PROCmouse_click
230 WHEN7 :PROCdrag_userdragbox
240 WHEN8 :PROCkeypressed
250 WHEN9 :PROCmenu_selection
260 WHEN17:PROCmessage_process
270 WHEN18:PROCmessage_process
280ENDCASE
290UNTILFALSE
300:
310REM ********** Initialise **********
320:
330DEFPROCinit_init
340DIMblock%&1000,poll%256,mess%256,data%100
350ENDPROC
360:
370DEFPROCinit_prog
380graph_window%=FALSE
390:
400DIM font_list%10280,font_path%256
410font_counter%=0:font_c%=0
420DIM file_temp%256:$file_temp%="Template":file_status%=0
430DIM file_graph%256:$file_graph%="GraphFile"
440DIM group_map%28,group_data%251,pie_palette% 64
450flag_fiddled%=FALSE
460:
470REM Graph info
480graph_xdiv=1
490graph_ydiv=1
500graph_xsdiv=.5
510graph_ysdiv=.5
520graph_title%=1:graph_xaxis%=1:graph_yaxis%=1
530DIMs_title%40,s_xaxis%40,s_yaxis%40
540graph_xg%=1:graph_yg%=2:graph_xcal%=1:graph_ycal%=1
550graph_exp%=1:graph_es%=1:graph_ef%=1
560DIM text% 40
570text_titlec=0
580graph_titlec=0
590text_titlex=20
600text_titley=25
610text_axisc=0
620graph_axisc=0
630text_axisx=10
640text_axisy=10
650text_keyc=0
660graph_keyc=0
670text_keyx=10
680text_keyy=10
690graph_best%=2
700DIMdata_back%3,graph_back%3
710?graph_back%=0:graph_back%?1=&80:graph_back%?2=&80:graph_back%?3=&F0
720!data_back%=!graph_back%
730graph_box%=TRUE
740graph_key%=FALSE
750graph_3D%=FALSE
760graph_outline%=0
770graph_groupsize=0
780graph_barwidth=0
790graph_barsize=0
800graph_bartype%=0
810graph_barmargin%=0
820graph_type%=1:handle_format%=0
830graph_xmin=0:graph_ymin=0
840graph_xmax=0:graph_ymax=0
850graph_xscale=0:graph_yscale=0
860graph_overlay%=FALSE
870:
880REM Data file info
890data_length%=9
900data_width%=4
910data_xmin=0
920data_ymin=0
930data_xmax=7
940data_ymax=6
950:
960update_faster%=FALSE
970DIMmenu_fontlist%6172
980PROCfont_dothebusiness
990ENDPROC
1000:
1010DEFPROCinit_wimp
1020menu_current%=0
1030SYS"Wimp_Initialise",200,&4B534154,"GraphPlus"TOversion%,task%
1040!block%=-1:block%!4=0:block%!8=0:block%!12=68:block%!16=68:block%!20=&301A:$(block%+24)="!GraphPlus":SYS"Wimp_CreateIcon",,block%TOI%
1041$block%="<GraphPlus$Dir>.Sprites":SYS"OS_ReadModeVariable",-1,5TO,,N:IFN<2:$block%+="22"
1050N=OPENIN$block%
1060M=EXT#N:CLOSE#N
1070DIM sprites% M+20:!sprites%=M+20
1080SYS"OS_SpriteOp",10+256,sprites%,block%
1090PROCinit_windows:PROCinit_menus
1100SYS"XOS_SWINumberFromString",,"DragASprite_Start" TO dstart%; N
1110IF(N AND 1) dstart%=0
1120ENDPROC
1130:
1140:
1150DEFPROCinit_windows
1160DIM ind_inf%139,ind_dp%260,ind_sa%269,ind_sg%269,ind_fnt%173,ind_map%99,ind_lab%69,ind_bck%91,ind_grp%289,ind_frm%92,ind_pn%995,ind_upd%86
1170$block%="<Obey$Dir>.Templates":SYS"Wimp_OpenTemplate",,block%
1180$poll%="Info"
1190SYS"Wimp_LoadTemplate",,block%,ind_inf%,ind_inf%+139,-1,poll%,0
1200block%!64=sprites%
1210SYS"Wimp_CreateWindow",,block%TOhandle_info%
1220$poll%="Group"
1230SYS"Wimp_LoadTemplate",,block%,ind_grp%,ind_grp%+289,-1,poll%,0
1240block%!64=sprites%
1250SYS"Wimp_CreateWindow",,block%TOhandle_group%
1260$poll%="Format"
1270SYS"Wimp_LoadTemplate",,block%,ind_frm%,ind_frm%+92,-1,poll%,0
1280block%!64=sprites%
1290SYS"Wimp_CreateWindow",,block%TOhandle_format%
1300$poll%="Pane"
1310SYS"Wimp_LoadTemplate",,block%,ind_pn%,ind_pn%+995,-1,poll%,0
1320block%!64=sprites%
1330SYS"Wimp_CreateWindow",,block%TOhandle_pane%
1340$poll%="Map"
1350SYS"Wimp_LoadTemplate",,block%,ind_map%,ind_map%+99,-1,poll%,0
1360block%!64=sprites%
1370SYS"Wimp_CreateWindow",,block%TOhandle_map%
1380$poll%="Back"
1390SYS"Wimp_LoadTemplate",,block%,ind_bck%,ind_bck%+91,-1,poll%,0
1400block%!64=sprites%
1410SYS"Wimp_CreateWindow",,block%TOhandle_back%
1420$poll%="Font"
1430SYS"Wimp_LoadTemplate",,block%,ind_fnt%,ind_fnt%+173,-1,poll%,0
1440block%!64=sprites%
1450SYS"Wimp_CreateWindow",,block%TOhandle_font%
1460$poll%="SaveAs"
1470SYS"Wimp_LoadTemplate",,block%,ind_sa%,ind_sa%+269,-1,poll%,0
1480SYS"Wimp_CreateWindow",,block%TOhandle_save%
1490$poll%="SaveGraph"
1500SYS"Wimp_LoadTemplate",,block%,ind_sg%,ind_sg%+269,-1,poll%,0
1510SYS"Wimp_CreateWindow",,block%TOhandle_create%
1520$poll%="Label"
1530SYS"Wimp_LoadTemplate",,block%,ind_lab%,ind_lab%+69,-1,poll%,0
1540block%!64=sprites%
1550SYS"Wimp_CreateWindow",,block%TOhandle_label%
1560$poll%="Datapath"
1570SYS"Wimp_LoadTemplate",,block%,ind_dp%,ind_dp%+260,-1,poll%,0
1580SYS"Wimp_CreateWindow",,block%TOhandle_datapath%
1590$poll%="Update"
1600SYS"Wimp_LoadTemplate",,block%,ind_upd%,ind_upd%+86,-1,poll%,0
1610block%!64=sprites%
1620SYS"Wimp_CreateWindow",,block%TOhandle_update%
1630SYS"Wimp_CloseTemplate"
1640ENDPROC
1650:
1660DEFPROCinit_menus:DIMmenu_bar%244,menu_win%196,menu_style%196,menu_groups%76,menu_group%172,menu_map%196,menu_best%76,menu_font%100,menu_file%100,menu_palette%412,menu_task%48
1670$menu_bar%="GraphPlus"
1680menu_bar%?12=7:menu_bar%?13=2:menu_bar%?14=7:menu_bar%?15=0:menu_bar%!16=124:menu_bar%!20=44:menu_bar%!24=0
1690PROCmenu_additem(0,menu_bar%,0,handle_info%,&7009021,"Info")
1700PROCmenu_additem(1,menu_bar%,0,menu_style%,&7009021,"Style")
1710PROCmenu_additem(2,menu_bar%,0,menu_groups%,&7009021,"Groups")
1720PROCmenu_additem(3,menu_bar%,2,menu_file%,&7009021,"File")
1730PROCmenu_additem(4,menu_bar%,1,-1,&7009021,"Line")
1740PROCmenu_additem(5,menu_bar%,0,-1,&7009021,"Bar")
1750PROCmenu_additem(6,menu_bar%,0,-1,&7009021,"Pie")
1760PROCmenu_additem(7,menu_bar%,2,-1,&7009021,"Table")
1770PROCmenu_additem(8,menu_bar%,128,-1,&7009021,"Quit")
1780$menu_win%="Format"
1790menu_win%?12=7:menu_win%?13=2:menu_win%?14=7:menu_win%?15=0:menu_win%!16=170:menu_win%!20=44:menu_win%!24=0
1800PROCmenu_additem(0,menu_win%,0,menu_style%,&7009021,"Style")
1810PROCmenu_additem(1,menu_win%,0,menu_groups%,&7009021,"Groups")
1820PROCmenu_additem(2,menu_win%,2,menu_file%,&7009021,"File")
1830PROCmenu_additem(3,menu_win%,1,-1,&7009021,"Line")
1840PROCmenu_additem(4,menu_win%,0,-1,&7009021,"Bar")
1850PROCmenu_additem(5,menu_win%,0,-1,&7009021,"Pie")
1860PROCmenu_additem(6,menu_win%,128,-1,&7009021,"Table")
1870$menu_style%="Style"
1880menu_style%?12=7:menu_style%?13=2:menu_style%?14=7:menu_style%?15=0:menu_style%!16=170:menu_style%!20=44:menu_style%!24=0
1890PROCmenu_additem(0,menu_style%,0,-1,&7009021,"Key")
1900PROCmenu_additem(1,menu_style%,9,handle_back%,&7009021,"Background")
1910PROCmenu_additem(2,menu_style%,0,menu_font%,&7009021,"Fonts")
1920PROCmenu_additem(3,menu_style%,0,menu_best%,&7009021,"Best fit")
1930PROCmenu_additem(4,menu_style%,0,menu_palette%,&7009021,"Palette")
1940PROCmenu_additem(5,menu_style%,0,-1,&7009021,"3D graphs")
1950PROCmenu_additem(6,menu_style%,129,-1,&7009021,"Outline")
1960$menu_font%="Fonts"
1970menu_font%?12=7:menu_font%?13=2:menu_font%?14=7:menu_font%?15=0:menu_font%!16=108:menu_font%!20=44:menu_font%!24=0
1980PROCmenu_additem(0,menu_font%,8,handle_font%,&7009021,"Title")
1990PROCmenu_additem(1,menu_font%,8,handle_font%,&7009021,"Axis")
2000PROCmenu_additem(2,menu_font%,136,handle_font%,&7009021,"Key")
2010$menu_best%="Best fit"
2020menu_best%?12=7:menu_best%?13=2:menu_best%?14=7:menu_best%?15=0:menu_best%!16=108:menu_best%!20=44:menu_best%!24=0
2030PROCmenu_additem(0,menu_best%,0,-1,&7009021,"X on Y")
2040PROCmenu_additem(1,menu_best%,129,-1,&7009021,"Y on X")
2050$menu_file%="File"
2060menu_file%?12=7:menu_file%?13=2:menu_file%?14=7:menu_file%?15=0:menu_file%!16=140:menu_file%!20=44:menu_file%!24=0
2070PROCmenu_additem(0,menu_file%,8,handle_save%,&7009021,"Save")
2080PROCmenu_additem(1,menu_file%,8,handle_datapath%,&7009021,"Datapath")
2090PROCmenu_additem(2,menu_file%,128,-1,&7009021,"Default")
2100$menu_groups%="Groups"
2110menu_groups%?12=7:menu_groups%?13=2:menu_groups%?14=7:menu_groups%?15=0:menu_groups%!16=170:menu_groups%!20=44:menu_groups%!24=0
2120PROCmenu_additem(0,menu_groups%,0,menu_map%,&7009021,"Map")
2130PROCmenu_additem(1,menu_groups%,128,menu_group%,&7009021,"Style")
2140$menu_group%="Group style"
2150menu_group%?12=7:menu_group%?13=2:menu_group%?14=7:menu_group%?15=0:menu_group%!16=140:menu_group%!20=44:menu_group%!24=0
2160PROCmenu_additem(0,menu_group%,8,handle_group%,&7009021,"Group 1")
2170PROCmenu_additem(1,menu_group%,8,handle_group%,&7009021,"Group 2")
2180PROCmenu_additem(2,menu_group%,8,handle_group%,&7009021,"Group 3")
2190PROCmenu_additem(3,menu_group%,8,handle_group%,&7009021,"Group 4")
2200PROCmenu_additem(4,menu_group%,8,handle_group%,&7009021,"Group 5")
2210PROCmenu_additem(5,menu_group%,136,handle_group%,&7009021,"Group 6")
2220$menu_map%="Map groups"
2230menu_map%?12=7:menu_map%?13=2:menu_map%?14=7:menu_map%?15=0:menu_map%!16=140:menu_map%!20=44:menu_map%!24=0
2240PROCmenu_additem(0,menu_map%,8,handle_map%,&7009021,"Group 1")
2250PROCmenu_additem(1,menu_map%,8,handle_map%,&7009021,"Group 2")
2260PROCmenu_additem(2,menu_map%,8,handle_map%,&7009021,"Group 3")
2270PROCmenu_additem(3,menu_map%,8,handle_map%,&7009021,"Group 4")
2280PROCmenu_additem(4,menu_map%,8,handle_map%,&7009021,"Group 5")
2290PROCmenu_additem(5,menu_map%,8,handle_map%,&7009021,"Group 6")
2300PROCmenu_additem(6,menu_map%,136,handle_label%,&7009021,"Labels")
2310$menu_palette%="Palette"
2320menu_palette%?12=7:menu_palette%?13=2:menu_palette%?14=7:menu_palette%?15=0:menu_palette%!16=108:menu_palette%!20=44:menu_palette%!24=0
2330PROCmenu_additem(0,menu_palette%,8,handle_back%,&7009021,"Pie 1")
2340PROCmenu_additem(1,menu_palette%,8,handle_back%,&7009021,"Pie 2")
2350PROCmenu_additem(2,menu_palette%,8,handle_back%,&7009021,"Pie 3")
2360PROCmenu_additem(3,menu_palette%,8,handle_back%,&7009021,"Pie 4")
2370PROCmenu_additem(4,menu_palette%,8,handle_back%,&7009021,"Pie 5")
2380PROCmenu_additem(5,menu_palette%,8,handle_back%,&7009021,"Pie 6")
2390PROCmenu_additem(6,menu_palette%,8,handle_back%,&7009021,"Pie 7")
2400PROCmenu_additem(7,menu_palette%,8,handle_back%,&7009021,"Pie 8")
2410PROCmenu_additem(8,menu_palette%,8,handle_back%,&7009021,"Pie 9")
2420PROCmenu_additem(9,menu_palette%,8,handle_back%,&7009021,"Pie 10")
2430PROCmenu_additem(10,menu_palette%,8,handle_back%,&7009021,"Pie 11")
2440PROCmenu_additem(11,menu_palette%,8,handle_back%,&7009021,"Pie 12")
2450PROCmenu_additem(12,menu_palette%,8,handle_back%,&7009021,"Pie 13")
2460PROCmenu_additem(13,menu_palette%,8,handle_back%,&7009021,"Pie 14")
2470PROCmenu_additem(14,menu_palette%,8,handle_back%,&7009021,"Pie 15")
2480PROCmenu_additem(15,menu_palette%,136,handle_back%,&7009021,"Pie 16")
2490$menu_fontlist%="Palette"
2500menu_fontlist%?12=7:menu_fontlist%?13=2:menu_fontlist%?14=7:menu_fontlist%?15=0:menu_fontlist%!20=44:menu_fontlist%!24=0
2510$menu_task%="GraphPlus"
2520menu_task%?12=7:menu_task%?13=2:menu_task%?14=7:menu_task%?15=0:menu_task%!16=124:menu_task%!20=44:menu_task%!24=0
2530PROCmenu_additem(0,menu_task%,128,-1,&7009021,"Faster")
2540ENDPROC
2550:
2560DEFPROCmenu_additem(item%,addr%,flag%,pointer%,icon%,item$):addr%!(28+(item%*24))=flag%:addr%!(32+(item%*24))=pointer%:addr%!(36+(item%*24))=icon%
2570IFitem$<>"PommeDeTerre"$(addr%+40+(item%*24))=item$ELSEaddr%!(40+(item%*24))=B%:addr%!(44+(item%*24))=V%:addr%!(48+(item%*24))=L%
2580ENDPROC
2590:
2600DEFPROCmenu_tick(item%,addr%,flag%):addr%!(28+(item%*24))=flag%:ENDPROC
2610:
2620DEFPROCinit_firstwindow
2630SYS"OS_ReadModeVariable",-1,11TO,,J%
2640SYS"OS_ReadModeVariable",-1,12TO,,K%
2650SYS"OS_ReadModeVariable",-1,5TO,,M:K%=K%*(2^M)
2660SYS"OS_ReadModeVariable",-1,4TO,,M:J%=J%*(2^M)
2670J%=J%DIV2-268:K%=K%DIV2+166
2680SYS"Wimp_CreateMenu",,handle_info%,J%,K%
2690ENDPROC
2700:
2710DEFPROCinit_template
2720$block%="<GraphPlus$Dir>.Default"
2730SYS"XOS_Find",&42,block%TOX%;N
2740IF(N AND1)=1ORX%=0:N=FNmessage("GraphPlus is unable to find the default file.",1):ENDPROC
2750PROCload_tempfile
2760SYS"OS_Find",0,X%
2770ENDPROC
2780:
2790:
2800REM ********** Polled routines **********
2810:
2820REM ********** Key event **********
2830:
2840REM This could be the start of a beautiful friendship!
2850DEFPROCkeypressed
2860IF!poll%=handle_group%:PROCgroup_return
2870IF!poll%=handle_map%:button%=4:PROCmap_return
2880IF!poll%=handle_label%ANDpoll%!24=13:button%=4:PROClabel_OK
2890IF!poll%=handle_back%:PROCback_return
2900IF!poll%=handle_font%:PROCfont_return
2910IF!poll%=handle_save%ANDpoll%!24=13:PROCsave_tempOK
2920IF!poll%=handle_create%ANDpoll%!24=13:PROCsave_createOK
2930IF!poll%=handle_pane%:PROCpane_return
2940SYS"Wimp_ProcessKey",poll%!24:ENDPROC
2950:
2960:
2970REM ********** Mouse Stuff **********
2980:
2990DEFPROCmouse_click:LOCALbutton%,handle%,icon%
3000x%=!poll%:y%=poll%!4:button%=poll%!8:handle%=poll%!12:icon%=poll%!16
3010IFbutton%=2ANDhandle%=-2:PROCmenu_iconbar
3020IFbutton%=2AND(handle%=handle_format%ORhandle%=handle_pane%):PROCmenu_format
3030IFbutton%<>2ANDhandle%=handle_group%:PROCmenu_group
3040IFbutton%<>2ANDhandle%=handle_map%:PROCmenu_map
3050IFbutton%<>2ANDhandle%=handle_label%:PROCmenu_label
3060IFbutton%<>2ANDhandle%=handle_back%:PROCmenu_back
3070IFbutton%<>2ANDhandle%=handle_font%:PROCmenu_font
3080IFbutton%=4ANDhandle%=-2ANDgraph_window%:PROCwindow_liftgraph
3090IFbutton%=4ANDhandle%=-2ANDNOTgraph_window%:PROCwindow_opengraph
3100IFicon%=0ANDbutton%=64ANDhandle%=handle_save%:PROCdrag_startsave
3110IFbutton%<>2ANDicon%=2ANDhandle%=handle_save%:PROCsave_tempOK
3120IFicon%=0ANDbutton%=64ANDhandle%=handle_create%:PROCdrag_startcreate
3130IFbutton%<>2ANDicon%=2ANDhandle%=handle_create%:PROCsave_createOK
3140IFbutton%<>2ANDhandle%=handle_format%:PROCformat_select
3150IFbutton%<>2ANDhandle%=handle_pane%:PROCpane_select
3160IFhandle%=handle_pane%ANDicon%<>2ANDicon%<>5ANDicon%<>9ANDicon%<>11ANDicon%<>14ANDicon%<>16ANDicon%<>19ANDicon%<>23ANDicon%<>25ANDicon%<>28ANDicon%<>30ANDicon%<>46ANDicon%<>50ANDbutton%<>2:flag_fiddled%=TRUE
3170ENDPROC
3180:
3190:
3200REM ********** Menu stuff **********
3210:
3220DEFPROCmenu_iconbar:SYS"Wimp_CreateMenu",,menu_bar%,x%-64,540:menu_current%=1:ENDPROC
3230:
3240DEFPROCmenu_format:SYS"Wimp_CreateMenu",,menu_win%,x%-32,y%:menu_current%=2:ENDPROC
3250:
3260DEFPROCmenu_opengroup
3270group%=poll%!40
3280PROCgroup_calculate
3290SYS"Wimp_CreateSubMenu",,handle_group%,poll%!24,poll%!28
3300ENDPROC
3310:
3320DEFPROCmenu_reopengroup
3330PROCgroup_calculate
3340SYS"Wimp_ForceRedraw",handle_group%,0,-1024,1279,0
3350ENDPROC
3360:
3370DEFPROCmenu_openmap
3380group%=poll%!40
3390PROCmap_calculate
3400SYS"Wimp_CreateSubMenu",,handle_map%,poll%!24,poll%!28
3410ENDPROC
3420:
3430DEFPROCmenu_reopenmap
3440PROCmap_calculate
3450SYS"Wimp_ForceRedraw",handle_map%,0,-1024,1279,0
3460ENDPROC
3470:
3480DEFPROCmenu_openlabel
3490group%=6:$(ind_lab%+38)=STR$(group_map%!24)
3500SYS"Wimp_CreateSubMenu",,handle_label%,poll%!24,poll%!28
3510ENDPROC
3520:
3530DEFPROCmenu_reopenlabel
3540group%=6:$(ind_lab%+38)=STR$(group_map%!24)
3550SYS"Wimp_ForceRedraw",handle_label%,0,-1024,1279,0
3560ENDPROC
3570:
3580DEFPROCmenu_openback
3590group%=255:PROCback_calculate
3600SYS"Wimp_CreateSubMenu",,handle_back%,poll%!24,poll%!28
3610PROCcaret_setpos(handle_back%,5,FNlen(ind_bck%+20))
3620ENDPROC
3630:
3640DEFPROCmenu_reopenback
3650PROCback_calculate
3660SYS"Wimp_ForceRedraw",handle_back%,0,-1024,1279,0
3670PROCcaret_setpos(handle_back%,5,FNlen(ind_bck%+20))
3680ENDPROC
3690:
3700DEFPROCmenu_openpalette
3710group%=poll%!40
3720PROCback_calculate
3730SYS"Wimp_CreateSubMenu",,handle_back%,poll%!24,poll%!28
3740ENDPROC
3750:
3760DEFPROCmenu_openfont
3770group%=poll%!40
3780PROCfont_calculate
3790SYS"Wimp_CreateSubMenu",,handle_font%,poll%!24,poll%!28
3800ENDPROC
3810:
3820DEFPROCmenu_reopenfont
3830PROCfont_calculate
3840SYS"Wimp_ForceRedraw",handle_font%,0,-1024,1279,0
3850ENDPROC
3860:
3870DEFPROCmenu_opensave
3880$(ind_sa%)=$file_temp%
3890SYS"Wimp_CreateSubMenu",,handle_save%,poll%!24,poll%!28
3900ENDPROC
3910:
3920:
3930DEFPROCgroup_calculate
3940ind_grp%?13=group%+49
3950ind_grp%?21=49+group_data%?(group%*42)
3960ind_grp%?26=48+group_data%?(group%*42+1)
3970$(ind_grp%+31)=STR$group_data%?(group%*42+2)
3980PROCgroup_bar(15,group_data%?(group%*42+2))
3990$(ind_grp%+44)=STR$group_data%?(group%*42+3)
4000PROCgroup_bar(21,group_data%?(group%*42+3))
4010$(ind_grp%+57)=STR$group_data%?(group%*42+4)
4020PROCgroup_bar(27,group_data%?(group%*42+4))
4030$(ind_grp%+74)=STR$(group_data%!(group%*42+5)/640)
4040ind_grp%?134=48+group_data%?(group%*42+9)
4050N=group_data%?(group%*42+10)
4060!block%=handle_group%:block%!12=&200000
4070block%!4=63:IF(N AND 1)=1:block%!8=&200000 ELSE block%!8=0
4080SYS"Wimp_SetIconState",,block%
4090block%!4=64:IF(N AND 2)=2:block%!8=&200000 ELSE block%!8=0
4100SYS"Wimp_SetIconState",,block%
4110block%!4=65::IF(N AND 4)=4:block%!8=&200000 ELSE block%!8=0
4120SYS"Wimp_SetIconState",,block%
4130ENDPROC
4140:
4150DEFPROCmap_calculate
4160$(ind_map%+24)=STR$(group%+1)
4170$(ind_map%+33)=STR$(group_map%!(group%*4))
4180$(ind_map%+49)=$(group_data%+group%*42+11)
4190ENDPROC
4200:
4210DEFPROCback_calculate
4220IFgroup%=255THEN
4230 PROCback_bar(6,data_back%?1):PROCback_bar(12,data_back%?2):PROCback_bar(18,data_back%?3):$(ind_bck%+11)=STR$(data_back%?1)
4240 $(ind_bck%+24)=STR$(data_back%?2):$(ind_bck%+37)=STR$(data_back%?3)
4250 $ind_bck%="Background"
4260ELSE
4270 PROCback_bar(6,pie_palette%?(group%*4+1)):PROCback_bar(12,pie_palette%?(group%*4+2)):PROCback_bar(18,pie_palette%?(group%*4+3))
4280 $(ind_bck%+11)=STR$(pie_palette%?(group%*4+1)):$(ind_bck%+24)=STR$(pie_palette%?(group%*4+2)):$(ind_bck%+37)=STR$(pie_palette%?(group%*4+3))
4290 $ind_bck%="Pie "+STR$(group%+1)
4300ENDIF
4310ENDPROC
4320:
4330DEFPROCfont_calculate
4340CASEgroup%OF
4350 WHEN0:$ind_fnt%="Title font":$(ind_fnt%+43)=$(font_list%+text_titlec*40):$(ind_fnt%+131)=STR$text_titlex:$(ind_fnt%+144)=STR$text_titley:font_c%=text_titlec:$menu_fontlist%="Title font":PROCfont_ticklist
4360 WHEN1:$ind_fnt%="Axis font":$(ind_fnt%+43)=$(font_list%+text_axisc*40):$(ind_fnt%+131)=STR$text_axisx:$(ind_fnt%+144)=STR$text_axisy:font_c%=text_axisc:$menu_fontlist%="Axis font":PROCfont_ticklist
4370 WHEN2:$ind_fnt%="Key font":$(ind_fnt%+43)=$(font_list%+text_keyc*40):$(ind_fnt%+131)=STR$text_keyx:$(ind_fnt%+144)=STR$text_keyy:font_c%=text_keyc:$menu_fontlist%="Key font":PROCfont_ticklist
4380ENDCASE
4390ENDPROC
4400:
4410DEFPROCfont_ticklist
4420FORN=0TOfont_counter%:menu_fontlist%!(28+N*24)=0:NEXT:menu_fontlist%!(28+font_counter%*24)=128
4430menu_fontlist%!(28+font_c%*24)+=1
4440ENDPROC
4450:
4460DEFPROCpane_calculate
4470!block%=handle_pane%
4480block%!4=1:block%!12=&200000:IFgraph_title%:block%!8=&200000:ELSEblock%!8=0
4490SYS"Wimp_SetIconState",,block%
4500$(ind_pn%+24)=$s_title%
4510block%!4=4:IFgraph_xaxis%:block%!8=&200000:ELSEblock%!8=0
4520SYS"Wimp_SetIconState",,block%
4530$(ind_pn%+98)=$s_xaxis%
4540block%!4=6:IFgraph_xg%=1:block%!8=&200000:ELSEblock%!8=0
4550SYS"Wimp_SetIconState",,block%
4560block%!4=7:IFgraph_xg%=2:block%!8=&200000:ELSEblock%!8=0
4570SYS"Wimp_SetIconState",,block%
4580$(ind_pn%+212)=STR$graph_xdiv
4590$(ind_pn%+244)=STR$graph_xsdiv
4600block%!4=12:IFgraph_xcal%:block%!8=&200000:ELSEblock%!8=0
4610SYS"Wimp_SetIconState",,block%
4620$(ind_pn%+299)=STR$data_xmin
4630$(ind_pn%+318)=STR$data_xmax
4640block%!4=18:IFgraph_yaxis%:block%!8=&200000:ELSEblock%!8=0
4650SYS"Wimp_SetIconState",,block%
4660$(ind_pn%+368)=$s_yaxis%
4670block%!4=20:IFgraph_yg%=1:block%!8=&200000:ELSEblock%!8=0
4680SYS"Wimp_SetIconState",,block%
4690block%!4=21:IFgraph_yg%=2:block%!8=&200000:ELSEblock%!8=0
4700SYS"Wimp_SetIconState",,block%
4710$(ind_pn%+482)=STR$graph_ydiv
4720$(ind_pn%+514)=STR$graph_ysdiv
4730block%!4=26:IFgraph_ycal%:block%!8=&200000:ELSEblock%!8=0
4740SYS"Wimp_SetIconState",,block%
4750$(ind_pn%+569)=STR$data_ymin
4760$(ind_pn%+588)=STR$data_ymax
4770block%!8=0:FORblock%!4=33TO37:SYS"Wimp_SetIconState",,block%:NEXT
4780block%!4=32+graph_bartype%MOD10:block%!8=&200000:SYS"Wimp_SetIconState",,block%
4790block%!4=38:IF(graph_barmargin%AND1)=1:block%!8=&200000:ELSEblock%!8=0
4800SYS"Wimp_SetIconState",,block%
4810block%!4=39:IF(graph_barmargin%AND128)=128:block%!8=&200000:ELSEblock%!8=0
4820SYS"Wimp_SetIconState",,block%
4830block%!4=40:IFgraph_bartype%<10:block%!8=&200000:ELSEblock%!8=0
4840SYS"Wimp_SetIconState",,block%
4850block%!4=41:IFgraph_bartype%>10:block%!8=&200000:ELSEblock%!8=0
4860SYS"Wimp_SetIconState",,block%
4870block%!4=43:IFgraph_exp%:block%!8=&200000:ELSEblock%!8=0
4880SYS"Wimp_SetIconState",,block%
4890$(ind_pn%+971)=STR$graph_es%
4900$(ind_pn%+983)=STR$graph_ef%
4910flag_fiddled%=FALSE
4920block%!8=0:block%!4=2:SYS"Wimp_SetIconState",,block%
4930block%!4=5:SYS"Wimp_SetIconState",,block%
4940block%!4=9:SYS"Wimp_SetIconState",,block%
4950block%!4=11:SYS"Wimp_SetIconState",,block%
4960block%!4=14:SYS"Wimp_SetIconState",,block%
4970block%!4=16:SYS"Wimp_SetIconState",,block%
4980block%!4=19:SYS"Wimp_SetIconState",,block%
4990block%!4=23:SYS"Wimp_SetIconState",,block%
5000block%!4=25:SYS"Wimp_SetIconState",,block%
5010block%!4=28:SYS"Wimp_SetIconState",,block%
5020block%!4=30:SYS"Wimp_SetIconState",,block%
5030block%!4=46:SYS"Wimp_SetIconState",,block%
5040block%!4=50:SYS"Wimp_SetIconState",,block%
5050ENDPROC
5060:
5070DEFPROCmenu_selection
5080CASEmenu_current%OF
5090 WHEN1:PROCmenu_selecticon
5100 WHEN2:PROCmenu_winselection
5110ENDCASE
5120ENDPROC
5130:
5140DEFPROCmenu_selecticon
5150CASEpoll%!0OF
5160 WHEN1:PROCmenu_selectstyle
5170 WHEN3:PROCmenu_selectfile
5180 WHEN4:PROCgraph_select(1)
5190 WHEN5:PROCgraph_select(2)
5200 WHEN6:PROCgraph_select(3)
5210 WHEN7:PROCgraph_select(4)
5220 WHEN8:PROCbyebye_shutdown
5230ENDCASE
5240SYS"Wimp_GetPointerInfo",,block%:IFblock%!8=1:PROCmenu_iconbar
5250ENDPROC
5260:
5270DEFPROCmenu_winselection
5280CASEpoll%!0OF
5290 WHEN0:PROCmenu_selectstyle
5300 WHEN2:PROCmenu_selectfile
5310 WHEN3:PROCgraph_select(1)
5320 WHEN4:PROCgraph_select(2)
5330 WHEN5:PROCgraph_select(3)
5340 WHEN6:PROCgraph_select(4)
5350ENDCASE
5360SYS"Wimp_GetPointerInfo",,block%:IFblock%!8=1:PROCmenu_format
5370ENDPROC
5380:
5390DEFPROCmenu_selectstyle
5400CASEpoll%!4OF
5410 WHEN0:PROCstyle_key
5420 WHEN1:PROCstyle_box
5430 WHEN2:PROCstyle_fontselect
5440 WHEN3:PROCbest_select
5450 WHEN5:PROCstyle_3D
5460 WHEN6:PROCstyle_outline
5470ENDCASE
5480ENDPROC
5490:
5500DEFPROCmenu_selectfile
5510CASEpoll%!4OF
5520 WHEN0:PROCsave_tempOK
5530 WHEN2:PROCfile_default
5540ENDCASE
5550ENDPROC
5560:
5570DEFPROCmenu_group
5580N%=1:IFbutton%=1N%=-1
5590IFicon%=5:PROCgroup_po(-N%)
5600IFicon%=7:PROCgroup_po(N%)
5610IFicon%=9:PROCgroup_si(-N%)
5620IFicon%=11:PROCgroup_si(N%)
5630IFicon%=12:PROCgroup_r(-N%)
5640IFicon%=13:PROCgroup_r(N%)
5650IFicon%=18:PROCgroup_g(-N%)
5660IFicon%=19:PROCgroup_g(N%)
5670IFicon%=24:PROCgroup_b(-N%)
5680IFicon%=25:PROCgroup_b(N%)
5690IFicon%=16:PROCgroup_rclick
5700IFicon%=22:PROCgroup_bclick
5710IFicon%=28:PROCgroup_gclick
5720IFicon%>=30ANDicon%<=45:PROCgroup_cl(icon%-30)
5730IFicon%=49:PROCgroup_t(0)
5740IFicon%=50:PROCgroup_t(.25)
5750IFicon%=51:PROCgroup_t(.5)
5760IFicon%=52:PROCgroup_t(1)
5770IFicon%=53:PROCgroup_t(2)
5780IFicon%=54:PROCgroup_t(4)
5790IFicon%>=58ANDicon%<=61:PROCgroup_ln(icon%-57)
5800IFicon%=66:PROCmenu_reopengroup:IFbutton%=4:SYS"Wimp_CreateMenu",,-1
5810IFicon%=67:PROCgroup_OK
5820ENDPROC
5830:
5840DEFPROCmenu_map
5850N%=1:IFbutton%=1N%=-1
5860IFicon%=6:PROCmap_gr(-N%)
5870IFicon%=8:PROCmap_gr(N%)
5880IFicon%=12:PROCmenu_reopenmap:IFbutton%=4:SYS"Wimp_CreateMenu",-1
5890IFicon%=13:PROCmap_OK
5900ENDPROC
5910:
5920DEFPROCmenu_label
5930N%=1:IFbutton%=1N%=-1
5940IFicon%=6:PROClabel_gr(-N%)
5950IFicon%=8:PROClabel_gr(N%)
5960IFicon%=9:PROCmenu_reopenlabel:IFbutton%=4:SYS"Wimp_CreateMenu",-1
5970IFicon%=10:PROClabel_OK
5980ENDPROC
5990:
6000DEFPROCmenu_back
6010N%=1:IFbutton%=1N%=-1
6020IFicon%=3:PROCback_r(-N%)
6030IFicon%=4:PROCback_r(N%)
6040IFicon%=7:PROCback_rclick
6050IFicon%=13:PROCback_bclick
6060IFicon%=19:PROCback_gclick
6070IFicon%=9:PROCback_g(-N%)
6080IFicon%=10:PROCback_g(N%)
6090IFicon%=15:PROCback_b(-N%)
6100IFicon%=16:PROCback_b(N%)
6110IFicon%>=21ANDicon%<=36:PROCback_cl(icon%-21)
6120IFicon%=37:PROCmenu_reopenback:IFbutton%=4:SYS"Wimp_CreateMenu",,-1
6130IFicon%=38:PROCback_OK
6140ENDPROC
6150:
6160DEFPROCmenu_font
6170N%=1:IFbutton%=1N%=-1
6180IFicon%=5:PROCfont_list
6190IFicon%=8:PROCfont_w(8):PROCfont_h(8)
6200IFicon%=9:PROCfont_w(10):PROCfont_h(10)
6210IFicon%=10:PROCfont_w(12):PROCfont_h(12)
6220IFicon%=11:PROCfont_w(14):PROCfont_h(14)
6230IFicon%=13:PROCfont_wi(-N%)
6240IFicon%=15:PROCfont_wi(N%)
6250IFicon%=17:PROCfont_hi(-N%)
6260IFicon%=19:PROCfont_hi(N%)
6270IFicon%=20:PROCmenu_reopenfont:IFbutton%=4:SYS"Wimp_CreateMenu",,-1
6280IFicon%=21:PROCfont_OK
6290ENDPROC
6300:
6310DEFPROCfile_default
6320N=FNmessage("Click on OK to reset the current Template. Warning: This cannot be retrieved if has not been saved.",3):IFN<>1:ENDPROC
6330PROCinit_template
6340PROCpane_calculate:SYS"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0
6350ENDPROC
6360:
6370DEFPROCformat_select
6380IFicon%=4:PROCgraph_savebox
6390IFicon%=5:PROCpane_calculate
6400IFicon%=6:PROCpane_OK
6410ENDPROC
6420:
6430DEFPROCpane_select
6440N%=1:IFbutton%=1N%=-1
6450IFicon%=45:PROCpane_s(-N%)
6460IFicon%=47:PROCpane_s(N%)
6470IFicon%=49:PROCpane_f(-N%)
6480IFicon%=51:PROCpane_f(N%)
6490ENDPROC
6500:
6510DEFPROCpie_select
6520N%=1:IFbutton%=1N%=-1
6530IFicon%=8:PROCpie_s(-N%)
6540IFicon%=10:PROCpie_s(N%)
6550IFicon%=12:PROCpie_f(-N%)
6560IFicon%=14:PROCpie_f(N%)
6570ENDPROC
6580:
6590DEFPROCgroup_po(N)
6600M=ind_grp%?21-49
6610IFM+N<0ORM+N>7:ENDPROC
6620M+=N
6630ind_grp%?21=M+49
6640!block%=handle_group%:block%!4=6:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
6650ENDPROC
6660:
6670DEFPROCgroup_si(N)
6680M=ind_grp%?26-49
6690IFM+N<0ORM+N>8:ENDPROC
6700M+=N
6710ind_grp%?26=M+49
6720!block%=handle_group%:block%!4=10:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
6730ENDPROC
6740:
6750DEFPROCgroup_r(N)
6760M=VAL$(ind_grp%+31)
6770IFM+N<0ORM+N>255:ENDPROC
6780M+=N
6790$(ind_grp%+31)=STR$M
6800!block%=handle_group%:block%!4=14:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
6810PROCgroup_bar(15,M)
6820PROCgroup_colour
6830ENDPROC
6840:
6850DEFPROCgroup_rclick
6860!block%=handle_group%:SYS"Wimp_GetWindowState",,block%
6870M=!poll%-block%!4-190
6880$(ind_grp%+31)=STR$M
6890poll%!4=14:PROCgroup_pro(31)
6900ENDPROC
6910:
6920DEFPROCgroup_g(N)
6930M=VAL$(ind_grp%+44)
6940IFM+N<0ORM+N>255:ENDPROC
6950M+=N
6960$(ind_grp%+44)=STR$M
6970!block%=handle_group%:block%!4=20:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
6980PROCgroup_bar(21,M)
6990PROCgroup_colour
7000ENDPROC
7010:
7020DEFPROCgroup_bclick
7030!block%=handle_group%:SYS"Wimp_GetWindowState",,block%
7040M=!poll%-block%!4-190
7050$(ind_grp%+44)=STR$M
7060poll%!4=20:PROCgroup_pro(44)
7070ENDPROC
7080:
7090DEFPROCgroup_b(N)
7100M=VAL$(ind_grp%+57)
7110IFM+N<0ORM+N>255:ENDPROC
7120M+=N
7130$(ind_grp%+57)=STR$M
7140!block%=handle_group%:block%!4=26:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
7150PROCgroup_bar(27,M)
7160PROCgroup_colour
7170ENDPROC
7180:
7190DEFPROCgroup_gclick
7200!block%=handle_group%:SYS"Wimp_GetWindowState",,block%
7210M=!poll%-block%!4-190
7220$(ind_grp%+57)=STR$M
7230poll%!4=26:PROCgroup_pro(57)
7240ENDPROC
7250:
7260DEFPROCgroup_cl(N)
7270SYS"Wimp_ReadPalette",,block%
7280$(ind_grp%+31)=STR$block%?(N*4+1)
7290$(ind_grp%+44)=STR$block%?(N*4+2)
7300$(ind_grp%+57)=STR$block%?(N*4+3)
7310!block%=handle_group%:block%!4=14:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
7320block%!4=20:SYS"Wimp_SetIconState",,block%
7330block%!4=26:SYS"Wimp_SetIconState",,block%
7340PROCgroup_bar(15,VAL$(ind_grp%+31))
7350PROCgroup_bar(21,VAL$(ind_grp%+44))
7360PROCgroup_bar(27,VAL$(ind_grp%+57))
7370PROCgroup_colour
7380ENDPROC
7390:
7400DEFPROCgroup_bar(N,M)
7410!block%=handle_group%:block%!4=N:SYS"Wimp_GetIconState",,block%:SYS"Wimp_DeleteIcon",,block%
7420block%!4=handle_group%:block%!16=196+M:SYS"Wimp_CreateIcon",,block%+4
7430!block%=handle_group%:block%!8=0:block%!12=0
7440block%!4=N:SYS"Wimp_SetIconState",,block%
7450block%!4=(N-9)DIV6-1:SYS"Wimp_SetIconState",,block%
7460ENDPROC
7470:
7480DEFPROCgroup_colour
7490!block%=handle_group%
7500SYS"Wimp_GetWindowInfo",,block%
7510!block%=((VAL$(ind_grp%+57))<<24)+((VAL$(ind_grp%+44))<<16)+((VAL$(ind_grp%+31))<<8)
7520SYS"ColourTrans_SetGCOL",!block%,,,0,0
7530RECTANGLEFILLblock%!4+456,block%!8+228,164,28
7540ENDPROC
7550:
7560DEFPROCgroup_t(N)
7570$(ind_grp%+74)=STR$N
7580!block%=handle_group%:block%!4=48:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
7590ENDPROC
7600:
7610DEFPROCgroup_ln(N)
7620ind_grp%?134=N+48
7630!block%=handle_group%:block%!4=57:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
7640ENDPROC
7650:
7660DEFPROCgroup_return
7670N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1
7680IFpoll%!24=&18F:N%=-1
7690IFpoll%!4=20ANDN%=-1:PROCgroup_pro(44):PROCcaret_setpos(handle_group%,14,FNlen(ind_grp%+31))
7700IFpoll%!4=14ANDN%=1:PROCgroup_pro(31):PROCcaret_setpos(handle_group%,20,FNlen(ind_grp%+44))
7710IFpoll%!4=20ANDN%=1:PROCgroup_pro(44):PROCcaret_setpos(handle_group%,26,FNlen(ind_grp%+57))
7720IFpoll%!4=26ANDN%=1:PROCgroup_pro(57):PROCcaret_setpos(handle_group%,48,FNlen(ind_grp%+74))
7730IFpoll%!4=26ANDN%=-1:PROCgroup_pro(57):PROCcaret_setpos(handle_group%,20,FNlen(ind_grp%+44))
7740IFpoll%!4=48ANDN%=-1:PROCcaret_setpos(handle_group%,26,FNlen(ind_grp%+57))
7750IFpoll%!4=48ANDpoll%!24=13:button%=4:PROCok_click(handle_group%,67):PROCgroup_OK:PROCok_click(handle_group%,67)
7760ENDPROC
7770:
7780DEFPROCgroup_OK
7790group_data%?(group%*42)=ind_grp%?21-49
7800group_data%?(group%*42+1)=ind_grp%?26-48
7810group_data%?(group%*42+2)=VAL$(ind_grp%+31)
7820group_data%?(group%*42+3)=VAL$(ind_grp%+44)
7830group_data%?(group%*42+4)=VAL$(ind_grp%+57)
7840group_data%!(group%*42+5)=(VAL$(ind_grp%+74))*640
7850group_data%?(group%*42+9)=ind_grp%?134-48
7860N=0:!block%=handle_group%
7870block%!4=63:SYS"Wimp_GetIconState",,block%
7880IF((block%!24) AND &200000)>0:N+=1
7890block%!4=64:SYS"Wimp_GetIconState",,block%
7900IF((block%!24) AND &200000)>0:N+=2
7910block%!4=65:SYS"Wimp_GetIconState",,block%
7920IF((block%!24) AND &200000)>0:N+=4
7930group_data%?(group%*42+10)=N
7940IFbutton%=4:SYS"Wimp_CreateMenu",,-1
7950ENDPROC
7960:
7970DEFPROCgroup_pro(N)
7980M=VAL$(ind_grp%+N):IFM>255:M=255
7990$(ind_grp%+N)=STR$M
8000!block%=handle_group%:block%!4=poll%!4:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
8010PROCgroup_bar(poll%!4+1,M)
8020PROCgroup_colour
8030ENDPROC
8040:
8050DEFPROCmap_gr(N)
8060M=VAL$(ind_map%+33)
8070IFM+N<0ORM+N>999:ENDPROC
8080M+=N
8090$(ind_map%+33)=STR$M
8100!block%=handle_map%:block%!4=7:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
8110SYS"Wimp_GetCaretPosition",,block%
8120IFblock%!4<>7:ENDPROC
8130SYS"Wimp_SetCaretPosition",handle_map%,7,-1,-1,-1,LENSTR$M
8140ENDPROC
8150:
8160DEFPROCmap_return
8170N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1
8180IFpoll%!24=&18F:N%=-1
8190IFpoll%!4=11ANDN%=-1:PROCcaret_setpos(handle_map%,7,FNlen(ind_map%+36))
8200IFpoll%!4=7ANDN%=1:PROCcaret_setpos(handle_map%,11,FNlen(ind_map%+49))
8210IFpoll%!4=11ANDpoll%!24=13:button%=4:PROCok_click(handle_map%,13):PROCmap_OK:PROCok_click(handle_map%,13)
8220ENDPROC
8230:
8240DEFPROCmap_OK
8250group_map%!(group%*4)=VAL$(ind_map%+33)
8260$(group_data%+group%*42+11)=$(ind_map%+49)
8270IFbutton%=4:SYS"Wimp_CreateMenu",,-1
8280ENDPROC
8290:
8300DEFPROClabel_gr(N)
8310M=VAL$(ind_lab%+38)
8320IFM+N<0ORM+N>999:ENDPROC
8330M+=N
8340$(ind_lab%+38)=STR$M
8350!block%=handle_label%:block%!4=7:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
8360SYS"Wimp_GetCaretPosition",,block%
8370IFblock%!4<>7:ENDPROC
8380SYS"Wimp_SetCaretPosition",handle_label%,7,-1,-1,-1,LENSTR$M
8390ENDPROC
8400:
8410DEFPROClabel_OK
8420group_map%!24=VAL$(ind_lab%+38)
8430IFbutton%=4:SYS"Wimp_CreateMenu",,-1
8440ENDPROC
8450:
8460DEFPROCbest_select
8470N=poll%!8:graph_best%=N+1
8480IFN=1:menu_best%?28=0:menu_best%?52=129::ELSEmenu_best%?28=1:menu_best%?52=128
8490ENDPROC
8500:
8510DEFPROCback_r(N)
8520M=VAL$(ind_bck%+11)
8530IFM+N<0ORM+N>255:ENDPROC
8540M+=N
8550$(ind_bck%+11)=STR$M
8560!block%=handle_back%:block%!4=5:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
8570PROCback_bar(6,M)
8580PROCback_colour
8590ENDPROC
8600:
8610DEFPROCback_rclick
8620!block%=handle_back%:SYS"Wimp_GetWindowState",,block%
8630M=!poll%-block%!4-190
8640$(ind_bck%+11)=STR$M
8650poll%!4=5:PROCback_pro(11)
8660ENDPROC
8670:
8680DEFPROCback_g(N)
8690M=VAL$(ind_bck%+24)
8700IFM+N<0ORM+N>255:ENDPROC
8710M+=N
8720$(ind_bck%+24)=STR$M
8730!block%=handle_back%:block%!4=11:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
8740PROCback_bar(12,M)
8750PROCback_colour
8760ENDPROC
8770:
8780DEFPROCback_bclick
8790!block%=handle_back%:SYS"Wimp_GetWindowState",,block%
8800M=!poll%-block%!4-190
8810$(ind_bck%+24)=STR$M
8820poll%!4=11:PROCback_pro(24)
8830ENDPROC
8840:
8850DEFPROCback_b(N)
8860M=VAL$(ind_bck%+37)
8870IFM+N<0ORM+N>255:ENDPROC
8880M+=N
8890$(ind_bck%+37)=STR$M
8900!block%=handle_back%:block%!4=17:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
8910PROCback_bar(18,M)
8920PROCback_colour
8930ENDPROC
8940:
8950DEFPROCback_gclick
8960!block%=handle_back%:SYS"Wimp_GetWindowState",,block%
8970M=!poll%-block%!4-190
8980$(ind_bck%+37)=STR$M
8990poll%!4=17:PROCback_pro(37)
9000ENDPROC
9010:
9020DEFPROCback_cl(N)
9030SYS"Wimp_ReadPalette",,block%
9040$(ind_bck%+11)=STR$block%?(N*4+1)
9050$(ind_bck%+24)=STR$block%?(N*4+2)
9060$(ind_bck%+37)=STR$block%?(N*4+3)
9070!block%=handle_back%:block%!4=5:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
9080block%!4=11:SYS"Wimp_SetIconState",,block%
9090block%!4=17:SYS"Wimp_SetIconState",,block%
9100PROCback_bar(6,VAL$(ind_bck%+11))
9110PROCback_bar(12,VAL$(ind_bck%+24))
9120PROCback_bar(18,VAL$(ind_bck%+37))
9130PROCback_colour
9140ENDPROC
9150:
9160DEFPROCback_bar(N,M)
9170!block%=handle_back%:block%!4=N:SYS"Wimp_GetIconState",,block%:SYS"Wimp_DeleteIcon",,block%
9180block%!4=handle_back%:block%!16=196+M:SYS"Wimp_CreateIcon",,block%+4
9190!block%=handle_back%:block%!4=N-1:block%!8=0:block%!12=0
9200block%!4=(N)DIV6-1:SYS"Wimp_SetIconState",,block%
9210ENDPROC
9220:
9230DEFPROCback_colour
9240!block%=handle_back%
9250SYS"Wimp_GetWindowInfo",,block%
9260!block%=(VAL$(ind_bck%+37)<<24)+(VAL$(ind_bck%+24)<<16)+(VAL$(ind_bck%+11)<<8)
9270SYS"ColourTrans_SetGCOL",!block%,,,0,0
9280RECTANGLEFILLblock%!4+454,block%!8+248,164,28
9290ENDPROC
9300:
9310DEFPROCback_return
9320N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1
9330IFpoll%!24=&18F:N%=-1
9340IFpoll%!4=11ANDN%=-1:PROCback_pro(24):PROCcaret_setpos(handle_back%,5,FNlen(ind_bck%+20))
9350IFpoll%!4=5ANDN%=1:PROCback_pro(11):PROCcaret_setpos(handle_back%,11,FNlen(ind_bck%+24))
9360IFpoll%!4=17ANDN%=-1:PROCback_pro(37):PROCcaret_setpos(handle_back%,11,FNlen(ind_bck%+24))
9370IFpoll%!4=11ANDN%=1:PROCback_pro(24):PROCcaret_setpos(handle_back%,17,FNlen(ind_bck%+37))
9380IFpoll%!4=17ANDpoll%!24=13:PROCback_pro(37):button%=4:PROCok_click(handle_back%,38):PROCback_OK:PROCok_click(handle_back%,38)
9390ENDPROC
9400:
9410DEFPROCback_OK
9420IFgroup%=255THEN
9430 data_back%?1=VAL$(ind_bck%+11)
9440 data_back%?2=VAL$(ind_bck%+24)
9450 data_back%?3=VAL$(ind_bck%+37)
9460ELSE
9470 pie_palette%?(group%*4+1)=VAL$(ind_bck%+11)
9480 pie_palette%?(group%*4+2)=VAL$(ind_bck%+24)
9490 pie_palette%?(group%*4+3)=VAL$(ind_bck%+37)
9500ENDIF
9510IFbutton%=4:SYS"Wimp_CreateMenu",,-1
9520ENDPROC
9530:
9540DEFPROCback_pro(N)
9550IFN>1000:N-=1000:N%=FALSE:ELSEN%=TRUE
9560M=VAL$(ind_bck%+N):IFM>255:M=255
9570$(ind_bck%+N)=STR$M
9580!block%=handle_back%:block%!4=poll%!4:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
9590PROCback_bar(poll%!4+1,M)
9600IFN%PROCback_colour
9610ENDPROC
9620:
9630DEFPROCstyle_key
9640IFgraph_key%:graph_key%=FALSE:menu_style%?28=0:ENDPROC
9650graph_key%=TRUE:menu_style%?28=1:ENDPROC
9660:
9670DEFPROCstyle_box
9680IFgraph_box%:graph_box%=FALSE:menu_style%?52=8:ENDPROC
9690graph_box%=TRUE:menu_style%?52=9:ENDPROC
9700:
9710DEFPROCstyle_3D
9720IFgraph_3D%:graph_3D%=FALSE:menu_style%?148=8:ENDPROC
9730graph_3D%=TRUE:menu_style%?148=9:ENDPROC
9740:
9750DEFPROCstyle_outline
9760IFgraph_outline%=0:graph_outline%=-1:menu_style%?172=128:ENDPROC
9770graph_outline%=0:menu_style%?172=129:ENDPROC
9780:
9790DEFPROCfont_list
9800PROCfont_ticklist
9810SYS"Wimp_GetPointerInfo",,block%
9820SYS"Wimp_CreateSubMenu",,menu_fontlist%,!block%,block%!4
9830ENDPROC
9840:
9850DEFPROCstyle_fontselect
9860font_c%=poll%!16
9870$(ind_fnt%+43)=$(font_list%+font_c%*40)
9880!block%=handle_font%:block%!4=4:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
9890CASEmenu_current%OF
9900 WHEN1:SYS"Wimp_CreateMenu",,menu_bar%
9910 WHEN2:SYS"Wimp_CreateMenu",,menu_win%
9920ENDCASE
9930ENDPROC
9940:
9950DEFPROCfont_wi(N)
9960M=VAL$(ind_fnt%+131)
9970IFM+N<=0:ENDPROC
9980PROCfont_w(M+N)
9990ENDPROC
10000:
10010DEFPROCfont_hi(N)
10020M=VAL$(ind_fnt%+144)
10030IFM+N<=0:ENDPROC
10040PROCfont_h(M+N)
10050ENDPROC
10060:
10070DEFPROCfont_w(N)
10080$(ind_fnt%+131)=STR$N
10090!block%=handle_font%:block%!4=14:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
10100SYS"Wimp_GetCaretPosition",,block%
10110IF!block%=handle_font%ANDblock%!4=14:SYS"Wimp_SetCaretPosition",handle_font%,14,0,0,-1,FNlen(ind_fnt%+131)
10120ENDPROC
10130:
10140DEFPROCfont_h(N)
10150$(ind_fnt%+144)=STR$N
10160!block%=handle_font%:block%!4=18:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
10170SYS"Wimp_GetCaretPosition",,block%
10180IF!block%=handle_font%ANDblock%!4=18:SYS"Wimp_SetCaretPosition",handle_font%,18,0,0,-1,FNlen(ind_fnt%+144)
10190ENDPROC
10200:
10210DEFPROCfont_return
10220N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1
10230IFpoll%!24=&18F:N%=-1
10240IFpoll%!4=18ANDN%=-1:PROCcaret_setpos(handle_font%,14,FNlen(ind_fnt%+131))
10250IFpoll%!4=14ANDN%=1:PROCcaret_setpos(handle_font%,18,FNlen(ind_fnt%+144))
10260IFpoll%!4=18ANDpoll%!24=13:button%=4:PROCok_click(handle_font%,21):PROCfont_OK:PROCok_click(handle_font%,21)
10270ENDPROC
10280:
10290DEFPROCfont_OK
10300CASEgroup%OF
10310 WHEN0:text_titlec=font_c%:text_titlex=VAL$(ind_fnt%+131):text_titley=VAL$(ind_fnt%+144)
10320 WHEN1:text_axisc=font_c%:text_axisx=VAL$(ind_fnt%+131):text_axisy=VAL$(ind_fnt%+144)
10330 WHEN2:text_keyc=font_c%:text_keyx=VAL$(ind_fnt%+131):text_keyy=VAL$(ind_fnt%+144)
10340ENDCASE
10350IFbutton%=4:SYS"Wimp_CreateMenu",,-1
10360ENDPROC
10370:
10380DEFPROCpane_s(N)
10390M=VAL$(ind_pn%+971)
10400IFM+N<1ORM+N>999:ENDPROC
10410M+=N
10420$(ind_pn%+971)=STR$M
10430!block%=handle_pane%:block%!4=46:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
10440SYS"Wimp_GetCaretPosition",,block%
10450IF!block%<>handle_pane%ORblock%!4<>46:ENDPROC
10460SYS"Wimp_SetCaretPosition",handle_pane%,46,-1,-1,-1,LENSTR$M
10470ENDPROC
10480:
10490DEFPROCpane_f(N)
10500M=VAL$(ind_pn%+983)
10510IFM+N<1ORM+N>999:ENDPROC
10520M+=N
10530$(ind_pn%+983)=STR$M
10540!block%=handle_pane%:block%!4=50:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
10550SYS"Wimp_GetCaretPosition",,block%
10560IF!block%<>handle_pane%ORblock%!4<>50:ENDPROC
10570SYS"Wimp_SetCaretPosition",handle_pane%,50,-1,-1,-1,LENSTR$M
10580ENDPROC
10590:
10600DEFPROCpane_OK
10610!block%=handle_pane%
10620block%!4=1:SYS"Wimp_GetIconState",,block%
10630IFblock%!24AND&200000:graph_title%=TRUE:ELSEgraph_title%=FALSE
10640$s_title%=$(ind_pn%+24)
10650block%!4=4:SYS"Wimp_GetIconState",,block%
10660IFblock%!24AND&200000:graph_xaxis%=TRUE:ELSEgraph_xaxis%=FALSE
10670$s_xaxis%=$(ind_pn%+98)
10680graph_xg%=0
10690block%!4=6:SYS"Wimp_GetIconState",,block%:IFblock%!24AND&200000:graph_xg%=1
10700block%!4=7:SYS"Wimp_GetIconState",,block%:IFblock%!24AND&200000:graph_xg%=2
10710graph_xdiv=VAL$(ind_pn%+212)
10720graph_xsdiv=VAL$(ind_pn%+244)
10730block%!4=12:SYS"Wimp_GetIconState",,block%
10740IFblock%!24AND&200000:graph_xcal%=TRUE:ELSEgraph_xcal%=FALSE
10750data_xmin=VAL$(ind_pn%+299)
10760data_xmax=VAL$(ind_pn%+318)
10770block%!4=18:SYS"Wimp_GetIconState",,block%
10780IFblock%!24AND&200000:graph_yaxis%=TRUE:ELSEgraph_yaxis%=FALSE
10790$s_yaxis%=$(ind_pn%+368)
10800graph_yg%=0
10810block%!4=20:SYS"Wimp_GetIconState",,block%:IFblock%!24AND&200000:graph_yg%=1
10820block%!4=21:SYS"Wimp_GetIconState",,block%:IFblock%!24AND&200000:graph_yg%=2
10830graph_ydiv=VAL$(ind_pn%+482)
10840graph_ysdiv=VAL$(ind_pn%+514)
10850block%!4=26:SYS"Wimp_GetIconState",,block%
10860IFblock%!24AND&200000:graph_ycal%=TRUE:ELSEgraph_ycal%=FALSE
10870data_ymin=VAL$(ind_pn%+569)
10880data_ymax=VAL$(ind_pn%+588)
10890graph_bartype%=0
10900FORblock%!4=33TO37:SYS"Wimp_GetIconState",,block%
10910IFblock%!24AND&200000:graph_bartype%+=block%!4-32
10920NEXT
10930graph_barmargin%=0
10940block%!4=38:SYS"Wimp_GetIconState",,block%
10950IFblock%!24AND&200000:graph_barmargin%+=1
10960block%!4=39:SYS"Wimp_GetIconState",,block%
10970IFblock%!24AND&200000:graph_barmargin%+=128
10980block%!4=41:SYS"Wimp_GetIconState",,block%
10990IFblock%!24AND&200000:graph_bartype%+=10
11000block%!4=43:SYS"Wimp_GetIconState",,block%
11010IFblock%!24AND&200000:graph_exp%=TRUE:ELSEgraph_exp%=FALSE
11020graph_es%=VAL$(ind_pn%+971)
11030graph_ef%=VAL$(ind_pn%+983)
11040PROCpane_calculate:SYS"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0
11050flag_fiddled%=FALSE
11060ENDPROC
11070:
11080DEFPROCpane_return
11090N%=0:IFpoll%!24=13ORpoll%!24=&18E:N%=1
11100IFpoll%!24=&18F:N%=-1
11110IFpoll%!4=5ANDN%=-1:PROCcaret_setpos(handle_pane%,2,FNlen(ind_pn%+24))
11120IFpoll%!4=2ANDN%=1ORpoll%!4=9ANDN%=-1:PROCcaret_setpos(handle_pane%,5,FNlen(ind_pn%+98))
11130IFpoll%!4=5ANDN%=1ORpoll%!4=11ANDN%=-1:PROCcaret_setpos(handle_pane%,9,FNlen(ind_pn%+212))
11140IFpoll%!4=9ANDN%=1ORpoll%!4=14ANDN%=-1:PROCcaret_setpos(handle_pane%,11,FNlen(ind_pn%+244))
11150IFpoll%!4=11ANDN%=1ORpoll%!4=16ANDN%=-1:PROCcaret_setpos(handle_pane%,14,FNlen(ind_pn%+299))
11160IFpoll%!4=14ANDN%=1ORpoll%!4=19ANDN%=-1:PROCcaret_setpos(handle_pane%,16,FNlen(ind_pn%+318))
11170IFpoll%!4=16ANDN%=1ORpoll%!4=23ANDN%=-1:PROCcaret_setpos(handle_pane%,19,FNlen(ind_pn%+368))
11180IFpoll%!4=19ANDN%=1ORpoll%!4=25ANDN%=-1:PROCcaret_setpos(handle_pane%,23,FNlen(ind_pn%+482))
11190IFpoll%!4=23ANDN%=1ORpoll%!4=28ANDN%=-1:PROCcaret_setpos(handle_pane%,25,FNlen(ind_pn%+514))
11200IFpoll%!4=25ANDN%=1ORpoll%!4=30ANDN%=-1:PROCcaret_setpos(handle_pane%,28,FNlen(ind_pn%+569))
11210IFpoll%!4=28ANDN%=1ORpoll%!4=46ANDN%=-1:PROCcaret_setpos(handle_pane%,30,FNlen(ind_pn%+588))
11220IFpoll%!4=30ANDN%=1ORpoll%!4=50ANDN%=-1:PROCcaret_setpos(handle_pane%,46,FNlen(ind_pn%+971))
11230IFpoll%!4=46ANDN%=1:PROCcaret_setpos(handle_pane%,50,FNlen(ind_pn%+983))
11240IFpoll%!4=50ANDpoll%!24=13:button%=4:PROCok_click(handle_format%,6):PROCpane_OK:PROCok_click(handle_format%,6)
11250ENDPROC
11260:
11270DEFPROCok_click(!block%,block%!4):block%!8=&200000:block%!12=0:SYS"Wimp_SetIconState",,block%:ENDPROC
11280:
11290:
11300REM ********** Some mature graph selection type stuff **********
11310:
11320DEFPROCgraph_select(N)
11330CASE N OF
11340 WHEN1:PROCgraph_selectline
11350 WHEN2:PROCgraph_selectbar
11360 WHEN3:PROCgraph_selectpie
11370 WHEN4:PROCgraph_selecttable
11380ENDCASE
11390ind_frm%?43=48+graph_type%
11400IFgraph_window%:!block%=handle_format%:block%!4=2:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%:block%!4=3:SYS"Wimp_SetIconState",,block%
11410ENDPROC
11420:
11430DEFPROCgraph_selectline
11440graph_type%=1
11450menu_bar%?124=1:menu_bar%?148=0:menu_bar%?172=0:menu_bar%?196=2
11460menu_win%?100=1:menu_win%?124=0:menu_win%?148=0:menu_win%?172=128
11470$(ind_frm%+48)="Line graph"
11480ENDPROC
11490:
11500DEFPROCgraph_selectbar
11510graph_type%=2
11520menu_bar%?124=0:menu_bar%?148=1:menu_bar%?172=0:menu_bar%?196=2
11530menu_win%?100=0:menu_win%?124=1:menu_win%?148=0:menu_win%?172=128
11540$(ind_frm%+48)="Bar chart"
11550ENDPROC
11560:
11570DEFPROCgraph_selectpie
11580graph_type%=3
11590menu_bar%?124=0:menu_bar%?148=0:menu_bar%?172=1:menu_bar%?196=2
11600menu_win%?100=0:menu_win%?124=0:menu_win%?148=1:menu_win%?172=128
11610$(ind_frm%+48)="Pie chart"
11620ENDPROC
11630:
11640DEFPROCgraph_selecttable
11650graph_type%=4
11660menu_bar%?124=0:menu_bar%?148=0:menu_bar%?172=0:menu_bar%?196=3
11670menu_win%?100=0:menu_win%?124=0:menu_win%?148=0:menu_win%?172=129
11680$(ind_frm%+48)="Table"
11690ENDPROC
11700:
11710:
11720REM ********** Some stuff with a caret **********
11730:
11740DEFPROCcaret_setpos(handle%,icon%,X%)
11750SYS"Wimp_SetCaretPosition",handle%,icon%,0,0,-1,X%
11760ENDPROC
11770:
11780DEFFNlen(N)
11790M%=-1:REPEATM%+=1:UNTILN?M%=0ORN?M%=10ORN?M%=13
11800=M%
11810:
11820:
11830REM ********** Fun with fonts **********
11840:
11850DEFPROCfont_check
11860$block%="<Font$Prefix> and <Font$Path>"
11870SYS"OS_GSTrans",block%,block%+100,255 TO ,,N
11880block%?(100+N)=13
11890IF$(block%+100)<>$font_path%:PROCfont_dothebusiness
11900ENDPROC
11910:
11920DEFPROCfont_dothebusiness
11930SYS"Hourglass_On"
11940$block%="<Font$Prefix> and <Font$Path>"
11950SYS"OS_GSTrans",block%,block%+100,255 TO ,,N
11960block%?(100+N)=13
11970$font_path%=$(block%+100)
11980font_counter%=0:$(font_list%)="System Font":Y=11
11990menu_fontlist%!28=1:menu_fontlist%!32=-1:menu_fontlist%!36=&7009121:menu_fontlist%!40=font_list%:menu_fontlist%!44=-1:menu_fontlist%!48=40
12000SYS"XOS_ReadVarVal","Font$Path",block%,256,0,3TO;N:IF(N AND1):SYS"Hourglass_Off":ENDPROC
12010$block%=$(font_list%+text_titlec*40):$(block%+41)=$(font_list%+text_axisc*40):$(block%+82)=$(font_list%+text_keyc*40)
12020:
12030N=0:REPEAT
12040font_counter%+=1:SYS"Font_ListFonts",,font_list%+(font_counter%*40),N,-1 TO ,,N
12050M=FNlen(font_list%+((font_counter%-1)*40)):IFM>Y:Y=M
12060M=28+24*font_counter%:menu_fontlist%!M=0:menu_fontlist%!(M+4)=0:menu_fontlist%!(M+8)=&7009121:menu_fontlist%!(M+12)=font_list%+(font_counter%*40):menu_fontlist%!(M+16)=-1:menu_fontlist%!(M+20)=40
12070UNTILN=-1ORfont_counter%=256
12080IFfont_counter%=256:N=FNmessage("GraphPlus has reached its maximum font handling capacity.",0)
12090:
12100font_counter%-=1:menu_fontlist%!(28+24*font_counter%)=128:menu_fontlist%!16=16+16*Y
12110SYS"Hourglass_Off"
12120text_titlec=FNfont_search(block%)
12130text_axisc=FNfont_search(block%+41)
12140text_keyc=FNfont_search(block%+82)
12150ENDPROC
12160:
12170DEFFNfont_search(N)
12180M=-1:REPEATM+=1:UNTIL$N=$(font_list%+M*40)ORM=font_counter%+1
12190IFM=font_counter%+1ANDfont_counter%<>0:N=FNmessage("Font "+$N+" cannot be found. Replacing with System Font.",0):=0
12200=M
12210:
12220DEFFNfont_recognise
12230FORN=0TO39:block%?N=BGET#X%:NEXT
12240=FNfont_search(block%)
12250:
12260:
12270REM ********** Window code **********
12280:
12290DEFPROCwindow_requestRedraw
12300SYS"Wimp_RedrawWindow",,poll% TO N
12310WHILE N
12320SYS"Wimp_GetRectangle",,poll% TO N
12330IF!poll%=handle_group%:PROCgroup_colour
12340IF!poll%=handle_back%:PROCback_colour
12350ENDWHILE
12360ENDPROC
12370:
12380DEFPROCwindow_requestOpen
12390IF!poll%=handle_update%:ENDPROC
12400IF!poll%<>handle_format%:SYS"Wimp_OpenWindow",,poll%:ENDPROC
12410FORN=0TO256STEP4:block%!(200+N)=poll%!N:NEXT
12420!block%=handle_pane%:SYS"Wimp_GetWindowState",,block%
12430!poll%=handle_pane%:poll%!4+=52:poll%!8+=100:poll%!16-=80:poll%!20=block%!20:poll%!24=block%!24
12440SYS"Wimp_OpenWindow",,poll%
12450block%!228=handle_pane%:SYS"Wimp_OpenWindow",,block%+200
12460ENDPROC
12470:
12480DEFPROCwindow_requestClose
12490SYS"Wimp_CloseWindow",,poll%
12500IF!poll%=handle_format%:graph_window%=FALSE:!block%=handle_pane%:SYS"Wimp_CloseWindow",,block%:!block%=handle_create%:SYS"Wimp_CloseWindow",,block%
12510ENDPROC
12520:
12530DEFPROCwindow_opengraph
12540PROCpane_calculate
12550!block%=handle_pane%:block%!4=252:block%!8=288:block%!12=1280:block%!16=660:block%!20=0:block%!24=0:block%!28=-1:SYS"Wimp_OpenWindow",,block%
12560!block%=handle_format%:block%!4=200:block%!8=0:block%!12=1280:block%!16=740:block%!20=0:block%!24=0:block%!28=handle_pane%:SYS"Wimp_OpenWindow",,block%
12570graph_window%=TRUE
12580ENDPROC
12590:
12600DEFPROCwindow_liftgraph
12610!poll%=handle_format%:SYS"Wimp_GetWindowState",,poll%
12620poll%!28=-1:PROCwindow_requestOpen
12630ENDPROC
12640:
12650DEFPROCwindow_opendatapath
12660$block%="GraphPlusData$Path"
12670SYS"XOS_ReadVarVal",block%,ind_dp%+4,256,0,3TO,,M;N
12680ind_dp%?(4+M)=10
12690IF(N AND1)=1:N=FNmessage("Error when reading data path.",0):ENDPROC
12700SYS"Wimp_CreateSubMenu",,handle_datapath%,poll%!24,poll%!28
12710ENDPROC
12720:
12730:
12740REM ********** What a drag **********
12750:
12760DEFPROCdrag_startsave
12770!block%=handle_save%:block%!4=0:SYS"Wimp_GetIconState",,block%
12780block%!100=handle_save%:SYS"Wimp_GetWindowInfo",,block%+100
12790!poll%=handle_save%:poll%!4=5
12800poll%!8=block%!104+block%!8
12810poll%!12=block%!116+block%!12
12820poll%!16=block%!104+block%!16
12830poll%!20=block%!116+block%!20
12840poll%!24=0:poll%!28=0
12850poll%!32=-1:poll%!36=-1
12860IFdstart%:SYS dstart%,%11000101,1,"file_0f0",poll%+8,poll%+24 ELSE SYS"Wimp_DragBox",,poll%
12870file_status%=1
12880ENDPROC
12890:
12900DEFPROCdrag_startcreate
12910!block%=handle_create%:block%!4=0:SYS"Wimp_GetIconState",,block%
12920block%!100=handle_create%:SYS"Wimp_GetWindowInfo",,block%+100
12930!poll%=handle_create%:poll%!4=5
12940poll%!8=block%!104+block%!8
12950poll%!12=block%!116+block%!12
12960poll%!16=block%!104+block%!16
12970poll%!20=block%!116+block%!20
12980poll%!24=0:poll%!28=0
12990poll%!32=-1:poll%!36=-1
13000IFdstart%:SYS dstart%,%11000101,1,"file_aff",poll%+8,poll%+24 ELSE SYS"Wimp_DragBox",,poll%
13010file_status%=10
13020ENDPROC
13030:
13040DEFPROCdrag_userdragbox
13050SYS"Wimp_GetPointerInfo",,poll%
13060!block%=256:block%!12=0:block%!16=1
13070block%!20=poll%!12:block%!24=poll%!16:block%!28=!poll%:block%!32=poll%!4:block%!36=543:block%!40=&0f0
13080IFfile_status%=1:PROCsave_leaf(ind_sa%,block%+44)
13090IFfile_status%=10:PROCsave_leaf(ind_sg%,block%+44)
13100SYS"Wimp_SendMessage",18,block%,poll%!12
13110file_status%+=1:ENDPROC
13120:
13130:
13140REM ********** Saving, it helps *********
13150:
13160DEFPROCsave_tempOK
13170N=-1:REPEATN+=1:UNTILind_sa%?N=46ORind_sa%?N=0ORind_sa%?N=10ORind_sa%?N=13
13180IFind_sa%?N<>46:N=FNmessage("To save, drag the template icon to a filer window.",0):ENDPROC
13190$(poll%+44)=$ind_sa%
13200PROCsave_template
13210SYS"Wimp_CreateMenu",,-1
13220ENDPROC
13230:
13240DEFPROCsave_createOK
13250N=-1:REPEATN+=1:UNTILind_sg%?N=46ORind_sg%?N=0ORind_sg%?N=10ORind_sg%?N=13
13260IFind_sg%?N<>46:N=FNmessage("To save, drag the drawfile icon to a filer window.",0):ENDPROC
13270$file_graph%=$ind_sg%
13280PROCgraph_create
13290ENDPROC
13300:
13310DEFPROCsave_leaf(N%,N)
13320M=FNlen(N%)
13330REPEAT:M-=1:UNTILN%?M=46ORM=0
13340IFN%?M=46:M+=1
13350$N=$(N%+M)
13360ENDPROC
13370:
13380DEFPROCsave_ack
13390IFpoll%!36=-1:N=FNmessage("Unsafe to save "+$(poll%+44),0):file_status%=0:ENDPROC
13400Z%=1
13410IFfile_status%=2:PROCsave_template
13420IFfile_status%=11:PROCsave_creategraph
13430IFZ%<>0:poll%!16=3:SYS"Wimp_SendMessage",18,poll%,poll%!20
13440SYS"Wimp_CreateMenu",,-1
13450ENDPROC
13460:
13470DEFPROCsave_template:LOCALERROR
13480$file_temp%=$(poll%+44)
13490$ind_sa%=$(poll%+44)
13500SYS"XOS_Find",&82,poll%+44TOX%;N
13510IF(N AND1)=1ORX%=0:N=FNmessage("Format template not saved.",0):Z%=0:ENDPROC
13520ONERRORLOCALM=FNmessage("GraphPlus has encountered an error when saving template. If possible quit GraphPlus and reload.",0):SYS"OS_Find",0,X%:ENDPROC
13530PROCdfile_put("GraphPlus Template"):PROCdfile_bput(0)
13540PROCdfile_bput(graph_type%)
13550FORM=0TO27:PROCdfile_bput(group_map%?M):NEXT
13560FORM=0TO251:PROCdfile_bput(group_data%?M):NEXT
13570PROCdfile_sputl(font_list%+text_titlec*40,40):PROCdfile_wput(text_titlex*1000):PROCdfile_wput(text_titley*1000)
13580PROCdfile_sputl(font_list%+text_axisc*40,40):PROCdfile_wput(text_axisx*1000):PROCdfile_wput(text_axisy*1000)
13590PROCdfile_sputl(font_list%+text_keyc*40,40):PROCdfile_wput(text_keyx*1000):PROCdfile_wput(text_keyy*1000)
13600IFgraph_key%:PROCdfile_bput(1)ELSEPROCdfile_bput(0)
13610IFgraph_back%:PROCdfile_bput(1)ELSEPROCdfile_bput(0)
13620IFgraph_3D%:PROCdfile_bput(1)ELSEPROCdfile_bput(0)
13630IFgraph_outline%=0:PROCdfile_bput(1)ELSEPROCdfile_bput(0)
13640PROCdfile_bput(data_back%?1):PROCdfile_bput(data_back%?2):PROCdfile_bput(data_back%?3)
13650PROCdfile_bput(graph_best%)
13660FORM=0TO63:BPUT#X%,pie_palette%?M:NEXT
13670IFgraph_title%:PROCdfile_bput(1):ELSEPROCdfile_bput(0)
13680PROCdfile_sputl(s_title%,40)
13690IFgraph_xaxis%:PROCdfile_bput(1):ELSEPROCdfile_bput(0)
13700PROCdfile_sputl(s_xaxis%,40)
13710PROCdfile_bput(graph_xg%)
13720IFgraph_xcal%:PROCdfile_bput(1):ELSEPROCdfile_bput(0)
13730PROCdfile_wput(graph_xdiv*1000)
13740PROCdfile_wput(graph_xsdiv*1000)
13750PROCdfile_wput(data_xmin*1000)
13760PROCdfile_wput(data_xmax*1000)
13770IFgraph_yaxis%:PROCdfile_bput(1):ELSEPROCdfile_bput(0)
13780PROCdfile_sputl(s_yaxis%,40)
13790PROCdfile_bput(graph_yg%)
13800IFgraph_ycal%:PROCdfile_bput(1):ELSEPROCdfile_bput(0)
13810PROCdfile_wput(graph_ydiv*1000)
13820PROCdfile_wput(graph_ysdiv*1000)
13830PROCdfile_wput(data_ymin*1000)
13840PROCdfile_wput(data_ymax*1000)
13850PROCdfile_bput(graph_bartype%)
13860PROCdfile_bput(graph_barmargin%)
13870IFgraph_exp%:PROCdfile_bput(1):ELSEPROCdfile_bput(0)
13880PROCdfile_wput(graph_es%)
13890PROCdfile_wput(graph_ef%)
13900SYS"OS_Find",0,X%
13910SYS"OS_File",18,ind_sa%,&0f0
13920ENDPROC
13930:
13940DEFPROCsave_creategraph
13950$file_graph%=$(poll%+44)
13960$ind_sg%=$(poll%+44)
13970PROCgraph_create
13980ENDPROC
13990:
14000:
14010REM ********** Well, a load is just as good **********
14020:
14030DEFPROCload_message
14040IFpoll%!40=&0f0:PROCload_template:ENDPROC
14050IFpoll%!40<>&dfe:N=FNmessage("Not a CSV file. Are you sure you want to use it?",3):IFN=2:ENDPROC
14060PROCload_setdatapath
14070ENDPROC
14080:
14090DEFPROCload_template
14100X%=OPENIN$(poll%+44)
14110poll%!12=poll%!8:poll%!16=4
14120SYS"Wimp_SendMessage",17,poll%,poll%!20
14130PROCload_tempfile
14140CLOSE#X%
14150PROCpane_calculate
14160SYS"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0
14170ENDPROC
14180:
14190DEFPROCload_tempfile:LOCALERROR
14200ONERRORLOCALM=FNmessage("GraphPlus template loading error. The current template may be corrupted.",0):ENDPROC
14210PTR#X%=19:graph_type%=BGET#X%
14220PROCgraph_select(graph_type%)
14230FORM=0TO27:group_map%?M=BGET#X%:NEXT
14240FORM=0TO251:group_data%?M=BGET#X%:NEXT
14250text_titlec=FNfont_recognise:PROCfile_wget(block%):text_titlex=!block%/1000:PROCfile_wget(block%):text_titley=!block%/1000
14260text_axisc=FNfont_recognise:PROCfile_wget(block%):text_axisx=!block%/1000:PROCfile_wget(block%):text_axisy=!block%/1000
14270text_keyc=FNfont_recognise:PROCfile_wget(block%):text_keyx=!block%/1000:PROCfile_wget(block%):text_keyy=!block%/1000
14280N=BGET#X%:IFN=1:graph_key%=TRUE:menu_style%?28=1:ELSEgraph_key%=FALSE:menu_style%?28=0
14290N=BGET#X%:IFN=1:graph_box%=TRUE:menu_style%?52=9:ELSEgraph_box%=FALSE:menu_style%?52=8
14300N=BGET#X%:IFN=1:graph_3D%=TRUE:menu_style%?148=1:ELSEgraph_3D%=FALSE:menu_style%?148=0
14310N=BGET#X%:IFN=1:graph_outline%=0:menu_style%?172=129:ELSEgraph_outline%=-1:menu_style%?172=128
14320data_back%?1=BGET#X%:data_back%?2=BGET#X%:data_back%?3=BGET#X%
14330graph_best%=BGET#X%:IFgraph_best%=2:menu_best%?28=0:menu_best%?52=129:ELSEmenu_best%?28=1:menu_best%?52=128
14340FORM=0TO63:pie_palette%?M=BGET#X%:NEXT
14350N=BGET#X%:IFN=1:graph_title%=TRUE:ELSEgraph_title%=FALSE
14360FORN=0TO39:s_title%?N=BGET#X%:NEXT
14370N=BGET#X%:IFN=1:graph_xaxis%=TRUE:ELSEgraph_xaxis%=FALSE
14380FORN=0TO39:s_xaxis%?N=BGET#X%:NEXT
14390graph_xg%=BGET#X%
14400N=BGET#X%:IFN=1:graph_xcal%=TRUE:ELSEgraph_xcal%=FALSE
14410PROCfile_wget(poll%):graph_xdiv=!poll%/1000
14420PROCfile_wget(poll%):graph_xsdiv=!poll%/1000
14430PROCfile_wget(poll%):data_xmin=!poll%/1000
14440PROCfile_wget(poll%):data_xmax=!poll%/1000
14450N=BGET#X%:IFN=1:graph_yaxis%=TRUE:ELSEgraph_yaxis%=FALSE
14460FORN=0TO39:s_yaxis%?N=BGET#X%:NEXT
14470graph_yg%=BGET#X%
14480N=BGET#X%:IFN=1:graph_ycal%=TRUE:ELSEgraph_ycal%=FALSE
14490PROCfile_wget(poll%):graph_ydiv=!poll%/1000
14500PROCfile_wget(poll%):graph_ysdiv=!poll%/1000
14510PROCfile_wget(poll%):data_ymin=!poll%/1000
14520PROCfile_wget(poll%):data_ymax=!poll%/1000
14530graph_bartype%=BGET#X%
14540graph_barmargin%=BGET#X%
14550N=BGET#X%:IFN=1:graph_exp%=TRUE:ELSEgraph_exp%=FALSE
14560PROCfile_wget(poll%):graph_es%=!poll%
14570PROCfile_wget(poll%):graph_ef%=!poll%
14580PROCgraph_select(graph_type%)
14590ENDPROC
14600:
14610DEFPROCload_dataopen
14620IFpoll%!40=&0f0:PROCload_message
14630ENDPROC
14640:
14650DEFPROCload_setdatapath
14660OSCLI("Set GraphPlusData$Path "+$(poll%+44))
14670ENDPROC
14680:
14690:
14700REM ********** Those darn messages **********
14710:
14720DEFPROCmessage_process
14730CASEpoll%!16OF
14740 WHEN0 :PROCbyebye_shutdown
14750 WHEN2 :PROCsave_ack
14760 WHEN3 :PROCload_message
14770 WHEN5 :PROCload_dataopen
14780 WHEN&400C0:PROCmessage_menuwarning
14790ENDCASE:ENDPROC
14800:
14810DEFPROCmessage_menuwarning
14820CASEmenu_current%OF
14830 WHEN1:PROCmessage_menubar
14840 WHEN2:PROCmessage_winbar
14850ENDCASE
14860ENDPROC
14870:
14880DEFPROCmessage_menubar
14890IFpoll%!32=1ANDpoll%!36=1:PROCmenu_openback
14900IFpoll%!32=1ANDpoll%!36=2:PROCfont_check:PROCmenu_openfont
14910IFpoll%!32=1ANDpoll%!36=4:PROCmenu_openpalette
14920IFpoll%!32=3ANDpoll%!36=0:PROCmenu_opensave
14930IFpoll%!32=3ANDpoll%!36=1:PROCwindow_opendatapath
14940IFpoll%!32=2ANDpoll%!36=0ANDpoll%!40<>6:PROCmenu_openmap
14950IFpoll%!32=2ANDpoll%!36=0ANDpoll%!40=6:PROCmenu_openlabel
14960IFpoll%!32=2ANDpoll%!36=1:PROCmenu_opengroup
14970ENDPROC
14980:
14990DEFPROCmessage_winbar
15000IFpoll%!32=0ANDpoll%!36=1:PROCmenu_openback
15010IFpoll%!32=0ANDpoll%!36=2:PROCfont_check:PROCmenu_openfont
15020IFpoll%!32=0ANDpoll%!36=4:PROCmenu_openpalette
15030IFpoll%!32=2ANDpoll%!36=0:PROCmenu_opensave
15040IFpoll%!32=2ANDpoll%!36=1:PROCwindow_opendatapath
15050IFpoll%!32=1ANDpoll%!36=0ANDpoll%!40<>6:PROCmenu_openmap
15060IFpoll%!32=1ANDpoll%!36=0ANDpoll%!40=6:PROCmenu_openlabel
15070IFpoll%!32=1ANDpoll%!36=1:PROCmenu_opengroup
15080ENDPROC
15090:
15100:
15110REM ********** Things at the end **********
15120:
15130DEFPROCbyebye_shutdown
15140SYS"Wimp_CloseDown",task%,&4B534154
15150SYS"OS_Exit"
15160REM Good Ridance
15170END
15180:
15190DEFFNmessage($(mess%+20),flag%):mess%!16=0:$mess%="GraphPlus":SYS"Wimp_ReportError",mess%+16,flag%,mess%TO,N:=N
15200:
15210DEFPROCerror
15220ONERROROFF
15230N=FNmessage("Serious internal error &"+STR$~(ERL)+": must exit. Click on OK to dump current template in GraphPlus directory as 'TempDump'.",3):IFN=1:PROCerror_dump
15240PROCbyebye_shutdown
15250FISH
15260:
15270DEFPROCerror_dump
15280$block%="GraphPlus$Dir":block%?256=0
15290SYS"XOS_ReadVarVal",block%,poll%+44,256,0,3TO,,M;N
15300IF(N AND1)=1:N=FNmessage("Format template not saved; directory variable deleted.",0):ENDPROC
15310$(poll%+44+M)=".TempDump"
15320PROCsave_template
15330ENDPROC
15340:
15350:
15360REM ********** Lets make some graph **********
15370:
15380:
15390DEFPROCgraph_savebox
15400X=!poll%:Y=poll%!4
15410$block%="GraphPlusData$Path"
15420SYS"XOS_ReadVarVal",block%,block%+100,256,0,3TO;N
15430IF(N AND1)=1:N=FNmessage("The data path variable has been deleted. Unable to create graph.",0):ENDPROC
15440N=99:REPEATN+=1:UNTILblock%?N=46ORblock%?N=0
15450IFblock%?N=0:N=FNmessage("GraphPlus has not seen any data. Unable to create graph.",0):ENDPROC
15460IF$(ind_pn%+24)<>$s_title%OR$(ind_pn%+98)<>$s_xaxis%OR$(ind_pn%+368)<>$s_yaxis%:flag_fiddled%=TRUE
15470IFgraph_xdiv<>VAL$(ind_pn%+212)ORgraph_xsdiv<>VAL$(ind_pn%+244)ORdata_xmin<>VAL$(ind_pn%+299)ORdata_xmax<>VAL$(ind_pn%+318):flag_fiddled%=TRUE
15480IFgraph_ydiv<>VAL$(ind_pn%+482)ORgraph_ysdiv<>VAL$(ind_pn%+514)ORdata_ymin<>VAL$(ind_pn%+569)ORdata_ymax<>VAL$(ind_pn%+588):flag_fiddled%=TRUE
15490IFgraph_es%<>VAL$(ind_pn%+971)ORgraph_ef%<>VAL$(ind_pn%+983):flag_fiddled%=TRUE
15500IFflag_fiddled%:N=FNmessage("The graph format window has been altered. Do you want to create a graph with the stored template, or cancel this operation?",3):IFN=2:ENDPROC
15510$ind_sg%=$file_graph%
15520!block%=handle_create%
15530block%!4=X-64:block%!8=-500:block%!12=X+500:block%!16=Y+48
15540block%!20=0:block%!24=0
15550block%!28=-1
15560SYS"Wimp_OpenWindow",,block%
15570SYS"Wimp_SetCaretPosition",handle_create%,1,0,0,-1,FNlen(file_graph%)
15580ENDPROC
15590:
15600DEFPROCgraph_create:LOCALERROR
15610update_faster%=FALSE
15620$text%="Loading datafile":PROCupdate_start
15630ONERRORLOCAL PROCerror
15640IFgraph_box%:!graph_back%=!data_back%ELSE!graph_back%=-1
15650graph_titlec=0:graph_axisc=0:graph_keyc=0
15660:
15670SYS"Wimp_SlotSize",-1,-1TOZ%
15680$block%="<GraphPlusData$Path>"
15690SYS"XOS_File",17,block%TO,,,,V%;N
15700IF(N AND1)=1:N=FNmessage("Data file not loaded: couldn't read file size. Unable to create graph",0):Z%=0:PROCupdate_smash:ENDPROC
15710SYS"XWimp_SlotSize",Z%+V%,-1TO;N
15720IF(N AND1)=1:N=FNmessage("Not enough memory to load data file. Unable to create graph.",0):Z%=0:PROCupdate_smash:ENDPROC
15730SYS"XOS_File",16,block%,Z%+&8001TO;N
15740IF(N AND1)=1:N=FNmessage("Data file not loaded. Unable to create graph",0):SYS"Wimp_SlotSize",Z%,-1:Z%=0:PROCupdate_smash:ENDPROC
15750M%=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M%+=1
15760NEXT
15770IFM%=0:N=FNmessage("Graph error. There is no specified data. Unable to create graph.",0):SYS"Wimp_SlotSize",Z%,-1:Z%=0:PROCupdate_smash:ENDPROC
15780N=FNlen(file_graph%):M%=N+1:REPEATN-=1:UNTILfile_graph%?N=46:M=0:REPEATblock%?(100+M)=file_graph%?M:M+=1:UNTILM=N+1:block%?(100+M)=13:N+=1:M=0:REPEATblock%?M=file_graph%?N:N+=1:M+=1:UNTILN=M%:block%?M=13
15790SYS"XOS_File",13,block%,,,block%+100TOX%
15800IFX%=2:N=FNmessage("A directory already exists with this pathname.",0):SYS"Wimp_SlotSize",Z%,-1:Z%=0:PROCupdate_smash:ENDPROC
15810graph_overlay%=FALSE:IFX%=1:N=FNmessage("This file already exists. Click OK to overlay this graph or Cancel to overwrite file.",3):IFN=1:graph_overlay%=TRUE
15820IFNOTgraph_overlay%:SYS"OS_Find",&82,file_graph%TOX%
15830IFgraph_overlay%:SYS"OS_Find",&C2,file_graph%TOX%:IFX%<>0:SYS"OS_Args",2,X%TO,,M:SYS"OS_Args",1,X%,M
15840IFX%=0:N=FNmessage("Save error. Unable to create graph.",0):SYS"Wimp_SlotSize",Z%,-1:Z%=0:PROCupdate_smash:ENDPROC
15850:
15860ONERRORLOCAL SYS"OS_Find",0,X%:PROCerror
15870PROCupdate_start
15880:
15890IFNOTgraph_overlay%:PROCgraph_header
15900IFNOTgraph_overlay%:IFtext_titlec<>0ORtext_axisc<>0ORtext_keyc<>0:PROCgraph_fonttable
15910CASEgraph_type%OF
15920 WHEN1:PROCgraph_datascaleLine
15930 WHEN2:PROCgraph_datascaleBar
15940ENDCASE
15950:
15960$text%="Page layout":PROCupdate_top
15970IFNOTgraph_overlay%:IFgraph_box%ANDgraph_type%<>4:PROCgraph_box
15980IFNOTgraph_overlay%:IFgraph_type%=1ORgraph_type%=2:PROCgraph_paper
15990!block%=handle_format%:block%!4=3:SYS"Wimp_GetIconState",,block%
16000IFNOTgraph_overlay%:IFgraph_title%ANDgraph_type%<>4:PROCgraph_title(223000)
16010IFNOTgraph_overlay%:IFgraph_key%ANDgraph_type%<>3ANDgraph_type%<>4:PROCgraph_key
16020:
16030CASEgraph_type%OF
16040 WHEN1:PROCgraph_createline
16050 WHEN2:PROCgraph_createbar
16060 WHEN3:PROCgraph_createpie
16070 WHEN4:PROCgraph_createtable
16080ENDCASE
16090:
16100SYS"OS_Find",0,X%
16110SYS"OS_File",18,file_graph%,&aff
16120SYS"Wimp_SlotSize",Z%,-1TO;N
16130:
16140PROCupdate_smash
16150PROCpane_calculate:SYS"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0
16160ENDPROC
16170:
16180DEFPROCgraph_createline
16190R%=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:R%+=15000
16200NEXT:R%-=15000
16210IFNOTgraph_3D%:R%=0
16220FORgroup%=5TO0STEP-1
16230$text%="Drawing group: "+STR$(group%+1):PROCupdate_top
16240IFgroup_map%!(group%*4)>0 THEN
16250N%=group_data%?(group%*42+10)
16260 IF(N%AND4)=4:PROCgraph_bestfit
16270 IF(N%AND2)=2ANDNOTgraph_3D%:PROCgraph_lineunder
16280 IF(N%AND1)=1ANDNOTgraph_3D%:PROCgraph_pointline
16290 IF((N%AND1)=1OR(N%AND2)=2)ANDgraph_3D%:PROCgraph_pointline3D
16300 IF(N%AND2)=2ANDgraph_3D%:PROCgraph_lineunder
16310 PROCgraph_points
16320 IFgraph_3D%:R%-=15000
16330ENDIF
16340NEXT
16350ENDPROC
16360:
16370DEFPROCgraph_createbar
16380CASEgraph_bartype%OF
16390 WHEN5 :PROCgraph_barOvr
16400 WHEN15:PROCgraph_barOvr
16410 OTHERWISE:PROCgraph_bar
16420ENDCASE
16430N=group_map%!24:IFN>0ANDN<=data_width%:PROCbar_labels
16440ENDPROC
16450:
16460DEFPROCgraph_createpie
16470PROCgraph_datapara
16480M=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M+=1
16490NEXT:IFM=0:ENDPROC
16500IFgroup_map%!24>0ANDM>1:PROCgraph_key
16510M=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M+=1
16520NEXT:CASE M OF
16530 WHEN1:R%=90000
16540 WHEN2:R%=63500
16550 WHEN3:R%=40000
16560 WHEN4:R%=40000
16570 WHEN5:R%=40000
16580 WHEN6:R%=40000
16590ENDCASE
16600IFgraph_3D%:R%-=10000
16610FORgroup%=5TO0STEP-1
16620 X=0:FORN=0TO5:IFgroup_map%!(N*4)>0:X+=1
16630 NEXT
16640 Y=X DIV2
16650 A%=0:FORN=0TOgroup%:IFgroup_map%!(N*4)>0:A%+=1
16660 NEXT
16670 IFX<=2:Y=X
16680 X-=1:Y-=1:A%-=1
16690 $text%="Creating chart: "+STR$(group%+1):PROCupdate_top
16700 IFgroup_map%!(group%*4)>0 THEN
16710 PROCgraph_piedraw
16720 ENDIF
16730NEXT
16740ENDPROC
16750:
16760DEFPROCgraph_createtable
16770PROCgraph_datapara
16780$text%="Creating table":PROCupdate_top
16790Y=640*text_axisy:IFtext_axisc=0:Y=1000*text_axisy
16800IF group_map%!24>0THEN
16810 $text%="Labels":PROCupdate_bottom
16820 x=0
16830 FORA%=1TOdata_length%
16840 PROCdata_sget(group_map%!24,A%)
16850 O=FNlen(block%)
16860 O+=4-(O MOD4)
16870 IFtext_axisc<>0 THEN
16880 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N
16890 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X
16900 SYS"Font_LoseFont",N
16910 ELSE
16920 X=text_axisx*1000*FNlen(block%)
16930 ENDIF
16940 X=X*640/1000
16950 IFX>x:x=X
16960 NEXT
16970 x+=10000
16980 FORA%=1TOdata_length%
16990 PROCdata_sget(group_map%!24,A%)
17000 O=FNlen(block%)
17010 O+=4-(O MOD4)
17020 IFgraph_box%:PROCtable_box(0,Y*data_length%-A%*Y,x,Y*data_length%-(A%-1)*Y)
17030 PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
17040 PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
17050 PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(5000):PROCdfile_wput(Y*data_length%-(A%-.25)*Y):PROCdfile_sput(block%)
17060 PROCpoll_minorloop
17070 NEXT
17080 B%=x
17090ENDIF
17100FORgroup%=0TO5
17110IFgroup_map%!(group%*4)>0THEN
17120 $text%="Group "+STR$(group%+1):PROCupdate_bottom
17130 x=0
17140 FORA%=1TOdata_length%
17150 PROCdata_sget(group_map%!(group%*4),A%)
17160 O=FNlen(block%)
17170 O+=4-(O MOD4)
17180 IFtext_axisc<>0 THEN
17190 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N
17200 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X
17210 SYS"Font_LoseFont",N
17220 ELSE
17230 X=text_axisx*1000*FNlen(block%)
17240 ENDIF
17250 X=X*640/1000
17260 IFX>x:x=X
17270 NEXT
17280 IFgraph_key%THEN
17290 $block%=$(group_data%+group%*42+11)
17300 O=FNlen(block%)
17310 O+=4-(O MOD4)
17320 IFtext_axisc<>0 THEN
17330 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N
17340 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X
17350 SYS"Font_LoseFont",N
17360 ELSE
17370 X=text_axisx*1000*FNlen(block%)
17380 ENDIF
17390 X=X*640/1000
17400 IFX>x:x=X
17410 ENDIF
17420 x+=10000
17430 FORA%=1TOdata_length%
17440 PROCdata_sget(group_map%!(group%*4),A%)
17450 O=FNlen(block%)
17460 O+=4-(O MOD4)
17470 IFgraph_box%:PROCtable_box(B%,Y*data_length%-A%*Y,B%+x,Y*data_length%-(A%-1)*Y)
17480 PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
17490 PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
17500 PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(B%+5000):PROCdfile_wput(Y*data_length%-(A%-.25)*Y):PROCdfile_sput(block%)
17510 PROCpoll_minorloop
17520 NEXT
17530 IFgraph_key%THEN
17540 $block%=$(group_data%+group%*42+11)
17550 O=FNlen(block%)
17560 O+=4-(O MOD4)
17570 IFgraph_box%:PROCtable_box(B%,Y*data_length%,B%+x,Y*(data_length%+1))
17580 PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
17590 PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
17600 PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(B%+5000):PROCdfile_wput(Y*(data_length%+.25)):PROCdfile_sput(block%)
17610 ENDIF
17620 B%+=x
17630ENDIF
17640NEXT
17650IFgraph_title%ANDgraph_key%:PROCgraph_title(Y*(data_length%+1)+3000)
17660IFgraph_title%ANDNOTgraph_key%:PROCgraph_title(Y*data_length%+3000)
17670ENDPROC
17680:
17690DEFPROCtable_box(x,y,X,Y)
17700REM OH: A box
17710PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
17720PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0)
17730PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(y)
17740PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(y)
17750PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
17760PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y)
17770PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(y)
17780PROCdfile_wput(0)
17790ENDPROC
17800:
17810DEFPROCgraph_piedraw
17820IFX<=1:PROCgraph_piekey(160000+(R%*2.75*(A%-Y/2)),110000-R%*(1.2+X*.2)):PROCgraph_pie(160000+(R%*2.75*(A%-Y/2)),110000,R%):ENDPROC
17830IFgraph_3D%:N=10000:ELSEN=0
17840IFX>=2:IFY>=A%:PROCgraph_piekey(160000+(R%*2.75*(A%-Y/2)),110000+N+R%*2.5):PROCgraph_pie(160000+(R%*2.75*(A%-Y/2)),110000+R%*1.3,R%):ENDPROC
17850IFgraph_3D%:N=-5000:ELSEN=0
17860IFX>=2:IFY<A%:PROCgraph_piekey(160000+(R%*2.75*((A%-Y)-(X-Y+1)/2)),110000+N-R%*2.5):PROCgraph_pie(160000+(R%*2.75*((A%-Y)-(X-Y+1)/2)),110000-R%*1.3,R%):ENDPROC
17870STOP
17880:
17890DEFPROCgraph_paper
17900PROCgraph_axis
17910IFgraph_type%=1:PROCgraph_xdiv
17920IFgraph_type%=2ANDgraph_bartype%>10:PROCgraph_xdiv
17930IFgraph_type%=1ANDgraph_xg%=1:PROCgraph_xdivgrid(0)
17940IFgraph_type%=2ANDgraph_bartype%>10ANDgraph_xg%=1:PROCgraph_xdivgrid(0)
17950IFgraph_type%=1ANDgraph_xg%=2:PROCgraph_xdivgrid(128)
17960IFgraph_type%=2ANDgraph_bartype%>10ANDgraph_xg%=2:PROCgraph_xdivgrid(128)
17970IFgraph_xg%=1:PROCgraph_xedge(0)
17980IFgraph_xg%=2:PROCgraph_xedge(128)
17990IFgraph_type%=1:PROCgraph_ydiv
18000IFgraph_type%=2ANDgraph_bartype%<10:PROCgraph_ydiv
18010IFgraph_type%=1ANDgraph_yg%=1:PROCgraph_ydivgrid(0)
18020IFgraph_type%=2ANDgraph_bartype%<10ANDgraph_yg%=1:PROCgraph_ydivgrid(0)
18030IFgraph_type%=1ANDgraph_yg%=2:PROCgraph_ydivgrid(128)
18040IFgraph_type%=2ANDgraph_bartype%<10ANDgraph_yg%=2:PROCgraph_ydivgrid(128)
18050IFgraph_yg%=1:PROCgraph_yedge(0)
18060IFgraph_yg%=2:PROCgraph_yedge(128)
18070IFgraph_xaxis%:PROCgraph_xlabel
18080IFgraph_yaxis%:PROCgraph_ylabel
18090ENDPROC
18100:
18110:
18120DEFPROCgraph_header
18130$block%="Draw�"+STRING$(7,CHR$0)+STRING$(3,CHR$0)+"GraphPlus":PROCdfile_sputl(block%,24)
18140PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(460000):PROCdfile_wput(250000)
18150ENDPROC
18160:
18170DEFPROCgraph_datascaleLine
18180$text%="Datascalling (Line)":PROCupdate_top
18190PROCgraph_datapara
18200!block%=handle_format%
18210IFgraph_xcal%:PROCgraph_searchminx:PROCgraph_searchmaxx
18220IFdata_xmin=data_xmax:data_xmax+=1
18230IFgraph_ycal%:PROCgraph_searchminy:PROCgraph_searchmaxy
18240IFdata_ymin=data_ymax:data_ymax+=1
18250IFgraph_xdiv=0:graph_xdiv=data_xmax-data_xmin:graph_xsdiv=graph_xdiv
18260IFgraph_xsdiv=0ORgraph_xsdiv>graph_xdiv:graph_xsdiv=graph_xdiv
18270IFgraph_xdiv>data_xmax-data_xmin:graph_xdiv=data_xmax-data_xmin:graph_xsdiv=graph_xdiv
18280IFgraph_xsdiv>data_xmax-data_xmin:graph_xsdiv=graph_xdiv
18290IFgraph_ydiv=0:graph_ydiv=data_ymax-data_ymin:graph_ysdiv=graph_ydiv
18300IFgraph_ysdiv=0ORgraph_ysdiv>graph_ydiv:graph_ysdiv=graph_ydiv
18310IFgraph_ydiv>data_ymax-data_ymin:graph_ydiv=data_ymax-data_ymin:graph_ysdiv=graph_ydiv
18320IFgraph_ysdiv>data_ymax-data_ymin:graph_ysdiv=graph_ydiv
18330:
18340M=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M+=1
18350NEXT:IFNOTgraph_3D%:M=0
18360M=15000*M
18370graph_xscale=(280000-M) / (data_xmax-data_xmin)
18380graph_yscale=(180000-M) / (data_ymax-data_ymin)
18390ENDPROC
18400:
18410DEFPROCgraph_datascaleBar
18420$text%="Datascalling (Bar)":PROCupdate_top
18430PROCgraph_datapara
18440:
18450IFgraph_xcal%:PROCgraph_searchminx:PROCgraph_searchmaxx
18460IFdata_xmin=data_xmax:data_xmax+=1
18470IFgraph_ycal%:PROCgraph_searchminh:PROCgraph_searchmaxh
18480IFdata_ymin=data_ymax:data_ymax+=1
18490IFgraph_xdiv=0:graph_xdiv=data_xmax-data_xmin:graph_xsdiv=graph_xdiv
18500IFgraph_xsdiv=0ORgraph_xsdiv>graph_xdiv:graph_xsdiv=graph_xdiv
18510IFgraph_xdiv>data_xmax-data_xmin:graph_xdiv=data_xmax-data_xmin:graph_xsdiv=graph_xdiv
18520IFgraph_xsdiv>data_xmax-data_xmin:graph_xsdiv=graph_xdiv
18530IFgraph_ydiv=0:graph_ydiv=data_ymax-data_ymin:graph_ysdiv=graph_ydiv
18540IFgraph_ysdiv=0ORgraph_ysdiv>graph_ydiv:graph_ysdiv=graph_ydiv
18550IFgraph_ydiv>data_ymax-data_ymin:graph_ydiv=data_ymax-data_ymin:graph_ysdiv=graph_ydiv
18560IFgraph_ysdiv>data_ymax-data_ymin:graph_ysdiv=graph_ydiv
18570:
18580N=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:N+=1
18590NEXT
18600IFNOTgraph_3D%:N=0
18610IFgraph_3D%ANDgraph_type%=2ANDgraph_bartype%MOD10<>3:N=1
18620N=15000*N
18630graph_xscale=(280000-N) / (data_xmax-data_xmin)
18640graph_yscale=(180000-N) / (data_ymax-data_ymin)
18650:
18660N=0:FORgroup%=0TO5
18670IFgroup_map%!(group%*4)>0:N+=1
18680NEXT:R%=N
18690IFgraph_3D%ANDgraph_bartype%<>3:R%=1
18700IFNOTgraph_3D%:R%=0
18710M=0:IF(graph_barmargin%AND1)=1:M+=1
18720IF(graph_barmargin%AND128)=128:M+=1
18730IFgraph_bartype%>10:L%=180000-R%*15000:ELSE L%=280000-R%*15000
18740CASEgraph_bartype%MOD10OF
18750 WHEN1
18760 $text%="Graph adjacent:":PROCupdate_top
18770 graph_barsize=L%/(data_length%*N+M)
18780 graph_groupsize=graph_barsize*N
18790 graph_barwidth=graph_barsize
18800 WHEN2
18810 $text%="Graph individual:":PROCupdate_top
18820 graph_barsize=L%/(data_length%*N-.5+M)
18830 graph_groupsize=graph_barsize*N
18840 graph_barwidth=graph_barsize/2
18850 WHEN3
18860 $text%="Graph offset:":PROCupdate_top
18870 IFgraph_3D%THEN
18880 graph_groupsize=L%/(data_length%-1+M)
18890 graph_barwidth=graph_groupsize*.75
18900 graph_barsize=graph_barwidth*.75
18910 ELSE
18920 graph_barwidth=L%/(data_length%*(N+1)-1+M)
18930 graph_groupsize=graph_barwidth*(N+1)
18940 graph_barsize=graph_barwidth*.75
18950 ENDIF
18960 WHEN4
18970 $text%="Graph grouped:":PROCupdate_top
18980 graph_barsize=L%/(data_length%*(N+1)-1+M)
18990 graph_groupsize=graph_barsize*(N+1)
19000 graph_barwidth=graph_barsize
19010 WHEN5
19020 $text%="Graph overlaid:":PROCupdate_top
19030 graph_groupsize=L%/(data_length%-.5+M/2)
19040 graph_barsize=0
19050 graph_barwidth=graph_groupsize/2
19060ENDCASE
19070ENDPROC
19080:
19090DEFPROCgraph_datascalePie
19100FORN=0TO5
19110IFgroup_map%!(N*4)>(data_width%-1):group_map%!(N*4)=0
19120NEXT
19130ENDPROC
19140:
19150DEFPROCgraph_datapara
19160Y%=&8001
19170M=1:REPEAT
19180A=Z%?Y%:Y%+=1
19190IFA=44:M+=1
19200UNTILA=10ORA=13
19210data_width%=M
19220M=1:REPEAT
19230A=Z%?Y%:Y%+=1
19240IFA=10ORA=13:M+=1
19250UNTILY%=&8001+V%
19260data_length%=M
19270IFgraph_type%=1:data_width%-=1
19280FORN=0TO5:IFgroup_map%!(N*4)>data_width%:group_map%!(N*4)=0
19290NEXT:IFgraph_type%=1:data_width%+=1
19300ENDPROC
19310:
19320DEFPROCgraph_searchminx
19330$text%="Minimum x":PROCupdate_bottom
19340M=FNdata_get(!group_map%,1)
19350FORgroup%=0TO5
19360x%=group_map%!(group%*4)
19370IF x%>0 THEN
19380 FORy%=1TOdata_length%
19390 X=FNdata_get(x%,y%):IFX<M:M=X
19400 NEXT
19410ENDIF
19420NEXT
19430data_xmin=M
19440ENDPROC
19450:
19460DEFPROCgraph_searchmaxx
19470$text%="Maximum x":PROCupdate_bottom
19480M=FNdata_get(!group_map%,1)
19490FORgroup%=0TO5
19500x%=group_map%!(group%*4)
19510IF x%>0 THEN
19520 FORy%=1TOdata_length%
19530 Y=FNdata_get(x%,y%):IFY>M:M=Y
19540 NEXT
19550ENDIF
19560NEXT
19570data_xmax=M
19580ENDPROC
19590:
19600DEFPROCgraph_searchminy
19610$text%="Minimum y":PROCupdate_bottom
19620M=FNdata_get(!group_map%+1,1)
19630FORgroup%=0TO5
19640x%=group_map%!(group%*4)
19650IF x%>0 THEN
19660 FORy%=1TOdata_length%
19670 X=FNdata_get(x%+1,y%):IFX<M:M=X
19680 NEXT
19690ENDIF
19700NEXT
19710data_ymin=M
19720ENDPROC
19730:
19740DEFPROCgraph_searchmaxy
19750$text%="Maximum y":PROCupdate_bottom
19760M=FNdata_get(!group_map%+1,1)
19770FORgroup%=0TO5
19780x%=group_map%!(group%*4)
19790IF x%>0 THEN
19800 FORy%=1TOdata_length%
19810 Y=FNdata_get(x%+1,y%):IFY>M:M=Y
19820 NEXT
19830ENDIF
19840NEXT
19850data_ymax=M
19860ENDPROC
19870:
19880DEFPROCgraph_searchminh
19890$text%="Minimum height":PROCupdate_bottom
19900M=FNdata_get(!group_map%,1)
19910FORgroup%=0TO5
19920x%=group_map%!(group%*4)
19930IF x%>0 THEN
19940 FORy%=1TOdata_length%
19950 X=FNdata_get(x%,y%):IFX<M:M=X
19960 NEXT
19970ENDIF
19980NEXT
19990data_ymin=M
20000ENDPROC
20010:
20020DEFPROCgraph_searchmaxh
20030$text%="Maximum height":PROCupdate_bottom
20040M=FNdata_get(!group_map%,1)
20050FORgroup%=0TO5
20060x%=group_map%!(group%*4)
20070IF x%>0 THEN
20080 FORy%=1TOdata_length%
20090 Y=FNdata_get(x%,y%):IFY>M:M=Y
20100 NEXT
20110ENDIF
20120NEXT
20130data_ymax=M
20140ENDPROC
20150:
20160DEFPROCgraph_box
20170REM OH: Bounding box
20180PROCdfile_wput(2):PROCdfile_wput(24+20*4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
20190PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0)
20200PROCdfile_wput(2):PROCdfile_wput(0):PROCdfile_wput(0)
20210PROCdfile_wput(8):PROCdfile_wput(320000):PROCdfile_wput(0)
20220PROCdfile_wput(8):PROCdfile_wput(320000):PROCdfile_wput(220000)
20230PROCdfile_wput(8):PROCdfile_wput(0):PROCdfile_wput(220000)
20240PROCdfile_wput(8):PROCdfile_wput(0):PROCdfile_wput(0)
20250PROCdfile_wput(0)
20260ENDPROC
20270:
20280DEFPROCgraph_axis
20290$text%="Axis":PROCupdate_bottom
20300M=0:FORN=0TO5:IFgroup_map%!(N*4)>0:M+=1
20310NEXT:IFNOTgraph_3D%:M=0
20320IFgraph_3D%ANDgraph_type%=2ANDgraph_bartype%<>3:M=1
20330FORN=0TOM:X=N*15000
20340REM OH: Axis
20350PROCdfile_wput(2):PROCdfile_wput(24+56):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
20360PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0)
20370PROCdfile_wput(2):PROCdfile_wput(20000+X):PROCdfile_wput(20000+X+(data_ymax-data_ymin)*graph_yscale)
20380PROCdfile_wput(8):PROCdfile_wput(20000+X):PROCdfile_wput(20000+X)
20390PROCdfile_wput(8):PROCdfile_wput(20000+X+(data_xmax-data_xmin)*graph_xscale):PROCdfile_wput(20000+X)
20400PROCdfile_wput(0)
20410NEXT
20420IFNOTgraph_3D%:ENDPROC
20430:
20440PROCdfile_wput(2):PROCdfile_wput(24+16+6*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
20450PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0)
20460PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000+(data_ymax-data_ymin)*graph_yscale)
20470PROCdfile_wput(8):PROCdfile_wput(20000+X):PROCdfile_wput(20000+X+(data_ymax-data_ymin)*graph_yscale)
20480PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000)
20490PROCdfile_wput(8):PROCdfile_wput(20000+X):PROCdfile_wput(20000+X)
20500PROCdfile_wput(2):PROCdfile_wput(20000+(data_xmax-data_xmin)*graph_xscale):PROCdfile_wput(20000)
20510PROCdfile_wput(8):PROCdfile_wput(20000+X+(data_xmax-data_xmin)*graph_xscale):PROCdfile_wput(20000+X)
20520PROCdfile_wput(0)
20530ENDPROC
20540:
20550DEFPROCgraph_xdiv
20560$text%="X divisions":PROCupdate_bottom
20570REM OH: X divisions
20580A%=(data_xmax-data_xmin) / graph_xdiv
20590B%=graph_xdiv / graph_xsdiv
20600PROCdfile_wput(2):PROCdfile_wput(24+16+((A%+A%*B%)*24)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
20610PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0)
20620FORM=1TOA%
20630PROCdfile_wput(2):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)):PROCdfile_wput(20000)
20640PROCdfile_wput(8):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)):PROCdfile_wput(17000)
20650FORO=1TOB%
20660PROCdfile_wput(2):PROCdfile_wput(20000+((M-1)*graph_xdiv*graph_xscale)+(O*graph_xsdiv*graph_xscale)):PROCdfile_wput(20000)
20670PROCdfile_wput(8):PROCdfile_wput(20000+((M-1)*graph_xdiv*graph_xscale)+(O*graph_xsdiv*graph_xscale)):PROCdfile_wput(18000)
20680NEXT
20690NEXT
20700PROCdfile_wput(0)
20710$text%="X division text":PROCupdate_bottom
20720REM OH: X division text
20730FORM=0TOA%
20740$(block%)=STR$(data_xmin+M*graph_xdiv)+STRING$(4,CHR$0)
20750O=0:REPEATO+=1:UNTILblock%?O=0
20760O+=4-(O MOD4)
20770IFtext_axisc<>0 THEN
20780 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N
20790 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X
20800 SYS"Font_LoseFont",N
20810ELSE
20820X=text_axisx*1000*FNlen(block%)
20830ENDIF
20840X=X*320/1000
20850PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
20860PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
20870PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)-X):PROCdfile_wput(15000-380*text_axisy):PROCdfile_sput(block%)
20880NEXT
20890ENDPROC
20900:
20910DEFPROCgraph_xdivgrid(N)
20920IFN=0:$text%="X grid (solid)"ELSE$text%="X grid (dotted)"
20930PROCupdate_bottom
20940R%=0:FORgroup%=0TO5
20950IFgroup_map%!(group%*4)>0:R%+=1
20960NEXT
20970IFgraph_3D%ANDgraph_type%=2ANDgraph_bartype%<>3:R%=1
20980IFNOTgraph_3D%:R%=0
20990:
21000REM OH: X divisions grid
21010A%=(data_xmax-data_xmin) / graph_xdiv
21020M=0:IFR%>0:M=1
21030L%=0:IFN=128:L%=16
21040PROCdfile_wput(2):PROCdfile_wput(24+16+L%+(A%*24)+M*12*A%+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
21050PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(N)
21060IFN=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(4000):PROCdfile_wput(3000)
21070FORM=1TOA%
21080PROCdfile_wput(2):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)):PROCdfile_wput(20000)
21090IFR%>0:PROCdfile_wput(8):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)+R%*15000):PROCdfile_wput(20000+R%*15000)
21100PROCdfile_wput(8):PROCdfile_wput(20000+(M*graph_xdiv*graph_xscale)+R%*15000):PROCdfile_wput(200000)
21110NEXT
21120PROCdfile_wput(0)
21130ENDPROC
21140:
21150DEFPROCgraph_xedge(N)
21160IFN=0:$text%="X edge (solid)"ELSE$text%="X edge (dotted)"
21170PROCupdate_bottom
21180REM OH: X edge
21190L%=0:IFN=128:L%=16
21200PROCdfile_wput(2):PROCdfile_wput(24+16+L%+24+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
21210PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(N)
21220IFN=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(4000):PROCdfile_wput(3000)
21230PROCdfile_wput(2):PROCdfile_wput(300000):PROCdfile_wput(20000+R%*15000)
21240PROCdfile_wput(8):PROCdfile_wput(300000):PROCdfile_wput(200000)
21250PROCdfile_wput(0)
21260ENDPROC
21270:
21280DEFPROCgraph_ydiv
21290$text%="Y divisions":PROCupdate_bottom
21300REM OH: Y divisions
21310A%=(data_ymax-data_ymin) / graph_ydiv
21320B%=graph_ydiv / graph_ysdiv
21330PROCdfile_wput(2):PROCdfile_wput(24+16+((A%+A%*B%)*24)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
21340PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0)
21350FORM=1TOA%
21360PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale))
21370PROCdfile_wput(8):PROCdfile_wput(17000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale))
21380FORO=1TOB%
21390PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000+((M-1)*graph_ydiv*graph_yscale)+(O*graph_ysdiv*graph_yscale))
21400PROCdfile_wput(8):PROCdfile_wput(18000):PROCdfile_wput(20000+((M-1)*graph_ydiv*graph_yscale)+(O*graph_ysdiv*graph_yscale))
21410NEXT
21420NEXT
21430PROCdfile_wput(0)
21440$text%="Y division text":PROCupdate_bottom
21450REM OH: Y division text
21460FORM=0TOA%
21470$(block%)=STR$(data_ymin+M*graph_ydiv)+STRING$(4,CHR$0)
21480O=0:REPEATO+=1:UNTILblock%?O=0
21490O+=4-(O MOD4)
21500IFtext_axisc<>0 THEN
21510 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N
21520 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X
21530 SYS"Font_LoseFont",N
21540ELSE
21550X=text_axisx*1000*FNlen(block%)
21560ENDIF
21570X=X*640/1000
21580PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
21590PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
21600PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(16000-X):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale)-(160*text_axisy)):PROCdfile_sput(block%)
21610NEXT
21620ENDPROC
21630:
21640DEFPROCgraph_ydivgrid(N)
21650IFN=0:$text%="Y grid (solid)"ELSE$text%="Y grid (dotted)"
21660PROCupdate_bottom
21670R%=0:FORgroup%=0TO5
21680IFgroup_map%!(group%*4)>0:R%+=1
21690NEXT
21700IFgraph_3D%ANDgraph_type%=2ANDgraph_bartype%<>3:R%=1
21710IFNOTgraph_3D%:R%=0
21720:
21730REM OH: Y divisions grid
21740A%=(data_ymax-data_ymin) / graph_ydiv
21750M=0:IFR%>0:M=1
21760L%=0:IFN=128:L%=16
21770PROCdfile_wput(2):PROCdfile_wput(24+16+L%+(A%*24)+M*12*A%+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
21780PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(N)
21790IFN=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(4000):PROCdfile_wput(3000)
21800FORM=1TOA%
21810PROCdfile_wput(2):PROCdfile_wput(20000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale))
21820IFR%>0:PROCdfile_wput(8):PROCdfile_wput(20000+R%*15000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale)+R%*15000)
21830PROCdfile_wput(8):PROCdfile_wput(300000):PROCdfile_wput(20000+(M*graph_ydiv*graph_yscale)+R%*15000)
21840NEXT
21850PROCdfile_wput(0)
21860ENDPROC
21870:
21880DEFPROCgraph_yedge(N)
21890IFN=0:$text%="Y edge (solid)"ELSE$text%="Y edge (dotted)"
21900PROCupdate_bottom
21910REM OH: X edge
21920L%=0:IFN=128:L%=16
21930PROCdfile_wput(2):PROCdfile_wput(24+16+L%+24+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
21940PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(N)
21950IFN=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(4000):PROCdfile_wput(3000)
21960PROCdfile_wput(2):PROCdfile_wput(20000+R%*15000):PROCdfile_wput(200000)
21970PROCdfile_wput(8):PROCdfile_wput(300000):PROCdfile_wput(200000)
21980PROCdfile_wput(0)
21990ENDPROC
22000:
22010:
22020DEFPROCgraph_pointline
22030$text%="Line":PROCupdate_bottom
22040x%=group_map%!(group%*4):y%=1
22050REM Object header
22060S%=0:L%=0:IFgroup_data%?(group%*42+9)>1:S%=128:L%=16
22070PROCdfile_wput(2):PROCdfile_wput(24+16+L%+(data_length%*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(250000)
22080PROCdfile_wput(-1):PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(group_data%!(group%*42+5)):PROCdfile_wput(S%)
22090C%=12000DIV(5-group_data%?(group%*42+9))
22100IFS%=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(C%):PROCdfile_wput(C%)
22110X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin
22120PROCdfile_wput(2):PROCdfile_wput(20000+(X*graph_xscale)+R%):PROCdfile_wput(20000+(Y*graph_yscale)+R%)
22130FORy%=2TOdata_length%
22140X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin
22150PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
22160PROCpoll_minorloop
22170NEXT
22180PROCdfile_wput(0)
22190ENDPROC
22200:
22210DEFPROCgraph_pointline3D
22220$text%="3D Line":PROCupdate_bottom
22230x%=group_map%!(group%*4):y%=1
22240X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin
22250FORy%=2TOdata_length%
22260x=FNdata_get(x%,y%)-data_xmin:y=FNdata_get(x%+1,y%)-data_ymin
22270REM Object header
22280PROCdfile_wput(2):PROCdfile_wput(24+16+(5*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(250000)
22290C%=0:IFx<>X:IF(y-Y)/(x-X)>1:C%=2
22300PROCdfile_bput(0):PROCdfile_bfade(group_data%?(group%*42+2),C%):PROCdfile_bfade(group_data%?(group%*42+3),C%):PROCdfile_bfade(group_data%?(group%*42+4),C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
22310PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
22320PROCdfile_wput(8):PROCdfile_wput(20000+x*graph_xscale+R%):PROCdfile_wput(20000+y*graph_yscale+R%)
22330PROCdfile_wput(8):PROCdfile_wput(35000+x*graph_xscale+R%):PROCdfile_wput(35000+y*graph_yscale+R%)
22340PROCdfile_wput(8):PROCdfile_wput(35000+X*graph_xscale+R%):PROCdfile_wput(35000+Y*graph_yscale+R%)
22350PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
22360PROCdfile_wput(0)
22370X=x:Y=y
22380PROCpoll_minorloop
22390NEXT
22400ENDPROC
22410:
22420DEFPROCgraph_lineunder
22430$text%="Area under":PROCupdate_bottom
22440x%=group_map%!(group%*4):y%=1
22450REM OH: Lineunder
22460PROCdfile_wput(2):PROCdfile_wput(24+16+((data_length%+2)*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
22470IFgraph_3D%THEN
22480 PROCdfile_bput(0):PROCdfile_bfade(group_data%?(group%*42+2),1):PROCdfile_bfade(group_data%?(group%*42+3),1):PROCdfile_bfade(group_data%?(group%*42+4),1):PROCdfile_wput(graph_outline%)
22490ELSE
22500 PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(-1)
22510ENDIF
22520PROCdfile_wput(0):PROCdfile_wput(0)
22530X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin
22540PROCdfile_wput(2):PROCdfile_wput(20000+(X*graph_xscale)+R%):PROCdfile_wput(20000+R%)
22550PROCdfile_wput(8):PROCdfile_wput(20000+(X*graph_xscale)+R%):PROCdfile_wput(20000+(Y*graph_yscale)+R%)
22560FORy%=2TOdata_length%
22570X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin
22580PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
22590PROCpoll_minorloop
22600NEXT
22610PROCdfile_wput(8):PROCdfile_wput(20000+(X*graph_xscale)+R%):PROCdfile_wput(20000+R%)
22620PROCdfile_wput(0)
22630IFNOTgraph_3D%:ENDPROC
22640PROCdfile_wput(2):PROCdfile_wput(24+16+5*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
22650PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
22660PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+R%)
22670PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
22680PROCdfile_wput(8):PROCdfile_wput(35000+X*graph_xscale+R%):PROCdfile_wput(35000+Y*graph_yscale+R%)
22690PROCdfile_wput(8):PROCdfile_wput(35000+X*graph_xscale+R%):PROCdfile_wput(35000+R%)
22700PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+R%)
22710PROCdfile_wput(0)
22720ENDPROC
22730:
22740DEFPROCgraph_points
22750IFgroup_data%?(group%*42)=0:ENDPROC
22760$text%="Points":PROCupdate_bottom
22770x%=group_map%!(group%*4)
22780FORy%=1TOdata_length%
22790X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin
22800C%=(group_data%?(group%*42+4)<<24)+(group_data%?(group%*42+3)<<16)+(group_data%?(group%*42+2)<<8)
22810M=group_data%?(group%*42+1)
22820CASEgroup_data%?(group%*42)OF
22830 WHEN1:PROCpoint_cir(M)
22840 WHEN2:PROCpoint_squ(M)
22850 WHEN3:PROCpoint_tri(M)
22860 WHEN4:PROCpoint_dia(M)
22870 WHEN5:PROCpoint_sta(M)
22880 WHEN6:PROCpoint_cross(M)
22890 WHEN7:PROCpoint_x(M)
22900ENDCASE
22910PROCpoll_minorloop
22920NEXT
22930ENDPROC
22940:
22950DEFPROCpoint_cir(N)
22960REM OH: Circle
22970PROCdfile_wput(2):PROCdfile_wput(24+16+(1*12)+(4*28)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
22980PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
22990PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23000PROCdfile_wput(6)
23010 PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%)
23020 PROCdfile_wput(20000+X*graph_xscale-500*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23030 PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23040PROCdfile_wput(6)
23050PROCdfile_wput(20000+X*graph_xscale+500*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23060PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%)
23070PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23080PROCdfile_wput(6)
23090PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%)
23100PROCdfile_wput(20000+X*graph_xscale+500*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23110PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23120PROCdfile_wput(6)
23130PROCdfile_wput(20000+X*graph_xscale-500*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23140PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%)
23150PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23160PROCdfile_wput(0)
23170ENDPROC
23180:
23190DEFPROCpoint_squ(N)
23200REM OH: Square
23210PROCdfile_wput(2):PROCdfile_wput(24+16+(5*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
23220PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
23230PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23240PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23250PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23260PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23270PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23280PROCdfile_wput(0)
23290ENDPROC
23300:
23310DEFPROCpoint_tri(N)
23320REM OH: Triangle
23330PROCdfile_wput(2):PROCdfile_wput(24+16+(4*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
23340PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
23350PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23360PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23370PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23380PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23390PROCdfile_wput(0)
23400ENDPROC
23410:
23420DEFPROCpoint_dia(N)
23430REM OH: Diamond
23440PROCdfile_wput(2):PROCdfile_wput(24+16+(5*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
23450PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
23460PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23470PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23480PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23490PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23500PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23510PROCdfile_wput(0)
23520ENDPROC
23530:
23540DEFPROCpoint_sta(N)
23550REM OH: Star
23560PROCdfile_wput(2):PROCdfile_wput(24+16+(13*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
23570PROCdfile_wput(C%):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
23580PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23590PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+300*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%)
23600PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%)
23610PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+500*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23620PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%)
23630PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+300*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%)
23640PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23650PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-300*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%)
23660PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+500*N+R%)
23670PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-500*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23680PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%)
23690PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale-300*N+R%):PROCdfile_wput(20000+Y*graph_yscale-500*N+R%)
23700PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23710PROCdfile_wput(0)
23720ENDPROC
23730:
23740DEFPROCpoint_cross(N)
23750REM OH: Cross
23760PROCdfile_wput(2):PROCdfile_wput(24+16+(4*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
23770PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0)
23780PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23790PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23800PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23810PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+R%)
23820PROCdfile_wput(0)
23830ENDPROC
23840:
23850DEFPROCpoint_x(N)
23860REM OH: X
23870PROCdfile_wput(2):PROCdfile_wput(24+16+(4*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
23880PROCdfile_wput(-1):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0)
23890PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23900PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23910PROCdfile_wput(2):PROCdfile_wput(20000+X*graph_xscale-1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale+1000*N+R%)
23920PROCdfile_wput(8):PROCdfile_wput(20000+X*graph_xscale+1000*N+R%):PROCdfile_wput(20000+Y*graph_yscale-1000*N+R%)
23930PROCdfile_wput(0)
23940ENDPROC
23950:
23960DEFPROCgraph_bestfit
23970$text%="Calculating BF":PROCupdate_bottom
23980a=0:b=0:c=0:d=0:e=0
23990x%=group_map%!(group%*4)
24000FORy%=1TOdata_length%
24010X=FNdata_get(x%,y%)-data_xmin:Y=FNdata_get(x%+1,y%)-data_ymin
24020a+=Y:b+=X:c+=X*Y:d+=X*X:e+=Y*Y
24030NEXT
24040IFgraph_best%=1 THEN
24050 A=(b*a-c*data_length%)/(a*b-e*data_length%)
24060 B=(b*e-c*b)/(e*data_length%-a*b)
24070ELSE
24080 A=(a*b-c*data_length%)/(b*b-d*data_length%)
24090 B=(a*d-c*b)/(d*data_length%-b*b)
24100ENDIF
24110$text%="Best fit line":PROCupdate_bottom
24120IFgraph_best%=1 THEN
24130 x=20000+(B*graph_xscale):y=20000
24140 IFx<20000:x=20000:y=20000-B/A*graph_yscale
24150 IFx>20000+(data_xmax-data_xmin)*graph_xscale:x=20000+(data_xmax-data_xmin)*graph_xscale:y=20000+(data_xmax-data_xmin-B)/A*graph_yscale
24160 X=20000+((A*(data_xmax-data_xmin)+B)*graph_xscale):Y=20000+((data_xmax-data_xmin)*graph_yscale)
24170 IFX<20000:X=20000:Y=20000-B/A*graph_yscale
24180 IFX>20000+(data_xmax-data_xmin)*graph_xscale:X=20000+(data_xmax-data_xmin)*graph_xscale:Y=20000+(data_xmax-data_xmin-B)/A*graph_yscale
24190ELSE
24200 x=20000:y=20000+(B*graph_yscale)
24210 IFy<20000:x=20000-B/A*graph_xscale:y=20000
24220 IFy>20000+(data_ymax-data_ymin)*graph_yscale:x=20000+(data_ymax-data_ymin-B)/A*graph_xscale:y=20000+(data_ymax-data_ymin)*graph_yscale
24230 X=20000+((data_xmax-data_xmin)*graph_xscale):Y=20000+((A*(data_xmax-data_xmin)+B)*graph_yscale)
24240 IFY<20000:X=20000-B/A*graph_xscale:Y=20000
24250 IFy>20000+(data_ymax-data_ymin)*graph_yscale:X=20000+(data_ymax-data_ymin-B)/A*graph_xscale:Y=20000+(data_ymax-data_ymin)*graph_yscale
24260ENDIF
24270IFNOTgraph_3D%:PROCgraph_drawbest
24280IFgraph_3D%:PROCgraph_drawbest3D
24290ENDPROC
24300:
24310DEFPROCgraph_drawbest
24320REM OH: Best fit
24330S%=0:IFgroup_data%?(group%*42+9)>1:S%=128
24340L%=0:IFS%=128:L%=16
24350PROCdfile_wput(2):PROCdfile_wput(24+16+L%+(2*12)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(250000)
24360C%=(group_data%?(group%*42+4)<<24)+(group_data%?(group%*42+3)<<16)+(group_data%?(group%*42+2)<<8)
24370PROCdfile_wput(-1):PROCdfile_wput(C%):PROCdfile_wput(group_data%!(group%*42+5)):PROCdfile_wput(S%)
24380C%=12000DIV(5-group_data%?(group%*42+9))
24390IFS%=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(C%):PROCdfile_wput(C%)
24400PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(y)
24410PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
24420PROCdfile_wput(0)
24430ENDPROC
24440:
24450DEFPROCgraph_drawbest3D
24460REM OH: Best fit
24470PROCdfile_wput(2):PROCdfile_wput(24+16+5*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(250000)
24480PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
24490N=group%*15000
24500PROCdfile_wput(2):PROCdfile_wput(x+N):PROCdfile_wput(y+N)
24510PROCdfile_wput(8):PROCdfile_wput(x+N+15000):PROCdfile_wput(y+N+15000)
24520PROCdfile_wput(8):PROCdfile_wput(X+N+15000):PROCdfile_wput(Y+N+15000)
24530PROCdfile_wput(8):PROCdfile_wput(X+N):PROCdfile_wput(Y+N)
24540PROCdfile_wput(8):PROCdfile_wput(x+N):PROCdfile_wput(y+N)
24550PROCdfile_wput(0)
24560ENDPROC
24570:
24580DEFPROCgraph_title(A%)
24590$text%="Title":PROCupdate_bottom
24600REM OH: Title text
24610N=FNlen(s_title%):N+=4-(N MOD 4)
24620PROCdfile_wput(1):PROCdfile_wput(24+28+N):PROCdfile_wput(0):PROCdfile_wput(220000):PROCdfile_wput(300000):PROCdfile_wput(223000+text_titley*640)
24630PROCdfile_wput(0):PROCdfile_bput(0):PROCdfile_bput(255):PROCdfile_bput(255):PROCdfile_bput(255)
24640PROCdfile_wput(graph_titlec):PROCdfile_wput(640*text_titlex):PROCdfile_wput(640*text_titley):PROCdfile_wput(0):PROCdfile_wput(A%)
24650PROCdfile_sput(s_title%)
24660ENDPROC
24670:
24680DEFPROCgraph_xlabel
24690$text%="X label":PROCupdate_bottom
24700REM OH: X label text
24710N=FNlen(s_xaxis%):N+=4-(N MOD 4)
24720IF text_axisc<>0 THEN
24730 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO M
24740 SYS"Font_StringWidth",,s_xaxis%,300000,200000,-1,s_xaxis%+FNlen(s_xaxis%)TO,,X
24750 SYS"Font_LoseFont",M
24760ELSE
24770X=text_axisx*1000*FNlen(s_xaxis%)
24780ENDIF
24790X=X*640/1000
24800PROCdfile_wput(1):PROCdfile_wput(24+28+N):PROCdfile_wput(0):PROCdfile_wput(220000):PROCdfile_wput(300000):PROCdfile_wput(220000)
24810PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
24820PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(300000-X):PROCdfile_wput(2000)
24830PROCdfile_sput(s_xaxis%)
24840ENDPROC
24850:
24860DEFPROCgraph_ylabel
24870$text%="Y label":PROCupdate_bottom
24880REM OH: Y label text
24890N=FNlen(s_yaxis%):N+=4-(N MOD 4)
24900PROCdfile_wput(1):PROCdfile_wput(24+28+N):PROCdfile_wput(0):PROCdfile_wput(220000):PROCdfile_wput(300000):PROCdfile_wput(220000)
24910PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
24920PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy):PROCdfile_wput(20000):PROCdfile_wput(205000)
24930PROCdfile_sput(s_yaxis%)
24940ENDPROC
24950:
24960DEFPROCgraph_fonttable
24970$text%="Font table":PROCupdate_top
24980R%=-1
24990IFtext_titlec<>0:PROCgraph_fontt(1,text_titlec):graph_titlec=1
25000IFtext_axisc<>0:PROCgraph_fontt(2,text_axisc):graph_axisc=2
25010IFtext_keyc<>0:PROCgraph_fontt(3,text_keyc):graph_keyc=3
25020R%+=4-(R%MOD4)
25030REM OH: Font table
25040PROCdfile_wput(0):PROCdfile_wput(8+R%)
25050PROCdfile_sputl(block%,R%)
25060ENDPROC
25070:
25080DEFPROCgraph_fontlen(M)
25090$(block%+L%)=CHR$0+$(font_list%+M*40)+CHR$0+CHR$0+CHR$0
25100REPEATL%+=1:UNTILblock%?L%=0
25110ENDPROC
25120:
25130DEFPROCgraph_fontt(N,M)
25140$(block%+R%+1)=CHR$N+$(font_list%+M*40)+CHR$0
25150REPEATR%+=1:UNTILblock%?R%=0
25160ENDPROC
25170:
25180DEFPROCgraph_key
25190$text%="Key":PROCupdate_bottom
25200B=0:X=0
25210IFgraph_type%<>3:A=5:ELSEA=data_length%-1
25220FORgroup%=0TOA
25230N=group_map%?(group%*4)
25240IFN<>0ORgraph_type%=3 THEN
25250 IFgraph_type%<=2:R%=group_data%+group%*42+11:ELSEPROCdata_sget(group_map%!24,group%+1):R%=block%
25260 IF text_keyc<>0 THEN
25270 SYS"Font_FindFont",,font_list%+text_keyc*40,text_keyx*16,text_keyy*16,0,0 TO N%
25280 SYS"Font_StringWidth",,R%,300000,200000,-1,R%+FNlen(R%)TO,,Y
25290 SYS"Font_LoseFont",N%
25300 ELSE
25310 Y=text_keyx*1000*FNlen(R%)
25320 ENDIF
25330 IFY>X:X=Y
25340 B+=1
25350ENDIF
25360NEXT:B+=1:X=X*640/1000
25370REM OH: Key box
25380PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
25390PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(0)
25400PROCdfile_wput(2):PROCdfile_wput(330000):PROCdfile_wput(228000-B*18000)
25410PROCdfile_wput(8):PROCdfile_wput(370000+X):PROCdfile_wput(228000-B*18000)
25420PROCdfile_wput(8):PROCdfile_wput(370000+X):PROCdfile_wput(220000)
25430PROCdfile_wput(8):PROCdfile_wput(330000):PROCdfile_wput(220000)
25440PROCdfile_wput(8):PROCdfile_wput(330000):PROCdfile_wput(228000-B*18000)
25450PROCdfile_wput(0)
25460B=0
25470IFgraph_type%<>3:A=5:ELSEA=data_length%-1
25480FORgroup%=0TOA
25490IFgraph_type%<>3:N=group_map%!(group%*4)
25500IFN<>0ORgraph_type%=3 THEN
25510 CASEgraph_type%OF
25520 WHEN 1
25530 REM OH: Item line
25540 S%=0:L%=0:IFgroup_data%?(group%*42+9)>1:S%=128:L%=16
25550 PROCdfile_wput(2):PROCdfile_wput(24+16+L%+2*12+4):PROCdfile_wput(330000):PROCdfile_wput(0):PROCdfile_wput(330000):PROCdfile_wput(220000)
25560 PROCdfile_wput(-1):PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(group_data%!(group%*42+5)):PROCdfile_wput(S%)
25570 C%=8000DIV(5-group_data%?(group%*42+9))
25580 IFS%=128:PROCdfile_wput(0):PROCdfile_wput(2):PROCdfile_wput(C%):PROCdfile_wput(C%)
25590 PROCdfile_wput(2):PROCdfile_wput(334000):PROCdfile_wput(207000-18000*B)
25600 PROCdfile_wput(8):PROCdfile_wput(352000):PROCdfile_wput(207000-18000*B)
25610 PROCdfile_wput(0)
25620 REM Item point
25630 X=(343000-20000)/graph_xscale:Y=(207000-20000-18000*B)/graph_yscale
25640 R%=0:C%=(group_data%?(group%*42+4)<<24)+(group_data%?(group%*42+3)<<16)+(group_data%?(group%*42+2)<<8)
25650 M%=group_data%?(group%*42+1)
25660 CASEgroup_data%?(group%*42)OF
25670 WHEN1:PROCpoint_cir(M%)
25680 WHEN2:PROCpoint_squ(M%)
25690 WHEN3:PROCpoint_tri(M%)
25700 WHEN4:PROCpoint_dia(M%)
25710 WHEN5:PROCpoint_sta(M%)
25720 WHEN6:PROCpoint_cross(M%)
25730 WHEN7:PROCpoint_x(M%)
25740 ENDCASE
25750 WHEN2
25760 REM OH: Item box
25770 PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
25780 PROCdfile_bput(0):PROCdfile_bput(group_data%?(group%*42+2)):PROCdfile_bput(group_data%?(group%*42+3)):PROCdfile_bput(group_data%?(group%*42+4)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
25790 PROCdfile_wput(2):PROCdfile_wput(338000):PROCdfile_wput(212000-18000*B)
25800 PROCdfile_wput(8):PROCdfile_wput(348000):PROCdfile_wput(212000-18000*B)
25810 PROCdfile_wput(8):PROCdfile_wput(348000):PROCdfile_wput(202000-18000*B)
25820 PROCdfile_wput(8):PROCdfile_wput(338000):PROCdfile_wput(202000-18000*B)
25830 PROCdfile_wput(8):PROCdfile_wput(338000):PROCdfile_wput(212000-18000*B)
25840 PROCdfile_wput(0)
25850 WHEN3
25860 REM OH: Item pie
25870 PROCdfile_wput(2):PROCdfile_wput(24+16+12*4+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
25880 PROCdfile_bput(pie_palette%?(B*4)):PROCdfile_bput(pie_palette%?(B*4+1)):PROCdfile_bput(pie_palette%?(B*4+2)):PROCdfile_bput(pie_palette%?(B*4+3))
25890 PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
25900 PROCdfile_wput(2):PROCdfile_wput(338000):PROCdfile_wput(212000-18000*B)
25910 PROCdfile_wput(8):PROCdfile_wput(348000):PROCdfile_wput(207000-18000*B)
25920 PROCdfile_wput(8):PROCdfile_wput(338000):PROCdfile_wput(202000-18000*B)
25930 PROCdfile_wput(8):PROCdfile_wput(338000):PROCdfile_wput(212000-18000*B)
25940 PROCdfile_wput(0)
25950 ENDCASE
25960 REM OH: Key text
25970 IFgraph_type%<>3:R%=group_data%+group%*42+11:ELSEPROCdata_sget(group_map%!24,group%+1):R%=block%
25980 N%=FNlen(R%)
25990 N%+=4-(N% MOD 4)
26000 PROCdfile_wput(1):PROCdfile_wput(24+28+N%):PROCdfile_wput(0):PROCdfile_wput(220000):PROCdfile_wput(300000):PROCdfile_wput(220000)
26010 PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
26020 PROCdfile_wput(graph_keyc):PROCdfile_wput(640*text_keyx):PROCdfile_wput(640*text_keyy):PROCdfile_wput(360000):PROCdfile_wput(207000-18000*B-(160*text_keyy))
26030 PROCdfile_sput(R%)
26040 B+=1
26050ENDIF
26060NEXT
26070ENDPROC
26080:
26090DEFPROCgraph_bar
26100$text%="Bars":PROCupdate_bottom
26110IFgraph_bartype%<10:FORN%=0TOdata_length%-1
26120IFgraph_bartype%>10:FORN%=data_length%-1TO0STEP-1
26130 M%=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:M%+=1
26140 NEXT:M%-=1:R%=M%
26150IFgraph_bartype%<10:A=data_ymin:B=data_ymax
26160IFgraph_bartype%>10:A=data_xmin:B=data_xmax
26170IFA<0:O%=-A:ELSEO%=0
26180IFB<0:O%=A-B
26190M=0
26200IFgraph_3D%ANDgraph_bartype%<10ANDgraph_bartype%<>3:FORgroup%=0TO5
26210IFgraph_3D%ANDgraph_bartype%=3:FORgroup%=5TO0STEP-1:M=M%*15000:R%=M%
26220IFgraph_3D%ANDgraph_bartype%>10ANDgraph_bartype%<>13:FORgroup%=5TO0STEP-1
26230IFgraph_3D%ANDgraph_bartype%=13:FORgroup%=0TO5:M=M%*15000:R%=M%
26240IFNOTgraph_3D%:FORgroup%=0TO5
26250IFgroup_map%!(group%*4)>0ANDgraph_bartype%<10THEN
26260 Y=FNdata_get(group_map%!(group%*4),N%+1)
26270 IFY>data_ymax:Y=data_ymax
26280 IFY<data_ymin:Y=data_ymin
26290 Y-=data_ymin
26300 IFNOTgraph_3D%:PROCgraph_dbar(20000+(graph_barmargin%AND1)*graph_barsize+N%*graph_groupsize+(R%-M%)*graph_barsize+M,20000+M+O%*graph_yscale,graph_barwidth,20000+M+Y*graph_yscale,group%)
26310 IFgraph_3D%:PROCgraph_dbar3Dh(20000+(graph_barmargin%AND1)*graph_barsize+N%*graph_groupsize+(R%-M%)*graph_barsize+M,20000+M+O%*graph_yscale,graph_barwidth,20000+M+Y*graph_yscale,group%)
26320 M%-=1
26330ENDIF
26340IFgroup_map%!(group%*4)>0ANDgraph_bartype%>10THEN
26350 Y=FNdata_get(group_map%!(group%*4),N%+1)
26360 IFY>data_xmax:Y=data_xmax
26370 IFY<data_xmin:Y=data_xmin
26380 Y-=data_xmin
26390 IFNOTgraph_3D%:PROCgraph_dbar(20000+M+O%*graph_xscale,200000-M-(graph_barmargin%AND1)*graph_barsize-N%*graph_groupsize-(R%-M%)*graph_barsize,20000+M+Y*graph_xscale,-graph_barwidth,group%)
26400 IFgraph_3D%:PROCgraph_dbar3Dv(20000+M+O%*graph_xscale,20000+(graph_barmargin%AND128)*graph_barsize/128+(data_length%-N%-1)*graph_groupsize+(R%-M%+1)*graph_barsize-M,20000+M+Y*graph_xscale,-graph_barwidth,group%)
26410 M%-=1
26420ENDIF
26430PROCpoll_minorloop
26440NEXT
26450NEXT
26460ENDPROC
26470:
26480DEFPROCgraph_barOvr
26490$text%="Bars (overlaid)":PROCupdate_bottom
26500FORgroup%=0TO5:block%?group%=0:NEXT
26510IFgraph_bartype%<10:FORN%=0TOdata_length%-1 ELSE FORN%=data_length%-1TO0STEP-1
26520M%=0:FORgroup%=0TO5:IFgroup_map%!(group%*4)>0:block%?M%=group%:M%+=1
26530NEXT:R%=M%-1
26540L%=graph_groupsize/2
26550:
26560FORgroup%=M%-1TO1STEP-1
26570A=0:Y=ABSFNdata_get(group_map%!(?block%*4),N%+1)
26580FORM=1TOgroup%:X=ABSFNdata_get(group_map%!(block%?M*4),N%+1):IFX>Y:Y=X:A=M
26590NEXT
26600SWAPblock%?group%,block%?A
26610NEXT
26620:
26630O=0:B%=0:X=0:Y=0
26640FORgroup%=M%-1TO0STEP-1:M=block%?group%
26650O=FNdata_get(group_map%!(M*4),N%+1)
26660IFA%>Y:Y=A%:X=M
26670NEXT:O-=100000000
26680:
26690IFgraph_bartype%<10:A=data_ymin:B=data_ymax
26700IFgraph_bartype%>10:A=data_xmin:B=data_xmax
26710IFA<0:O%=-A:ELSEO%=0
26720IFB<0:O%=A-B
26730IFgraph_3D% THEN
26740 M=block%?(X-1):Y=FNdata_get(group_map%!(X*4),N%+1)
26750 IFY>B:Y=B
26760 IFY<A:Y=A
26770 Y-=A
26780 IFgraph_bartype%<10:PROCgraph_dbarendh(20000+(graph_barmargin%AND1)*L%+N%*graph_groupsize+B%,20000+O%*graph_yscale,graph_barwidth,20000+Y*graph_yscale,X)
26790 IFgraph_bartype%>10:PROCgraph_dbarendv(20000+O%*graph_xscale,20000+(graph_barmargin%AND128)*L%/128+(data_length%-N%-1)*graph_groupsize+B%+graph_barwidth,20000+Y*graph_xscale,-graph_barwidth,X)
26800ENDIF
26810FORgroup%=M%-1TO0STEP-1:M=block%?group%
26820Y=FNdata_get(group_map%!(M*4),N%+1)
26830IFY>B:Y=B
26840IFY<A:Y=A
26850Y-=A
26860IFY=O THEN
26870 B%+=4000
26880 IFgraph_3D%ANDgraph_bartype%<10:PROCgraph_dbarendh(20000+(graph_barmargin%AND1)*L%+N%*graph_groupsize+B%+graph_barwidth-4000,20000+O%*graph_yscale,4000,20000+Y*graph_yscale,M)
26890 IFgraph_3D%ANDgraph_bartype%>10:PROCgraph_dbarendv(20000+O%*graph_xscale,20000+(graph_barmargin%AND128)*L%/128+(data_length%-N%-1)*graph_groupsize+B%+graph_barwidth,20000+Y*graph_xscale,-4000,M)
26900ENDIF
26910IFgraph_bartype%<10:PROCgraph_dbarOvh(20000+(graph_barmargin%AND1)*L%+N%*graph_groupsize+B%,20000+O%*graph_yscale,graph_barwidth,20000+Y*graph_yscale,M)
26920IFgraph_bartype%>10:PROCgraph_dbarOvv(20000+O%*graph_xscale,20000+(graph_barmargin%AND128)*L%/128+(data_length%-N%-1)*graph_groupsize+B%+graph_barwidth,20000+Y*graph_xscale,-graph_barwidth,M)
26930M%-=1
26940O=Y
26950PROCpoll_minorloop
26960NEXT
26970NEXT
26980ENDPROC
26990:
27000DEFPROCgraph_dbar3Dh(x,y,X,Y,M)
27010PROCgraph_dbarendh(x,y,X,Y,M):PROCgraph_dbar(x,y,X,Y,M):PROCgraph_dbarsideh(x,y,X,Y,M)
27020ENDPROC
27030:
27040DEFPROCgraph_dbar3Dv(x,y,X,Y,M)
27050PROCgraph_dbarendv(x,y,X,Y,M):PROCgraph_dbar(x,y,X,Y,M):PROCgraph_dbarsidev(x,y,X,Y,M)
27060ENDPROC
27070:
27080DEFPROCgraph_dbarOvh(x,y,X,Y,M)
27090PROCgraph_dbar(x,y,X,Y,M):IFgraph_3D%:PROCgraph_dbarsideh(x,y,X,Y,M)
27100ENDPROC
27110:
27120DEFPROCgraph_dbarOvv(x,y,X,Y,M)
27130PROCgraph_dbar(x,y,X,Y,M):IFgraph_3D%:PROCgraph_dbarsidev(x,y,X,Y,M)
27140ENDPROC
27150:
27160DEFPROCgraph_dbar(x,y,X,Y,M)
27170IFgraph_bartype%<10:X+=x ELSE Y+=y
27180REM OH: A bar
27190PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
27200PROCdfile_bput(0):PROCdfile_bput(group_data%?(M*42+2)):PROCdfile_bput(group_data%?(M*42+3)):PROCdfile_bput(group_data%?(M*42+4)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
27210PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(y)
27220PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(y)
27230PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
27240PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y)
27250PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(y)
27260PROCdfile_wput(0)
27270ENDPROC
27280:
27290DEFPROCgraph_dbarendh(x,y,X,Y,M)
27300X+=x
27310IFy>Y:SWAPy,Y
27320REM OH: A top and a bottom
27330PROCdfile_wput(2):PROCdfile_wput(24+16+12*7+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
27340PROCdfile_bput(0):PROCdfile_bfade(group_data%?(M*42+2),1):PROCdfile_bfade(group_data%?(M*42+3),1):PROCdfile_bfade(group_data%?(M*42+4),1):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
27350PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(y)
27360PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(y)
27370PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(y+15000)
27380PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(Y+15000)
27390PROCdfile_wput(8):PROCdfile_wput(x+15000):PROCdfile_wput(Y+15000)
27400PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y)
27410PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(y)
27420PROCdfile_wput(0)
27430ENDPROC
27440:
27450DEFPROCgraph_dbarendv(x,y,X,Y,M)
27460Y+=y
27470IFx>X:SWAPx,X
27480REM OH: A side
27490PROCdfile_wput(2):PROCdfile_wput(24+16+12*7+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
27500PROCdfile_bput(0):PROCdfile_bfade(group_data%?(M*42+2),2):PROCdfile_bfade(group_data%?(M*42+3),2):PROCdfile_bfade(group_data%?(M*42+4),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
27510PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(Y)
27520PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
27530PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(Y+15000)
27540PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(y+15000)
27550PROCdfile_wput(8):PROCdfile_wput(x+15000):PROCdfile_wput(y+15000)
27560PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(y)
27570PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y)
27580PROCdfile_wput(0)
27590ENDPROC
27600:
27610DEFPROCgraph_dbarsideh(x,y,X,Y,M)
27620IFgraph_bartype%<10:X+=x ELSE Y+=y
27630REM OH: A side
27640PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
27650PROCdfile_bput(0):PROCdfile_bfade(group_data%?(M*42+2),2):PROCdfile_bfade(group_data%?(M*42+3),2):PROCdfile_bfade(group_data%?(M*42+4),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
27660PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(y)
27670PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(y+15000)
27680PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(Y+15000)
27690PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
27700PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(y)
27710PROCdfile_wput(0)
27720ENDPROC
27730:
27740DEFPROCgraph_dbarsidev(x,y,X,Y,M)
27750Y+=y+graph_barwidth
27760REM OH: A top and a bottom
27770PROCdfile_wput(2):PROCdfile_wput(24+16+12*5+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(320000):PROCdfile_wput(220000)
27780PROCdfile_bput(0):PROCdfile_bfade(group_data%?(M*42+2),1):PROCdfile_bfade(group_data%?(M*42+3),1):PROCdfile_bfade(group_data%?(M*42+4),1):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
27790PROCdfile_wput(2):PROCdfile_wput(x):PROCdfile_wput(Y)
27800PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
27810PROCdfile_wput(8):PROCdfile_wput(X+15000):PROCdfile_wput(Y+15000)
27820PROCdfile_wput(8):PROCdfile_wput(x+15000):PROCdfile_wput(Y+15000)
27830PROCdfile_wput(8):PROCdfile_wput(x):PROCdfile_wput(Y)
27840PROCdfile_wput(0)
27850ENDPROC
27860:
27870DEFPROCdfile_bfade(N,M)
27880BPUT#X%,ABS(N-M*&10)
27890ENDPROC
27900:
27910:
27920DEFPROCbar_labels
27930$text%="Bar labels":PROCupdate_bottom
27940REM OH: Bar graph labels
27950FORA%=1TOdata_length%
27960PROCdata_sget(group_map%!24,A%)
27970O=0:REPEATO+=1:UNTILblock%?O=0
27980O+=4-(O MOD4)
27990IFtext_axisc<>0 THEN
28000 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO N
28010 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,X
28020 SYS"Font_LoseFont",N
28030ELSE
28040X=text_axisx*1000*FNlen(block%)
28050ENDIF
28060X=X*320/1000
28070CASEgraph_bartype%OF
28080 WHEN1 :Y%=(A%-.5)*graph_groupsize
28090 WHEN11:Y%=(A%-.5)*graph_groupsize
28100 WHEN2 :Y%=(A%-.5)*graph_groupsize
28110 WHEN12:Y%=(A%-.5)*graph_groupsize
28120 WHEN3 :Y%=(A%-.5)*graph_groupsize-graph_barsize/2
28130 WHEN13:Y%=(A%-.5)*graph_groupsize-graph_barsize/2
28140 WHEN4 :Y%=(A%-.5)*graph_groupsize-graph_barsize/2
28150 WHEN14:Y%=(A%-.5)*graph_groupsize-graph_barsize/2
28160 WHEN5 :Y%=(A%-1)*graph_groupsize+graph_barwidth/2+(graph_barmargin%AND1)*graph_barwidth
28170 WHEN15:Y%=(A%-1)*graph_groupsize+graph_barwidth/2+(graph_barmargin%AND1)*graph_barwidth
28180ENDCASE
28190IFgraph_bartype%<10:Y%-=X:ELSEY%-=190*text_axisy
28200PROCdfile_wput(1):PROCdfile_wput(24+28+O):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
28210PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
28220PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy)
28230IFgraph_bartype%<10:PROCdfile_wput(20000+(graph_barmargin%AND1)*graph_barsize+Y%):PROCdfile_wput(15000-380*text_axisy)
28240IFgraph_bartype%>10:PROCdfile_wput(16000-X*2):PROCdfile_wput(20000+(graph_barmargin%AND1)*graph_barsize+Y%)
28250PROCdfile_sput(block%)
28260NEXT
28270ENDPROC
28280:
28290DEFPROCgraph_pie(X,Y,R%)
28300IFgraph_3D%:Y+=10000
28310O=0:FORN%=1TOdata_length%:O+=FNdata_get(group_map%!(group%*4),N%):NEXT:IFO=0:O=1
28320IFgraph_3D%:PROCgraph_piebase
28330PROCgraph_piecrust
28340N=group_map%!24:IFN>0ANDN<=data_width%:PROCpie_labels
28350ENDPROC
28360:
28370DEFPROCgraph_piecrust
28380A=0:FORN%=1TOdata_length%
28390B=FNdata_get(group_map%!(group%*4),N%)
28400IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X+=.1*R%*SIN(N/O*PI*2):Y+=.1*R%*COS(N/O*PI*2)
28410M%=0:N=B:REPEATN-=O/4:M%+=1:UNTILN<=0
28420REM OH: Pie segment
28430PROCdfile_wput(2):PROCdfile_wput(24+16+3*12+(28*M%)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
28440M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16
28450PROCdfile_bput(pie_palette%?(M%*4)):PROCdfile_bput(pie_palette%?(M%*4+1)):PROCdfile_bput(pie_palette%?(M%*4+2)):PROCdfile_bput(pie_palette%?(M%*4+3)):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
28460PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(Y)
28470PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2))
28480N=B:IFB>O/4:N=O/4
28490REPEAT
28500PROCdfile_wput(6)
28510PROCdfile_wput(X+R%*SIN(A/O*PI*2)+R%*N/O*2.25*SIN((A/O+.25)*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)+R%*N/O*2.25*COS((A/O+.25)*PI*2))
28520A+=N
28530PROCdfile_wput(X+R%*SIN(A/O*PI*2)+R%*N/O*2.25*SIN((A/O-.25)*PI*2)):PROCdfile_wput(Y+R%*COS(A/O*PI*2)+R%*N/O*2.25*COS((A/O-.25)*PI*2))
28540PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS(A/O*PI*2))
28550IFN=B:A%=TRUE
28560IFN<B:B-=O/4:A%=FALSE:IFN>B:N=B
28570UNTILA%
28580PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
28590PROCdfile_wput(0)
28600B=FNdata_get(group_map%!(group%*4),N%)
28610IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A-B/2:X-=.1*R%*SIN(N/O*PI*2):Y-=.1*R%*COS(N/O*PI*2)
28620PROCpoll_minorloop
28630NEXT
28640ENDPROC
28650:
28660DEFPROCgraph_piebase
28670Y-=10000
28680A=0:N%=1:B=FNdata_get(group_map%!(group%*4),N%)
28690REPEAT
28700 IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X+=.1*R%*SIN(N/O*PI*2):Y+=.1*R%*COS(N/O*PI*2)
28710 M%=0:N=B:REPEATN-=O/4:M%+=1:UNTILN<=0
28720 PROCgraph_steakandkidney
28730 IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A-B/2:X-=.1*R%*SIN(N/O*PI*2):Y-=.1*R%*COS(N/O*PI*2)
28740 N%+=1:B=FNdata_get(group_map%!(group%*4),N%)
28750UNTILA+B>O/2:L%=N%
28760A=O:FORN%=data_length%TOL%STEP-1
28770 B=FNdata_get(group_map%!(group%*4),N%):A-=B
28780 IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X+=.1*R%*SIN(N/O*PI*2):Y+=.1*R%*COS(N/O*PI*2)
28790 M%=0:N=B:REPEATN-=O/4:M%+=1:UNTILN<=0
28800 PROCgraph_steakandkidney:A-=B
28810 IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X-=.1*R%*SIN(N/O*PI*2):Y-=.1*R%*COS(N/O*PI*2)
28820 PROCpoll_minorloop
28830NEXT
28840Y+=10000
28850ENDPROC
28860:
28870DEFPROCgraph_steakandkidney
28880REM OH: Pie segment base
28890PROCdfile_wput(2):PROCdfile_wput(24+16+3*12+(28*M%)+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
28900M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16
28910PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
28920PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(Y)
28930PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2))
28940N=B:IFB>O/4:N=O/4
28950REPEAT
28960PROCdfile_wput(6)
28970PROCdfile_wput(X+R%*SIN(A/O*PI*2)+R%*N/O*2.25*SIN((A/O+.25)*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)+R%*N/O*2.25*COS((A/O+.25)*PI*2))
28980A+=N
28990PROCdfile_wput(X+R%*SIN(A/O*PI*2)+R%*N/O*2.25*SIN((A/O-.25)*PI*2)):PROCdfile_wput(Y+R%*COS(A/O*PI*2)+R%*N/O*2.25*COS((A/O-.25)*PI*2))
29000PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS(A/O*PI*2))
29010IFN=B:A%=TRUE
29020IFN<B:B-=O/4:A%=FALSE:IFN>B:N=B
29030UNTILA%
29040IFA>O:A-=O
29050PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
29060PROCdfile_wput(0)
29070B=FNdata_get(group_map%!(group%*4),N%):A-=B
29080IFA+B<=O/2THEN
29090 REM OH: Pie segment left wall
29100 PROCdfile_wput(2):PROCdfile_wput(24+16+4*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
29110 M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16
29120 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
29130 PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(Y+10000)
29140 PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
29150 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN((A+B)/O*PI*2)):PROCdfile_wput(Y+R%*COS(((A+B)/O)*PI*2))
29160 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN((A+B)/O*PI*2)):PROCdfile_wput(Y+R%*COS(((A+B)/O)*PI*2)+10000)
29170 PROCdfile_wput(0)
29180ENDIF
29190IFA<=3*O/4ANDA+B>=O/4 THEN
29200 REM OH: Pie segment curved wall
29210 PROCdfile_wput(2):PROCdfile_wput(24+16+4*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
29220 M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16
29230 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
29240 PROCdfile_wput(2):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2))
29250 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)+10000)
29260 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN((A+B)/O*PI*2)):PROCdfile_wput(Y+R%*COS(((A+B)/O)*PI*2)+10000)
29270 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN((A+B)/O*PI*2)):PROCdfile_wput(Y+R%*COS(((A+B)/O)*PI*2))
29280 PROCdfile_wput(0)
29290ENDIF
29300IFA>=O/2THEN
29310 REM OH: Pie segment right wall
29320 PROCdfile_wput(2):PROCdfile_wput(24+16+4*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
29330 M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16
29340 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
29350 PROCdfile_wput(2):PROCdfile_wput(X):PROCdfile_wput(Y+10000)
29360 PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y)
29370 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2))
29380 PROCdfile_wput(8):PROCdfile_wput(X+R%*SIN(A/O*PI*2)):PROCdfile_wput(Y+R%*COS((A/O)*PI*2)+10000)
29390 PROCdfile_wput(0)
29400ENDIF
29410M%=N%-1:M%+=16:REPEATM%-=16:UNTILM%<16
29420IFA<O/4ANDA+B>O/4THEN
29430 REM OH: Right side bit
29440 PROCdfile_wput(2):PROCdfile_wput(24+16+3*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
29450 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
29460 PROCdfile_wput(2):PROCdfile_wput(X+R%):PROCdfile_wput(Y)
29470 PROCdfile_wput(8):PROCdfile_wput(X+R%):PROCdfile_wput(Y+10000)
29480 PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y+10000)
29490 PROCdfile_wput(0)
29500ENDIF
29510IFA<O*3/4ANDA+B>O*3/4THEN
29520 REM OH: Left side bit
29530 PROCdfile_wput(2):PROCdfile_wput(24+16+3*12+4):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
29540 PROCdfile_bfade(pie_palette%?(M%*4),2):PROCdfile_bfade(pie_palette%?(M%*4+1),2):PROCdfile_bfade(pie_palette%?(M%*4+2),2):PROCdfile_bfade(pie_palette%?(M%*4+3),2):PROCdfile_wput(graph_outline%):PROCdfile_wput(0):PROCdfile_wput(0)
29550 PROCdfile_wput(2):PROCdfile_wput(X-R%):PROCdfile_wput(Y)
29560 PROCdfile_wput(8):PROCdfile_wput(X-R%):PROCdfile_wput(Y+10000)
29570 PROCdfile_wput(8):PROCdfile_wput(X):PROCdfile_wput(Y+10000)
29580 PROCdfile_wput(0)
29590ENDIF
29600A+=B
29610ENDPROC
29620:
29630DEFPROCpie_labels
29640IFR%<90000ANDNOTgraph_3D%ORR%<80000ANDgraph_3D%:ENDPROC
29650R%-=5000
29660$text%="Labels":PROCupdate_bottom
29670A=0:FORN%=1TOdata_length%
29680B=FNdata_get(group_map%!(group%*4),N%)
29690IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A+B/2:X+=.1*R%*SIN(N/O*PI*2):Y+=.1*R%*COS(N/O*PI*2)
29700PROCdata_sget(group_map%!24,N%)
29710L%=0:REPEATL%+=1:UNTILblock%?L%=0
29720L%+=4-(L% MOD4)
29730IFtext_axisc<>0 THEN
29740 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO A%
29750 SYS"Font_StringWidth",,block%,300000,200000,-1,block%+FNlen(block%)TO,,N
29760 SYS"Font_LoseFont",A%
29770ELSE
29780N=text_axisx*1000*FNlen(block%)
29790ENDIF
29800A+=B/2
29810M=0:IFA/O>.25ANDA/O<.75:M=(320*text_axisy)
29820IFgraph_3D%ANDA/O>.25ANDA/O<.75:M+=10000
29830N=N*640/1000:IFA<O/2:N=0
29840REM OH: Pie chart labels
29850PROCdfile_wput(1):PROCdfile_wput(24+28+L%):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
29860PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
29870PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy)
29880PROCdfile_wput(X+R%*1.1*SIN(A/O*PI*2)-N):PROCdfile_wput(Y+R%*1.1*COS((A/O)*PI*2)-M)
29890PROCdfile_sput(block%)
29900A+=B/2
29910IFgraph_exp%ANDN%>=graph_es%ANDN%<=graph_ef%:N=A-B/2:X-=.1*R%*SIN(N/O*PI*2):Y-=.1*R%*COS(N/O*PI*2)
29920NEXT
29930ENDPROC
29940:
29950DEFPROCgraph_piekey(x,y):IFNOTgraph_key%:ENDPROC
29960A=group_data%+group%*42+11
29970IFtext_axisc<>0 THEN
29980 SYS"Font_FindFont",,font_list%+text_axisc*40,text_axisx*16,text_axisy*16,0,0 TO M
29990 SYS"Font_StringWidth",,A,300000,200000,-1,A+FNlen(A)TO,,N
30000 SYS"Font_LoseFont",M
30010ELSE
30020N=text_axisx*1000*FNlen(A)
30030ENDIF
30040x-=N*320/1000
30050IFA%>Y:y-=320*text_axisy
30060L%=FNlen(A):L%+=4-(L% MOD4)
30070REM OH: Pie chart keys
30080PROCdfile_wput(1):PROCdfile_wput(24+28+L%):PROCdfile_wput(0):PROCdfile_wput(0):PROCdfile_wput(300000):PROCdfile_wput(200000)
30090PROCdfile_wput(0):PROCdfile_bput(?graph_back%):PROCdfile_bput(graph_back%?1):PROCdfile_bput(graph_back%?2):PROCdfile_bput(graph_back%?3)
30100PROCdfile_wput(graph_axisc):PROCdfile_wput(640*text_axisx):PROCdfile_wput(640*text_axisy)
30110PROCdfile_wput(x):PROCdfile_wput(y)
30120PROCdfile_sput(A)
30130ENDPROC
30140:
30150:
30160DEFPROCdfile_put($block%)
30170FORN=0TOFNlen(block%)-1
30180BPUT#X%,block%?N
30190NEXT
30200ENDPROC
30210:
30220DEFPROCdfile_sput(X)
30230M%=4
30240E%=0:REPEAT
30250D%=X?E%
30260IFD%=10ORD%=13:D%=0
30270BPUT#X%,D%:M%-=1:IFM%=0:M%=4
30280E%+=1:UNTILD%=0
30290IFM%=4:ENDPROC
30300FORN=1TOM%
30310BPUT#X%,0
30320NEXT
30330ENDPROC
30340:
30350DEFPROCdfile_sputl(X,R%)
30360N%=0:REPEAT
30370BPUT#X%,X?N%
30380N%+=1:UNTILN%=R%
30390ENDPROC
30400:
30410DEFPROCdfile_wput(N):!mess%=N
30420BPUT#X%,?mess%:BPUT#X%,mess%?1:BPUT#X%,mess%?2:BPUT#X%,mess%?3
30430ENDPROC
30440:
30450DEFPROCfile_wget(N)
30460?mess%=BGET#X%:mess%?1=BGET#X%:mess%?2=BGET#X%:mess%?3=BGET#X%
30470!N=!mess%
30480ENDPROC
30490:
30500DEFPROCdfile_bput(N)
30510BPUT#X%,N
30520ENDPROC
30530:
30540DEFFNdata_get(E%,F%)
30550E%-=1:F%-=1
30560Y%=&8001
30570FORC%=0TOE%+F%*data_width%
30580a$=""
30590REPEAT
30600N=Z%?Y%:Y%+=1
30610a$+=CHR$N
30620UNTILN=44ORN=13ORN=10ORN=0
30630NEXT
30640IFN=44:a$=LEFT$(a$,LENa$-1)
30650=VALa$
30660:
30670DEFPROCdata_sget(E%,F%)
30680E%-=1:F%-=1
30690Y%=&8001
30700FORC%=0TOE%+F%*data_width%
30710M=0
30720REPEAT
30730N=Z%?Y%:Y%+=1
30740block%?M=N:M+=1
30750UNTILN=44ORN=13ORN=10ORN=0ORM=255
30760NEXT:block%?(M-1)=0
30770ENDPROC
30780:
30790REM ********** It's nice to know what's going on **********
30800:
30810DEFPROCupdate_start
30820graph_window%=FALSE:!block%=handle_pane%:SYS"Wimp_CloseWindow",,block%:!block%=handle_format%:SYS"Wimp_CloseWindow",,block%:!block%=handle_create%:SYS"Wimp_CloseWindow",,block%
30830!block%=-1:block%!4=I%:block%!8=&400000:block%!12=&400000:SYS"Wimp_SetIconState",,block%
30840SYS"OS_ReadModeVariable",-1,11TO,,J%
30850SYS"OS_ReadModeVariable",-1,12TO,,K%
30860SYS"OS_ReadModeVariable",-1,5TO,,M:K%=K%*(2^M)
30870SYS"OS_ReadModeVariable",-1,4TO,,M:J%=J%*(2^M)
30880J%=J%DIV2-272:K%=K%DIV2+88
30890ind_upd%?35=48+graph_type%
30900!block%=handle_update%:block%!4=J%:block%!8=0:block%!12=J%+1200:block%!16=K%:block%!20=0:block%!24=0:block%!28=-1:SYS"Wimp_OpenWindow",,block%
30910ENDPROC
30920:
30930DEFPROCupdate_top
30940$(ind_upd%+40)=$text%
30950!block%=handle_update%:block%!4=3:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
30960$text%="���":PROCupdate_bottom
30970PROCpoll_minorloop
30980ENDPROC
30990:
31000DEFPROCupdate_bottom
31010$(ind_upd%+63)=$text%
31020!block%=handle_update%:block%!4=4:block%!8=0:block%!12=0:SYS"Wimp_SetIconState",,block%
31030PROCpoll_minorloop
31040ENDPROC
31050:
31060DEFPROCupdate_smash
31070!block%=handle_update%:SYS"Wimp_CloseWindow",,block%
31080!block%=-1:block%!4=I%:block%!8=0:block%!12=&400000:SYS"Wimp_SetIconState",,block%
31090ENDPROC
31100:
31110DEFPROCpoll_minorloop:IFupdate_faster%:ENDPROC
31120SYS"Wimp_Poll",&1932,block%TOevent%
31130IFevent%=2:SYS"Wimp_OpenWindow",,block%:ENDPROC
31140IFevent%=17ORevent%=18ORevent%=19:IFblock%!16=8:PROCbyebye_prequit
31150IFevent%=17ORevent%=18ORevent%=19:IFblock%!16=0:CLOSE#X%:PROCbyebye_shutdown
31160IFevent%=6ANDblock%!8=2ANDblock%!12=handle_update%:PROCmenu_update
31170IFevent%=9:PROCupdate_faster
31180ENDPROC
31190:
31200DEFPROCbyebye_prequit
31210N=FNmessage("GraphPlus is creating a graph. Do you want to terminate application?",3)
31220IFN=2:N=block%!4:block%!4=task%:block%!12=block%!8:SYS"Wimp_SendMessage",19,block%,N
31230ENDPROC
31240:
31250DEFPROCmenu_update:SYS"Wimp_CreateMenu",,menu_task%,!block%-64,block%!4:menu_current%=256:ENDPROC
31260:
31270DEFPROCupdate_faster
31280$text%="Single tasking mode":PROCupdate_top
31290$text%="Please wait":PROCupdate_bottom
31300update_faster%=TRUE
31310ENDPROC
� ++----------------------++
� || GraphPlus (RunImage) ||
� || by Pete Goodliffe ||
( � || � Trax Software 1995 ||
2 � || v3.08 10-Jan-95 ||
< � ++----------------------++
F:
P(� �0,"Startup error; "+�$+" "+�~(�)
Zș"Hourglass_On"
d3�init_init:�init_prog:�init_wimp:�init_template
n
� �error
xș"Hourglass_Off"
��init_firstwindow
�mask%=1
�:
��
�$ș"Wimp_Poll",mask%,poll%�event%
�
Ȏevent%�
� �1 :�window_requestRedraw
� �2 :�window_requestOpen
� �3 :�window_requestClose
� �6 :�mouse_click
� �7 :�drag_userdragbox
� �8 :�keypressed
� �9 :�menu_selection
�17:�message_process
�18:�message_process
�
"��
,:
6&� ********** Initialise **********
@:
J��init_init
T+�block%&1000,poll%256,mess%256,data%100
^�
h:
r��init_prog
|graph_window%=�
�:
�#� font_list%10280,font_path%256
�font_counter%=0:font_c%=0
�9� file_temp%256:$file_temp%="Template":file_status%=0
�-� file_graph%256:$file_graph%="GraphFile"
�1� group_map%28,group_data%251,pie_palette% 64
�flag_fiddled%=�
�:
�� Graph info
�graph_xdiv=1
�graph_ydiv=1
�graph_xsdiv=.5
�graph_ysdiv=.5
0graph_title%=1:graph_xaxis%=1:graph_yaxis%=1
%�s_title%40,s_xaxis%40,s_yaxis%40
7graph_xg%=1:graph_yg%=2:graph_xcal%=1:graph_ycal%=1
&(graph_exp%=1:graph_es%=1:graph_ef%=1
0� text% 40
:text_titlec=0
Dgraph_titlec=0
Ntext_titlex=20
Xtext_titley=25
btext_axisc=0
lgraph_axisc=0
vtext_axisx=10
�text_axisy=10
�text_keyc=0
�graph_keyc=0
�text_keyx=10
�text_keyy=10
�graph_best%=2
��data_back%3,graph_back%3
�H?graph_back%=0:graph_back%?1=&80:graph_back%?2=&80:graph_back%?3=&F0
�!data_back%=!graph_back%
�graph_box%=�
�graph_key%=�
�graph_3D%=�
�graph_outline%=0
graph_groupsize=0
graph_barwidth=0
graph_barsize=0
graph_bartype%=0
*graph_barmargin%=0
4"graph_type%=1:handle_format%=0
>graph_xmin=0:graph_ymin=0
Hgraph_xmax=0:graph_ymax=0
R!graph_xscale=0:graph_yscale=0
\graph_overlay%=�
f:
p� Data file info
zdata_length%=9
�data_width%=4
�data_xmin=0
�data_ymin=0
�data_xmax=7
�data_ymax=6
�:
�update_faster%=�
��menu_fontlist%6172
��font_dothebusiness
��
�:
���init_wimp
�menu_current%=0
@ș"Wimp_Initialise",200,&4B534154,"GraphPlus"�version%,task%
�!block%=-1:block%!4=0:block%!8=0:block%!12=68:block%!16=68:block%!20=&301A:$(block%+24)="!GraphPlus":ș"Wimp_CreateIcon",,block%�I%
Y$block%="<GraphPlus$Dir>.Sprites":ș"OS_ReadModeVariable",-1,5�,,N:�N<2:$block%+="22"
N=�$block%
$
M=�#N:�#N
."� sprites% M+20:!sprites%=M+20
8*ș"OS_SpriteOp",10+256,sprites%,block%
B�init_windows:�init_menus
LAș"XOS_SWINumberFromString",,"DragASprite_Start" � dstart%; N
V�(N � 1) dstart%=0
`�
j:
t:
~��init_windows
��� ind_inf%139,ind_dp%260,ind_sa%269,ind_sg%269,ind_fnt%173,ind_map%99,ind_lab%69,ind_bck%91,ind_grp%289,ind_frm%92,ind_pn%995,ind_upd%86
�@$block%="<Obey$Dir>.Templates":ș"Wimp_OpenTemplate",,block%
�$poll%="Info"
�Bș"Wimp_LoadTemplate",,block%,ind_inf%,ind_inf%+139,-1,poll%,0
�block%!64=sprites%
�.ș"Wimp_CreateWindow",,block%�handle_info%
�$poll%="Group"
�Bș"Wimp_LoadTemplate",,block%,ind_grp%,ind_grp%+289,-1,poll%,0
�block%!64=sprites%
�/ș"Wimp_CreateWindow",,block%�handle_group%
�$poll%="Format"
�Aș"Wimp_LoadTemplate",,block%,ind_frm%,ind_frm%+92,-1,poll%,0
block%!64=sprites%
0ș"Wimp_CreateWindow",,block%�handle_format%
$poll%="Pane"
@ș"Wimp_LoadTemplate",,block%,ind_pn%,ind_pn%+995,-1,poll%,0
(block%!64=sprites%
2.ș"Wimp_CreateWindow",,block%�handle_pane%
<$poll%="Map"
FAș"Wimp_LoadTemplate",,block%,ind_map%,ind_map%+99,-1,poll%,0
Pblock%!64=sprites%
Z-ș"Wimp_CreateWindow",,block%�handle_map%
d$poll%="Back"
nAș"Wimp_LoadTemplate",,block%,ind_bck%,ind_bck%+91,-1,poll%,0
xblock%!64=sprites%
�.ș"Wimp_CreateWindow",,block%�handle_back%
�$poll%="Font"
�Bș"Wimp_LoadTemplate",,block%,ind_fnt%,ind_fnt%+173,-1,poll%,0
�block%!64=sprites%
�.ș"Wimp_CreateWindow",,block%�handle_font%
�$poll%="SaveAs"
�@ș"Wimp_LoadTemplate",,block%,ind_sa%,ind_sa%+269,-1,poll%,0
�.ș"Wimp_CreateWindow",,block%�handle_save%
�$poll%="SaveGraph"
�@ș"Wimp_LoadTemplate",,block%,ind_sg%,ind_sg%+269,-1,poll%,0
�0ș"Wimp_CreateWindow",,block%�handle_create%
�$poll%="Label"
�Aș"Wimp_LoadTemplate",,block%,ind_lab%,ind_lab%+69,-1,poll%,0
block%!64=sprites%
/ș"Wimp_CreateWindow",,block%�handle_label%
$poll%="Datapath"
"@ș"Wimp_LoadTemplate",,block%,ind_dp%,ind_dp%+260,-1,poll%,0
,2ș"Wimp_CreateWindow",,block%�handle_datapath%
6$poll%="Update"
@Aș"Wimp_LoadTemplate",,block%,ind_upd%,ind_upd%+86,-1,poll%,0
Jblock%!64=sprites%
T0ș"Wimp_CreateWindow",,block%�handle_update%
^ș"Wimp_CloseTemplate"
h�
r:
|���init_menus:�menu_bar%244,menu_win%196,menu_style%196,menu_groups%76,menu_group%172,menu_map%196,menu_best%76,menu_font%100,menu_file%100,menu_palette%412,menu_task%48
�$menu_bar%="GraphPlus"
�omenu_bar%?12=7:menu_bar%?13=2:menu_bar%?14=7:menu_bar%?15=0:menu_bar%!16=124:menu_bar%!20=44:menu_bar%!24=0
�=�menu_additem(0,menu_bar%,0,handle_info%,&7009021,"Info")
�=�menu_additem(1,menu_bar%,0,menu_style%,&7009021,"Style")
�?�menu_additem(2,menu_bar%,0,menu_groups%,&7009021,"Groups")
�;�menu_additem(3,menu_bar%,2,menu_file%,&7009021,"File")
�3�menu_additem(4,menu_bar%,1,-1,&7009021,"Line")
�2�menu_additem(5,menu_bar%,0,-1,&7009021,"Bar")
�2�menu_additem(6,menu_bar%,0,-1,&7009021,"Pie")
�4�menu_additem(7,menu_bar%,2,-1,&7009021,"Table")
�5�menu_additem(8,menu_bar%,128,-1,&7009021,"Quit")
�$menu_win%="Format"
�omenu_win%?12=7:menu_win%?13=2:menu_win%?14=7:menu_win%?15=0:menu_win%!16=170:menu_win%!20=44:menu_win%!24=0
=�menu_additem(0,menu_win%,0,menu_style%,&7009021,"Style")
?�menu_additem(1,menu_win%,0,menu_groups%,&7009021,"Groups")
;�menu_additem(2,menu_win%,2,menu_file%,&7009021,"File")
&3�menu_additem(3,menu_win%,1,-1,&7009021,"Line")
02�menu_additem(4,menu_win%,0,-1,&7009021,"Bar")
:2�menu_additem(5,menu_win%,0,-1,&7009021,"Pie")
D6�menu_additem(6,menu_win%,128,-1,&7009021,"Table")
N$menu_style%="Style"
X}menu_style%?12=7:menu_style%?13=2:menu_style%?14=7:menu_style%?15=0:menu_style%!16=170:menu_style%!20=44:menu_style%!24=0
b4�menu_additem(0,menu_style%,0,-1,&7009021,"Key")
lE�menu_additem(1,menu_style%,9,handle_back%,&7009021,"Background")
v>�menu_additem(2,menu_style%,0,menu_font%,&7009021,"Fonts")
�A�menu_additem(3,menu_style%,0,menu_best%,&7009021,"Best fit")
�C�menu_additem(4,menu_style%,0,menu_palette%,&7009021,"Palette")
�:�menu_additem(5,menu_style%,0,-1,&7009021,"3D graphs")
�:�menu_additem(6,menu_style%,129,-1,&7009021,"Outline")
�$menu_font%="Fonts"
�vmenu_font%?12=7:menu_font%?13=2:menu_font%?14=7:menu_font%?15=0:menu_font%!16=108:menu_font%!20=44:menu_font%!24=0
�?�menu_additem(0,menu_font%,8,handle_font%,&7009021,"Title")
�>�menu_additem(1,menu_font%,8,handle_font%,&7009021,"Axis")
�?�menu_additem(2,menu_font%,136,handle_font%,&7009021,"Key")
�$menu_best%="Best fit"
�vmenu_best%?12=7:menu_best%?13=2:menu_best%?14=7:menu_best%?15=0:menu_best%!16=108:menu_best%!20=44:menu_best%!24=0
�6�menu_additem(0,menu_best%,0,-1,&7009021,"X on Y")
�8�menu_additem(1,menu_best%,129,-1,&7009021,"Y on X")
$menu_file%="File"
vmenu_file%?12=7:menu_file%?13=2:menu_file%?14=7:menu_file%?15=0:menu_file%!16=140:menu_file%!20=44:menu_file%!24=0
>�menu_additem(0,menu_file%,8,handle_save%,&7009021,"Save")
F�menu_additem(1,menu_file%,8,handle_datapath%,&7009021,"Datapath")
*9�menu_additem(2,menu_file%,128,-1,&7009021,"Default")
4$menu_groups%="Groups"
>�menu_groups%?12=7:menu_groups%?13=2:menu_groups%?14=7:menu_groups%?15=0:menu_groups%!16=170:menu_groups%!20=44:menu_groups%!24=0
H<�menu_additem(0,menu_groups%,0,menu_map%,&7009021,"Map")
RB�menu_additem(1,menu_groups%,128,menu_group%,&7009021,"Style")
\$menu_group%="Group style"
f}menu_group%?12=7:menu_group%?13=2:menu_group%?14=7:menu_group%?15=0:menu_group%!16=140:menu_group%!20=44:menu_group%!24=0
pC�menu_additem(0,menu_group%,8,handle_group%,&7009021,"Group 1")
zC�menu_additem(1,menu_group%,8,handle_group%,&7009021,"Group 2")
�C�menu_additem(2,menu_group%,8,handle_group%,&7009021,"Group 3")
�C�menu_additem(3,menu_group%,8,handle_group%,&7009021,"Group 4")
�C�menu_additem(4,menu_group%,8,handle_group%,&7009021,"Group 5")
�E�menu_additem(5,menu_group%,136,handle_group%,&7009021,"Group 6")
�$menu_map%="Map groups"
�omenu_map%?12=7:menu_map%?13=2:menu_map%?14=7:menu_map%?15=0:menu_map%!16=140:menu_map%!20=44:menu_map%!24=0
�?�menu_additem(0,menu_map%,8,handle_map%,&7009021,"Group 1")
�?�menu_additem(1,menu_map%,8,handle_map%,&7009021,"Group 2")
�?�menu_additem(2,menu_map%,8,handle_map%,&7009021,"Group 3")
�?�menu_additem(3,menu_map%,8,handle_map%,&7009021,"Group 4")
�?�menu_additem(4,menu_map%,8,handle_map%,&7009021,"Group 5")
�?�menu_additem(5,menu_map%,8,handle_map%,&7009021,"Group 6")
�B�menu_additem(6,menu_map%,136,handle_label%,&7009021,"Labels")
$menu_palette%="Palette"
�menu_palette%?12=7:menu_palette%?13=2:menu_palette%?14=7:menu_palette%?15=0:menu_palette%!16=108:menu_palette%!20=44:menu_palette%!24=0
B�menu_additem(0,menu_palette%,8,handle_back%,&7009021,"Pie 1")
$B�menu_additem(1,menu_palette%,8,handle_back%,&7009021,"Pie 2")
.B�menu_additem(2,menu_palette%,8,handle_back%,&7009021,"Pie 3")
8B�menu_additem(3,menu_palette%,8,handle_back%,&7009021,"Pie 4")
BB�menu_additem(4,menu_palette%,8,handle_back%,&7009021,"Pie 5")
LB�menu_additem(5,menu_palette%,8,handle_back%,&7009021,"Pie 6")
VB�menu_additem(6,menu_palette%,8,handle_back%,&7009021,"Pie 7")
`B�menu_additem(7,menu_palette%,8,handle_back%,&7009021,"Pie 8")
jB�menu_additem(8,menu_palette%,8,handle_back%,&7009021,"Pie 9")
tC�menu_additem(9,menu_palette%,8,handle_back%,&7009021,"Pie 10")
~D�menu_additem(10,menu_palette%,8,handle_back%,&7009021,"Pie 11")
�D�menu_additem(11,menu_palette%,8,handle_back%,&7009021,"Pie 12")
�D�menu_additem(12,menu_palette%,8,handle_back%,&7009021,"Pie 13")
�D�menu_additem(13,menu_palette%,8,handle_back%,&7009021,"Pie 14")
�D�menu_additem(14,menu_palette%,8,handle_back%,&7009021,"Pie 15")
�F�menu_additem(15,menu_palette%,136,handle_back%,&7009021,"Pie 16")
�$menu_fontlist%="Palette"
�|menu_fontlist%?12=7:menu_fontlist%?13=2:menu_fontlist%?14=7:menu_fontlist%?15=0:menu_fontlist%!20=44:menu_fontlist%!24=0
�$menu_task%="GraphPlus"
�vmenu_task%?12=7:menu_task%?13=2:menu_task%?14=7:menu_task%?15=0:menu_task%!16=124:menu_task%!20=44:menu_task%!24=0
�8�menu_additem(0,menu_task%,128,-1,&7009021,"Faster")
��
�:
���menu_additem(item%,addr%,flag%,pointer%,icon%,item$):addr%!(28+(item%*24))=flag%:addr%!(32+(item%*24))=pointer%:addr%!(36+(item%*24))=icon%
��item$<>"PommeDeTerre"$(addr%+40+(item%*24))=item$�addr%!(40+(item%*24))=B%:addr%!(44+(item%*24))=V%:addr%!(48+(item%*24))=L%
�
:
(@��menu_tick(item%,addr%,flag%):addr%!(28+(item%*24))=flag%:�
2:
<��init_firstwindow
F&ș"OS_ReadModeVariable",-1,11�,,J%
P&ș"OS_ReadModeVariable",-1,12�,,K%
Z0ș"OS_ReadModeVariable",-1,5�,,M:K%=K%*(2^M)
d0ș"OS_ReadModeVariable",-1,4�,,M:J%=J%*(2^M)
nJ%=J%�2-268:K%=K%�2+166
x+ș"Wimp_CreateMenu",,handle_info%,J%,K%
��
�:
���init_template
�%$block%="<GraphPlus$Dir>.Default"
� ș"XOS_Find",&42,block%�X%;N
�R�(N �1)=1�X%=0:N=�message("GraphPlus is unable to find the default file.",1):�
��load_tempfile
�ș"OS_Find",0,X%
��
�:
�:
�+� ********** Polled routines **********
�:
%� ********** Key event **********
:
8� This could be the start of a beautiful friendship!
"��keypressed
,'�!poll%=handle_group%:�group_return
6-�!poll%=handle_map%:button%=4:�map_return
@9�!poll%=handle_label%�poll%!24=13:button%=4:�label_OK
J%�!poll%=handle_back%:�back_return
T%�!poll%=handle_font%:�font_return
^1�!poll%=handle_save%�poll%!24=13:�save_tempOK
h5�!poll%=handle_create%�poll%!24=13:�save_createOK
r%�!poll%=handle_pane%:�pane_return
|"ș"Wimp_ProcessKey",poll%!24:�
�:
�:
�'� ********** Mouse Stuff **********
�:
�(��mouse_click:�button%,handle%,icon%
�Hx%=!poll%:y%=poll%!4:button%=poll%!8:handle%=poll%!12:icon%=poll%!16
�'�button%=2�handle%=-2:�menu_iconbar
�I�button%=2�(handle%=handle_format%�handle%=handle_pane%):�menu_format
�1�button%<>2�handle%=handle_group%:�menu_group
�-�button%<>2�handle%=handle_map%:�menu_map
�1�button%<>2�handle%=handle_label%:�menu_label
�/�button%<>2�handle%=handle_back%:�menu_back
�/�button%<>2�handle%=handle_font%:�menu_font
9�button%=4�handle%=-2�graph_window%:�window_liftgraph
:�button%=4�handle%=-2��graph_window%:�window_opengraph
<�icon%=0�button%=64�handle%=handle_save%:�drag_startsave
&9�button%<>2�icon%=2�handle%=handle_save%:�save_tempOK
0@�icon%=0�button%=64�handle%=handle_create%:�drag_startcreate
:=�button%<>2�icon%=2�handle%=handle_create%:�save_createOK
D5�button%<>2�handle%=handle_format%:�format_select
N1�button%<>2�handle%=handle_pane%:�pane_select
X��handle%=handle_pane%�icon%<>2�icon%<>5�icon%<>9�icon%<>11�icon%<>14�icon%<>16�icon%<>19�icon%<>23�icon%<>25�icon%<>28�icon%<>30�icon%<>46�icon%<>50�button%<>2:flag_fiddled%=�
b�
l:
v:
�&� ********** Menu stuff **********
�:
�M��menu_iconbar:ș"Wimp_CreateMenu",,menu_bar%,x%-64,540:menu_current%=1:�
�:
�K��menu_format:ș"Wimp_CreateMenu",,menu_win%,x%-32,y%:menu_current%=2:�
�:
���menu_opengroup
�group%=poll%!40
��group_calculate
�;ș"Wimp_CreateSubMenu",,handle_group%,poll%!24,poll%!28
��
�:
���menu_reopengroup
�group_calculate
5ș"Wimp_ForceRedraw",handle_group%,0,-1024,1279,0
�
:
*��menu_openmap
4group%=poll%!40
>�map_calculate
H9ș"Wimp_CreateSubMenu",,handle_map%,poll%!24,poll%!28
R�
\:
f��menu_reopenmap
p�map_calculate
z3ș"Wimp_ForceRedraw",handle_map%,0,-1024,1279,0
��
�:
���menu_openlabel
�,group%=6:$(ind_lab%+38)=�(group_map%!24)
�;ș"Wimp_CreateSubMenu",,handle_label%,poll%!24,poll%!28
��
�:
���menu_reopenlabel
�,group%=6:$(ind_lab%+38)=�(group_map%!24)
�5ș"Wimp_ForceRedraw",handle_label%,0,-1024,1279,0
��
�:
���menu_openback
group%=255:�back_calculate
:ș"Wimp_CreateSubMenu",,handle_back%,poll%!24,poll%!28
3�caret_setpos(handle_back%,5,�len(ind_bck%+20))
$�
.:
8��menu_reopenback
B�back_calculate
L4ș"Wimp_ForceRedraw",handle_back%,0,-1024,1279,0
V3�caret_setpos(handle_back%,5,�len(ind_bck%+20))
`�
j:
t��menu_openpalette
~group%=poll%!40
��back_calculate
�:ș"Wimp_CreateSubMenu",,handle_back%,poll%!24,poll%!28
��
�:
���menu_openfont
�group%=poll%!40
��font_calculate
�:ș"Wimp_CreateSubMenu",,handle_font%,poll%!24,poll%!28
��
�:
���menu_reopenfont
��font_calculate
4ș"Wimp_ForceRedraw",handle_font%,0,-1024,1279,0
�
:
��menu_opensave
($(ind_sa%)=$file_temp%
2:ș"Wimp_CreateSubMenu",,handle_save%,poll%!24,poll%!28
<�
F:
P:
Z��group_calculate
dind_grp%?13=group%+49
n*ind_grp%?21=49+group_data%?(group%*42)
x,ind_grp%?26=48+group_data%?(group%*42+1)
�-$(ind_grp%+31)=�group_data%?(group%*42+2)
�,�group_bar(15,group_data%?(group%*42+2))
�-$(ind_grp%+44)=�group_data%?(group%*42+3)
�,�group_bar(21,group_data%?(group%*42+3))
�-$(ind_grp%+57)=�group_data%?(group%*42+4)
�,�group_bar(27,group_data%?(group%*42+4))
�3$(ind_grp%+74)=�(group_data%!(group%*42+5)/640)
�-ind_grp%?134=48+group_data%?(group%*42+9)
� N=group_data%?(group%*42+10)
�+!block%=handle_group%:block%!12=&200000
�8block%!4=63:�(N � 1)=1:block%!8=&200000 � block%!8=0
�!ș"Wimp_SetIconState",,block%
�8block%!4=64:�(N � 2)=2:block%!8=&200000 � block%!8=0
!ș"Wimp_SetIconState",,block%
9block%!4=65::�(N � 4)=4:block%!8=&200000 � block%!8=0
!ș"Wimp_SetIconState",,block%
"�
,:
6��map_calculate
@$(ind_map%+24)=�(group%+1)
J+$(ind_map%+33)=�(group_map%!(group%*4))
T.$(ind_map%+49)=$(group_data%+group%*42+11)
^�
h:
r��back_calculate
|�group%=255�
�s �back_bar(6,data_back%?1):�back_bar(12,data_back%?2):�back_bar(18,data_back%?3):$(ind_bck%+11)=�(data_back%?1)
�B $(ind_bck%+24)=�(data_back%?2):$(ind_bck%+37)=�(data_back%?3)
� $ind_bck%="Background"
��
�{ �back_bar(6,pie_palette%?(group%*4+1)):�back_bar(12,pie_palette%?(group%*4+2)):�back_bar(18,pie_palette%?(group%*4+3))
�� $(ind_bck%+11)=�(pie_palette%?(group%*4+1)):$(ind_bck%+24)=�(pie_palette%?(group%*4+2)):$(ind_bck%+37)=�(pie_palette%?(group%*4+3))
�! $ind_bck%="Pie "+�(group%+1)
��
��
�:
���font_calculate
�
Ȏgroup%�
�� �0:$ind_fnt%="Title font":$(ind_fnt%+43)=$(font_list%+text_titlec*40):$(ind_fnt%+131)=�text_titlex:$(ind_fnt%+144)=�text_titley:font_c%=text_titlec:$menu_fontlist%="Title font":�font_ticklist
� �1:$ind_fnt%="Axis font":$(ind_fnt%+43)=$(font_list%+text_axisc*40):$(ind_fnt%+131)=�text_axisx:$(ind_fnt%+144)=�text_axisy:font_c%=text_axisc:$menu_fontlist%="Axis font":�font_ticklist
� �2:$ind_fnt%="Key font":$(ind_fnt%+43)=$(font_list%+text_keyc*40):$(ind_fnt%+131)=�text_keyx:$(ind_fnt%+144)=�text_keyy:font_c%=text_keyc:$menu_fontlist%="Key font":�font_ticklist
�
&�
0:
:��font_ticklist
D\�N=0�font_counter%:menu_fontlist%!(28+N*24)=0:�:menu_fontlist%!(28+font_counter%*24)=128
N%menu_fontlist%!(28+font_c%*24)+=1
X�
b:
l��pane_calculate
v!block%=handle_pane%
�Kblock%!4=1:block%!12=&200000:�graph_title%:block%!8=&200000:�block%!8=0
�!ș"Wimp_SetIconState",,block%
�$(ind_pn%+24)=$s_title%
�9block%!4=4:�graph_xaxis%:block%!8=&200000:�block%!8=0
�!ș"Wimp_SetIconState",,block%
�$(ind_pn%+98)=$s_xaxis%
�8block%!4=6:�graph_xg%=1:block%!8=&200000:�block%!8=0
�!ș"Wimp_SetIconState",,block%
�8block%!4=7:�graph_xg%=2:block%!8=&200000:�block%!8=0
�!ș"Wimp_SetIconState",,block%
�$(ind_pn%+212)=�graph_xdiv
�$(ind_pn%+244)=�graph_xsdiv
�9block%!4=12:�graph_xcal%:block%!8=&200000:�block%!8=0
!ș"Wimp_SetIconState",,block%
$(ind_pn%+299)=�data_xmin
$(ind_pn%+318)=�data_xmax
:block%!4=18:�graph_yaxis%:block%!8=&200000:�block%!8=0
*!ș"Wimp_SetIconState",,block%
4$(ind_pn%+368)=$s_yaxis%
>9block%!4=20:�graph_yg%=1:block%!8=&200000:�block%!8=0
H!ș"Wimp_SetIconState",,block%
R9block%!4=21:�graph_yg%=2:block%!8=&200000:�block%!8=0
\!ș"Wimp_SetIconState",,block%
f$(ind_pn%+482)=�graph_ydiv
p$(ind_pn%+514)=�graph_ysdiv
z9block%!4=26:�graph_ycal%:block%!8=&200000:�block%!8=0
�!ș"Wimp_SetIconState",,block%
�$(ind_pn%+569)=�data_ymin
�$(ind_pn%+588)=�data_ymax
�>block%!8=0:�block%!4=33�37:ș"Wimp_SetIconState",,block%:�
�Pblock%!4=32+graph_bartype%�10:block%!8=&200000:ș"Wimp_SetIconState",,block%
�Dblock%!4=38:�(graph_barmargin%�1)=1:block%!8=&200000:�block%!8=0
�!ș"Wimp_SetIconState",,block%
�Hblock%!4=39:�(graph_barmargin%�128)=128:block%!8=&200000:�block%!8=0
�!ș"Wimp_SetIconState",,block%
�?block%!4=40:�graph_bartype%<10:block%!8=&200000:�block%!8=0
�!ș"Wimp_SetIconState",,block%
�?block%!4=41:�graph_bartype%>10:block%!8=&200000:�block%!8=0
�!ș"Wimp_SetIconState",,block%
8block%!4=43:�graph_exp%:block%!8=&200000:�block%!8=0
!ș"Wimp_SetIconState",,block%
$(ind_pn%+971)=�graph_es%
$$(ind_pn%+983)=�graph_ef%
.flag_fiddled%=�
87block%!8=0:block%!4=2:ș"Wimp_SetIconState",,block%
B,block%!4=5:ș"Wimp_SetIconState",,block%
L,block%!4=9:ș"Wimp_SetIconState",,block%
V-block%!4=11:ș"Wimp_SetIconState",,block%
`-block%!4=14:ș"Wimp_SetIconState",,block%
j-block%!4=16:ș"Wimp_SetIconState",,block%
t-block%!4=19:ș"Wimp_SetIconState",,block%
~-block%!4=23:ș"Wimp_SetIconState",,block%
�-block%!4=25:ș"Wimp_SetIconState",,block%
�-block%!4=28:ș"Wimp_SetIconState",,block%
�-block%!4=30:ș"Wimp_SetIconState",,block%
�-block%!4=46:ș"Wimp_SetIconState",,block%
�-block%!4=50:ș"Wimp_SetIconState",,block%
��
�:
���menu_selection
�Ȏmenu_current%�
� �1:�menu_selecticon
� �2:�menu_winselection
��
�
:
��menu_selecticon
Ȏpoll%!0�
( �1:�menu_selectstyle
2 �3:�menu_selectfile
< �4:�graph_select(1)
F �5:�graph_select(2)
P �6:�graph_select(3)
Z �7:�graph_select(4)
d �8:�byebye_shutdown
n�
x=ș"Wimp_GetPointerInfo",,block%:�block%!8=1:�menu_iconbar
��
�:
���menu_winselection
�Ȏpoll%!0�
� �0:�menu_selectstyle
� �2:�menu_selectfile
� �3:�graph_select(1)
� �4:�graph_select(2)
� �5:�graph_select(3)
� �6:�graph_select(4)
��
�<ș"Wimp_GetPointerInfo",,block%:�block%!8=1:�menu_format
��
:
��menu_selectstyle
Ȏpoll%!4�
" �0:�style_key
, �1:�style_box
6 �2:�style_fontselect
@ �3:�best_select
J �5:�style_3D
T �6:�style_outline
^�
h�
r:
|��menu_selectfile
�Ȏpoll%!4�
� �0:�save_tempOK
� �2:�file_default
��
��
�:
���menu_group
�N%=1:�button%=1N%=-1
��icon%=5:�group_po(-N%)
��icon%=7:�group_po(N%)
��icon%=9:�group_si(-N%)
��icon%=11:�group_si(N%)
��icon%=12:�group_r(-N%)
�icon%=13:�group_r(N%)
�icon%=18:�group_g(-N%)
�icon%=19:�group_g(N%)
&�icon%=24:�group_b(-N%)
0�icon%=25:�group_b(N%)
:�icon%=16:�group_rclick
D�icon%=22:�group_bclick
N�icon%=28:�group_gclick
X,�icon%>=30�icon%<=45:�group_cl(icon%-30)
b�icon%=49:�group_t(0)
l�icon%=50:�group_t(.25)
v�icon%=51:�group_t(.5)
��icon%=52:�group_t(1)
��icon%=53:�group_t(2)
��icon%=54:�group_t(4)
�,�icon%>=58�icon%<=61:�group_ln(icon%-57)
�B�icon%=66:�menu_reopengroup:�button%=4:ș"Wimp_CreateMenu",,-1
��icon%=67:�group_OK
��
�:
���menu_map
�N%=1:�button%=1N%=-1
��icon%=6:�map_gr(-N%)
��icon%=8:�map_gr(N%)
�?�icon%=12:�menu_reopenmap:�button%=4:ș"Wimp_CreateMenu",-1
�icon%=13:�map_OK
�
:
��menu_label
*N%=1:�button%=1N%=-1
4�icon%=6:�label_gr(-N%)
>�icon%=8:�label_gr(N%)
H@�icon%=9:�menu_reopenlabel:�button%=4:ș"Wimp_CreateMenu",-1
R�icon%=10:�label_OK
\�
f:
p��menu_back
zN%=1:�button%=1N%=-1
��icon%=3:�back_r(-N%)
��icon%=4:�back_r(N%)
��icon%=7:�back_rclick
��icon%=13:�back_bclick
��icon%=19:�back_gclick
��icon%=9:�back_g(-N%)
��icon%=10:�back_g(N%)
��icon%=15:�back_b(-N%)
��icon%=16:�back_b(N%)
�+�icon%>=21�icon%<=36:�back_cl(icon%-21)
�A�icon%=37:�menu_reopenback:�button%=4:ș"Wimp_CreateMenu",,-1
��icon%=38:�back_OK
��
:
��menu_font
N%=1:�button%=1N%=-1
$�icon%=5:�font_list
."�icon%=8:�font_w(8):�font_h(8)
8$�icon%=9:�font_w(10):�font_h(10)
B%�icon%=10:�font_w(12):�font_h(12)
L%�icon%=11:�font_w(14):�font_h(14)
V�icon%=13:�font_wi(-N%)
`�icon%=15:�font_wi(N%)
j�icon%=17:�font_hi(-N%)
t�icon%=19:�font_hi(N%)
~A�icon%=20:�menu_reopenfont:�button%=4:ș"Wimp_CreateMenu",,-1
��icon%=21:�font_OK
��
�:
���file_default
�N=�message("Click on OK to reset the current Template. Warning: This cannot be retrieved if has not been saved.",3):�N<>1:�
��init_template
�D�pane_calculate:ș"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0
��
�:
���format_select
��icon%=4:�graph_savebox
��icon%=5:�pane_calculate
�icon%=6:�pane_OK
�
:
��pane_select
(N%=1:�button%=1N%=-1
2�icon%=45:�pane_s(-N%)
<�icon%=47:�pane_s(N%)
F�icon%=49:�pane_f(-N%)
P�icon%=51:�pane_f(N%)
Z�
d:
n��pie_select
xN%=1:�button%=1N%=-1
��icon%=8:�pie_s(-N%)
��icon%=10:�pie_s(N%)
��icon%=12:�pie_f(-N%)
��icon%=14:�pie_f(N%)
��
�:
���group_po(N)
�M=ind_grp%?21-49
��M+N<0�M+N>7:�
�M+=N
�ind_grp%?21=M+49
�Y!block%=handle_group%:block%!4=6:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
��
:
��group_si(N)
M=ind_grp%?26-49
"�M+N<0�M+N>8:�
,M+=N
6ind_grp%?26=M+49
@Z!block%=handle_group%:block%!4=10:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
J�
T:
^��group_r(N)
hM=�$(ind_grp%+31)
r�M+N<0�M+N>255:�
|M+=N
�$(ind_grp%+31)=�M
�Z!block%=handle_group%:block%!4=14:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
��group_bar(15,M)
��group_colour
��
�:
���group_rclick
�9!block%=handle_group%:ș"Wimp_GetWindowState",,block%
�M=!poll%-block%!4-190
�$(ind_grp%+31)=�M
�poll%!4=14:�group_pro(31)
��
�:
��group_g(N)
M=�$(ind_grp%+44)
�M+N<0�M+N>255:�
&M+=N
0$(ind_grp%+44)=�M
:Z!block%=handle_group%:block%!4=20:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
D�group_bar(21,M)
N�group_colour
X�
b:
l��group_bclick
v9!block%=handle_group%:ș"Wimp_GetWindowState",,block%
�M=!poll%-block%!4-190
�$(ind_grp%+44)=�M
�poll%!4=20:�group_pro(44)
��
�:
���group_b(N)
�M=�$(ind_grp%+57)
��M+N<0�M+N>255:�
�M+=N
�$(ind_grp%+57)=�M
�Z!block%=handle_group%:block%!4=26:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
��group_bar(27,M)
��group_colour
�
:
��group_gclick
9!block%=handle_group%:ș"Wimp_GetWindowState",,block%
*M=!poll%-block%!4-190
4$(ind_grp%+57)=�M
>poll%!4=26:�group_pro(57)
H�
R:
\��group_cl(N)
f ș"Wimp_ReadPalette",,block%
p"$(ind_grp%+31)=�block%?(N*4+1)
z"$(ind_grp%+44)=�block%?(N*4+2)
�"$(ind_grp%+57)=�block%?(N*4+3)
�Z!block%=handle_group%:block%!4=14:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
�-block%!4=20:ș"Wimp_SetIconState",,block%
�-block%!4=26:ș"Wimp_SetIconState",,block%
�"�group_bar(15,�$(ind_grp%+31))
�"�group_bar(21,�$(ind_grp%+44))
�"�group_bar(27,�$(ind_grp%+57))
��group_colour
��
�:
���group_bar(N,M)
�^!block%=handle_group%:block%!4=N:ș"Wimp_GetIconState",,block%:ș"Wimp_DeleteIcon",,block%
�Hblock%!4=handle_group%:block%!16=196+M:ș"Wimp_CreateIcon",,block%+4
0!block%=handle_group%:block%!8=0:block%!12=0
,block%!4=N:ș"Wimp_SetIconState",,block%
4block%!4=(N-9)�6-1:ș"Wimp_SetIconState",,block%
$�
.:
8��group_colour
B!block%=handle_group%
L"ș"Wimp_GetWindowInfo",,block%
VR!block%=((�$(ind_grp%+57))<<24)+((�$(ind_grp%+44))<<16)+((�$(ind_grp%+31))<<8)
`)ș"ColourTrans_SetGCOL",!block%,,,0,0
j(ȓȐblock%!4+456,block%!8+228,164,28
t�
~:
���group_t(N)
�$(ind_grp%+74)=�N
�Z!block%=handle_group%:block%!4=48:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
��
�:
���group_ln(N)
�ind_grp%?134=N+48
�Z!block%=handle_group%:block%!4=57:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
��
�:
���group_return
�(N%=0:�poll%!24=13�poll%!24=&18E:N%=1
�poll%!24=&18F:N%=-1
V�poll%!4=20�N%=-1:�group_pro(44):�caret_setpos(handle_group%,14,�len(ind_grp%+31))
U�poll%!4=14�N%=1:�group_pro(31):�caret_setpos(handle_group%,20,�len(ind_grp%+44))
U�poll%!4=20�N%=1:�group_pro(44):�caret_setpos(handle_group%,26,�len(ind_grp%+57))
(U�poll%!4=26�N%=1:�group_pro(57):�caret_setpos(handle_group%,48,�len(ind_grp%+74))
2V�poll%!4=26�N%=-1:�group_pro(57):�caret_setpos(handle_group%,20,�len(ind_grp%+44))
<G�poll%!4=48�N%=-1:�caret_setpos(handle_group%,26,�len(ind_grp%+57))
Fg�poll%!4=48�poll%!24=13:button%=4:�ok_click(handle_group%,67):�group_OK:�ok_click(handle_group%,67)
P�
Z:
d��group_OK
n*group_data%?(group%*42)=ind_grp%?21-49
x,group_data%?(group%*42+1)=ind_grp%?26-48
�-group_data%?(group%*42+2)=�$(ind_grp%+31)
�-group_data%?(group%*42+3)=�$(ind_grp%+44)
�-group_data%?(group%*42+4)=�$(ind_grp%+57)
�3group_data%!(group%*42+5)=(�$(ind_grp%+74))*640
�-group_data%?(group%*42+9)=ind_grp%?134-48
�N=0:!block%=handle_group%
�-block%!4=63:ș"Wimp_GetIconState",,block%
�#�((block%!24) � &200000)>0:N+=1
�-block%!4=64:ș"Wimp_GetIconState",,block%
�#�((block%!24) � &200000)>0:N+=2
�-block%!4=65:ș"Wimp_GetIconState",,block%
�#�((block%!24) � &200000)>0:N+=4
� group_data%?(group%*42+10)=N
&�button%=4:ș"Wimp_CreateMenu",,-1
�
:
"��group_pro(N)
,!M=�$(ind_grp%+N):�M>255:M=255
6$(ind_grp%+N)=�M
@_!block%=handle_group%:block%!4=poll%!4:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
J�group_bar(poll%!4+1,M)
T�group_colour
^�
h:
r��map_gr(N)
|M=�$(ind_map%+33)
��M+N<0�M+N>999:�
�M+=N
�$(ind_map%+33)=�M
�W!block%=handle_map%:block%!4=7:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
�%ș"Wimp_GetCaretPosition",,block%
��block%!4<>7:�
�8ș"Wimp_SetCaretPosition",handle_map%,7,-1,-1,-1,��M
��
�:
���map_return
�(N%=0:�poll%!24=13�poll%!24=&18E:N%=1
��poll%!24=&18F:N%=-1
�D�poll%!4=11�N%=-1:�caret_setpos(handle_map%,7,�len(ind_map%+36))
C�poll%!4=7�N%=1:�caret_setpos(handle_map%,11,�len(ind_map%+49))
a�poll%!4=11�poll%!24=13:button%=4:�ok_click(handle_map%,13):�map_OK:�ok_click(handle_map%,13)
�
&:
0��map_OK
:)group_map%!(group%*4)=�$(ind_map%+33)
D.$(group_data%+group%*42+11)=$(ind_map%+49)
N&�button%=4:ș"Wimp_CreateMenu",,-1
X�
b:
l��label_gr(N)
vM=�$(ind_lab%+38)
��M+N<0�M+N>999:�
�M+=N
�$(ind_lab%+38)=�M
�Y!block%=handle_label%:block%!4=7:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
�%ș"Wimp_GetCaretPosition",,block%
��block%!4<>7:�
�:ș"Wimp_SetCaretPosition",handle_label%,7,-1,-1,-1,��M
��
�:
���label_OK
�!group_map%!24=�$(ind_lab%+38)
�&�button%=4:ș"Wimp_CreateMenu",,-1
��
!:
!��best_select
!N=poll%!8:graph_best%=N+1
! N�N=1:menu_best%?28=0:menu_best%?52=129::�menu_best%?28=1:menu_best%?52=128
!*�
!4:
!>��back_r(N)
!HM=�$(ind_bck%+11)
!R�M+N<0�M+N>255:�
!\M+=N
!f$(ind_bck%+11)=�M
!pX!block%=handle_back%:block%!4=5:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
!z�back_bar(6,M)
!��back_colour
!��
!�:
!���back_rclick
!�8!block%=handle_back%:ș"Wimp_GetWindowState",,block%
!�M=!poll%-block%!4-190
!�$(ind_bck%+11)=�M
!�poll%!4=5:�back_pro(11)
!��
!�:
!���back_g(N)
!�M=�$(ind_bck%+24)
!��M+N<0�M+N>255:�
"M+=N
"$(ind_bck%+24)=�M
"Y!block%=handle_back%:block%!4=11:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
"$�back_bar(12,M)
".�back_colour
"8�
"B:
"L��back_bclick
"V8!block%=handle_back%:ș"Wimp_GetWindowState",,block%
"`M=!poll%-block%!4-190
"j$(ind_bck%+24)=�M
"tpoll%!4=11:�back_pro(24)
"~�
"�:
"���back_b(N)
"�M=�$(ind_bck%+37)
"��M+N<0�M+N>255:�
"�M+=N
"�$(ind_bck%+37)=�M
"�Y!block%=handle_back%:block%!4=17:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
"��back_bar(18,M)
"��back_colour
"��
"�:
"���back_gclick
# 8!block%=handle_back%:ș"Wimp_GetWindowState",,block%
#
M=!poll%-block%!4-190
#$(ind_bck%+37)=�M
#poll%!4=17:�back_pro(37)
#(�
#2:
#<��back_cl(N)
#F ș"Wimp_ReadPalette",,block%
#P"$(ind_bck%+11)=�block%?(N*4+1)
#Z"$(ind_bck%+24)=�block%?(N*4+2)
#d"$(ind_bck%+37)=�block%?(N*4+3)
#nX!block%=handle_back%:block%!4=5:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
#x-block%!4=11:ș"Wimp_SetIconState",,block%
#�-block%!4=17:ș"Wimp_SetIconState",,block%
#� �back_bar(6,�$(ind_bck%+11))
#�!�back_bar(12,�$(ind_bck%+24))
#�!�back_bar(18,�$(ind_bck%+37))
#��back_colour
#��
#�:
#���back_bar(N,M)
#�]!block%=handle_back%:block%!4=N:ș"Wimp_GetIconState",,block%:ș"Wimp_DeleteIcon",,block%
#�Gblock%!4=handle_back%:block%!16=196+M:ș"Wimp_CreateIcon",,block%+4
#�<!block%=handle_back%:block%!4=N-1:block%!8=0:block%!12=0
#�2block%!4=(N)�6-1:ș"Wimp_SetIconState",,block%
#��
$:
$��back_colour
$!block%=handle_back%
$""ș"Wimp_GetWindowInfo",,block%
$,L!block%=(�$(ind_bck%+37)<<24)+(�$(ind_bck%+24)<<16)+(�$(ind_bck%+11)<<8)
$6)ș"ColourTrans_SetGCOL",!block%,,,0,0
$@(ȓȐblock%!4+454,block%!8+248,164,28
$J�
$T:
$^��back_return
$h(N%=0:�poll%!24=13�poll%!24=&18E:N%=1
$r�poll%!24=&18F:N%=-1
$|S�poll%!4=11�N%=-1:�back_pro(24):�caret_setpos(handle_back%,5,�len(ind_bck%+20))
$�R�poll%!4=5�N%=1:�back_pro(11):�caret_setpos(handle_back%,11,�len(ind_bck%+24))
$�T�poll%!4=17�N%=-1:�back_pro(37):�caret_setpos(handle_back%,11,�len(ind_bck%+24))
$�S�poll%!4=11�N%=1:�back_pro(24):�caret_setpos(handle_back%,17,�len(ind_bck%+37))
$�r�poll%!4=17�poll%!24=13:�back_pro(37):button%=4:�ok_click(handle_back%,38):�back_OK:�ok_click(handle_back%,38)
$��
$�:
$�
��back_OK
$��group%=255�
$�! data_back%?1=�$(ind_bck%+11)
$�! data_back%?2=�$(ind_bck%+24)
$�! data_back%?3=�$(ind_bck%+37)
$��
$�. pie_palette%?(group%*4+1)=�$(ind_bck%+11)
%. pie_palette%?(group%*4+2)=�$(ind_bck%+24)
%. pie_palette%?(group%*4+3)=�$(ind_bck%+37)
%�
%&&�button%=4:ș"Wimp_CreateMenu",,-1
%0�
%::
%D��back_pro(N)
%N�N>1000:N-=1000:N%=�:�N%=�
%X!M=�$(ind_bck%+N):�M>255:M=255
%b$(ind_bck%+N)=�M
%l^!block%=handle_back%:block%!4=poll%!4:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
%v�back_bar(poll%!4+1,M)
%��N%�back_colour
%��
%�:
%���style_key
%�/�graph_key%:graph_key%=�:menu_style%?28=0:�
%�#graph_key%=�:menu_style%?28=1:�
%�:
%���style_box
%�/�graph_box%:graph_box%=�:menu_style%?52=8:�
%�#graph_box%=�:menu_style%?52=9:�
%�:
%���style_3D
%�.�graph_3D%:graph_3D%=�:menu_style%?148=8:�
&#graph_3D%=�:menu_style%?148=9:�
&:
&��style_outline
& =�graph_outline%=0:graph_outline%=-1:menu_style%?172=128:�
&**graph_outline%=0:menu_style%?172=129:�
&4:
&>��font_list
&H�font_ticklist
&R#ș"Wimp_GetPointerInfo",,block%
&\;ș"Wimp_CreateSubMenu",,menu_fontlist%,!block%,block%!4
&f�
&p:
&z��style_fontselect
&�font_c%=poll%!16
&�+$(ind_fnt%+43)=$(font_list%+font_c%*40)
&�X!block%=handle_font%:block%!4=4:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
&�Ȏmenu_current%�
&�& �1:ș"Wimp_CreateMenu",,menu_bar%
&�& �2:ș"Wimp_CreateMenu",,menu_win%
&��
&��
&�:
&���font_wi(N)
&�M=�$(ind_fnt%+131)
&�
�M+N<=0:�
&��font_w(M+N)
'�
':
'��font_hi(N)
'$M=�$(ind_fnt%+144)
'.
�M+N<=0:�
'8�font_h(M+N)
'B�
'L:
'V��font_w(N)
'`$(ind_fnt%+131)=�N
'jY!block%=handle_font%:block%!4=14:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
't%ș"Wimp_GetCaretPosition",,block%
'~i�!block%=handle_font%�block%!4=14:ș"Wimp_SetCaretPosition",handle_font%,14,0,0,-1,�len(ind_fnt%+131)
'��
'�:
'���font_h(N)
'�$(ind_fnt%+144)=�N
'�Y!block%=handle_font%:block%!4=18:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
'�%ș"Wimp_GetCaretPosition",,block%
'�i�!block%=handle_font%�block%!4=18:ș"Wimp_SetCaretPosition",handle_font%,18,0,0,-1,�len(ind_fnt%+144)
'��
'�:
'���font_return
'�(N%=0:�poll%!24=13�poll%!24=&18E:N%=1
'��poll%!24=&18F:N%=-1
( G�poll%!4=18�N%=-1:�caret_setpos(handle_font%,14,�len(ind_fnt%+131))
(
F�poll%!4=14�N%=1:�caret_setpos(handle_font%,18,�len(ind_fnt%+144))
(d�poll%!4=18�poll%!24=13:button%=4:�ok_click(handle_font%,21):�font_OK:�ok_click(handle_font%,21)
(�
((:
(2
��font_OK
(<
Ȏgroup%�
(FU �0:text_titlec=font_c%:text_titlex=�$(ind_fnt%+131):text_titley=�$(ind_fnt%+144)
(PR �1:text_axisc=font_c%:text_axisx=�$(ind_fnt%+131):text_axisy=�$(ind_fnt%+144)
(ZO �2:text_keyc=font_c%:text_keyx=�$(ind_fnt%+131):text_keyy=�$(ind_fnt%+144)
(d�
(n&�button%=4:ș"Wimp_CreateMenu",,-1
(x�
(�:
(���pane_s(N)
(�M=�$(ind_pn%+971)
(��M+N<1�M+N>999:�
(�M+=N
(�$(ind_pn%+971)=�M
(�Y!block%=handle_pane%:block%!4=46:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
(�%ș"Wimp_GetCaretPosition",,block%
(�)�!block%<>handle_pane%�block%!4<>46:�
(�:ș"Wimp_SetCaretPosition",handle_pane%,46,-1,-1,-1,��M
(��
(�:
(���pane_f(N)
)M=�$(ind_pn%+983)
)�M+N<1�M+N>999:�
)M+=N
)"$(ind_pn%+983)=�M
),Y!block%=handle_pane%:block%!4=50:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%
)6%ș"Wimp_GetCaretPosition",,block%
)@)�!block%<>handle_pane%�block%!4<>50:�
)J:ș"Wimp_SetCaretPosition",handle_pane%,50,-1,-1,-1,��M
)T�
)^:
)h
��pane_OK
)r!block%=handle_pane%
)|,block%!4=1:ș"Wimp_GetIconState",,block%
)�5�block%!24�&200000:graph_title%=�:�graph_title%=�
)�$s_title%=$(ind_pn%+24)
)�,block%!4=4:ș"Wimp_GetIconState",,block%
)�5�block%!24�&200000:graph_xaxis%=�:�graph_xaxis%=�
)�$s_xaxis%=$(ind_pn%+98)
)�graph_xg%=0
)�Kblock%!4=6:ș"Wimp_GetIconState",,block%:�block%!24�&200000:graph_xg%=1
)�Kblock%!4=7:ș"Wimp_GetIconState",,block%:�block%!24�&200000:graph_xg%=2
)�graph_xdiv=�$(ind_pn%+212)
)�graph_xsdiv=�$(ind_pn%+244)
)�-block%!4=12:ș"Wimp_GetIconState",,block%
)�3�block%!24�&200000:graph_xcal%=�:�graph_xcal%=�
)�data_xmin=�$(ind_pn%+299)
*data_xmax=�$(ind_pn%+318)
*-block%!4=18:ș"Wimp_GetIconState",,block%
*5�block%!24�&200000:graph_yaxis%=�:�graph_yaxis%=�
*&$s_yaxis%=$(ind_pn%+368)
*0graph_yg%=0
*:Lblock%!4=20:ș"Wimp_GetIconState",,block%:�block%!24�&200000:graph_yg%=1
*DLblock%!4=21:ș"Wimp_GetIconState",,block%:�block%!24�&200000:graph_yg%=2
*Ngraph_ydiv=�$(ind_pn%+482)
*Xgraph_ysdiv=�$(ind_pn%+514)
*b-block%!4=26:ș"Wimp_GetIconState",,block%
*l3�block%!24�&200000:graph_ycal%=�:�graph_ycal%=�
*vdata_ymin=�$(ind_pn%+569)
*�data_ymax=�$(ind_pn%+588)
*�graph_bartype%=0
*�1�block%!4=33�37:ș"Wimp_GetIconState",,block%
*�2�block%!24�&200000:graph_bartype%+=block%!4-32
*��
*�graph_barmargin%=0
*�-block%!4=38:ș"Wimp_GetIconState",,block%
*�*�block%!24�&200000:graph_barmargin%+=1
*�-block%!4=39:ș"Wimp_GetIconState",,block%
*�,�block%!24�&200000:graph_barmargin%+=128
*�-block%!4=41:ș"Wimp_GetIconState",,block%
*�)�block%!24�&200000:graph_bartype%+=10
*�-block%!4=43:ș"Wimp_GetIconState",,block%
+1�block%!24�&200000:graph_exp%=�:�graph_exp%=�
+graph_es%=�$(ind_pn%+971)
+graph_ef%=�$(ind_pn%+983)
+ D�pane_calculate:ș"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0
+*flag_fiddled%=�
+4�
+>:
+H��pane_return
+R(N%=0:�poll%!24=13�poll%!24=&18E:N%=1
+\�poll%!24=&18F:N%=-1
+fC�poll%!4=5�N%=-1:�caret_setpos(handle_pane%,2,�len(ind_pn%+24))
+pR�poll%!4=2�N%=1�poll%!4=9�N%=-1:�caret_setpos(handle_pane%,5,�len(ind_pn%+98))
+zT�poll%!4=5�N%=1�poll%!4=11�N%=-1:�caret_setpos(handle_pane%,9,�len(ind_pn%+212))
+�U�poll%!4=9�N%=1�poll%!4=14�N%=-1:�caret_setpos(handle_pane%,11,�len(ind_pn%+244))
+�V�poll%!4=11�N%=1�poll%!4=16�N%=-1:�caret_setpos(handle_pane%,14,�len(ind_pn%+299))
+�V�poll%!4=14�N%=1�poll%!4=19�N%=-1:�caret_setpos(handle_pane%,16,�len(ind_pn%+318))
+�V�poll%!4=16�N%=1�poll%!4=23�N%=-1:�caret_setpos(handle_pane%,19,�len(ind_pn%+368))
+�V�poll%!4=19�N%=1�poll%!4=25�N%=-1:�caret_setpos(handle_pane%,23,�len(ind_pn%+482))
+�V�poll%!4=23�N%=1�poll%!4=28�N%=-1:�caret_setpos(handle_pane%,25,�len(ind_pn%+514))
+�V�poll%!4=25�N%=1�poll%!4=30�N%=-1:�caret_setpos(handle_pane%,28,�len(ind_pn%+569))
+�V�poll%!4=28�N%=1�poll%!4=46�N%=-1:�caret_setpos(handle_pane%,30,�len(ind_pn%+588))
+�V�poll%!4=30�N%=1�poll%!4=50�N%=-1:�caret_setpos(handle_pane%,46,�len(ind_pn%+971))
+�E�poll%!4=46�N%=1:�caret_setpos(handle_pane%,50,�len(ind_pn%+983))
+�f�poll%!4=50�poll%!24=13:button%=4:�ok_click(handle_format%,6):�pane_OK:�ok_click(handle_format%,6)
+��
+�:
,]��ok_click(!block%,block%!4):block%!8=&200000:block%!12=0:ș"Wimp_SetIconState",,block%:�
,:
,:
,$B� ********** Some mature graph selection type stuff **********
,.:
,8��graph_select(N)
,B
Ȏ N �
,L �1:�graph_selectline
,V �2:�graph_selectbar
,` �3:�graph_selectpie
,j �4:�graph_selecttable
,t�
,~ind_frm%?43=48+graph_type%
,���graph_window%:!block%=handle_format%:block%!4=2:block%!8=0:block%!12=0:ș"Wimp_SetIconState",,block%:block%!4=3:ș"Wimp_SetIconState",,block%
,��
,�:
,���graph_selectline
,�graph_type%=1
,�Cmenu_bar%?124=1:menu_bar%?148=0:menu_bar%?172=0:menu_bar%?196=2
,�Emenu_win%?100=1:menu_win%?124=0:menu_win%?148=0:menu_win%?172=128
,�$(ind_frm%+48)="Line graph"
,��
,�:
,���graph_selectbar
,�graph_type%=2
- Cmenu_bar%?124=0:menu_bar%?148=1:menu_bar%?172=0:menu_bar%?196=2
-
Emenu_win%?100=0:menu_win%?124=1:menu_win%?148=0:menu_win%?172=128
-$(ind_frm%+48)="Bar chart"
-�
-(:
-2��graph_selectpie
-<graph_type%=3
-FCmenu_bar%?124=0:menu_bar%?148=0:menu_bar%?172=1:menu_bar%?196=2
-PEmenu_win%?100=0:menu_win%?124=0:menu_win%?148=1:menu_win%?172=128
-Z$(ind_frm%+48)="Pie chart"
-d�
-n:
-x��graph_selecttable
-�graph_type%=4
-�Cmenu_bar%?124=0:menu_bar%?148=0:menu_bar%?172=0:menu_bar%?196=3
-�Emenu_win%?100=0:menu_win%?124=0:menu_win%?148=0:menu_win%?172=129
-�$(ind_frm%+48)="Table"
-��
-�:
-�:
-�3� ********** Some stuff with a caret **********
-�:
-�$��caret_setpos(handle%,icon%,X%)
-�5ș"Wimp_SetCaretPosition",handle%,icon%,0,0,-1,X%
-��
-�:
.ݤlen(N)
.(M%=-1:�M%+=1:�N?M%=0�N?M%=10�N?M%=13
.=M%
.":
.,:
.6*� ********** Fun with fonts **********
.@:
.J��font_check
.T+$block%="<Font$Prefix> and <Font$Path>"
.^.ș"OS_GSTrans",block%,block%+100,255 � ,,N
.hblock%?(100+N)=13
.r3�$(block%+100)<>$font_path%:�font_dothebusiness
.|�
.�:
.���font_dothebusiness
.�ș"Hourglass_On"
.�+$block%="<Font$Prefix> and <Font$Path>"
.�.ș"OS_GSTrans",block%,block%+100,255 � ,,N
.�block%?(100+N)=13
.�$font_path%=$(block%+100)
.�4font_counter%=0:$(font_list%)="System Font":Y=11
.֎menu_fontlist%!28=1:menu_fontlist%!32=-1:menu_fontlist%!36=&7009121:menu_fontlist%!40=font_list%:menu_fontlist%!44=-1:menu_fontlist%!48=40
.�Pș"XOS_ReadVarVal","Font$Path",block%,256,0,3�;N:�(N �1):ș"Hourglass_Off":�
.�y$block%=$(font_list%+text_titlec*40):$(block%+41)=$(font_list%+text_axisc*40):$(block%+82)=$(font_list%+text_keyc*40)
.�:
.� N=0:�
/Qfont_counter%+=1:ș"Font_ListFonts",,font_list%+(font_counter%*40),N,-1 � ,,N
/6M=�len(font_list%+((font_counter%-1)*40)):�M>Y:Y=M
/�M=28+24*font_counter%:menu_fontlist%!M=0:menu_fontlist%!(M+4)=0:menu_fontlist%!(M+8)=&7009121:menu_fontlist%!(M+12)=font_list%+(font_counter%*40):menu_fontlist%!(M+16)=-1:menu_fontlist%!(M+20)=40
/&�N=-1�font_counter%=256
/0`�font_counter%=256:N=�message("GraphPlus has reached its maximum font handling capacity.",0)
/::
/DWfont_counter%-=1:menu_fontlist%!(28+24*font_counter%)=128:menu_fontlist%!16=16+16*Y
/Nș"Hourglass_Off"
/X$text_titlec=�font_search(block%)
/b&text_axisc=�font_search(block%+41)
/l%text_keyc=�font_search(block%+82)
/v�
/�:
/�ݤfont_search(N)
/�7M=-1:�M+=1:�$N=$(font_list%+M*40)�M=font_counter%+1
/�s�M=font_counter%+1�font_counter%<>0:N=�message("Font "+$N+" cannot be found. Replacing with System Font.",0):=0
/�=M
/�:
/�ݤfont_recognise
/��N=0�39:block%?N=�#X%:�
/�=�font_search(block%)
/�:
/�:
/�'� ********** Window code **********
/�:
0��window_requestRedraw
0$ș"Wimp_RedrawWindow",,poll% � N
0ȕ N
0 $ș"Wimp_GetRectangle",,poll% � N
0*'�!poll%=handle_group%:�group_colour
04%�!poll%=handle_back%:�back_colour
0>�
0H�
0R:
0\��window_requestOpen
0f�!poll%=handle_update%:�
0p8�!poll%<>handle_format%:ș"Wimp_OpenWindow",,poll%:�
0z'�N=0�256�4:block%!(200+N)=poll%!N:�
0�8!block%=handle_pane%:ș"Wimp_GetWindowState",,block%
0�c!poll%=handle_pane%:poll%!4+=52:poll%!8+=100:poll%!16-=80:poll%!20=block%!20:poll%!24=block%!24
0�ș"Wimp_OpenWindow",,poll%
0�;block%!228=handle_pane%:ș"Wimp_OpenWindow",,block%+200
0��
0�:
0���window_requestClose
0�ș"Wimp_CloseWindow",,poll%
0Ԑ�!poll%=handle_format%:graph_window%=�:!block%=handle_pane%:ș"Wimp_CloseWindow",,block%:!block%=handle_create%:ș"Wimp_CloseWindow",,block%
0��
0�:
0���window_opengraph
0��pane_calculate
1�!block%=handle_pane%:block%!4=252:block%!8=288:block%!12=1280:block%!16=660:block%!20=0:block%!24=0:block%!28=-1:ș"Wimp_OpenWindow",,block%
1�!block%=handle_format%:block%!4=200:block%!8=0:block%!12=1280:block%!16=740:block%!20=0:block%!24=0:block%!28=handle_pane%:ș"Wimp_OpenWindow",,block%
1graph_window%=�
1$�
1.:
18��window_liftgraph
1B8!poll%=handle_format%:ș"Wimp_GetWindowState",,poll%
1L#poll%!28=-1:�window_requestOpen
1V�
1`:
1j��window_opendatapath
1t $block%="GraphPlusData$Path"
1~5ș"XOS_ReadVarVal",block%,ind_dp%+4,256,0,3�,,M;N
1�ind_dp%?(4+M)=10
1�=�(N �1)=1:N=�message("Error when reading data path.",0):�
1�>ș"Wimp_CreateSubMenu",,handle_datapath%,poll%!24,poll%!28
1��
1�:
1�:
1�'� ********** What a drag **********
1�:
1���drag_startsave
1�A!block%=handle_save%:block%!4=0:ș"Wimp_GetIconState",,block%
1�>block%!100=handle_save%:ș"Wimp_GetWindowInfo",,block%+100
1�!!poll%=handle_save%:poll%!4=5
2 poll%!8=block%!104+block%!8
2
!poll%!12=block%!116+block%!12
2!poll%!16=block%!104+block%!16
2!poll%!20=block%!116+block%!20
2(poll%!24=0:poll%!28=0
22poll%!32=-1:poll%!36=-1
2<Y�dstart%:ș dstart%,%11000101,1,"file_0f0",poll%+8,poll%+24 � ș"Wimp_DragBox",,poll%
2Ffile_status%=1
2P�
2Z:
2d��drag_startcreate
2nC!block%=handle_create%:block%!4=0:ș"Wimp_GetIconState",,block%
2x@block%!100=handle_create%:ș"Wimp_GetWindowInfo",,block%+100
2�#!poll%=handle_create%:poll%!4=5
2�poll%!8=block%!104+block%!8
2�!poll%!12=block%!116+block%!12
2�!poll%!16=block%!104+block%!16
2�!poll%!20=block%!116+block%!20
2�poll%!24=0:poll%!28=0
2�poll%!32=-1:poll%!36=-1
2�Y�dstart%:ș dstart%,%11000101,1,"file_aff",poll%+8,poll%+24 � ș"Wimp_DragBox",,poll%
2�file_status%=10
2��
2�:
2���drag_userdragbox
2�"ș"Wimp_GetPointerInfo",,poll%
3'!block%=256:block%!12=0:block%!16=1
3iblock%!20=poll%!12:block%!24=poll%!16:block%!28=!poll%:block%!32=poll%!4:block%!36=543:block%!40=&0f0
31�file_status%=1:�save_leaf(ind_sa%,block%+44)
3"2�file_status%=10:�save_leaf(ind_sg%,block%+44)
3,+ș"Wimp_SendMessage",18,block%,poll%!12
36file_status%+=1:�
3@:
3J:
3T+� ********** Saving, it helps *********
3^:
3h��save_tempOK
3rBN=-1:�N+=1:�ind_sa%?N=46�ind_sa%?N=0�ind_sa%?N=10�ind_sa%?N=13
3|W�ind_sa%?N<>46:N=�message("To save, drag the template icon to a filer window.",0):�
3�$(poll%+44)=$ind_sa%
3��save_template
3�ș"Wimp_CreateMenu",,-1
3��
3�:
3���save_createOK
3�BN=-1:�N+=1:�ind_sg%?N=46�ind_sg%?N=0�ind_sg%?N=10�ind_sg%?N=13
3�W�ind_sg%?N<>46:N=�message("To save, drag the drawfile icon to a filer window.",0):�
3�$file_graph%=$ind_sg%
3��graph_create
3��
3�:
3���save_leaf(N%,N)
4M=�len(N%)
4�:M-=1:�N%?M=46�M=0
4�N%?M=46:M+=1
4&$N=$(N%+M)
40�
4::
4D��save_ack
4NM�poll%!36=-1:N=�message("Unsafe to save "+$(poll%+44),0):file_status%=0:�
4XZ%=1
4b"�file_status%=2:�save_template
4l&�file_status%=11:�save_creategraph
4v<�Z%<>0:poll%!16=3:ș"Wimp_SendMessage",18,poll%,poll%!20
4�ș"Wimp_CreateMenu",,-1
4��
4�:
4���save_template:�
4�$file_temp%=$(poll%+44)
4�$ind_sa%=$(poll%+44)
4�"ș"XOS_Find",&82,poll%+44�X%;N
4�D�(N �1)=1�X%=0:N=�message("Format template not saved.",0):Z%=0:�
4Љ��M=�message("GraphPlus has encountered an error when saving template. If possible quit GraphPlus and reload.",0):ș"OS_Find",0,X%:�
4�3�dfile_put("GraphPlus Template"):�dfile_bput(0)
4��dfile_bput(graph_type%)
4�'�M=0�27:�dfile_bput(group_map%?M):�
4�)�M=0�251:�dfile_bput(group_data%?M):�
5j�dfile_sputl(font_list%+text_titlec*40,40):�dfile_wput(text_titlex*1000):�dfile_wput(text_titley*1000)
5g�dfile_sputl(font_list%+text_axisc*40,40):�dfile_wput(text_axisx*1000):�dfile_wput(text_axisy*1000)
5d�dfile_sputl(font_list%+text_keyc*40,40):�dfile_wput(text_keyx*1000):�dfile_wput(text_keyy*1000)
5 -�graph_key%:�dfile_bput(1)��dfile_bput(0)
5*.�graph_back%:�dfile_bput(1)��dfile_bput(0)
54,�graph_3D%:�dfile_bput(1)��dfile_bput(0)
5>3�graph_outline%=0:�dfile_bput(1)��dfile_bput(0)
5HQ�dfile_bput(data_back%?1):�dfile_bput(data_back%?2):�dfile_bput(data_back%?3)
5R�dfile_bput(graph_best%)
5\!�M=0�63:�#X%,pie_palette%?M:�
5f0�graph_title%:�dfile_bput(1):��dfile_bput(0)
5p�dfile_sputl(s_title%,40)
5z0�graph_xaxis%:�dfile_bput(1):��dfile_bput(0)
5��dfile_sputl(s_xaxis%,40)
5��dfile_bput(graph_xg%)
5�/�graph_xcal%:�dfile_bput(1):��dfile_bput(0)
5� �dfile_wput(graph_xdiv*1000)
5�!�dfile_wput(graph_xsdiv*1000)
5��dfile_wput(data_xmin*1000)
5��dfile_wput(data_xmax*1000)
5�0�graph_yaxis%:�dfile_bput(1):��dfile_bput(0)
5��dfile_sputl(s_yaxis%,40)
5��dfile_bput(graph_yg%)
5�/�graph_ycal%:�dfile_bput(1):��dfile_bput(0)
5� �dfile_wput(graph_ydiv*1000)
5�!�dfile_wput(graph_ysdiv*1000)
6�dfile_wput(data_ymin*1000)
6�dfile_wput(data_ymax*1000)
6�dfile_bput(graph_bartype%)
6$!�dfile_bput(graph_barmargin%)
6..�graph_exp%:�dfile_bput(1):��dfile_bput(0)
68�dfile_wput(graph_es%)
6B�dfile_wput(graph_ef%)
6Lș"OS_Find",0,X%
6Vș"OS_File",18,ind_sa%,&0f0
6`�
6j:
6t��save_creategraph
6~$file_graph%=$(poll%+44)
6�$ind_sg%=$(poll%+44)
6��graph_create
6��
6�:
6�:
6�8� ********** Well, a load is just as good **********
6�:
6���load_message
6�#�poll%!40=&0f0:�load_template:�
6�[�poll%!40<>&dfe:N=�message("Not a CSV file. Are you sure you want to use it?",3):�N=2:�
6��load_setdatapath
6��
7 :
7
��load_template
7X%=�$(poll%+44)
7poll%!12=poll%!8:poll%!16=4
7(*ș"Wimp_SendMessage",17,poll%,poll%!20
72�load_tempfile
7<�#X%
7F�pane_calculate
7P4ș"Wimp_ForceRedraw",handle_pane%,0,-1023,1279,0
7Z�
7d:
7n��load_tempfile:�
7xa��M=�message("GraphPlus template loading error. The current template may be corrupted.",0):�
7��#X%=19:graph_type%=�#X%
7��graph_select(graph_type%)
7��M=0�27:group_map%?M=�#X%:�
7�!�M=0�251:group_data%?M=�#X%:�
7�wtext_titlec=�font_recognise:�file_wget(block%):text_titlex=!block%/1000:�file_wget(block%):text_titley=!block%/1000
7�ttext_axisc=�font_recognise:�file_wget(block%):text_axisx=!block%/1000:�file_wget(block%):text_axisy=!block%/1000
7�qtext_keyc=�font_recognise:�file_wget(block%):text_keyx=!block%/1000:�file_wget(block%):text_keyy=!block%/1000
7�LN=�#X%:�N=1:graph_key%=�:menu_style%?28=1:�graph_key%=�:menu_style%?28=0
7�LN=�#X%:�N=1:graph_box%=�:menu_style%?52=9:�graph_box%=�:menu_style%?52=8
7�LN=�#X%:�N=1:graph_3D%=�:menu_style%?148=1:�graph_3D%=�:menu_style%?148=0
7�[N=�#X%:�N=1:graph_outline%=0:menu_style%?172=129:�graph_outline%=-1:menu_style%?172=128
7�9data_back%?1=�#X%:data_back%?2=�#X%:data_back%?3=�#X%
7�hgraph_best%=�#X%:�graph_best%=2:menu_best%?28=0:menu_best%?52=129:�menu_best%?28=1:menu_best%?52=128
8!�M=0�63:pie_palette%?M=�#X%:�
8.N=�#X%:�N=1:graph_title%=�:�graph_title%=�
8�N=0�39:s_title%?N=�#X%:�
8".N=�#X%:�N=1:graph_xaxis%=�:�graph_xaxis%=�
8,�N=0�39:s_xaxis%?N=�#X%:�
86graph_xg%=�#X%
8@,N=�#X%:�N=1:graph_xcal%=�:�graph_xcal%=�
8J,�file_wget(poll%):graph_xdiv=!poll%/1000
8T-�file_wget(poll%):graph_xsdiv=!poll%/1000
8^+�file_wget(poll%):data_xmin=!poll%/1000
8h+�file_wget(poll%):data_xmax=!poll%/1000
8r.N=�#X%:�N=1:graph_yaxis%=�:�graph_yaxis%=�
8|�N=0�39:s_yaxis%?N=�#X%:�
8�graph_yg%=�#X%
8�,N=�#X%:�N=1:graph_ycal%=�:�graph_ycal%=�
8�,�file_wget(poll%):graph_ydiv=!poll%/1000
8�-�file_wget(poll%):graph_ysdiv=!poll%/1000
8�+�file_wget(poll%):data_ymin=!poll%/1000
8�+�file_wget(poll%):data_ymax=!poll%/1000
8�graph_bartype%=�#X%
8�graph_barmargin%=�#X%
8�*N=�#X%:�N=1:graph_exp%=�:�graph_exp%=�
8�&�file_wget(poll%):graph_es%=!poll%
8�&�file_wget(poll%):graph_ef%=!poll%
8��graph_select(graph_type%)
8��
9:
9��load_dataopen
9 �poll%!40=&0f0:�load_message
9&�
90:
9:��load_setdatapath
9D,�("Set GraphPlusData$Path "+$(poll%+44))
9N�
9X:
9b:
9l/� ********** Those darn messages **********
9v:
9���message_process
9�Ȏpoll%!16�
9� �0 :�byebye_shutdown
9� �2 :�save_ack
9� �3 :�load_message
9� �5 :�load_dataopen
9�! �&400C0:�message_menuwarning
9��:�
9�:
9���message_menuwarning
9�Ȏmenu_current%�
9� �1:�message_menubar
9� �2:�message_winbar
:�
:�
::
: ��message_menubar
:*)�poll%!32=1�poll%!36=1:�menu_openback
:45�poll%!32=1�poll%!36=2:�font_check:�menu_openfont
:>,�poll%!32=1�poll%!36=4:�menu_openpalette
:H)�poll%!32=3�poll%!36=0:�menu_opensave
:R/�poll%!32=3�poll%!36=1:�window_opendatapath
:\4�poll%!32=2�poll%!36=0�poll%!40<>6:�menu_openmap
:f5�poll%!32=2�poll%!36=0�poll%!40=6:�menu_openlabel
:p*�poll%!32=2�poll%!36=1:�menu_opengroup
:z�
:�:
:���message_winbar
:�)�poll%!32=0�poll%!36=1:�menu_openback
:�5�poll%!32=0�poll%!36=2:�font_check:�menu_openfont
:�,�poll%!32=0�poll%!36=4:�menu_openpalette
:�)�poll%!32=2�poll%!36=0:�menu_opensave
:�/�poll%!32=2�poll%!36=1:�window_opendatapath
:�4�poll%!32=1�poll%!36=0�poll%!40<>6:�menu_openmap
:�5�poll%!32=1�poll%!36=0�poll%!40=6:�menu_openlabel
:�*�poll%!32=1�poll%!36=1:�menu_opengroup
:��
:�:
:�:
;-� ********** Things at the end **********
;:
;��byebye_shutdown
;$&ș"Wimp_CloseDown",task%,&4B534154
;.ș"OS_Exit"
;8� Good Ridance
;B�
;L:
;Vnݤmessage($(mess%+20),flag%):mess%!16=0:$mess%="GraphPlus":ș"Wimp_ReportError",mess%+16,flag%,mess%�,N:=N
;`:
;j��error
;t
;~�N=�message("Serious internal error &"+�~(�)+": must exit. Click on OK to dump current template in GraphPlus directory as 'TempDump'.",3):�N=1:�error_dump
;��byebye_shutdown
;�FISH
;�:
;���error_dump
;�($block%="GraphPlus$Dir":block%?256=0
;�4ș"XOS_ReadVarVal",block%,poll%+44,256,0,3�,,M;N
;�V�(N �1)=1:N=�message("Format template not saved; directory variable deleted.",0):�
;�$(poll%+44+M)=".TempDump"
;��save_template
;��
;�:
;�:
<