-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGUIDEMO
More file actions
78 lines (59 loc) · 3.55 KB
/
Copy pathGUIDEMO
File metadata and controls
78 lines (59 loc) · 3.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
(DEFINE-FILE-INFO PACKAGE (DEFPACKAGE "GUIDEMO" (USE "LISP" "XCL")) READTABLE "XCL" BASE 10)
(IL:FILECREATED " 1-Jun-2025 13:11:24" IL:|{DSK}<home>paolo>il>dandegui>GUIDEMO.;5| 3489
:EDIT-BY "PA"
:CHANGES-TO (IL:FUNCTIONS RANDOM-CIRCLES)
:PREVIOUS-DATE "29-May-2025 14:14:48" IL:|{DSK}<home>paolo>il>dandegui>GUIDEMO.;4|)
(IL:PRETTYCOMPRINT IL:GUIDEMOCOMS)
(IL:RPAQQ IL:GUIDEMOCOMS
((IL:* IL:|DandeGUI| IL:|demos| IL:|and| IL:|sample| IL:|code.|)
(FILE-ENVIRONMENTS IL:GUIDEMO)
(IL:FILES IL:DANDEGUI)
(IL:P (DEFPACKAGE "GUIDEMO" (:USE "LISP" "XCL")
(:EXPORT SQRT-TABLE FRACTAL-TRIANGLES RANDOM-CIRCLES)))
(IL:FUNCTIONS FRACTAL-TRIANGLES RANDOM-CIRCLES SQRT-TABLE)))
(IL:* IL:|DandeGUI| IL:|demos| IL:|and| IL:|sample| IL:|code.|)
(DEFINE-FILE-ENVIRONMENT IL:GUIDEMO :PACKAGE (DEFPACKAGE "GUIDEMO" (:USE "LISP" "XCL"))
:READTABLE "XCL"
:COMPILER :COMPILE-FILE)
(IL:FILESLOAD IL:DANDEGUI)
(DEFPACKAGE "GUIDEMO" (:USE "LISP" "XCL")
(:EXPORT SQRT-TABLE FRACTAL-TRIANGLES RANDOM-CIRCLES))
(DEFUN FRACTAL-TRIANGLES (&KEY (WIDTH 300)
(HEIGHT 300)) (IL:* IL:\; "Edited 28-May-2025 08:43 by PA")
"Draw in a new window a pattern of triangular fractals.
The pattern has a size of WIDTH by HEIGHT pixels."
(DANDEGUI:WITH-GRAPHICS-WINDOW (STREAM :TITLE "Fractal Triangles")
(DOTIMES (X WIDTH)
(DOTIMES (Y HEIGHT)
(WHEN (ZEROP (MOD (LOGIOR X Y)
7))
(IL:DRAWPOINT X Y NIL STREAM))))))
(DEFUN RANDOM-CIRCLES (&KEY (N 200)
(MAX-R 50)
(WIDTH 640)
(HEIGHT 480)) (IL:* IL:\; "Edited 1-Jun-2025 13:10 by PA")
(IL:* IL:\; "Edited 29-May-2025 14:12 by PA")
"Draw N random filled circles in a new window. The circles are filled with a random shade, have a maximum radius MAX-R, and are drawn in an area of WIDTH by HEIGHT pixels."
(LET ((RANGE-X (- WIDTH (* 2 MAX-R)))
(RANGE-Y (- HEIGHT (* 2 MAX-R)))
(IL:* IL:|;;| " A shade is an integer in the range 0..65535")
(SHADES (LIST IL:BLACKSHADE IL:GRAYSHADE (RANDOM 65536))))
(DANDEGUI:WITH-GRAPHICS-WINDOW (STREAM :TITLE "Random Circles")
(DOTIMES (I N)
(DECLARE (IGNORE I))
(IL:FILLCIRCLE (+ MAX-R (RANDOM RANGE-X))
(+ MAX-R (RANDOM RANGE-Y))
(RANDOM MAX-R)
(ELT SHADES (RANDOM 3))
STREAM)))))
(DEFUN SQRT-TABLE (&OPTIONAL (N 30)) (IL:* IL:\; "Edited 10-May-2025 18:22 by PA")
(IL:* IL:\; "Edited 19-Apr-2025 17:19 by PA")
"Display in a new window a table of the square roots of the integers up to N, or a default value if N is not supplied."
(DANDEGUI:WITH-OUTPUT-TO-WINDOW (STREAM :TITLE "Table of square roots")
(DANDEGUI:WITH-TEXT-STYLE (STREAM :FAMILY :SANS :SIZE 10 :FACE :BOLD)
(FORMAT STREAM "~&Number~40TSquare Root~2%"))
(LOOP FOR I FROM 1 TO N DO (FORMAT STREAM "~&~4D~40T~8,4F~%" I (SQRT I)))))
(IL:DECLARE\: IL:DONTCOPY
(IL:FILEMAP (NIL (1133 1679 (FRACTAL-TRIANGLES 1133 . 1679)) (1681 2810 (RANDOM-CIRCLES 1681 . 2810))
(2812 3460 (SQRT-TABLE 2812 . 3460)))))
IL:STOP