( Fenetre 9. Version 1.00 du 17 Fevrier 2008. Ecrit par jpb.forth . ) ( ***************************************************************************** Fenetre 8 + animation --> FENETRE_9 ***************************************************************************** ) FEN_STRING" S_FEN FENETRE 9" WINDOW 9" 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 , 0000111111110000 , 0011111111111100 , 0111000000001110 , 0110000000000110 , 0110000000000110 , 0111000000001110 , 0011111111111110 , 0000111111110110 , 0000000000000110 , 0000000000000110 , 0000000000000110 , 0111000000001110 , 0011111111111100 , 0000111111110000 , 0000000000000000 , CONSTANT SYMBOLE_FEN HERE 0000000000000000 , ( 0 ) 0000000000000000 , 0000000000000000 , 0000000000110000 , 0000000000110000 , 0000000000110000 , 0000000110110000 , 0000010110110000 , 0000110110110100 , 0010111111110110 , 0011111111110110 , 0011111111111110 , 0011111111111110 , 0001111111111100 , 0000111111111000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000110000 , 0000000001001000 , 0000000001001000 , 0000000111001000 , 0000011001001000 , 0000101001001100 , 0011001001001010 , 0101000000001001 , 0100000000001001 , 0100000000000001 , 0100000000000001 , 0010000000000010 , 0001000000000100 , 0000111111111000 , 0000000000000000 , ( 64 ) 0000001111100000 , 0000110000011000 , 0001000000000100 , 0010001111100010 , 0010000100010010 , 0100100010001001 , 0100110001001001 , 0100101000101001 , 0100100100011001 , 0100100010001001 , 0010010001000010 , 0010001111100010 , 0001000000000100 , 0000110000011000 , 0000001111100000 , 0000000000000000 , 0000000000000000 , 0000001111100000 , 0000111111111000 , 0001110000011100 , 0001111000001100 , 0011011100000110 , 0011001110000110 , 0011000111000110 , 0011000011100110 , 0011000001110110 , 0001100000111100 , 0001110000011100 , 0000111111111000 , 0000001111100000 , 0000000000000000 , CONSTANT SYMBOLES_SOURIS DECIMAL 0 VARIABLE FEN 0 VARIABLE TEINTE_1 0 VARIABLE TEINTE_2 0 VARIABLE TEINTE_3 0 VARIABLE TOUCHE 0 VARIABLE ACTION_SOURIS ( ++++ ) 0 VARIABLE ADR_SURFACE 0 ADR_SURFACE 2! ( ---- ) 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: SP_AF_SURFACE >R ADR_SURFACE 2@ ?DUP IF 4 DUP R> FEN_ECRIT_REC ELSE TEINTE_2 @ 4 DUP R@ FEN_TAILLE_? >R 4- R> 16- R> FEN_TRACE_REC THEN ; FEN: CHRONO_FEN >R TEINTE_3 @ SP_TEINTE_RVB TEINTE_2 @ SP_TEINTE_RVB TEINTE_1 @ SP_TEINTE_RVB 3 R@ FEN_TAILLE_? >R 8- R> 20- -1 DEGRADE_\ ADR_SURFACE DUP 2@ ?DUP IF MEMOIRE_LIBERE DROP THEN 2! TEINTE_3 @ TEINTE_2 @ TEINTE_1 @ TEINTE_2 ! TEINTE_3 ! TEINTE_1 ! 500 SP_AF_SURFACE CHRONO_FEN R> FEN_CHRONO ; ( ---- ) 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 ROLL 1- 5 ROLL 1- R@ FEN_TRACE_REC R@ SP_AF_SURFACE EXECUTE 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 ; FEN: SOURIS_FEN >R OVER OVER OR IF ACTION_SOURIS @ IF R@ MENU_FEN EXECUTE THEN ELSE R@ FEN_TAILLE_? 6 PICK 4 < 6 PICK 4 < OR 7 PICK 4 PICK 4- > OR 6 PICK 3 PICK 16- > OR IF 0 64 ELSE -1 0 THEN SYMBOLES_SOURIS + R@ FEN_MOTIF_SOURIS ACTION_SOURIS ! DROP DROP THEN DROP DROP DROP DROP R> DROP ; : FENETRE_9 FEN @ ?DUP IF FEN_SELECTIONNE ELSE FEN_CREE ?DUP IF DUP >R FEN ! S_FEN R@ FEN_NOM 425 50 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_1 ! 50 TEINTE_3 ! 14 TEINTE_2 ! AFFICHE_FEN R@ FEN_AFFICHE MENU_FEN R@ FEN_MENU CLAVIER_FEN R@ FEN_CLAVIER SOURIS_FEN R@ FEN_SOURIS R@ FEN_ACTIVE ( ++++ ) 1 SP_AF_SURFACE CHRONO_FEN R@ FEN_CHRONO ( ---- ) R> FEN_SELECTIONNE THEN THEN ; FENETRE_9 ( FIN )