Basic undo implemented for simple operations.
[gsharp.git] / packages.lisp
blob4504ac8b89ff1fb341446d6452786e1e620e3b28
1 (defpackage :gsharp-utilities
2 (:shadow built-in-class)
3 (:use :clim-lisp :clim-mop)
4 (:export #:ninsert-element #:define-stealth-mixin
5 #:unicode-to-char #:char-to-unicode))
7 (defpackage :mf
8 (:use :cl)
9 (:export #:make-bezier-segment #:bezier-segment
10 #:make-open-path #:make-closed-path
11 #:closed-path #:concatenate-paths #:path-start
12 #:close-path
13 #:polygonalize
14 #:path-bounding-box
15 #:scan-lines
16 #:first-line #:nb-lines #:crossings
17 #:translate #:rotate #:scale #:slant #:reverse-path
18 #:draw-path #:with-pen
19 #:+razor+ #:+unit-square+
20 #:+quarter-circle+ #:+half-circle+ #:+full-circle+
21 #:superellipse
22 ;; mf-like stuff
23 #:paths #:mf #:paths #:control #:controls #:tension #:tensions
24 #:& #:-- #:--- #:curl #:direction #:cycle
25 #:left #:right #:up #:down))
27 (defpackage :sdl
28 (:use :common-lisp :mf)
29 (:export #:glyph #:staff-line-distance #:staff-line-offsets
30 #:stem-offsets #:bar-line-offsets
31 #:ledger-line-x-offsets #:ledger-line-y-offsets
32 #:notehead-right-offsets #:notehead-left-offsets
33 #:make-font #:glyph-offsets #:suspended-note-offset
34 #:beam-offsets #:beam-hang-sit-offset))
36 (defpackage :score-pane
37 (:use :clim :clim-extensions :clim-lisp :sdl :esa)
38 (:import-from :esa-io #:buffer)
39 (:shadow #:rest)
40 (:export #:draw-fiveline-staff #:draw-lyrics-staff
41 #:draw-stem #:draw-right-stem #:draw-left-stem
42 #:draw-ledger-line #:draw-bar-line #:draw-beam #:staff-step
43 #:draw-notehead #:draw-accidental #:draw-clef #:draw-rest #:draw-dot
44 #:draw-time-signature-component
45 #:draw-flags-up #:draw-flags-down
46 #:draw-tie-up #:draw-tie-down
47 #:with-score-pane #:with-vertical-score-position
48 #:with-staff-size #:with-notehead-right-offsets
49 #:with-suspended-note-offset
50 #:with-notehead-left-offsets #:with-light-glyphs #:score-pane
51 #:clef #:staff #:fiveline-staff #:lyrics-staff #:notehead
52 #:score-view #:number-of-pages #:current-page-number))
54 (defpackage :gsharp-buffer
55 (:use :common-lisp :gsharp-utilities :esa-buffer)
56 (:shadow #:rest)
57 (:export #:clef #:name #:lineno #:make-clef
58 #:staff #:fiveline-staff #:make-fiveline-staff
59 #:key-signatures #:time-signatures
60 #:staffwise-elements #:clefs
61 #:lyrics-staff #:make-lyrics-staff
62 #:gsharp-condition
63 #:pitch #:accidentals #:dots #:note #:make-note
64 #:note-less #:note-equal #:bar
65 #:notehead #:rbeams #:lbeams #:dots #:element #:annotations
66 #:melody-element #:rhythmic-element #:notes
67 #:add-note #:find-note #:remove-note
68 #:cluster-upper-bound #:cluster-lower-bound
69 #:cluster #:make-cluster
70 #:rest #:make-rest
71 #:lyrics-element #:make-lyrics-element
72 #:slice #:elements
73 #:nb-elements #:elementno #:add-element
74 #:remove-element #:bar #:make-bar
75 #:melody-bar #:make-melody-bar
76 #:lyrics-bar #:make-lyrics-bar
77 #:layer #:lyrics-layer #:melody-layer
78 #:bars #:nb-bars #:barno #:add-bar #:remove-bar
79 #:slice #:make-slice
80 #:segment #:tempo #:slices #:sliceno
81 #:make-layer-for-staff #:make-bar-for-staff
82 #:head #:body #:tail #:make-layer #:buffer
83 #:layers #:nb-layers #:layerno
84 #:add-layer #:remove-layer #:segment
85 #:segments #:nb-segments #:segmentno #:staves
86 #:find-staff #:add-segment #:remove-segment
87 #:add-staff-before-staff #:add-staff-after-staff
88 #:remove-staff-from-buffer
89 #:rename-staff
90 #:add-staff-to-layer
91 #:remove-staff-from-layer
92 #:stem-direction #:undotted-duration #:duration
93 #:f-position #:b-position #:bottom-line
94 #:keysig #:staff-pos #:xoffset #:read-everything
95 #:read-buffer-from-stream
96 #:staffwise-element
97 #:key-signature #:make-key-signature
98 #:time-signature #:time-signature-components
99 #:make-time-signature
100 #:alterations #:more-sharps #:more-flats
101 #:line-width #:lines-per-page #:min-width #:spacing-style
102 #:right-edge #:left-offset
103 #:left-margin #:text #:append-char #:erase-char
104 #:tie-right #:tie-left
105 #:needs-saving
106 #:tuning #:master-pitch-note #:master-pitch-freq
107 #:note-cents #:12-edo #:regular-temperament
108 #:x-offset #:left-pad #:right-pad
109 #:rastral-size #:zoom-level))
111 (defpackage :gsharp-numbering
112 (:use :gsharp-utilities :gsharp-buffer :clim-lisp)
113 (:shadowing-import-from :gsharp-buffer #:rest)
114 (:shadow #:number)
115 (:export #:number))
117 (defpackage :obseq
118 (:use :common-lisp)
119 (:export #:obseq #:obseq-elem #:obseq-next #:obseq-prev
120 #:obseq-first-undamaged-element
121 #:obseq-last-undamaged-element
122 #:cost-method #:obseq-cost-method #:seq-cost
123 #:total-cost #:combine-cost #:seq-cost-cannot-decrease
124 #:cost-less #:obseq-solve #:obseq-interval))
126 (defpackage :gsharp-measure
127 (:use :common-lisp :gsharp-numbering :gsharp-buffer :gsharp-utilities :obseq)
128 (:shadowing-import-from :gsharp-numbering #:number)
129 (:shadowing-import-from :gsharp-buffer #:rest)
130 (:export #:mark-modified #:modified-p #:measure
131 #:measure-min-dist #:measure-coeff
132 #:measure-bar-pos #:measure-seg-pos #:measure-bars #:measures
133 #:nb-measures #:measureno
134 #:recompute-measures #:measure-cost-method #:make-measure-cost-method
135 #:buffer-cost-method
136 #:reduced-width #:natural-width #:compress-factor
137 #:measure-seq-cost
138 #:note-position #:non-empty-cluster-p
139 #:top-note #:bot-note #:top-note-pos #:bot-note-pos
140 #:beam-groups #:final-stem-direction
141 #:group-notes-by-staff #:final-relative-note-xoffset
142 #:final-accidental #:final-relative-accidental-xoffset
143 #:final-relative-dot-xoffset #:final-absolute-dot-ypos
144 #:timeline #:timelines #:elasticity
145 #:smallest-gap #:elasticity-function))
147 (defpackage :gsharp-beaming
148 (:use :common-lisp)
149 (:export #:beaming-single #:beaming-double))
151 (defpackage :gsharp-cursor
152 (:shadowing-import-from :gsharp-buffer #:rest)
153 (:shadowing-import-from :gsharp-numbering #:number)
154 (:use :gsharp-utilities :gsharp-buffer :gsharp-numbering :clim-lisp)
155 (:export #:gsharp-cursor #:make-cursor #:end-of-bar-p #:beginning-of-bar-p
156 #:insert-element #:delete-element
157 #:forward-element #:backward-element
158 #:last-bar-p #:first-bar-p #:forward-bar #:backward-bar
159 #:insert-bar-before #:insert-bar-after #:delete-bar
160 #:in-last-bar #:in-first-bar #:end-of-bar
161 #:first-slice-p #:last-slice-p
162 #:forward-slice #:backward-slice
163 #:head-slice #:body-slice #:tail-slice
164 #:in-last-slice #:in-first-slice
165 #:select-layer #:delete-layer
166 #:first-segment-p #:last-segment-p
167 #:forward-segment #:backward-segment
168 #:insert-segment-before #:insert-segment-after
169 #:delete-segment
170 #:in-last-segment #:in-first-segment
171 #:cursor-element #:cursor-bar #:cursor-slice #:cursor-layer
172 #:cursor-segment #:cursor-buffer
173 #:current-cluster #:not-on-a-cluster
174 #:current-element #:not-on-an-element
177 (defpackage :gsharp-drawing
178 (:use :clim :clim-lisp :gsharp-buffer :gsharp-measure :gsharp-cursor
179 :gsharp-utilities :sdl :gsharp-beaming :obseq)
180 (:shadowing-import-from :gsharp-buffer #:rest)
181 (:export #:draw-buffer #:draw-the-cursor #:print-buffer))
183 (defpackage :gsharp-play
184 (:use :common-lisp :midi :gsharp-buffer)
185 (:shadowing-import-from :gsharp-buffer #:rest)
186 (:export #:play-layer
187 #:play-segment
188 #:play-buffer))
190 (defpackage :gsharp-mxml
191 (:use :cl :gsharp-buffer :gsharp-measure)
192 (:shadowing-import-from :gsharp-buffer #:rest))
194 (defpackage :gsharp
195 (:use :clim :clim-lisp :gsharp-utilities :esa :esa-buffer :esa-io
196 :gsharp-buffer :gsharp-cursor :gsharp-drawing :gsharp-numbering
197 :gsharp-measure :sdl :midi
198 :gsharp-play)
199 (:shadowing-import-from :gsharp-numbering #:number)
200 (:shadowing-import-from :gsharp-buffer #:rest #:buffer)
201 (:export #:gsharp #:edit-file))
203 (in-package :gsharp-numbering)
204 (deftype number () 'cl:number)
205 (setf (find-class 'number) (find-class 'cl:number))
207 (in-package :gsharp-buffer)
208 (defun rest (list)
209 (cl:rest list))
210 (define-compiler-macro rest (list)
211 `(cl:rest ,list))
212 (define-setf-expander rest (list &environment env)
213 (get-setf-expansion `(cl:rest ,list) env))