changeset 1341:5028707d45d3

mousewheel zoom Ignore-this: bb4209dddd30b781037ed731f56b899e
author Drew Perttula <drewp@bigasterisk.com>
date Sun, 05 Jun 2016 00:11:56 +0000
parents 0e9d8a1328d1
children aa97bc796f2d
files light9/web/light9-timeline-audio.html light9/web/timeline-elements.html light9/web/timeline.coffee
diffstat 3 files changed, 24 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/light9/web/light9-timeline-audio.html	Sat Jun 04 23:56:05 2016 +0000
+++ b/light9/web/light9-timeline-audio.html	Sun Jun 05 00:11:56 2016 +0000
@@ -6,7 +6,9 @@
     <style>
      :host {
          display: block;
-         background: red;
+         /* shouldn't be seen, but black is correct for 'no
+         audio'. Maybe loading stripes would be better */
+         background: black; 
      }
      div {
          width: 100%;
--- a/light9/web/timeline-elements.html	Sat Jun 04 23:56:05 2016 +0000
+++ b/light9/web/timeline-elements.html	Sun Jun 05 00:11:56 2016 +0000
@@ -30,9 +30,6 @@
          position: absolute;
          left: 0; top: 0; right: 0; bottom: 0;
      }
-     light9-timeline-adjusters {
-         pointer-events: none; /* temporary */
-         }
     </style>
     <div>
       <rdfdb-synced-graph graph="{{graph}}"></rdfdb-synced-graph>
@@ -74,7 +71,7 @@
      }
      light9-timeline-audio {
          width: 100%;
-         height: 90px;
+         height: 100px;
      }
      light9-timeline-graph-row {
          flex-grow: 1;
@@ -215,6 +212,10 @@
 <dom-module id="light9-timeline-adjusters">
   <template>
     <style>
+     :host {
+         pointer-events: none; /* restored on the individual adjusters */
+     }
+
     </style>
     <template is="dom-repeat" items="{{adjs}}">
       <light9-timeline-adjuster dia="{{dia}}" adj="{{item}}"></light9-timeline-adjuster>
@@ -248,6 +249,7 @@
          top: -40px; /* percent had no effect */
          z-index: 2;
          border-collapse: collapse;
+         pointer-events: all;
      }
      td {
          text-align: center;
--- a/light9/web/timeline.coffee	Sat Jun 04 23:56:05 2016 +0000
+++ b/light9/web/timeline.coffee	Sun Jun 05 00:11:56 2016 +0000
@@ -73,20 +73,20 @@
 
         @$.dia.setMouse(@viewState.mouse.pos())
 
+  latestMouseTime: ->
+    @zoomInX.invert(@viewState.mouse.pos().e(1))
+
   bindWheelZoom: ->
-    # tried d3.zoom but couldn't figure it out
-    zoom = d3.zoom()
-    zoom.filter ->
-      # LMB drag is for selection, but MMB can scroll
-      return !(event.type == 'mousedown' && event.button != 1)
-    zoom.extent([[0, 0], [196, 1]])
-    zoom.translateExtent([[0, 0], [196, 1]])
-    zoom.on 'zoom', (a,b,c) =>
-      xf = d3.event.transform
-      log('zoom', xf)
-      @viewState.zoomSpec.t1(xf.invertX(0))
-      @viewState.zoomSpec.t2(xf.invertX(@viewState.zoomSpec.duration()))
-    d3.select(@$.zoomed).call(zoom)
+    @$.zoomed.addEventListener 'mousewheel', (ev) =>
+      zs = @viewState.zoomSpec
+
+      center = @latestMouseTime()
+      left = center - zs.t1()
+      right = zs.t2() - center
+      scale = Math.pow(1.005, ev.deltaY)
+
+      zs.t1(center - left * scale)
+      zs.t2(center + right * scale)
 
   animatedZoom: (newT1, newT2, secs) ->
     fps = 30
@@ -99,7 +99,6 @@
         gotoStep = =>
           @viewState.zoomSpec.t1((1 - frac) * oldT1 + frac * newT1)
           @viewState.zoomSpec.t2((1 - frac) * oldT2 + frac * newT2)
-          console.log('to', frac, @viewState.zoomSpec.t1(), @viewState.zoomSpec.t2())
         delay = frac * secs * 1000
         setTimeout(gotoStep, delay)
         lastTime = delay
@@ -110,9 +109,9 @@
     
   bindKeys: ->
     shortcut.add "Ctrl+P", (ev) =>
-      @$.music.seekPlayOrPause(@zoomInX.invert(@viewState.mouse.pos().e(1)))
+      @$.music.seekPlayOrPause(@latestMouseTime())
 
-    zoomAnimSec = .2
+    zoomAnimSec = .1
     shortcut.add "Ctrl+Escape", =>
       @animatedZoom(0, @viewState.zoomSpec.duration(), zoomAnimSec)
     shortcut.add "Shift+Escape", =>