( Fenetre 7. Version 1.00 du 17 Fevrier 2008. Ecrit par jpb.forth . ) ( ***************************************************************************** Fenetre 6 + icone --> FENETRE_7 ***************************************************************************** ) FEN_STRING" S_FEN FENETRE 7" WINDOW 7" 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" ( ++++ ) HERE BIN 0000000000000000 , 0111111111111110 , 0111111111111110 , 0110000000000110 , 0000000000000110 , 0000000000000110 , 0000000000001100 , 0000000000011000 , 0000000000110000 , 0000000001100000 , 0000000011000000 , 0000000110000000 , 0000000110000000 , 0000000110000000 , 0000000110000000 , 0000000000000000 , CONSTANT SYMBOLE_FEN DECIMAL ( ---- ) 0 VARIABLE FEN 0 VARIABLE TEINTE_1 0 VARIABLE TEINTE_2 0 VARIABLE TEINTE_3 0 VARIABLE TOUCHE ( ++++ ) FEN: ICONE_FEN >R 16 DUP FEN_TEINTES_? DROP >R DROP DROP DROP DROP R> R@ FEN_TAILLE_? >R 16- 2/ R> 16- 2/ SYMBOLE_FEN R> FEN_TRACE_MOTIF_RELIEF DROP DROP DROP DROP DROP ; ( ---- ) FEN: FERME_FEN ( ++++ ) >R ICONE_FEN R> FEN_ICONE ( ---- ) ; 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_7 FEN @ ?DUP IF FEN_SELECTIONNE ELSE FEN_CREE ?DUP IF DUP >R FEN ! S_FEN R@ FEN_NOM 325 100 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_2 ! 14 TEINTE_1 ! AFFICHE_FEN R@ FEN_AFFICHE MENU_FEN R@ FEN_MENU CLAVIER_FEN R@ FEN_CLAVIER R@ FEN_ACTIVE R> FEN_SELECTIONNE THEN THEN ; FENETRE_7 ( FIN )