176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
(hash-table-set! (vg:lib-comps lib) compname comp))
;; instanciate component in drawing
;;
(define (vg:instantiate drawing libname compname instname xoff yoff #!key (theta 0)(scalex 1)(scaley 1)(mirrx #f)(mirry #f))
(let ((inst (make-vg:inst libname: libname compname: compname xoff: xoff yoff: yoff theta: theta scalex: scalex scaley: scaley mirrx: mirrx mirry: mirry)) )
(hash-table-set! (vg:drawing-insts drawing) instname inst)))
;; get component from drawing (look in apropriate lib) given libname and compname
(define (vg:get-component drawing libname compname)
(let* ((lib (hash-table-ref (vg:drawing-libs drawing) libname))
(inst (hash-table-ref (vg:lib-comps lib) compname)))
inst))
|
>
>
>
>
>
|
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
(hash-table-set! (vg:lib-comps lib) compname comp))
;; instanciate component in drawing
;;
(define (vg:instantiate drawing libname compname instname xoff yoff #!key (theta 0)(scalex 1)(scaley 1)(mirrx #f)(mirry #f))
(let ((inst (make-vg:inst libname: libname compname: compname xoff: xoff yoff: yoff theta: theta scalex: scalex scaley: scaley mirrx: mirrx mirry: mirry)) )
(hash-table-set! (vg:drawing-insts drawing) instname inst)))
(define (vg:instance-move drawing instname newx newy)
(let ((inst (hash-table-ref (vg:drawing-insts drawing) instname)))
(vg:inst-xoff-set! inst newx)
(vg:inst-yoff-set! inst newy)))
;; get component from drawing (look in apropriate lib) given libname and compname
(define (vg:get-component drawing libname compname)
(let* ((lib (hash-table-ref (vg:drawing-libs drawing) libname))
(inst (hash-table-ref (vg:lib-comps lib) compname)))
inst))
|
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
|
;; given rectangles r1 and r2, return the box that bounds both
;;
(define (vg:get-extents-for-two-rects r1 r2)
(if (not r1)
r2
(if (not r2)
#f ;; no extents from #f #f
(list (min (car r1)(car r2)) ;; llx
(min (cadr r1)(cadr r2)) ;; lly
(max (caddr r1)(caddr r2)) ;; ulx
(max (cadddr r1)(cadddr r2)))))) ;; uly
(define (vg:components-get-extents drawing . comps)
(let ((extents #f))
|
|
|
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
;; given rectangles r1 and r2, return the box that bounds both
;;
(define (vg:get-extents-for-two-rects r1 r2)
(if (not r1)
r2
(if (not r2)
r1 ;; #f ;; no extents from #f #f
(list (min (car r1)(car r2)) ;; llx
(min (cadr r1)(cadr r2)) ;; lly
(max (caddr r1)(caddr r2)) ;; ulx
(max (cadddr r1)(cadddr r2)))))) ;; uly
(define (vg:components-get-extents drawing . comps)
(let ((extents #f))
|