home *** CD-ROM | disk | FTP | other *** search
- $m 128000
- IF FRE()<128000
- ~FORM_ALERT(1,"[1][ Insufficient or fragmented | memory. ][ Quit ]")
- QUIT 0
- ELSE
- ' ON ERROR GOSUB gest_err
- init_1
- init_2
- init_parx
- boucle_generale
- ENDIF
- '
- > PROCEDURE sortir2
- tout_fermer
- IF parx_adr_mem%>0
- parx_trm_exit
- FOR i&=0 TO PRED(parx_nb_slot&)
- parx_libere_blk(i&)
- NEXT i&
- ~C:parx_manag_free%()
- mxfree(parx_adr_mem%)
- ENDIF
- effacement_stock_dgi
- mxfree(raster_image%)
- mxfree(m_adr%)
- mxfree(dd_mem%)
- mxfree(aa_start%)
- '
- ~MENU_BAR(adtree%(0),0)
- ~RSRC_FREE()
- ~APPL_EXIT()
- QUIT 0
- RETURN
- '
- > PROCEDURE init_1
- ap_id&=APPL_INIT()
- vdi_handle&=V~H
- ~GRAF_MOUSE(0,0)
- '
- mx_mask%=@mx_mask
- '
- IF ap_id&=-1 OR vdi_handle&<0
- sortir2
- ENDIF
- '
- ~WIND_UPDATE(1)
- ~WIND_UPDATE(3)
- '
- ~WIND_GET(0,4,screenx&,screeny&,screenl&,screenh&)
- '
- @declare_1
- @declare_parx
- @declare_parx_mem
- @declare_parx_trm
- @declare_parx_rim
- RESERVE 32128
- '
- @declare_mem
- '
- ~RSRC_FREE()
- IF @s_exist(application_rsc$)=TRUE
- IF RSRC_LOAD(application_rsc$)=0
- ~FORM_ALERT(1,"[1][ MAKE_DGX.RSC couldn't be loaded as | RSC file.][ Quit ]")
- sortir2
- ELSE
- FOR i&=0 TO nb_tree&
- ~RSRC_GADDR(0,i&,adtree%(i&))
- NEXT i&
- FOR i&=1 TO nb_tree&
- ~FORM_CENTER(adtree%(i&),xd&(i&),yd&(i&),ld&(i&),dummy&)
- hd&(i&)=OB_H(adtree%(i&),0)
- NEXT i&
- ENDIF
- ELSE
- ~FORM_ALERT(1,"[1][ MAKE_DGX.RSC not found.| Put it beside MAKE_DGX.PRG |][ Quit ]")
- sortir2
- ENDIF
- '
- folder_image$=""
- '
- RETURN
- > PROCEDURE declare_1
- '
- c0$=CHR$(0)
- lect%=GEMDOS(25)
- chemin$=CHR$(ADD(lect%,65))+":"+DIR$(SUCC(lect%))+"\"
- masque$="*.*"+c0$
- ext_vdi$=".DGI"+c0$
- fi_path$=SPACE$(512)
- fi_name$=SPACE$(128)
- '
- application_rsc$=chemin$+"MAKE_DGX.RSC"+c0$
- application_inf$=chemin$+"MAKE_DGX.INF"+c0$
- '
- dummy$=SPACE$(128)
- nom_image$=SPACE$(128)
- folder_image$=SPACE$(256)
- nom_sav$=SPACE$(128)
- nom_courant$=SPACE$(128)
- '
- nb_tree&=5
- '
- DIM adtree%(nb_tree&),xd&(nb_tree&),yd&(nb_tree&),ld&(nb_tree&),hd&(nb_tree&)
- DIM hand_win&(nb_tree&),wx&(nb_tree&),wy&(nb_tree&),wl&(nb_tree&),wh&(nb_tree&)
- '
- DIM win!(nb_tree&),aff!(nb_tree&)
- FOR i&=0 TO nb_tree&
- win!(i&)=FALSE
- aff!(i&)=FALSE
- NEXT i&
- '
- DIM cp_win&(nb_tree&)
- cp_win&(1)=&X1011
- cp_win&(2)=&X1011
- '
- DIM img_mfdb%(2)
- '
- dgi_nb_slot&=128
- '
- DIM dgi_name$(dgi_nb_slot&),dgi_len%(dgi_nb_slot&),dgi_ptr%(dgi_nb_slot&)
- FOR i&=0 TO PRED(dgi_nb_slot&)
- dgi_name$(i&)=SPACE$(8)
- dgi_len%(i&)=0
- dgi_ptr%(i&)=0
- NEXT i&
- '
- dd_ok&=0
- dd_nak&=1
- dd_ext&=2
- dd_len&=3
- dd_trash&=4
- dd_printer&=5
- dd_clipboard&=6
- dd_path$="U:\PIPE\DRAGDROP."
- '
- RETURN
- > PROCEDURE declare_mem
- '
- m_adr%=MALLOC(16)
- IF m_adr%=<0
- sortir2
- ELSE
- ABSOLUTE m_type&,m_adr%
- ABSOLUTE m_ap_id&,ADD(m_adr%,2)
- ABSOLUTE m_nothing&,ADD(m_adr%,4)
- ABSOLUTE m_titre&,ADD(m_adr%,6)
- ABSOLUTE m_fenetre&,ADD(m_adr%,6)
- ABSOLUTE m_entree&,ADD(m_adr%,8)
- ABSOLUTE m_x&,ADD(m_adr%,8)
- ABSOLUTE m_y&,ADD(m_adr%,10)
- ABSOLUTE m_l&,ADD(m_adr%,12)
- ABSOLUTE m_h&,ADD(m_adr%,14)
- ENDIF
- '
- raster_image%=MALLOC(128)
- IF raster_image%>0
- FOR i&=0 TO 2
- img_mfdb%(i&)=ADD(raster_image%,MUL(i&,20))
- make_zero_mfdb(img_mfdb%(i&))
- NEXT i&
- ELSE
- sortir2
- ENDIF
- '
- aa_start%=@mxalloc_global(2048,3)
- '
- RETURN
- > PROCEDURE declare_parx
- '
- parx_size_image%=0
- parx_hand_image&=0
- '
- parx_sys$=SPACE$(128)
- '
- parx_lire_rim!=TRUE
- parx_lire_mem!=TRUE
- parx_lire_trm!=TRUE
- '
- parx_choix_config_mem&=2
- parx_choix_taille_mem&=150
- '
- parx_trm$="PARX.TRM"+c0$
- parx_mem$="PARX.MEM"+c0$
- application_trm$="MAKE_DGX.TRM"+c0$
- application_mem$="MAKE_DGX.MEM"+c0$
- '
- parx_adr_mem%=0
- @declare_parx_mem
- parx_nb_slot&=10
- DIM parx_tab_adr%(PRED(parx_nb_slot&)),parx_size_tab%(PRED(parx_nb_slot&))
- '
- ptr_rim%=parx_tab_adr%(1)
- nombre_rim%=0
- @declare_parx_rim
- '
- RETURN
- > PROCEDURE declare_parx_mem
- parx_manag_malloc%=ADD(parx_adr_mem%,10)
- parx_manag_free%=ADD(parx_adr_mem%,14)
- parx_manag_shrink%=ADD(parx_adr_mem%,18)
- parx_manag_grow%=ADD(parx_adr_mem%,22)
- parx_manag_size%=ADD(parx_adr_mem%,26)
- parx_manag_version%=ADD(parx_adr_mem%,30)
- parx_blk_malloc%=ADD(parx_adr_mem%,50)
- parx_blk_free%=ADD(parx_adr_mem%,54)
- parx_blk_shrink%=ADD(parx_adr_mem%,58)
- parx_blk_grow%=ADD(parx_adr_mem%,62)
- RETURN
- > PROCEDURE declare_parx_trm
- parx_do_trm%=ADD(parx_tab_adr%(0),1960)
- RETURN
- > PROCEDURE declare_parx_rim
- parx_test_file%=ADD(ptr_rim%,56)
- parx_get_palette%=ADD(ptr_rim%,60)
- parx_do_file%=ADD(ptr_rim%,64)
- RETURN
- > PROCEDURE init_2
- '
- effacement_stock_dgi
- '
- IF @s_exist(application_inf$)
- OPEN "i",#14,application_inf$
- INPUT #14,parx_sys$
- INPUT #14,parx_lire_rim!
- INPUT #14,parx_lire_mem!
- INPUT #14,parx_lire_trm!
- INPUT #14,working_folder$
- CLOSE #14
- ELSE
- parx_sys$="C:\PARX.SYS\"
- working_folder$=chemin$+c0$
- ENDIF
- '
- IF LEN(working_folder$)<2
- working_folder$=chemin$+c0$
- ENDIF
- '
- ~WIND_UPDATE(2)
- ~WIND_UPDATE(0)
- ~MENU_BAR(adtree%(0),1)
- '
- multi!=@test_cookie("MagX",dummy%)
- IF multi!=FALSE
- multi!=@test_cookie("MiNT",dummy%)
- ENDIF
- '
- IF multi!=FALSE
- ~FORM_DIAL(3,0,0,0,0,screenx&,screeny&,screenl&,screenh&)
- ENDIF
- '
- CHAR{{OB_SPEC(adtree%(3),3)}}=RIGHT$(parx_sys$,29)+c0$
- OB_STATE(adtree%(3),5)=ABS(parx_lire_rim!)
- OB_STATE(adtree%(3),7)=ABS(parx_lire_mem!)
- OB_STATE(adtree%(3),10)=ABS(parx_lire_trm!)
- CHAR{{OB_SPEC(adtree%(3),15)}}=RIGHT$(working_folder$,29)+c0$
- '
- CHAR{{OB_SPEC(adtree%(2),2)}}=RIGHT$(working_folder$,29)+c0$
- CHAR{{OB_SPEC(adtree%(2),5)}}=""
- nom_image$=c0$
- '
- RETURN
- > PROCEDURE init_parx
- '
- init_parx_mem
- IF dummy&=0
- gere_preference_parx
- init_parx_mem
- ENDIF
- init_parx_trm_rim
- '
- RETURN
- > PROCEDURE init_parx_mem
- '
- IF parx_adr_mem%>0
- ~C:parx_manag_free%()
- mxfree(parx_adr_mem%)
- parx_adr_mem%=0
- ENDIF
- '
- dummy&=0
- IF parx_lire_mem!
- IF @s_exist(parx_sys$+parx_mem$)=TRUE
- dummy&=1
- ELSE IF @s_exist(chemin$+application_mem$)=TRUE
- dummy&=2
- ENDIF
- ELSE
- IF @s_exist(chemin$+application_mem$)=TRUE
- dummy&=2
- ELSE IF @s_exist(parx_sys$+parx_mem$)=TRUE
- dummy&=1
- ENDIF
- ENDIF
- '
- IF dummy&=0
- ~@alerte(1,14)
- ELSE
- IF dummy&=1
- dummy$=parx_sys$+parx_mem$
- ELSE
- dummy$=chemin$+application_mem$
- ENDIF
- OPEN "i",#49,dummy$
- lof_mem%=ADD(LOF(#49),ABS(ODD(LOF(#49))))
- parx_adr_mem%=MALLOC(lof_mem%)
- IF parx_adr_mem%>0
- BGET #49,parx_adr_mem%,LOF(#49)
- @declare_parx_mem
- retour_mem%=C:parx_manag_version%()
- IF retour_mem%<500 OR MKL$(LONG{parx_adr_mem%})+MKL$(LONG{parx_adr_mem%+4})<>"PARX_MEM"
- ~@alerte(1,13)
- mxfree(parx_adr_mem%)
- parx_adr_mem%=0
- ELSE
- CHAR{{OB_SPEC(adtree%(3),9)}}=LEFT$(STR$(retour_mem%),3)
- ENDIF
- ENDIF
- CLOSE #49
- ENDIF
- '
- RETURN
- > PROCEDURE init_parx_trm_rim
- LOCAL retour_fs%,taille_rim%,taille_totale_rim%
- '
- IF parx_adr_mem%>0
- '
- @declare_parx_mem
- taille_parx_reserve%=C:parx_manag_malloc%(L:V:parx_tab_adr%(0),L:V:parx_size_tab%(0),W:0,W:parx_nb_slot&,L:SUB(MALLOC(-1),51200))
- '
- IF taille_parx_reserve%>0
- dummy&=0
- IF parx_lire_trm!
- IF @s_exist(parx_sys$+parx_trm$)=TRUE
- dummy&=1
- ELSE IF @s_exist(chemin$+application_trm$)=TRUE
- dummy&=2
- ENDIF
- ELSE
- IF @s_exist(chemin$+application_trm$)=TRUE
- dummy&=2
- ELSE IF @s_exist(parx_sys$+parx_trm$)=TRUE
- dummy&=1
- ENDIF
- ENDIF
- '
- IF dummy&=0
- ~@alerte(1,16)
- ELSE
- IF dummy&=1
- dummy$=parx_sys$+parx_trm$
- ELSE
- dummy$=chemin$+application_trm$
- ENDIF
- endroit%=50
- REPEAT
- err_choix&=1
- OPEN "i",#50,dummy$
- parx_libere_blk(0)
- parx_reserve_blk(0,SHL(SHR(ADD(LOF(#50),15),4),4))
- IF parx_tab_adr%(0)>0
- BGET #50,parx_tab_adr%(0),LOF(#50)
- @declare_parx_trm
- retour_trm%=WORD{ADD(parx_tab_adr%(0),8)}
- IF retour_trm%<200 OR retour_trm%>299 OR MKL$(LONG{parx_tab_adr%(0)})+MKL$(LONG{parx_tab_adr%(0)+4})<>"PARX_TRM"
- ~@alerte(1,15)
- parx_libere_blk(0)
- ELSE
- CHAR{{OB_SPEC(adtree%(3),12)}}=LEFT$(STR$(retour_trm%),3)
- parx_trm_init
- ENDIF
- ENDIF
- endroit50:
- CLOSE #50
- UNTIL err_choix&=1
- ENDIF
- '
- parx_reserve_blk(1,MAX(4096,SUB(C:parx_manag_size%(),32128)))
- exit!=FALSE
- IF parx_lire_rim!
- dummy$=parx_sys$
- ELSE
- dummy$=chemin$
- ENDIF
- '
- ptr_rim%=parx_tab_adr%(1)
- taille_totale_rim%=0
- nombre_rim&=0
- retour_fs%=FSFIRST(dummy$+"RIM\*.RIM"+c0$,1)
- DO
- EXIT IF retour_fs%<>0
- fichier_rim$=dummy$+"RIM\"+CHAR{FGETDTA()+30}+c0$
- OPEN "i",#51,fichier_rim$
- taille_rim%=ADD(LOF(#51),ABS(ODD(LOF(#51))))
- IF ADD(taille_totale_rim%,taille_rim%)=<parx_size_tab%(1)
- BGET #51,ptr_rim%,LOF(#51)
- IF MKL$(LONG{ptr_rim%})+MKL$(LONG{ADD(ptr_rim%,4)})="READ_IMG"
- SELECT WORD{ADD(ptr_rim%,12)}
- CASE 0,1
- LONG{ptr_rim%}=taille_rim%
- ADD taille_totale_rim%,taille_rim%
- ADD ptr_rim%,taille_rim%
- INC nombre_rim&
- ENDSELECT
- ENDIF
- ENDIF
- CLOSE #51
- retour_fs%=FSNEXT()
- LOOP
- parx_shrink_blk(1,ADD(taille_totale_rim%,ABS(ODD(taille_totale_rim%))))
- ENDIF
- ENDIF
- RETURN
- '
- > PROCEDURE boucle_generale
- win(2)
- boucle_principale:
- endroit%=0
- DO
- evnt&=@ev_multi(&X110011,258,3,0,300,mo_x&,mo_y&,mo_k&,m_touche&,m_clavier&,mo_c&)
- IF BTST(evnt&,0)
- boucle_clavier_generale
- mo_c&=0
- mo_k&=0
- ENDIF
- IF BTST(evnt&,1)
- boucle_souris_generale
- ENDIF
- IF BTST(evnt&,4)
- SELECT m_type&
- CASE 10
- boucle_menu
- CASE 20
- redraw
- CASE 21
- win_topped
- CASE 22
- win_closed
- CASE 28
- win_moved
- CASE 29,31
- win_ontop
- CASE 30
- win_untopped
- CASE 50
- shut_down
- CASE 63
- dd_message
- evnt&=0
- CASE 22360
- FOR i&=1 TO 2
- IF m_fenetre&=hand_win&(i&) AND win!(i&)=TRUE
- aff!(i&)=FALSE
- ENDIF
- NEXT i&
- CASE 22361
- FOR i&=1 TO 2
- IF m_fenetre&=hand_win&(i&) AND win!(i&)=TRUE
- aff!(i&)=TRUE
- ENDIF
- NEXT i&
- ENDSELECT
- clear_m
- ENDIF
- IF BTST(evnt&,5)=TRUE
- INC cpt_garbage%
- IF cpt_garbage%>20
- ~FRE(0)
- ~FRE()
- cpt_garbage%=0
- ENDIF
- ENDIF
- LOOP
- RETURN
- '
- > PROCEDURE boucle_menu
- ~MENU_TNORMAL(adtree%(0),m_titre&,1)
- SELECT m_entree&
- CASE 7
- win(1)
- CASE 16 ! ouvrir
- win(2)
- CASE 18 ! prefs
- gere_preference_parx
- CASE 20
- sortir2
- ENDSELECT
- RETURN
- > PROCEDURE boucle_souris_generale
- IF mo_c&=1 AND mo_k&=1
- clic_win&=WIND_FIND(mo_x&,mo_y&)
- delai
- IF clic_win&=hand_win&(2) AND aff!(2)=TRUE
- gere_conversion
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE boucle_clavier_generale
- m_clavier|=BYTE(m_clavier&)
- '
- SELECT m_clavier|
- CASE 3 ! ^C
- CASE 5 ! ^E
- CASE 7 ! ^G
- CASE 9 ! ^I
- win(1)
- CASE 14 ! ^N
- CASE 15 ! ^O
- win(2)
- CASE 16 ! ^P
- gere_preference_parx
- CASE 17 ! ^Q
- sortir2
- CASE 19 ! ^S
- CASE 24 ! ^X
- DEFAULT
- '
- ENDSELECT
- RETURN
- '
- > PROCEDURE win_closed
- FOR i&=1 TO 3
- IF m_fenetre&=hand_win&(i&) AND win!(i&)=TRUE
- ferme_win(i&)
- ENDIF
- NEXT i&
- win_untopped
- RETURN
- > PROCEDURE win_moved
- m_x&=MAX(SUCC(screenx&),m_x&)
- m_y&=MAX(SUCC(screeny&),m_y&)
- FOR i&=1 TO 3
- IF m_fenetre&=hand_win&(i&) AND win!(i&)=TRUE
- ~WIND_SET(hand_win&(i&),5,m_x&,m_y&,m_l&,m_h&)
- move_win(i&,m_x&,m_y&,m_l&,m_h&)
- ENDIF
- NEXT i&
- RETURN
- > PROCEDURE win_topped
- win_untopped
- FOR i&=1 TO 3
- IF m_fenetre&=hand_win&(i&) AND win!(i&)=TRUE
- ~WIND_SET(hand_win&(i&),10,0,0,0,0)
- ENDIF
- NEXT i&
- win_ontop
- RETURN
- > PROCEDURE win_untopped
- RETURN
- > PROCEDURE win_ontop
- RETURN
- > PROCEDURE shut_down
- ~APPL_EXIT()
- QUIT
- RETURN
- > PROCEDURE dd_message
- dd_receive(m_fenetre&,MKI$(m_h&),dd_data$,dd_mem%,dd_byte_len%)
- IF dd_mem%>0 AND dd_data$="ARGS"
- FOR i%=0 TO PRED(dd_byte_len%)
- IF BYTE{ADD(dd_mem%,i%)}=32
- BYTE{ADD(dd_mem%,i%)}=0
- ENDIF
- NEXT i%
- BYTE{ADD(dd_mem%,SUCC(dd_byte_len%))}=0
- BYTE{ADD(dd_mem%,ADD(dd_byte_len%,2))}=0
- dummy$=CHAR{dd_mem%}
- IF RINSTR(dummy$,"\")=0
- dummy$=chemin$+dummy$
- ENDIF
- IF RIGHT$(dummy$)<>c0$
- dummy$=dummy$+c0$
- ENDIF
- '
- IF LEN(dummy$)>0 AND dummy$<>c0$
- folder_image$=LEFT$(dummy$,RINSTR(dummy$,"\"))
- CHAR{{OB_SPEC(adtree%(2),2)}}=RIGHT$(folder_image$,29)
- ENDIF
- black_white(2,2,0)
- '
- mxfree(dd_mem%)
- dd_mem%=0
- ENDIF
- RETURN
- '
- > PROCEDURE win(dial&)
- IF win!(dial&)
- force_top(dial&)
- ELSE
- create_win(dial&)
- ENDIF
- RETURN
- > PROCEDURE create_win(dial&)
- hand_win&(dial&)=@window_create(cp_win&(dial&))
- IF hand_win&(dial&)>0
- win!(dial&)=TRUE
- ~FORM_CENTER(adtree%(dial&),dummy&,dummy&,ld&(dial&),dummy&)
- xd&(dial&)=ADD(screenx&,50)
- yd&(dial&)=ADD(screeny&,50)
- ~WIND_CALC(0,cp_win&(dial&),xd&(dial&),yd&(dial&),ld&(dial&),hd&(dial&),wx&(dial&),wy&(dial&),wl&(dial&),wh&(dial&))
- ~WIND_SET(hand_win&(dial&),2,CARD(SWAP(OB_SPEC(adtree%(nb_tree&),dial&))),CARD(OB_SPEC(adtree%(nb_tree&),dial&)),0,0)
- wx&(dial&)=MAX(SUCC(screenx&),wx&(dial&))
- wy&(dial&)=MAX(SUCC(screeny&),wy&(dial&))
- move_win(dial&,wx&(dial&),wy&(dial&),wl&(dial&),wh&(dial&))
- ~WIND_SET(hand_win&(dial&),24,&X1,0,0,0)
- dummy%=WIND_OPEN(hand_win&(dial&),wx&(dial&),wy&(dial&),wl&(dial&),wh&(dial&))
- aff!(dial&)=win!(dial&)
- ELSE
- ~@alerte(1,26)
- win!(dial&)=FALSE
- aff!(dial&)=FALSE
- ENDIF
- RETURN
- > PROCEDURE ferme_win(dial&)
- IF win!(dial&)
- ~WIND_CLOSE(hand_win&(dial&))
- ~WIND_DELETE(hand_win&(dial&))
- win!(dial&)=FALSE
- aff!(dial&)=FALSE
- ENDIF
- RETURN
- > PROCEDURE move_win(dial&,x0&,y0&,l0&,h0&)
- IF win!(dial&) AND dial&>0
- ~WIND_CALC(1,cp_win&(dial&),x0&,y0&,l0&,h0&,xd&(dial&),yd&(dial&),dummy&,dummy&)
- OB_X(adtree%(dial&),0)=xd&(dial&)
- OB_Y(adtree%(dial&),0)=yd&(dial&)
- ENDIF
- RETURN
- '
- > PROCEDURE force_update(bar&)
- IF aff!(bar&)=TRUE
- INT{m_adr%}=20
- INT{ADD(m_adr%,2)}=ap_id&
- INT{ADD(m_adr%,4)}=0
- INT{ADD(m_adr%,6)}=hand_win&(bar&)
- INT{ADD(m_adr%,8)}=screenx&
- INT{ADD(m_adr%,10)}=screeny&
- INT{ADD(m_adr%,12)}=screenl&
- INT{ADD(m_adr%,14)}=screenh&
- ~APPL_WRITE(ap_id&,16,m_adr%)
- ENDIF
- RETURN
- > PROCEDURE force_top(bar&)
- ~WIND_GET(0,10,top_win&,dummy&,dummy&,dummy&)
- IF top_win&<>hand_win&(bar&) AND win!(bar&)
- clear_m
- INT{m_adr%}=21
- INT{ADD(m_adr%,2)}=ap_id&
- INT{ADD(m_adr%,6)}=hand_win&(bar&)
- ~APPL_WRITE(ap_id&,16,m_adr%)
- ENDIF
- RETURN
- > PROCEDURE clear_m
- FOR i&=0 TO 12 STEP 4
- LONG{ADD(m_adr%,i&)}=0
- NEXT i&
- RETURN
- '
- > PROCEDURE redraw
- '
- control
- '
- win_untopped
- '
- ~WIND_GET(m_fenetre&,11,rx&,ry&,rl&,rh&)
- WHILE rl&<>0 AND rh&<>0
- IF RC_INTERSECT(m_x&,m_y&,m_l&,m_h&,rx&,ry&,rl&,rh&)
- FOR i&=1 TO 3
- IF m_fenetre&=hand_win&(i&) AND win!(i&)=TRUE AND aff!(i&)=TRUE
- ob_draw(adtree%(i&),0,3,rx&,ry&,rl&,rh&)
- ENDIF
- NEXT i&
- ENDIF
- ~WIND_GET(m_fenetre&,12,rx&,ry&,rl&,rh&)
- WEND
- '
- win_ontop
- '
- uncontrol
- RETURN
- > PROCEDURE black_white(arbre&,fils&,etat&)
- IF fils&>0
- SELECT etat&
- CASE 0
- OB_STATE(adtree%(arbre&),fils&)=BCLR(OB_STATE(adtree%(arbre&),fils&),0)
- CASE 1
- OB_STATE(adtree%(arbre&),fils&)=BSET(OB_STATE(adtree%(arbre&),fils&),0)
- ENDSELECT
- ENDIF
- IF win!(arbre&)=TRUE AND aff!(arbre&)=TRUE
- ~WIND_GET(hand_win&(arbre&),4,xf&,yf&,lf&,hf&)
- ~WIND_GET(hand_win&(arbre&),11,rx&,ry&,rl&,rh&)
- control
- WHILE rl&<>0 AND rh&<>0
- IF RC_INTERSECT(xf&,yf&,lf&,hf&,rx&,ry&,rl&,rh&)
- ob_draw(adtree%(arbre&),fils&,1,rx&,ry&,rl&,rh&)
- ENDIF
- ~WIND_GET(hand_win&(arbre&),12,rx&,ry&,rl&,rh&)
- WEND
- uncontrol
- ENDIF
- RETURN
- '
- > PROCEDURE gere_conversion
- SELECT OBJC_FIND(adtree%(2),0,3,mo_x&,mo_y&)
- CASE 2
- black_white(2,2,1)
- dummy$=@fileselector2$(working_folder$+"*.GIF"+c0$,c0$)
- IF LEN(dummy$)>0 AND dummy$<>c0$
- folder_image$=LEFT$(dummy$,RINSTR(dummy$,"\"))
- CHAR{{OB_SPEC(adtree%(2),2)}}=RIGHT$(folder_image$,29)
- ENDIF
- black_white(2,2,0)
- CASE 3
- black_white(2,3,1)
- '
- abort&=0
- dgi_id&=-1
- retour_fs%=FSFIRST(folder_image$+masque$,1)
- DO
- EXIT IF retour_fs%<>0 OR abort&>0
- nom_image$=CHAR{FGETDTA()+30}+c0$
- IF RINSTR(UPPER$(nom_image$),".GIF")>0
- CHAR{{OB_SPEC(adtree%(2),5)}}=nom_image$
- black_white(2,5,0)
- parx_ouvrir(folder_image$+nom_image$)
- ENDIF
- retour_fs%=FSNEXT()
- LOOP
- IF abort&=0 AND dgi_id&>-1
- sauvegarde_fichier_dgx
- ENDIF
- effacement_stock_dgi
- '
- CHAR{{OB_SPEC(adtree%(2),5)}}=STR$(dgi_nb&)+" FILES"
- black_white(2,5,0)
- black_white(2,3,0)
- DEFAULT
- win(2)
- ENDSELECT
- RETURN
- > PROCEDURE gere_preference_parx
- control_form(3)
- DO
- result&=FORM_DO(adtree%(3),0)
- IF BTST(OB_STATE(adtree%(3),5),0)
- parx_lire_rim!=TRUE
- ELSE
- parx_lire_rim!=FALSE
- ENDIF
- IF BTST(OB_STATE(adtree%(3),7),0)
- parx_lire_mem!=TRUE
- ELSE
- parx_lire_mem!=FALSE
- ENDIF
- IF BTST(OB_STATE(adtree%(3),10),0)
- parx_lire_trm!=TRUE
- ELSE
- parx_lire_trm!=FALSE
- ENDIF
- IF result&=3
- dummy$=@fileselector2$(chemin$+c0$,c0$)
- dummy$=LEFT$(dummy$,MAX(0,PRED(LEN(dummy$))))
- IF LEN(dummy$)>0 AND dummy$<>""
- parx_sys$=dummy$
- CHAR{{OB_SPEC(adtree%(3),3)}}=RIGHT$(parx_sys$,29)+c0$
- ENDIF
- ENDIF
- IF result&=15
- dummy$=@fileselector2$(chemin$+c0$,c0$)
- dummy$=LEFT$(dummy$,MAX(0,PRED(LEN(dummy$))))
- IF LEN(dummy$)>0 AND dummy$<>""
- working_folder$=dummy$
- CHAR{{OB_SPEC(adtree%(3),15)}}=RIGHT$(working_folder$,29)+c0$
- ENDIF
- ENDIF
- IF result&=4 OR result&=15 OR result&=16
- OB_STATE(adtree%(3),result&)=BCLR(OB_STATE(adtree%(3),result&),0)
- ENDIF
- IF result&=4 OR result&=15
- ~OBJC_DRAW(adtree%(3),0,3,screenx&,screeny&,screenl&,screenh&)
- ENDIF
- LOOP UNTIL result&=16
- uncontrol_form(3)
- '
- endroit%=14
- REPEAT
- err_choix&=1
- OPEN "o",#14,application_inf$
- PRINT #14,parx_sys$
- PRINT #14,parx_lire_rim!
- PRINT #14,parx_lire_mem!
- PRINT #14,parx_lire_trm!
- PRINT #14,working_folder$
- endroit14:
- CLOSE #14
- UNTIL err_choix&=1
- '
- RETURN
- '
- > PROCEDURE parx_ouvrir(nom_fichier$)
- abort&=0
- IF @s_exist(nom_fichier$)=TRUE
- IF parx_adr_mem%>0 AND parx_tab_adr%(0)>0
- ~WIND_UPDATE(1)
- ~WIND_UPDATE(3)
- FOR i&=2 TO 9
- parx_libere_blk(i&)
- NEXT i&
- parx_hand_image&=GEMDOS(61,L:V:nom_fichier$,W:0)
- IF parx_hand_image&>0
- IF @parx_load_reco=TRUE
- IF @parx_load_palette=TRUE
- IF @parx_load_image=TRUE
- IF @parx_tramage=TRUE
- stockage_dgi
- ELSE
- abort&=@alerte(1,22)
- ENDIF
- ELSE
- abort&=@alerte(1,24)
- ENDIF
- ELSE
- abort&=@alerte(1,25)
- ENDIF
- ELSE
- abort&=@alerte(1,19)
- ENDIF
- ~GEMDOS(62,W:parx_hand_image&)
- ELSE
- abort&=@alerte(1,23)
- ENDIF
- ~WIND_UPDATE(0)
- ~WIND_UPDATE(2)
- FOR i&=2 TO 9
- parx_libere_blk(i&)
- NEXT i&
- IF multi!=FALSE
- ~FORM_DIAL(3,0,0,0,0,screenx&,screeny&,screenl&,screenh&)
- ENDIF
- ELSE
- abort&=@alerte(1,18)
- gere_preference_parx
- ENDIF
- ~GRAF_MOUSE(0,0)
- ENDIF
- RETURN
- > FUNCTION parx_load_reco
- '
- exit!=FALSE
- parx_reserve_blk(2,2048)
- IF retour_mem%>=parx_size_tab%(2)
- '
- parx_size_image%=GEMDOS(66,L:0,W:parx_hand_image&,W:2)
- ~GEMDOS(66,L:0,W:parx_hand_image&,W:0)
- dummy%=GEMDOS(63,W:parx_hand_image&,L:MIN(parx_size_image%,parx_size_tab%(2)),L:parx_tab_adr%(2))
- '
- parx_ext%=CVL(LEFT$(RIGHT$(nom_fichier$,5),4))
- '
- ptr_rim%=parx_tab_adr%(1)
- i&=0
- DO
- INC i&
- '
- LONG{img_mfdb%(0)}=XBIOS(3)
- WORD{ADD(img_mfdb%(0),4)}=SUCC(WORK_OUT(0))
- WORD{ADD(img_mfdb%(0),6)}=SUCC(WORK_OUT(1))
- WORD{ADD(img_mfdb%(0),8)}=SUCC(WORK_OUT(0))/16
- WORD{ADD(img_mfdb%(0),10)}=0
- WORD{ADD(img_mfdb%(0),12)}=nb_plan&
- LONG{ADD(img_mfdb%(0),14)}=0
- WORD{ADD(img_mfdb%(0),18)}=parx_hand_image&
- '
- @declare_parx_rim
- retour_rim%=C:parx_test_file%(W:0,L:parx_tab_adr%(2),L:dummy%,L:parx_size_image%,L:parx_ext%,L:img_mfdb%(0))
- SELECT retour_rim%
- CASE 2
- exit!=TRUE
- parx_image_sans_palette!=FALSE
- CASE 3
- exit!=TRUE
- parx_image_sans_palette!=TRUE
- ENDSELECT
- EXIT IF exit!=TRUE
- '
- ADD ptr_rim%,LONG{ptr_rim%}
- '
- LOOP UNTIL i&=nombre_rim&
- ENDIF
- parx_libere_blk(2)
- '
- IF parx_image_sans_palette!=TRUE AND WORD{ADD(img_mfdb%(0),12)}<10
- RETURN FALSE
- ELSE
- RETURN exit!
- ENDIF
- ENDFUNC
- > FUNCTION parx_load_palette
- '
- exit!=FALSE
- parx_seek_pal%=LONG{img_mfdb%(0)}
- parx_leng_pal%=LONG{ADD(img_mfdb%(0),14)}
- parx_nb_plan&=WORD{ADD(img_mfdb%(0),12)}
- parx_nb_coul%=2^MAX(1,parx_nb_plan&)
- '
- parx_reserve_blk(2,SHL(SHR(ADD(MUL(parx_nb_coul%,6),15),4),4))
- IF retour_mem%>=MUL(parx_nb_coul%,6)
- parx_reserve_blk(3,SHL(SHR(ADD(parx_leng_pal%,15),4),4))
- IF retour_mem%>=parx_leng_pal%
- '
- dummy%=0
- ~GEMDOS(66,L:parx_seek_pal%,W:parx_hand_image&,W:0)
- dummy%=GEMDOS(63,W:parx_hand_image&,L:parx_leng_pal%,L:parx_tab_adr%(3))
- '
- LONG{img_mfdb%(0)}=parx_size_image%
- WORD{ADD(img_mfdb%(0),18)}=parx_hand_image&
- '
- @declare_parx_rim
- retour_rim%=C:parx_get_palette%(W:0,L:parx_tab_adr%(3),L:dummy%,L:parx_tab_adr%(2),L:parx_nb_coul%,L:img_mfdb%(0))
- IF retour_rim%=2 OR retour_rim%=0
- exit!=TRUE
- ENDIF
- '
- ENDIF
- parx_libere_blk(3)
- ENDIF
- '
- RETURN exit!
- ENDFUNC
- > FUNCTION parx_load_image
- '
- exit!=FALSE
- parx_seek_data%=LONG{img_mfdb%(0)}
- parx_leng_data%=LONG{ADD(img_mfdb%(0),14)}
- parx_size_data%=2*WORD{ADD(img_mfdb%(0),8)}*WORD{ADD(img_mfdb%(0),6)}*WORD{ADD(img_mfdb%(0),12)}
- '
- parx_reserve_blk(3,SHL(SHR(ADD(parx_leng_data%,15),4),4))
- IF retour_mem%>=parx_leng_data%
- parx_reserve_blk(4,SHL(SHR(ADD(parx_size_data%,15),4),4))
- IF retour_mem%>=parx_size_data%
- '
- dummy%=0
- ~GEMDOS(66,L:parx_seek_data%,W:parx_hand_image&,W:0)
- dummy%=GEMDOS(63,W:parx_hand_image&,L:parx_leng_data%,L:parx_tab_adr%(3))
- '
- LONG{img_mfdb%(0)}=parx_tab_adr%(4)
- WORD{ADD(img_mfdb%(0),18)}=parx_hand_image&
- '
- @declare_parx_rim
- retour_rim%=C:parx_do_file%(W:0,L:parx_tab_adr%(3),L:dummy%,L:img_mfdb%(0))
- IF retour_rim%=3 OR retour_rim%>4
- exit!=TRUE
- ENDIF
- ENDIF
- ENDIF
- parx_libere_blk(3)
- '
- RETURN exit!
- ENDFUNC
- > FUNCTION parx_tramage
- '
- IF WORD{ADD(img_mfdb%(0),10)}<>1 OR parx_image_sans_palette!=TRUE
- exit!=FALSE
- '
- IF parx_nb_coul%>0
- IF parx_size_tab%(3)>0
- parx_libere_blk(3)
- ENDIF
- parx_reserve_blk(3,SHL(SHR(ADD(MUL(parx_nb_coul%,6),15),4),4))
- ENDIF
- IF retour_mem%>=MUL(parx_nb_coul%,6) OR parx_image_sans_palette!=TRUE
- '
- IF parx_nb_coul%>0
- dummy%=parx_tab_adr%(0)
- SELECT MUL(parx_nb_coul%,6)
- CASE 1
- ADD dummy%,12
- CASE 2
- ADD dummy%,26
- CASE 4
- ADD dummy%,54
- CASE 8
- ADD dummy%,166
- ENDSELECT
- BMOVE dummy%,parx_tab_adr%(3),MUL(parx_nb_coul%,6)
- ENDIF
- '
- parx_options_trm&=&X100100
- '
- LONG{img_mfdb%(0)}=parx_tab_adr%(4)
- '
- LONG{img_mfdb%(1)}=0
- WORD{ADD(img_mfdb%(1),4)}=WORD{ADD(img_mfdb%(0),4)}
- WORD{ADD(img_mfdb%(1),6)}=WORD{ADD(img_mfdb%(0),6)}
- WORD{ADD(img_mfdb%(1),8)}=WORD{ADD(img_mfdb%(0),8)}
- WORD{ADD(img_mfdb%(1),10)}=1
- IF parx_image_sans_palette!
- WORD{ADD(img_mfdb%(1),12)}=24
- ELSE
- WORD{ADD(img_mfdb%(1),12)}=parx_nb_plan&
- ENDIF
- '
- @declare_parx_trm
- retour_trm%=C:parx_do_trm%(W:0,W:1,L:0,L:img_mfdb%(0),L:parx_tab_adr%(2),L:img_mfdb%(1),L:parx_tab_adr%(3),W:parx_options_trm&)
- parx_trm_error
- IF retour_trm%>0
- '
- parx_taille_trame%=2*WORD{ADD(img_mfdb%(1),8)}*WORD{ADD(img_mfdb%(1),6)}*WORD{ADD(img_mfdb%(1),12)}
- '
- IF retour_trm%=&H7FFFFFFF
- parx_reserve_blk(5,MAX(16,SUB(C:parx_manag_size%(),ADD(parx_taille_trame%,12800))))
- ELSE
- parx_reserve_blk(5,SHL(SHR(ADD(retour_trm%,15),4),4))
- ENDIF
- IF retour_mem%>=4
- LONG{parx_tab_adr%(5)}=retour_mem%
- ENDIF
- IF retour_mem%<retour_trm%
- exit!=TRUE
- retour_trm%=-2
- ENDIF
- ENDIF
- '
- parx_reserve_blk(6,SHL(SHR(ADD(parx_taille_trame%,15),4),4))
- IF retour_mem%>=parx_taille_trame%
- LONG{img_mfdb%(1)}=parx_tab_adr%(6)
- ELSE
- exit!=TRUE
- retour_trm%=-2
- ENDIF
- '
- LONG{img_mfdb%(0)}=parx_tab_adr%(4)
- LONG{img_mfdb%(1)}=parx_tab_adr%(6)
- '
- IF exit!=FALSE
- retour_trm%=C:parx_do_trm%(W:1,W:1,L:parx_tab_adr%(5),L:img_mfdb%(0),L:parx_tab_adr%(2),L:img_mfdb%(1),L:parx_tab_adr%(3),W:parx_options_trm&)
- ENDIF
- parx_trm_error
- IF retour_trm%=0 AND exit!=FALSE
- exit!=TRUE
- ELSE
- exit!=FALSE
- ENDIF
- ENDIF
- ELSE
- WORD{ADD(img_mfdb%(1),4)}=WORD{ADD(img_mfdb%(0),4)}
- WORD{ADD(img_mfdb%(1),6)}=WORD{ADD(img_mfdb%(0),6)}
- WORD{ADD(img_mfdb%(1),8)}=WORD{ADD(img_mfdb%(0),8)}
- WORD{ADD(img_mfdb%(1),10)}=1
- WORD{ADD(img_mfdb%(1),12)}=parx_nb_plan&
- parx_tab_adr%(6)=parx_tab_adr%(4)
- parx_size_tab%(6)=parx_size_tab%(4)
- parx_tab_adr%(3)=parx_tab_adr%(2)
- parx_size_tab%(3)=parx_size_tab%(2)
- exit!=TRUE
- ENDIF
- RETURN exit!
- ENDFUNC
- > PROCEDURE stockage_dgi
- '
- ' address of the MFDB: mfdb%(1) (size=20 bytes)
- ' address of the palette: parx_tab_adr%(3) (size=parx_size_tab%(3))
- ' address of the VDI format(=standard mode): parx_tab_adr%(6) (size=parx_size_tab%(6))
- '
- INC dgi_id&
- dgi_name$(dgi_id&)=@nom_seulement$(nom_fichier$)
- LONG{img_mfdb%(1)}=CVL("_DGI")
- LONG{ADD(img_mfdb%(1),14)}=0
- WORD{ADD(img_mfdb%(1),18)}=0
- '
- dgi_len%(dgi_id&)=ADD(parx_size_tab%(6),20)
- dgi_ptr%(dgi_id&)=MALLOC(SHL(SHR(ADD(dgi_len%(dgi_id&),32),4),4))
- '
- IF dgi_ptr%(dgi_id&)>0 AND NOT parx_image_sans_palette!
- BMOVE img_mfdb%(1),dgi_ptr%(dgi_id&),20
- BMOVE parx_tab_adr%(6),ADD(dgi_ptr%(dgi_id&),20),parx_size_tab%(6)
- ENDIF
- '
- IF parx_tab_adr%(6)=parx_tab_adr%(4)
- parx_tab_adr%(6)=0
- parx_size_tab%(6)=0
- parx_tab_adr%(3)=0
- parx_size_tab%(3)=0
- ENDIF
- '
- RETURN
- > PROCEDURE sauvegarde_fichier_dgx
- '
- mxfree(dgx_head_adr%)
- '
- dgi_nb&=SUCC(dgi_id&)
- '
- dgx_head_len%=ADD(6,MUL(12,dgi_nb&))
- dgx_head_adr%=MALLOC(SHL(SHR(ADD(dgx_head_len%,32),4),4))
- dgx_head_ptr%=ADD(dgx_head_adr%,6)
- dgx_offset%=dgx_head_len%
- '
- dgx_name$=LEFT$(folder_image$,PRED(LEN(folder_image$)))+".DGX"+c0$
- '
- IF dgx_head_adr%>0
- '
- LONG{dgx_head_adr%}=CVL("_DGX")
- INT{ADD(dgx_head_adr%,4)}=dgi_nb&
- FOR i&=0 TO PRED(dgi_nb&)
- CHAR{dgx_head_ptr%}=dgi_name$(i&)
- ADD dgx_head_ptr%,8
- LONG{dgx_head_ptr%}=dgx_offset%
- ADD dgx_head_ptr%,4
- ADD dgx_offset%,dgi_len%(i&)
- NEXT i&
- '
- IF @s_exist(dgx_name$)=TRUE
- ~GEMDOS(65,L:V:dgx_name$)
- ENDIF
- handle&=GEMDOS(60,L:V:dgx_name$,W:0)
- IF handle&>0
- IF GEMDOS(64,W:handle&,L:dgx_head_len%,L:dgx_head_adr%)<>dgx_head_len%
- abort&=@alerte(1,27)
- ELSE
- FOR i&=0 TO PRED(dgi_nb&)
- IF GEMDOS(64,W:handle&,L:dgi_len%(i&),L:dgi_ptr%(i&))<>dgi_len%(i&)
- abort&=@alerte(1,28)
- ENDIF
- EXIT IF abort&>0
- NEXT i&
- ENDIF
- ~GEMDOS(62,W:handle&)
- ELSE
- ~@alerte(1,29)
- ENDIF
- ELSE
- ~@alerte(1,26)
- ENDIF
- '
- RETURN
- > PROCEDURE effacement_stock_dgi
- FOR i&=0 TO PRED(dgi_nb_slot&)
- mxfree(dgi_ptr%(i&))
- dgi_ptr%(i&)=0
- dgi_len%(i&)=0
- dgi_name$(i&)=""
- NEXT i&
- mxfree(dgx_head_adr%)
- dgx_head_adr%=0
- dgx_head_len%=0
- RETURN
- '
- > PROCEDURE parx_reserve_blk(parx_index%,parx_taille%)
- IF parx_tab_adr%(parx_index%)=0
- retour_mem%=C:parx_blk_malloc%(L:V:parx_tab_adr%(0),L:V:parx_size_tab%(0),W:parx_index%,W:parx_nb_slot&,L:parx_taille%,W:0)
- IF retour_mem%<parx_taille%
- ~@alerte(1,23)
- parx_libere_blk(parx_index%)
- ENDIF
- ENDIF
- RETURN
- > PROCEDURE parx_shrink_blk(parx_index%,parx_taille%)
- IF parx_tab_adr%(parx_index%)<>0 OR parx_size_tab%(parx_index%)<>0
- retour_mem%=C:parx_blk_shrink%(L:V:parx_tab_adr%(0),L:V:parx_size_tab%(0),W:parx_index%,W:parx_nb_slot&,L:parx_taille%,L:-1)
- ENDIF
- RETURN
- > PROCEDURE parx_agrand_blk(parx_index%,parx_taille%)
- IF parx_tab_adr%(parx_index%)<>0 OR parx_size_tab%(parx_index%)<>0
- retour_mem%=C:parx_blk_grow%(L:V:parx_tab_adr%(0),L:V:parx_size_tab%(0),W:parx_index%,W:parx_nb_slot&,L:parx_taille%,W:0,L:-1)
- ENDIF
- RETURN
- > PROCEDURE parx_libere_blk(parx_index%)
- IF parx_tab_adr%(parx_index%)>0
- ~C:parx_blk_free%(L:V:parx_tab_adr%(0),L:V:parx_size_tab%(0),W:parx_index%,W:parx_nb_slot&)
- ENDIF
- RETURN
- > PROCEDURE parx_trm_init
- IF parx_tab_adr%(0)>0
- @declare_parx_trm
- retour_trm%=C:parx_do_trm%(W:2,W:0,L:0,L:0,L:0,L:0,L:0,W:0)
- parx_trm_error
- ENDIF
- RETURN
- > PROCEDURE parx_trm_exit
- IF parx_tab_adr%(0)>0
- @declare_parx_trm
- ~C:parx_do_trm%(W:3,W:0,L:0,L:0,L:0,L:0,L:0,W:0)
- ENDIF
- RETURN
- > PROCEDURE parx_trm_error
- IF retour_trm%<>-2 AND retour_trm%<0
- ~FORM_ALERT(1,"[1][| TRM: "+STR$(retour_trm%)+" error.|][ Ok ]")
- ENDIF
- RETURN
- '
- > PROCEDURE tout_fermer
- FOR i&=1 TO 3
- ferme_win(i&)
- NEXT i&
- RETURN
- > PROCEDURE control
- ~WIND_UPDATE(1)
- ~WIND_UPDATE(3)
- v_hide_c
- RETURN
- > PROCEDURE uncontrol
- ~WIND_UPDATE(2)
- ~WIND_UPDATE(0)
- v_show_c
- RETURN
- > PROCEDURE delai
- ~EVNT_TIMER(75)
- RETURN
- > PROCEDURE gest_err
- SELECT ERR
- CASE -33
- err_type&=0
- CASE -36
- err_type&=1
- CASE -46
- err_type&=2
- CASE 37
- err_type&=3
- CASE -13
- err_type&=4
- CASE -11
- err_type&=5
- CASE -10
- err_type&=6
- DEFAULT
- err_type&=7
- ENDSELECT
- uncontrol
- IF err_type&=7
- ~FORM_ALERT(1,ERR$(ERR))
- ENDIF
- err_choix&=@alerte(1,SUCC(err_type&))
- IF err_type&<7
- SELECT endroit%
- CASE 1
- RESUME endroit1
- CASE 2
- RESUME endroit2
- CASE 3
- RESUME endroit3
- CASE 14
- RESUME endroit14
- CASE 15
- RESUME endroit15
- CASE 16
- RESUME endroit16
- CASE 17
- RESUME endroit17
- CASE 18
- RESUME endroit18
- CASE 23
- RESUME endroit23
- ENDSELECT
- ENDIF
- RETURN
- > PROCEDURE control_form(dial&)
- ~WIND_UPDATE(1)
- ~WIND_UPDATE(3)
- ~FORM_CENTER(adtree%(dial&),xd&(dial&),yd&(dial&),ld&(dial&),hd&(dial&))
- DEC xd&(dial&)
- DEC yd&(dial&)
- ADD ld&(dial&),5
- ADD hd&(dial&),5
- ~FORM_DIAL(0,0,0,0,0,xd&(dial&),yd&(dial&),ld&(dial&),hd&(dial&))
- ~OBJC_DRAW(adtree%(dial&),0,3,screenx&,screeny&,screenl&,screenh&)
- RETURN
- > PROCEDURE uncontrol_form(dial&)
- ~WIND_UPDATE(2)
- ~WIND_UPDATE(0)
- ~FORM_DIAL(3,0,0,0,0,xd&(dial&),yd&(dial&),ld&(dial&),hd&(dial&))
- RETURN
- > FUNCTION alerte(mes_type&,mes&)
- $F&
- RETURN FORM_ALERT(mes_type&,CHAR{OB_SPEC(adtree%(6),mes&)})
- ENDFUNC
- > PROCEDURE v_hide_c
- CONTRL(0)=123
- CONTRL(1)=0
- CONTRL(3)=0
- CONTRL(6)=vdi_handle&
- VDISYS
- RETURN
- > PROCEDURE v_show_c
- CONTRL(0)=122
- CONTRL(1)=0
- CONTRL(3)=1
- CONTRL(6)=vdi_handle&
- INTIN(0)=1
- VDISYS
- RETURN
- > FUNCTION fileselector2$(path$,name$)
- LOCAL path1$,name1$,choix_file&,retour_file&
- LET path1$=path$
- LET name1$=name$
- retour_file&=@fi_input(path1$,name1$,choix_file&)
- IF retour_file&=0 OR choix_file&=0
- RETURN chemin$+c0$
- ELSE
- RETURN LEFT$(path1$,RINSTR(path1$,"\"))+c0$
- ENDIF
- ENDFUNC
- > FUNCTION fi_input(VAR fi_path$,fi_name$,fi_choix&)
- $F&
- '
- GCONTRL(0)=90
- GCONTRL(1)=0
- GCONTRL(2)=2
- GCONTRL(3)=2
- GCONTRL(4)=0
- '
- fi_path$=fi_path$+SPACE$(300)
- fi_name$=fi_name$+SPACE$(100)
- '
- ADDRIN(0)=V:fi_path$
- ADDRIN(1)=V:fi_name$
- '
- GEMSYS
- '
- fi_path$=CHAR{V:fi_path$}+c0$
- fi_name$=CHAR{V:fi_name$}+c0$
- fi_choix&=GINTOUT(1)
- '
- RETURN GINTOUT(0)
- ENDFUNC
- > FUNCTION nom_seulement$(nom_recu$)
- dummy$=LEFT$(MID$(nom_recu$,SUCC(RINSTR(nom_recu$,"\"))),13)
- dummy$=LEFT$(dummy$,PRED(INSTR(dummy$,".")))
- WHILE LEN(dummy$)<8
- dummy$=dummy$+" "
- WEND
- RETURN LEFT$(dummy$,8)
- ENDFUNC
- > FUNCTION window_create(cp_win_recu&)
- $F&
- '
- GCONTRL(0)=100
- GCONTRL(1)=5
- GCONTRL(2)=1
- GCONTRL(3)=0
- GCONTRL(4)=0
- '
- GINTIN(0)=cp_win_recu&
- GINTIN(1)=30
- GINTIN(2)=30
- GINTIN(3)=30
- GINTIN(4)=30
- '
- GEMSYS
- '
- RETURN GINTOUT(0)
- ENDFUNC
- > FUNCTION ev_multi(em_flags&,em_cl&,em_ma&,em_st&,em_ct%,VAR em_mx&,em_my&,em_mk&,em_kbd&,em_key&,em_click&)
- $F&
- '
- GCONTRL(0)=25
- GCONTRL(1)=16
- GCONTRL(2)=7
- GCONTRL(3)=1
- GCONTRL(4)=0
- '
- GINTIN(0)=em_flags&
- GINTIN(1)=em_cl&
- GINTIN(2)=em_ma&
- GINTIN(3)=em_st&
- GINTIN(4)=0
- GINTIN(5)=0
- GINTIN(6)=0
- GINTIN(7)=0
- GINTIN(8)=0
- GINTIN(9)=0
- GINTIN(10)=0
- GINTIN(11)=0
- GINTIN(12)=0
- GINTIN(13)=0
- INT{ADD(GINTIN,28)}=WORD(em_ct%)
- INT{ADD(GINTIN,30)}=WORD(SWAP(em_ct%))
- '
- ADDRIN(0)=m_adr%
- '
- GEMSYS
- '
- em_mx&=GINTOUT(1)
- em_my&=GINTOUT(2)
- em_mk&=GINTOUT(3)
- em_kbd&=GINTOUT(4)
- em_key&=GINTOUT(5)
- em_click&=GINTOUT(6)
- '
- RETURN GINTOUT(0)
- ENDFUNC
- > PROCEDURE ob_draw(ob_adr%,ob_start&,ob_dept&,ob_xclip&,ob_yclip&,ob_lclip&,ob_hclip&)
- '
- GCONTRL(0)=42
- GCONTRL(1)=6
- GCONTRL(2)=1
- GCONTRL(3)=1
- GCONTRL(4)=0
- '
- GINTIN(0)=ob_start&
- GINTIN(1)=ob_dept&
- GINTIN(2)=ob_xclip&
- GINTIN(3)=ob_yclip&
- GINTIN(4)=ob_lclip&
- GINTIN(5)=ob_hclip&
- '
- ADDRIN(0)=ob_adr%
- '
- GEMSYS
- '
- RETURN
- > FUNCTION s_exist(exist_name$)
- $F!
- LOCAL existe&
- IF LEN(exist_name$)=0 OR exist_name$=c0$
- RETURN FALSE
- ELSE
- existe&=GEMDOS(61,L:V:exist_name$,W:0)
- IF existe&>0
- ~GEMDOS(62,W:existe&)
- RETURN TRUE
- ELSE
- RETURN FALSE
- ENDIF
- ENDIF
- ENDFUNC
- > FUNCTION test_cookie(cookie_name$,VAR cookie_valeur%)
- $F!
- LOCAL read_cook%,nom_cook%,cookie%
- '
- nom_cook%=CVL(cookie_name$)
- cookie%=LPEEK(&H5A0)
- cookie_valeur%=0
- '
- IF cookie%<>0
- REPEAT
- read_cook%=LPEEK(cookie%)
- cookie_valeur%=LPEEK(cookie%+4)
- ADD cookie%,8
- UNTIL read_cook%=0 OR read_cook%=nom_cook%
- IF read_cook%=nom_cook%
- RETURN TRUE
- ELSE
- RETURN FALSE
- ENDIF
- ELSE
- RETURN FALSE
- ENDIF
- ENDFUNC
- > PROCEDURE make_zero_mfdb(pmfdb%)
- LONG{pmfdb%}=0
- LONG{ADD(pmfdb%,4)}=0
- LONG{ADD(pmfdb%,8)}=0
- LONG{ADD(pmfdb%,12)}=0
- LONG{ADD(pmfdb%,16)}=0
- RETURN
- > PROCEDURE make_xyarray(xq0&,yq0&,xq1&,yq1&,xz0&,yz0&,xz1&,yz1&)
- WORD{pxyarray%}=xq0&
- WORD{ADD(pxyarray%,2)}=yq0&
- WORD{ADD(pxyarray%,4)}=xq1&
- WORD{ADD(pxyarray%,6)}=yq1&
- WORD{ADD(pxyarray%,8)}=xz0&
- WORD{ADD(pxyarray%,10)}=yz0&
- WORD{ADD(pxyarray%,12)}=xz1&
- WORD{ADD(pxyarray%,14)}=yz1&
- RETURN
- > PROCEDURE trns_form(pscr_mfdb%,pdes_mfdb%)
- CONTRL(1)=0
- CONTRL(3)=0
- CONTRL(6)=vdi_handle&
- LONG{ADD(CONTRL,14)}=pscr_mfdb%
- LONG{ADD(CONTRL,18)}=pdes_mfdb%
- VDISYS 110
- RETURN
- '
- > PROCEDURE dd_receive(m_fenetre&,dd_ext$,VAR dd_data$,dd_mem%,dd_byte_len%)
- '
- dd_open(dd_path$+dd_ext$+c0$,dd_f_hand&)
- IF dd_f_hand&>0
- '
- dd_reply(dd_f_hand&,dd_ok&)
- '
- dd_datatypes(dd_f_hand&)
- '
- dd_msg&=dd_ext&
- dd_cnt%=0
- dd_mem%=0
- dd_byte_len%=0
- REPEAT
- '
- fread(dd_f_hand&,aa_start%,2)
- IF retour_g%>0
- '
- dd_len%=MIN(CARD{aa_start%},1024)
- fread(dd_f_hand&,aa_start%,dd_len%)
- IF retour_g%>0
- '
- dd_data$=MKL$(LONG{aa_start%})
- dd_byte_len%=LONG{ADD(aa_start%,4)}
- '
- IF dd_data$="ARGS"
- dd_msg&=dd_ok&
- ELSE
- dd_msg&=dd_ext&
- ENDIF
- '
- IF dd_msg&>=0
- IF dd_msg&=dd_ok&
- dd_mem%=MALLOC(SHL(SHR(ADD(dd_byte_len%,32),4),4))
- IF dd_mem%<=0
- dd_msg&=dd_len&
- ENDIF
- ENDIF
- '
- dd_reply(dd_f_hand&,dd_msg&)
- '
- IF dd_msg&=dd_len&
- dd_datatypes(dd_f_hand&)
- ENDIF
- '
- INC dd_cnt%
- '
- ENDIF
- retour_g%=1
- ENDIF
- ENDIF
- UNTIL dd_msg&<=0 OR dd_cnt%>8 OR retour_g%<=0
- '
- IF retour_g%>0
- IF dd_cnt%>8 AND dd_msg&=dd_ok&
- dd_reply(dd_f_hand&,dd_nak&)
- ELSE IF dd_msg&=dd_ok& AND dd_cnt%<=8
- IF dd_mem%>0
- fread(dd_f_hand&,dd_mem%,dd_byte_len%)
- ENDIF
- ENDIF
- ENDIF
- '
- dd_close(dd_f_hand&)
- '
- ENDIF
- RETURN
- > PROCEDURE dd_open(dd_f$,VAR dd_f_hand&)
- fopen(dd_f$,2,dd_f_hand&)
- RETURN
- > PROCEDURE dd_close(dd_f_hand&)
- fclose(dd_f_hand&)
- RETURN
- > PROCEDURE dd_reply(dd_f_hand&,dd_flg&)
- BYTE{aa_start%}=dd_flg&
- fwrite(dd_f_hand&,aa_start%,1)
- RETURN
- > PROCEDURE dd_datatypes(dd_f_hand&)
- CHAR{aa_start%}="ARGS"
- FOR i&=4 TO 28 STEP 4
- CHAR{ADD(aa_start%,i&)}=STRING$(4,0)
- NEXT i&
- fwrite(dd_f_hand&,aa_start%,32)
- RETURN
- '
- > PROCEDURE fcreate(dd_f$,flg%,VAR dd_f_hand&)
- dd_f_hand&=GEMDOS(60,L:V:dd_f$,W:flg%)
- RETURN
- > PROCEDURE fopen(dd_f$,flg%,VAR dd_f_hand&)
- dd_f_hand&=GEMDOS(61,L:V:dd_f$,W:flg%)
- RETURN
- > PROCEDURE fclose(dd_f_hand&)
- retour_g%=GEMDOS(62,W:dd_f_hand&)
- RETURN
- > PROCEDURE fread(dd_f_hand&,adr%,flg%)
- retour_g%=GEMDOS(63,W:dd_f_hand&,L:flg%,L:adr%)
- RETURN
- > PROCEDURE fwrite(dd_f_hand&,adr%,flg%)
- retour_g%=GEMDOS(64,W:dd_f_hand&,L:flg%,L:adr%)
- RETURN
- '
- > FUNCTION mx_mask
- $F%
- IF GEMDOS(68,L:-1,0)=-32
- RETURN 0
- ELSE IF GEMDOS(290,-1)=-32
- RETURN 3
- ELSE
- RETURN -1
- ENDIF
- ENDFUNC
- > FUNCTION mxalloc_global(mx_len%,mx_mode&)
- $F%
- '
- IF mx_mask%<>0
- mx_mode&=OR(mx_mode&,&X100000)
- RETURN GEMDOS(68,L:mx_len%,W:mx_mode& AND mx_mask%)
- ELSE
- RETURN MALLOC(mx_len%)
- ENDIF
- ENDFUNC
- > PROCEDURE mxfree(mx_adr%)
- IF mx_adr%>0
- ~MFREE(mx_adr%)
- ENDIF
- RETURN
-