Changeset 3220
- Timestamp:
- 05/30/08 15:01:10 (7 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/bos-trunk-sat/projects/bos/web/quad-tree.lisp
r3216 r3220 181 181 (format stream "name: ~s path: ~s" (name node) (node-path node)))) 182 182 183 (defmethod delete-node-extension ((node node-extension)) 184 (setf (%extensions (base-node node)) 185 (delete node (%extensions (base-node node))))) 186 183 187 (defun equal-extension-type (a b) 184 188 (and (eql (type-of a) branches/bos-trunk-sat/projects/bos/web/sat-tree.lisp
r3219 r3220 2 2 3 3 (defclass sat-node (node-extension) 4 ((image :accessor image :initarg :image :type store-image))) 4 ((image :accessor image :initarg :image))) 5 6 (defmethod delete-node-extension :before ((obj sat-node)) 7 (delete-object (image obj))) 5 8 6 9 (defpersistent-class sat-layer () … … 9 12 :index-reader find-sat-layer) 10 13 (geo-box :reader geo-box :initarg :geo-box))) 14 15 (defmethod print-object ((obj sat-layer) stream) 16 (print-unreadable-object (obj stream :type t :identity t) 17 (format stream "name: ~s" (name obj)))) 18 19 (defmethod destroy-object :before ((obj sat-layer)) 20 (dolist (top-level-node (sat-layer-top-level-nodes obj)) 21 (delete-node-extension top-level-node))) 11 22 12 23 (defun sat-layer-top-level-nodes (sat-layer) … … 37 48 (defpersistent-class sat-image (store-image) 38 49 ((layer :reader layer :initarg :layer) 39 (node :reader node :initarg :node :transient t) 50 (node :reader node :initarg :node :transient t) 40 51 (path :reader path :initarg :path) 41 52 (image-geo-box :accessor image-geo-box … … 46 57 (defmethod print-object ((obj sat-image) stream) 47 58 (print-unreadable-object (obj stream :type t :identity t))) 59 60 (defmethod initialize-transient-instance :after ((sat-image sat-image)) 61 (let ((node (ensure-node-with-path *quad-tree* (path sat-image)))) 62 (make-instance 'sat-node 63 :name (name (layer sat-image)) 64 :base-node node 65 :image sat-image))) 48 66 49 67 (defmethod name ((obj sat-image)) … … 88 106 89 107 (defun make-sat-image-tile (image geo-box quad-node tile-geo-box name max-scaling) 108 (assert (find-sat-layer name)) 90 109 (multiple-value-bind (scaling 91 110 pw ph px py px2 py2 … … 100 119 :resize t :resample t 101 120 :dest-width tw :dest-height th) 102 (make-instance 'sat-node 103 :name name 104 :base-node quad-node 105 :image (make-store-image :class-name 'sat-image 106 :name (format nil "~A-~{~D~}" name path) 107 :initargs `(:path ,path 108 :image-geo-box ,rounded-geo-box))))))) 121 (make-store-image :class-name 'sat-image 122 :name (format nil "~A-~{~D~}" name path) 123 :initargs `(:path ,path 124 :layer ,(find-sat-layer name) 125 :image-geo-box ,rounded-geo-box)))))) 109 126 110 127 (defun make-sat-layer (image geo-box name &optional (start-depth 0)) … … 138 155 (let* ((nodes (remove-if-not #'pw-ph-large-enough (layer-quad-nodes))) 139 156 (max-scaling (max-scaling nodes))) 157 (make-object 'sat-layer :name name :geo-box geo-box) 140 158 (dolist (node nodes) 141 159 (make-sat-image-tile image geo-box (quad-node node) 142 (tile-geo-box node) name max-scaling))) 143 (make-object 'sat-layer :name name :geo-box geo-box))) 160 (tile-geo-box node) name max-scaling))))) 144 161 145 162 ;; (with-store-image (image (first (class-instances 'store-image)))
