1. 24 Feb, 2013 2 commits
  2. 23 Feb, 2013 1 commit
    • David Schnur's avatar
      Replace drawText with add and remove methods. · a9a31644
      David Schnur authored
      Every cache element now contains the actual text element instead of just
      its HTML, plus a flag indicating whether it is visible.  The addText and
      removeText methods control the state of this flag, and the render method
      uses it to manage elements within the text container.  So where we
      previously used drawText to actually render text, now we add each string
      once, then let the render method take care of drawing them as necessary.
      
      This dramatically improves performance by eliminating the need to clear
      and re-populate HTML text on every drawing cycle.  Since the elements
      are now static between add/remove calls, this also allows users to add
      interactivity, as they could in 0.7.  Finally, it eliminates the need
      for a separate 'hot' cache.
      
      I also removed the unnecessary 'dimensions' object; it's easier and
      faster to store the width and height at the top level of the info
      object.
      a9a31644
  3. 21 Feb, 2013 1 commit
  4. 17 Feb, 2013 1 commit
  5. 16 Feb, 2013 1 commit
    • David Schnur's avatar
      Cache actual elements instead of buffering HTML. · 73baa2b9
      David Schnur authored
      This significantly improves performance, since we already create the
      elements when measuring them, and that effort is now no longer wasted.
      We must take care to detach, rather than remove, when clearing the text
      layer, so we can add the elements back later if necessary.
      73baa2b9
  6. 31 Jan, 2013 3 commits
  7. 19 Jan, 2013 6 commits
    • David Schnur's avatar
      Moved canvas tick rendering into a plugin. · a0529ee8
      David Schnur authored
      The base implementation uses the new drawText and getTextInfo methods to
      draw text in HTML.  Canvas rendering has been moved to overrides of
      these methods within the canvas-render plugin.
      a0529ee8
    • David Schnur's avatar
      3b2d43bf
    • David Schnur's avatar
      Added methods to draw and measure text. · edc2bbd9
      David Schnur authored
      These methods provide a common way to draw HTML text above a canvas.
      
      The getTextInfo method generates div HTML for text with a given font
      style/class and angle, measures the element's dimensions, and saves
      everything in a cache.  The drawText method takes the resulting entry,
      finishes generating the inline styles necessary to position the div, and
      adds the result to a buffer.  The render method dumps the buffer into an
      overlay and expires unused cache entries.
      edc2bbd9
    • David Schnur's avatar
      42d5592a
    • David Schnur's avatar
      Abstract-out canvas creation into an object. · a9be4d55
      David Schnur authored
      Moved canvas creation and size management into a new Canvas class.
      
      This is the first step towards a more object-oriented architecture.
      Since we create multiple canvases, and have to maintain several
      module-global variables to track their properties, they are the ideal
      place to start.
      
      This commit also removes sizing code that was duplicated between
      makeCanvas and resizeCanvas.
      a9be4d55
    • David Schnur's avatar
      Renamed the 'canvas' variable to 'surface'. · f66c9ae3
      David Schnur authored
      Renaming the variable gives us room to create a new class called Canvas.
      f66c9ae3
  8. 14 Jan, 2013 2 commits
  9. 13 Jan, 2013 1 commit
  10. 12 Jan, 2013 4 commits
  11. 11 Jan, 2013 5 commits
  12. 10 Jan, 2013 7 commits
  13. 03 Jan, 2013 3 commits
  14. 23 Dec, 2012 2 commits
    • David Schnur's avatar
      Update auto-scaling to support the zero option. · b6924a96
      David Schnur authored
      Added a format option 'autoscale' that controls whether the given point
      is considered when determining an automatic scale.
      
      The lines & bars 'zero' option controls whether autoscale is set on the
      dummy point that is inserted to create the series lower-bound.
      b6924a96
    • David Schnur's avatar
      Added a 'zero' option for lines and bars. · 126cb072
      David Schnur authored
      Area and bar plots normally use a minimum of zero, since their purpose
      is to show size, and using an auto-scaled minimum distorts the plot's
      meaning.  But this behavior is undesirable in cases where the plot type
      is used in more of a decorative sense.
      
      The zero option provides a way to control this behavior.  It defauls to
      true for bars and filled lines.
      126cb072
  15. 22 Dec, 2012 1 commit
    • David Schnur's avatar
      Enforce left-to-right canvas layout orientation. · d7c58b59
      David Schnur authored
      When the placeholder has (or inherits) the HTML 'dir' attribute or CSS
      'direction' we get unexpected results from text metrics, resulting in
      visual glitches on the axes.
      
      The suggested solution in #716 was to set ltr on the placeholder, but
      this introduces its own problems, since the user probably *does* expect
      rtl on items like the legend.  So we'll instead set ltr only on the
      canvases.
      
      We should review this behavior at some point; rtl is something we need
      to handle, not work around.  It also needs to be kept in mind as we move
      canvas-text into a plugin.  But for now this solution at least ensures
      consistent behavior.
      d7c58b59