Changeset 2853

Show
Ignore:
Timestamp:
04/02/08 15:40:19 (9 months ago)
Author:
ksprotte
Message:

added contract-tree-kml handler, alpha works

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/projects/bos/web/contract-tree.lisp

    r2852 r2853  
    55    (let ((step (float (/ (max height width) image-size)))) 
    66      (cl-gd:with-default-image (image)         
    7         (cl-gd:fill-image 0 0 :color (cl-gd:find-color 255 255 255)) 
     7        (setf (cl-gd:save-alpha-p) t) 
     8        (setf (cl-gd:alpha-blending-p) nil) 
     9        (cl-gd:fill-image 0 0 :color (cl-gd:find-color 255 255 255 :alpha 127))         
    810        (cl-gd:do-rows (y) 
    911          (cl-gd:do-pixels-in-row (x) 
     
    1214                   (contract (and m2 (m2-contract m2))))           
    1315              (when (and contract (contract-paidp contract))                 
    14                 ;; FIXME bos.m2::colorize-pixel not needed here 
    15                 (setf (cl-gd:raw-pixel) (apply #'bos.m2::colorize-pixel (cl-gd:raw-pixel) (contract-color contract))))))))))) 
     16                (setf (cl-gd:raw-pixel) (apply #'cl-gd:find-color (contract-color contract))))))))))) 
    1617 
    1718 
     
    3031   (children :initarg :children :reader children) 
    3132   (pixelize :initarg :pixelize :reader pixelize) 
    32    (root :initarg :root :accessor root)) 
     33   (root :initarg :root :accessor root) 
     34   (depth :initarg :depth :accessor depth)) 
    3335  (:metaclass indexed-class) 
    3436  (:class-indices (ids :index-type contract-tree-node-index 
     
    118120               (>= (/ output-images-size (max width height)) 
    119121                   max-pixel-per-meter))) 
    120            (rec (class geo-location pixelize
     122           (rec (class geo-location pixelize &optional (depth 0)
    121123             (let ((children (unless (leaf-node-p geo-location) 
    122                                (mapcar #'(lambda (gl) (rec (cdr class) gl (cdr pixelize))) 
     124                               (mapcar #'(lambda (gl) (rec (cdr class) gl (cdr pixelize) (1+ depth))) 
    123125                                       (children-geo-locations geo-location))))) 
    124126               (make-instance (car class) 
    125127                              :geo-location geo-location 
    126128                              :children children 
    127                               :pixelize (car pixelize))))) 
     129                              :pixelize (car pixelize) 
     130                              :depth depth)))) 
    128131    (let ((tree (rec (stick-on-last '(contract-tree contract-tree-node)) 
    129132                     (ensure-square geo-location) 
     
    184187      (emit-image-to-browser image :png :date (timestamp object))))) 
    185188 
     189(defclass contract-tree-kml-handler (contract-tree-handler) 
     190  () 
     191  (:documentation "Generates a kml representation of the queried 
     192contract-tree-node.  If the node has children, corresponding network 
     193links are created.")) 
     194 
     195(defmethod handle-object ((handler contract-tree-kml-handler) (obj contract-tree-node)) 
     196  (with-xml-response (:content-type "text/xml" #+nil"application/vnd.google-earth.kml+xml" 
     197                                    :root-element "kml") 
     198    (let ((lod '(:min 256 :max 1024)) 
     199          (rect (make-rectangle2 (geo-location obj)))) 
     200      (with-element "Document" 
     201        (kml-region rect lod) 
     202        (kml-overlay (format nil "~a:~a/contract-tree-image/~d" *website-url* *port* (id obj)) 
     203                     rect (+ 100 (depth obj))) 
     204        (dolist (child (children obj)) 
     205          (kml-network-link (format nil "~a:~a/contract-tree-kml/~d" *website-url* *port* (id child)) 
     206                            (make-rectangle2 (geo-location child)) 
     207                            '(:min 256 :max 1024))))))) 
     208 
  • trunk/projects/bos/web/image-tree.lisp

    r2847 r2853  
    466466                                       :dest-width output-images-size 
    467467                                       :dest-height output-images-size) 
     468                     #+nil 
    468469                     (cl-gd:with-default-color ((cl-gd:allocate-color 255 0 0 :image image)) 
    469470                       ;; (cl-gd:draw-string 10 10 (format nil "~D,~D (~D x ~D)" image-x image-y image-width image-height) 
  • trunk/projects/bos/web/webserver.lisp

    r2851 r2853  
    204204                                        ("/image-tree-kml" image-tree-kml-handler)                                         
    205205                                        ("/image-tree" image-tree-handler) 
     206                                        ("/contract-tree-kml" contract-tree-kml-handler) 
    206207                                        ("/contract-tree-image" contract-tree-image-handler) 
    207208                                        ("/contract-tree" contract-tree-handler)