;============================================================================ ;---------------------------------------------------------------------------- ; ; fichier ***test5.ll*** ; 19.01.88 Ilog/ing bounthara ; test du la memoire de point, chapitre 20.4.1 ; ;============================================================================ ; ; Test de la memoire de points ; Le-Lisp v15.2 du 1er Aout 1987 ; Test du chapitre 20.4.1 ; ; La me'moire de points ; fonctions testees: ; . create-bitmap ; . #:bitmap:w, #:bitmap:h, #:bitmap:bits ; . #* ; . #:bitvector:prin ; . #B ; . #:bitmap:prin ; . kill-bitmap ; . bmref ; . bmset ; . bitblit ; . window-bitmap ; ;============================================================================ ; dernier numero test : #513# ;---------------------------------------------------------------------------- (bitprologue) ;---------------------------------------------------------------------------- ; ---- loader les fichiers communs (unless (featurep 'format) (libload format)) (unless (featurep 'testcomm) (libload testcomm)) (unless (featurep 'testbvcomm) (libload testbvcomm)) ;============================================================================ ;---------------------------------------------------------------------------- ; ---- on teste les fonctions decrites dans le chapitre suivant (tycls) (tyflush) (titre "Les me'moires de points") (print "Tests des fontions du chapitre 20.4.1") (print "Les tests utilisent les 3/4 haut-gauche de l'ecran.") (print "----------------------------------------------------------------------------") (terpri) ;============================================================================ (sous-titre "#501# Creation d'UNE fenetre avec create-window") (verif "Fene↑tre w1 en 1/8,1/8 de 1/2x1/2, hilited, visible" '(setq w1 (create-window 'window (div quartx 2) (div quarty 2) demix demiy "w1" 1 1))) (current-window w1) (verif "Quadrillage de w1" '(quad-window1 w1)) ;------------------------ ; ---- a partir de certaines icones (sous-titre "#502# Les fonctions de cre'ation de bitmap") (verif "Je cre'e une ico↑ne moto de 100x70 (avec #B)" '(defvar moto #B(100 70 #[ #*0000000000000000000000000000 #*0000000000000000000000000000 #*000000000005C000000000000000 #*0000000000380000000000000000 #*0000000000C00000000000000000 #*0000000003000000000000000000 #*000000000203FC00000000000000 #*00000000080C0000000000000000 #*0000000000100000000000000000 #*000000000020FE00000000000000 #*0000000000438000000000000000 #*0000000000800200000000000000 #*0000000000000700000000000000 #*000000000000F480000000000000 #*0000000000006C40000000000000 #*0000000000006C20000000000000 #*000000000000DFE0000000000000 #*000000000001BB80000000000000 #*0000000000012C07F00000000000 #*00000000000E661BEC0000000000 #*00000000001FC72C1A0000000000 #*00000000003DFCF0070000000000 #*00000000003B70E0028000000000 #*00000000007670D0018000000000 #*0000000000C2F14C01C000000000 #*0000000001D5D18200C000000000 #*000000000347898180C000000000 #*0000000003BF098080C000000000 #*000000001BDE898000C000000000 #*00000000FBF1498000C000000000 #*00000003FFE2A94001C000030000 #*0000000FF80548C00180000F0000 #*0000003FF00AB4A00280000F0000 #*0000007FCC25FC70070000380000 #*000003FFBFF2FC2C1A0000F00000 #*000003FF7FFBF41BEC0001800000 #*000003FBFFC7F807F00003000000 #*000001E3FF8FF000000002000000 #*3FFF83877F0FC000000006000000 #*00000E061F078000000006000000 #*0000187E0F020000000006000000 #*000031FF060C000000000E000000 #*000027FFC7F0000000000E000000 #*000007FFCFE000000007FC000000 #*7FF80E8EF0000000001C00000000 #*00000F0CE0000000003800000000 #*00001E0FF0000000003800000000 #*00001E0CF000000000344CC80000 #*00001E10F0000000006051200000 #*3FFE1E00F00000000FE451280000 #*00001E00F00000001F0451280000 #*00000F01E0000000380451E80000 #*00000E82E0000000300451280000 #*000007FFC0000000600551280000 #*000007FFC0000001C0048D280000 #*000001FF00000003C00000000000 #*0000007C00000007800000000000 #*FFFFFFFFFFFFFFFFFFFFFFFF0000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 #*0000000000000000000000000000 ]) )) (verif "Je cre'e une ico↑ne cigare de 100x40 (avec create-bitmap)" '(defvar cigare (create-bitmap 100 40 #[ #*FFFFFFFFFFFFFFFFFFFF8100FFFF #*FFFFFFFFFFFFFFFFFFFF8100FFFF #*FFFFFFFFFFFFFFFFFFFF0100FFFF #*FFFFFFFFFFFFFFFFFFFF01017FFF #*FFFFFFFFFFFFFFFFFFFE03017FFF #*FFFFFFFFFFFFFFFFFFFE02017FFF #*FFFFFFFFFFFFFFFFFFFF02017FFF #*FFFFFFFFFFFFFFFFFFFF00037FFF #*FFFFFFFFFFFFFFFFFFFF0002FFFF #*FFFFFFFFFFFFFFFFFFFEC002FFFF #*FFFFFFFFFFFFFFFFFFFF20C2FFFF #*FFFFFFFFFFFFFFFFFFFF0302FFFF #*FFFFFFFFFFFFFFFFFFFE0C06FFFF #*FFFFFFFFFFFFFFFFFFFC1801FFFF #*FFFFFFFFFFFFFFFFFFFC2023FFFF #*FC1FFFFFFFFFFFFFFFFC2023FFFF #*F8001FFFFFFFFFFFFFFC00C7FFFF #*F000001FFFFFFFFFFFFC4187FFFF #*F00000001FFFFFFFFFFC430FFFFF #*F0000000001FFFFFFFFC401FFFFF #*F0000000001FFFFFFFFE403FFFFF #*F00000000000001FFFFE007FFFFF #*F0000000000000001FFE01FFFFFF #*FC00000000000000000F07FFFFFF #*FC000000000000000023F7FFFFFF #*FFC0000000000000000801FFFFFF #*FFFF800000000000005BD0FFFFFF #*FFFFFF00000000000067267FFFFF #*FFFFFFFE00000000007A517FFFFF #*FFFFFFFFFC0000000056247FFFFF #*FFFFFFFFFFF800000015917FFFFF #*FFFFFFFFFFFFF800007540FFFFFF #*FFFFFFFFFFFFFFF00019DAFFFFFF #*FFFFFFFFFFFFFFFFE02049FFFFFF #*FFFFFFFFFFFFFFFFFFFF83FFFFFF #*FFFFFFFFFFFFFFFFFFFFFFFFFFFF #*FFFFFFFFFFFFFFFFFFFFFFFFFFFF #*FFFFFFFFFFFFFFFFFFFFFFFFFFFF #*FFFFFFFFFFFFFFFFFFFFFFFFFFFF #*FFFFFFFFFFFFFFFFFFFFFFFFFFFF ]) )) (verif "Je cre'e une ico↑ne banana de 60x60 (avec #B)" '(setq banana #B(60 60 #[ #*00003ffffe000000 #*00003c0007000000 #*0000760003800000 #*0000630001c00000 #*0000e18000e00000 #*0000c0c000700000 #*0001cc6000380000 #*00018e30001c0000 #*00039b18000e0000 #*0003118c00070000 #*000730c600038000 #*000620630001c000 #*000e60318000e000 #*000c4018c0007000 #*001cc00c60003000 #*001880063ffff000 #*0039800220007000 #*0031000620006000 #*007180046000e000 #*0060c00c4000c000 #*00e06008c001c000 #*00c0301880018000 #*01c0181180038000 #*03800c3100030000 #*0380062300070000 #*0380036200060000 #*01c041c6000e0000 #*00e060c4000c0000 #*0070300c001c0000 #*0038180800180000 #*003c0c1800380000 #*606e061000300000 #*fbe7023000700000 #*7f93802000600000 #*3f4fc06000e00000 #*1face04000c00000 #*0fd870c001c00000 #*07f8388001800000 #*03f81d8003800000 #*01f00f0003000000 #*00f007ffff000000 #*006003fffe000000 #*00000030c0000000 #*0000003fc0000000 #*00000030c0000000 #*0000007fe0000000 #*0000006060000000 #*00000ffff0000000 #*00000ffff0000000 #*00000ffff0000000 #*0000000000000000 #*0000000000000000 #*000003fff8000000 #*000009fffc000000 #*00001cfffe000000 #*00001e7fff000000 #*00003f3fff800000 #*0000339fffc00000 #*000071cfffe00000 #*000060e7fff00000 ]))) ;---------------------------------------------------------------------------- ; ---- des icones vers la window (sous-titre "#503# Les fonctions d'affichage") (verif "Je retourne w1 en me'moire de points avec window-bitmap (dans bm-w1)" '(setq bm-w1 (window-bitmap w1))) (testsuite) (#:bitmap:w bm-w1) #.(#:window:width w1) (#:bitmap:h bm-w1) #.(#:window:height w1) (setq #:system:print-for-read ()) () (progn (prin "(#:bitmap:prin bm-w1) = ") (#:bitmap:prin bm-w1) (terpri) t) t (exit eof) () (print "Je ne teste pas #:bitmap:prin avec #:system:print-for-read = t") ;(affich "#:system:print-for-read" ; '(setq #:system:print-for-read t )) ;(verif "(#:bitmap:prin bm-w1)" ; '(progn (catcherror t (#:bitmap:prin bm-w1)) ; (terpri) ; (setq #:system:print-for-read ()))) ; ---- affichage de la moto et de du cigare (sous-titre "#504# Bitblit, mode set") (affich "(current-mode #:mode:set)" '(current-mode #:mode:set)) (verif "J'affiche la moto, le cigare et banana en bas a gauche" '(progn (current-mode #:mode:set) (bitblit bm-w1 moto 0 (sub (#:bitmap:h bm-w1) (#:bitmap:h moto)) 0 0 (#:bitmap:w moto) (#:bitmap:h moto)) (bitblit bm-w1 cigare 100 (sub (#:bitmap:h bm-w1) (#:bitmap:h cigare)) 0 0 (#:bitmap:w cigare) (#:bitmap:h cigare)) (bitblit bm-w1 banana 200 (sub (#:bitmap:h bm-w1) (#:bitmap:h banana)) 0 0 (#:bitmap:w banana) (#:bitmap:h banana)))) ; ---- bitblit sur une me↑me horizontale avec les 4 principaux modes ; ---- (set, or, xor, not) (dmd bitblit-modes (bmd bms xd yd xs ys w h) `(let ((cur-mode (current-mode))) (current-mode #:mode:set) (bitblit ,bmd ,bms ,xd ,yd ,xs ,ys ,w ,h) (current-mode #:mode:or) (bitblit ,bmd ,bms (add1 (add (mul (add 10 ,w) 1) ,xd)) ,yd ,xs ,ys ,w ,h) (current-mode #:mode:xor) (bitblit ,bmd ,bms (add1 (add (mul (add 10 ,w) 2) ,xd)) ,yd ,xs ,ys ,w ,h) (current-mode #:mode:not) (bitblit ,bmd ,bms (add1 (add (mul (add 10 ,w) 3) ,xd)) ,yd ,xs ,ys ,w ,h) (current-mode cur-mode))) ;------------------------ (sous-titre "#505# Bitblit des icones vers la fenetre") (print "Les 4 principaux modes sont utilise's (set,or,xor,not)") (verif "bitblit moto entier -> w1 en 0,100" '(bitblit-modes bm-w1 moto 0 100 0 0 100 70)) (verif "bitblit moto 0,0 de 50x70 (moitie sup) -> w1 en 10,30" '(bitblit-modes bm-w1 moto 10 30 0 0 50 70)) (verif "bitblit cigare entier -> w1 en 0,130 (sur les motos entie`res)" '(bitblit-modes bm-w1 cigare 0 130 0 0 100 40)) ;------------------------ (verif "Quadrillage de w1" '(progn (current-window w1) (clear-graph-env) (quad-window1 w1))) (verif "bitblit moto entier -> w1 en 0,100" '(bitblit-modes bm-w1 moto 0 100 0 0 100 70)) (sous-titre "#506# Bitblit fenetre-fenetre") (verif "bitblit moitie sup de w1 sur moitie inf en mode inverse" '(progn (current-mode #:mode:not) (bitblit bm-w1 bm-w1 0 (div (#:bitmap:h bm-w1) 2) 0 0 (#:bitmap:w bm-w1) (div (#:bitmap:h bm-w1) 2)) (current-mode #:mode:set))) (verif "bitblit quart sup gauche -> quart sup droite en mode or" '(progn (current-mode #:mode:or) (bitblit bm-w1 bm-w1 (div (#:bitmap:w bm-w1) 2) 0 0 0 (div (#:bitmap:w bm-w1) 2) (div (#:bitmap:h bm-w1) 2)) (current-mode #:mode:set))) (verif "bitblit quart inf gauche -> quart inf droite en mode xor" '(progn (current-mode #:mode:set) (bitblit bm-w1 bm-w1 (div (#:bitmap:w bm-w1) 2) (div (#:bitmap:h bm-w1) 2) 0 (div (#:bitmap:h bm-w1) 2) (div (#:bitmap:w bm-w1) 2) (div (#:bitmap:h bm-w1) 2)) (current-mode #:mode:set))) (sous-titre "#507# Test de la sous-fenetre et du bitblit fenetre->fenetre") (verif "scrolling de la moitie de w1 vers le haut de 10 en 10 pixels" '(let* ((haut (#:window:height w1)) (larg (#:window:width w1)) (n (add1 (div (div haut 5) 2)))) (for (i 1 1 n) (bitblit bm-w1 bm-w1 0 0 0 5 larg haut) (bitmap-flush)))) (verif "Je cree une sous-fenetre sw1 de 1/2x1/2 en 1/4,1/4 de w1" '(setq sw1 (create-subwindow 'window (div (#:window:width w1) 4) (div (#:window:height w1) 4) (div (#:window:width w1) 2) (div (#:window:height w1) 2) "sw1" 1 1 w1))) (verif "La sous-fenetre est tuee" '(kill-window sw1)) ;------------------------ (sous-titre "#508# bitblit fenetre -> icone") (verif "clear w1" '(and (current-window w1) (clear-graph-env))) (current-mode #:mode:set) (verif "La moto et le cigare en haut a gauche (la moto au dessus du cigare)" '(progn (bitblit bm-w1 moto 0 0 0 0 100 70) (bitblit bm-w1 cigare 0 70 0 0 100 40))) (verif "Je creee une icone icon1 de 100x110" (setq icon1 #B(100 110))) (draw-rectangle 9 199 101 111) (bitmap-flush) (verif "bitblit icon1 -> fenetre en 10 200 dans le cadre" '(progn (bitblit bm-w1 icon1 10 200 0 0 100 110))) (verif "bitblit fenetre 0,0 100x110 -> icone icon1" '(bitblit icon1 bm-w1 0 0 0 0 100 110)) (draw-rectangle 149 9 101 111) (bitmap-flush) (verif "restitution: bitblit icon1 -> fenetre en 150 10 en mode set" '(bitblit bm-w1 icon1 150 10 0 0 100 110)) (draw-rectangle 49 49 201 201) (bitmap-flush) #| (verif "bitblit de la zone interieure du rectangle 200x200 dans icon1" '(progn (bitblit icon1 bm-w1 0 0 50 50 200 200))) (draw-rectangle 259 9 101 111) (bitmap-flush) |# (verif "restitution: bitblit icon1 100x110 -> fenetre en 260 10 en mode xor" '(progn (current-mode #:mode:xor) (bitblit bm-w1 icon1 260 10 0 0 100 110))) (draw-rectangle 359 9 201 201) (bitmap-flush) (verif "restitution: bitblit icon1 200x200 -> fenetre en 360 10 en mode xor" '(progn (current-mode #:mode:xor) (bitblit bm-w1 icon1 360 10 0 0 200 200))) ;------------------------ (sous-titre "#509# bitblit icone -> icone") (draw-rectangle -1 14 101 41) #| (bitmap-flush) (verif "bitblit de cigare dans moto en 0,15 (mode set)" '(progn (current-mode #:mode:set) (bitblit moto cigare 0 15 0 0 100 40))) |# (draw-rectangle 199 199 101 71) (bitmap-flush) (verif "le bitmap moto en 200 200, mode set" '(progn (current-mode #:mode:set) (bitblit bm-w1 moto 200 200 0 0 100 70))) ;---------------------------------------------------------------------------- ; ---- destruction des fenetres (titre "#510# Test du clipping") (verif "Je clear w1 et cree une fenetre en 100,100/w1 de 200x200" '(progn (current-window w1) (clear-graph-env) (quad-window1 w1) (setq w2 (create-window 'window (add (#:window:left w1) 100) (add (#:window:top w1) 100) 200 200 "w2" 1 1)) (pop-window w2))) (verif "Je dessine l'icone moto en 50,50 dans w1" '(bitblit-modes bm-w1 moto 50 50 0 0 100 70)) (verif "Je bitblit la zone 45,45 de 100x110 de w1 dans icon1" '(progn (current-mode #:mode:set) (draw-rectangle 45 45 99 109) (bitblit icon1 bm-w1 0 0 45 45 100 110))) (verif "bitblit icon1 dans w2 (bm-w2) en 0,0" '(progn (setq bm-w2 (window-bitmap w2)) (bitblit bm-w2 icon1 0 0 0 0 100 110))) ;---------------------------------------------------------------------------- ; ---- destruction des fenetres (titre "#512# Destruction des bitmap") (verif "Les bitmap cigare, banana, icon1 sont tue's" '(progn (kill-bitmap cigare) (kill-bitmap banana) (kill-bitmap icon1))) ;---------------------------------------------------------------------------- ; ---- Acces au champ bits des bitmaps (titre "#514# Acces au champ bits des bitmaps") (verif "impression du bitmap moto avec #:system:print-for-read t" '(let ((#:system:print-for-read t)) (print moto))) (verif "impression du bitmap moto en format compresse" '(let ((#:system:print-for-read t) (#:system:compressed-icon t)) (print moto))) (verif "creation d'un bitmap a rayures" '(setq ray (create-bitmap 100 100 #[ #13*Sl 99]))) (verif "impression du bitmap a rayures" '(let ((#:system:print-for-read t)) (print ray))) (verif "impression du bitmap a rayures, au format compresse" '(let ((#:system:print-for-read t) (#:system:compressed-icon t)) (print ray))) (verif "affichage du bitmap a rayures" '(bitblit bm-w1 ray 0 0 0 0 100 100)) (verif "On tue les bitmaps a rayures et moto" '(progn (kill-bitmap ray) (kill-bitmap moto))) ;---------------------------------------------------------------------------- ; ---- destruction des fenetres (titre "#513# Destruction des fenetres") (verif "La fenetre w1 est tuee" '(kill-window w1)) (verif "La fenetre w2 est tuee" '(kill-window w2)) ;---------------------------------------------------------------------------- ; ---- fin du test(ouffff...) (titre "Fin du test du chapitre 20.4.1") ;---------------------------------------------------------------------------- (terpri) (terpri) (terpri) (bitepilogue) (setq automatic ()) ;---------------------------------------------------------------------------- ;============================================================================