Changeset - 7480e26c75ed
[Not reviewed]
default
0 1 0
Drew Perttula - 8 years ago 2017-04-12 06:17:34
drewp@bigasterisk.com
better throttling of adjuster redraws
Ignore-this: 4820a88e2ac6325945efb62906d2e7eb
1 file changed with 7 insertions and 8 deletions:
0 comments (0 inline, 0 general)
light9/web/timeline/timeline.coffee
Show inline comments
 
@@ -616,13 +616,13 @@ class deleteme
 
      center = @adj.getCenter()
 
      target = @adj.getTarget()
 
      #log("adj updateDisplay center #{center.elements} target #{target.elements}")
 
      return if isNaN(center.e(1))
 
      @centerStyle = {x: center.e(1), y: center.e(2)}
 
      @dia.setAdjusterConnector(@adj.id + '/conn', center, target)
 
    @debounce('updateDisplay', go, 1)
 
    @debounce('updateDisplay', go)
 
        
 
  attached: ->
 
    drag = d3.drag()
 
    sel = d3.select(@$.label)
 
    sel.call(drag)
 
    drag.subject((d) -> {x: @offsetLeft, y: @offsetTop})
 
@@ -748,13 +748,12 @@ Polymer
 
    adjs: { type: Object, notify: true }, # adjId: Adjustable
 
  listeners: 'iron-resize': 'update'
 
  ready: ->
 
    @adjs = {}
 
    @ctx = @$.canvas.getContext('2d')
 

	
 
    @dirty = false
 
    @redraw()
 
   
 
  onDown: (ev) ->
 
    if ev.buttons == 1
 
      ev.stopPropagation()
 
      start = $V([ev.x, ev.y])
 
@@ -784,13 +783,13 @@ Polymer
 
        delete @adjs[adjId]
 
      else
 
        adj = makeAdjustable()
 
        @adjs[adjId] = adj
 
        adj.id = adjId
 

	
 
    @dirty = true 
 
    @redraw()
 

	
 
    window.debug_adjsCount = Object.keys(@adjs).length
 
    
 
  adjsChanged: ->
 
    @updateAllCoords()
 

	
 
@@ -832,28 +831,28 @@ Polymer
 

	
 
  update: (ev) ->
 
    @$.canvas.width = ev.target.offsetWidth
 
    @$.canvas.height = ev.target.offsetHeight
 
    @redraw()
 

	
 
  flush: () ->
 
    if @dirty
 
      @redraw()
 
    
 
  redraw: (adjs) ->
 
    @debounce('redraw', @_throttledRedraw.bind(@, adjs))
 

	
 
  _throttledRedraw: (adjs) ->
 
    console.time('adj redraw')
 
    @ctx.clearRect(0, 0, @$.canvas.width, @$.canvas.height)
 

	
 
    for adjId, adj of @adjs
 
      ctr = adj.getCenter()
 
      target = adj.getTarget()
 
      @drawConnector(ctr, target)
 
      
 
      @drawAdjuster(adj.getDisplayValue(),
 
                    Math.floor(ctr.e(1)) - 20, Math.floor(ctr.e(2)) - 10,
 
                    Math.floor(ctr.e(1)) + 20, Math.floor(ctr.e(2)) + 10)
 
    @dirty = false
 
    console.timeEnd('adj redraw')
 

	
 
  drawConnector: (ctr, target) ->
 
    @ctx.strokeStyle = '#aaa'
 
    @ctx.lineWidth = 2
 
    @ctx.beginPath()
 
    _line(@ctx, ctr, target)
0 comments (0 inline, 0 general)