( Fenetre 6. Version 1.00 du 17 Fevrier 2008. Ecrit par jpb.forth . ) ( ***************************************************************************** Fenetre 5 + clavier --> FENETRE_6 ***************************************************************************** ) FEN_STRING" S_FEN FENETRE 6" WINDOW 6" FEN_STRING" S_A_PROPOS Ceci est un texte permettant de decrire l'application." This is a text allowing to describe the application." FEN_STRING" S_MENU Teinte numero 1 Teinte numero 2 Teinte numero 3" Colour number 1 Colour number 2 Colour number 3" FEN_STRING" S_TEINTE_1 Choix de la teinte numero 1:" Choice of the colour number 1:" FEN_STRING" S_TEINTE_2 Choix de la teinte numero 2:" Choice of the colour number 2:" FEN_STRING" S_TEINTE_3 Choix de la teinte numero 3:" Choice of the colour number 3:" ( ++++ ) FEN_STRING" S_TOUCHE Dernier caractere: 000" Last character: 000" ( ---- ) 0 VARIABLE FEN 0 VARIABLE TEINTE_1 0 VARIABLE TEINTE_2 0 VARIABLE TEINTE_3 ( ++++ ) 0 VARIABLE TOUCHE ( ---- ) FEN: FERME_FEN FEN_DETRUIT ; FEN: A_PROPOS_FEN >R S_A_PROPOS R> FEN_DIALOGUE_MESSAGE ; : SP_TEINTE_RVB ( c --> r,v,b ) DUP 3 AND >R DUP -4 LSH 12 AND R@ + DUP 4 LSH + SWAP DUP 4/ 12 AND R> + DUP 4 LSH + SWAP 15 AND DUP 4 LSH + ; ( ++++ ) : SP_AF_TOUCHE ( fen --> - ) >R 255 CARACTERES_GRAPHIQUES R@ FEN_TAILLE_? 14- SWAP S_TOUCHE COUNT SWAP DROP 7 * DUP >R - 2/ SWAP 0 3 PICK 3 PICK OVER R> 1- + OVER 11+ R@ FEN_TRACE_REC 1+ S_TOUCHE COUNT TOUCHE @ 4 1 DO 10 /MOD SWAP 48+ 4 PICK 4 PICK + I - C! LOOP DROP R> FEN_TRACE_CHAINE DROP DROP DROP DROP DROP ; ( ---- ) FEN: AFFICHE_FEN DUP >R FEN_TAILLE_? FEN_TEINTES_? DROP DROP DROP DROP >R DROP R> DUP 0 DUP 6 PICK 1- OVER 3+ R@ FEN_TRACE_REC DUP 0 4 3 6 PICK 16- R@ FEN_TRACE_REC DUP 4 PICK 4- 4 OVER 3+ 6 PICK 16- R@ FEN_TRACE_REC 0 3 PICK 16- 5 PICK 1- 5 PICK 1- R@ FEN_TRACE_REC TEINTE_3 @ SP_TEINTE_RVB TEINTE_2 @ SP_TEINTE_RVB TEINTE_1 @ SP_TEINTE_RVB 3 12 PICK 8- 12 PICK 20- -1 DEGRADE_\ ?DUP IF DUP 4 DUP R@ FEN_ECRIT_REC MEMOIRE_LIBERE DROP ELSE TEINTE_2 @ 4 DUP 5 PICK 4- 5 PICK 16- R@ FEN_TRACE_REC THEN ( ++++ ) DROP DROP R> SP_AF_TOUCHE ( ---- ) ; FEN: MENU_FEN >R BEGIN 1 S_MENU 0 R@ FEN_DIALOGUE_CHOIX CASE 1 OF TEINTE_1 S_TEINTE_1 ENDOF 2 OF TEINTE_2 S_TEINTE_2 ENDOF 3 OF TEINTE_3 S_TEINTE_3 ENDOF -1 0 ENDCASE ?DUP IF >R DUP @ R> R@ FEN_DIALOGUE_PALETTE DUP 0< IF DROP DROP 0 ELSE SWAP ! R@ AFFICHE_FEN EXECUTE -1 THEN THEN UNTIL R> DROP ; ( ++++ ) FEN: CLAVIER_FEN >R TOUCHE ! R> SP_AF_TOUCHE ; ( ---- ) : FENETRE_6 FEN @ ?DUP IF FEN_SELECTIONNE ELSE FEN_CREE ?DUP IF DUP >R FEN ! S_FEN R@ FEN_NOM 275 125 R@ FEN_POSITION 200 120 R@ FEN_TAILLE FERME_FEN R@ FEN_FERME A_PROPOS_FEN R@ FEN_A_PROPOS 200 120 20000 12000 R@ FEN_DIMENSIONS 194 TEINTE_3 ! 50 TEINTE_1 ! 14 TEINTE_2 ! AFFICHE_FEN R@ FEN_AFFICHE MENU_FEN R@ FEN_MENU ( ++++ ) CLAVIER_FEN R@ FEN_CLAVIER ( ---- ) R@ FEN_ACTIVE R> FEN_SELECTIONNE THEN THEN ; FENETRE_6 ( FIN )