Index: dashboard.scm ================================================================== --- dashboard.scm +++ dashboard.scm @@ -1899,11 +1899,11 @@ ;; all runs stored in runslib library (let ((tabdat (dboard:common-get-tabdat commondat tab-num: tab-num)) (canvas-margin 20) (start-row 0)) ;; each run starts in this row (if tabdat - (let* ((row-height 10) + (let* ((row-height 20) (drawing (dboard:tabdat-drawing tabdat)) (runslib (vg:get/create-lib drawing "runslib"))) ;; creates and adds lib (update-rundat tabdat "%" ;; (hash-table-ref/default (dboard:tabdat-searchpatts tabdat) "runname" "%") 100 ;; (dboard:tabdat-numruns tabdat) @@ -1953,21 +1953,27 @@ (let* ((event-time (maptime (db:test-get-event_time testdat))) (run-duration (* timescale (db:test-get-run_duration testdat))) (end-time (+ event-time run-duration)) (test-name (db:test-get-testname testdat)) (item-path (db:test-get-item-path testdat)) - (test-fullname (conc test-name "/" item-path))) + (state (db:test-get-state testdat)) + (status (db:test-get-status testdat)) + (test-fullname (conc test-name "/" item-path)) + (name-color (gutils:get-color-for-state-status state status))) (print "event_time: " (db:test-get-event_time testdat) " mapped event_time: " event-time) (print "run-duration: " (db:test-get-run_duration testdat) " mapped run_duration: " run-duration) (let loop ((rownum start-row)) ;; (+ start-row 1))) (set! start-row (max rownum start-row)) ;; track the max row used (if (dashboard:row-collision rowhash rownum event-time end-time) (loop (+ rownum 1)) (let* ((lly (- sizey (* rownum row-height))) (uly (+ lly row-height))) (dashboard:add-bar rowhash rownum event-time end-time) - (vg:add-objs-to-comp runcomp (vg:make-rect event-time lly end-time uly))))) + (vg:add-objs-to-comp runcomp (vg:make-rect event-time lly end-time uly + fill-color: + ;; (string->number (string-substitute " " "" (car name-color)))))))) + (vg:iup-color->number (car name-color))))))) ;; (print "test-name: " test-name " event-time: " event-time " run-duration: " run-duration) )) testsdat) ;; instantiate the component (let* ((extents (vg:components-get-extents runcomp)) Index: vg.scm ================================================================== --- vg.scm +++ vg.scm @@ -237,10 +237,19 @@ (if (or (not ulx)(> oulx ulx))(set! ulx oulx)) (if (or (not uly)(> ouly uly))(set! uly ouly)))) xtnt-lst) (list llx lly ulx uly))) +;;====================================================================== +;; color +;;====================================================================== + +(define (vg:rgb->number r g b #!key (a 0)) + (u32vector-ref (blob->u32vector (u8vector->blob (list->u8vector (list a r g b)))) 0)) + +(define (vg:iup-color->number iup-color) + (apply vg:rgb->number (map string->number (string-split iup-color)))) ;;====================================================================== ;; Unravel and draw the objects ;;====================================================================== @@ -256,16 +265,30 @@ ;; scale and offset ;; (define (vg:draw-rect drawing obj #!key (draw #t)) (let* ((cnv (vg:drawing-cnv drawing)) (pts (vg:drawing-apply-scale drawing (vg:obj-pts obj))) + (fill-color (vg:obj-fill-color obj)) + (line-color (vg:obj-line-color obj)) (llx (car pts)) (lly (cadr pts)) (ulx (caddr pts)) - (uly (cadddr pts))) - (if draw (canvas-rectangle! cnv llx ulx lly uly)) - pts)) ;; return extents + (uly (cadddr pts)) + (w (- ulx llx)) + (h (- uly lly))) + (if draw + (let ((prev-background-color (canvas-background cnv)) + (prev-foreground-color (canvas-foreground cnv))) + (if fill-color (canvas-foreground-set! cnv fill-color)) + (canvas-box! cnv llx ulx lly uly) ;; docs are all over the place on this one.;; w h) + (if line-color + (canvas-foreground-set! cnv line-color) + (if fill-color + (canvas-foreground-set! cnv prev-background-color))) + (canvas-rectangle! cnv llx ulx lly uly) + (canvas-foreground-set! cnv prev-background-color))) + pts)) ;; return extents (define (vg:draw drawing draw-mode . instnames) (let ((insts (vg:drawing-insts drawing)) (res '())) (for-each