Merge http://github.com/danvk/dygraphs into custom-points
authorRobert Konigsberg <konigsberg@google.com>
Wed, 22 Feb 2012 14:39:38 +0000 (09:39 -0500)
committerRobert Konigsberg <konigsberg@google.com>
Wed, 22 Feb 2012 14:39:38 +0000 (09:39 -0500)
Conflicts:
dygraph-canvas.js
dygraph-utils.js

1  2 
dygraph-canvas.js
dygraph-options-reference.js
dygraph-utils.js
dygraph.js

@@@ -839,11 -835,10 +836,15 @@@ DygraphCanvasRenderer.prototype._render
      prevX = null;
      prevY = null;
      var drawPoints = this.dygraph_.attr_("drawPoints", setName);
 +    var drawPointCallback = this.dygraph_.attr_("drawPointCallback", setName);
 +    if (!drawPointCallback) {
 +      drawPointCallback = Dygraph.Circles.DEFAULT;
 +    }
 +    var pointsOnLine = []; // Array of [canvasx, canvasy] pairs.
+     var strokePattern = this.dygraph_.attr_("strokePattern", setName);
+     if (!Dygraph.isArrayLike(strokePattern)) {
+       strokePattern = null;
+     }
      for (j = firstIndexInSet; j < afterLastIndexInSet; j++) {
        point = points[j];
        if (isNullOrNaN(point.canvasy)) {
Simple merge
@@@ -778,69 -783,25 +785,92 @@@ Dygraph.isPixelChangingOptionList = fun
    return requiresNewPoints;
  };
  
+ /**
+  * Compares two arrays to see if they are equal. If either parameter is not an
+  * array it will return false. Does a shallow compare 
+  * Dygraph.compareArrays([[1,2], [3, 4]], [[1,2], [3,4]]) === false.
+  * @param array1 first array
+  * @param array2 second array
+  * @return True if both parameters are arrays, and contents are equal.
+  */
+ Dygraph.compareArrays = function(array1, array2) {
+   if (!Dygraph.isArrayLike(array1) || !Dygraph.isArrayLike(array2)) {
+     return false;
+   }
+   if (array1.length !== array2.length) {
+     return false;
+   }
+   for (var i = 0; i < array1.length; i++) {
+     if (array1[i] !== array2[i]) {
+       return false;
+     }
+   }
+   return true;
+ };
++
 +
 +Dygraph.RegularConvex = function(sides, rotation) {
 +  this.sides = sides;
 +  this.rotation = rotation ? rotation : 0;
 +  this.delta = Math.PI * 2 / sides;
 +}
 +
 +Dygraph.RegularConvex.prototype.draw = function(ctx, cx, cy, radius, angleAdjustment) {
 + ctx.beginPath();
 + var first = true;
 + if (!angleAdjustment) angleAdjustment = 0;
 + var angle = this.rotation + angleAdjustment;
 +
 + var x = cx + (Math.sin(angle) * radius);
 + var y = cy + (-Math.cos(angle) * radius);
 + ctx.moveTo(x, y);
 +
 + for (var idx = 0; idx < this.sides; idx++) {
 +   angle = (idx == this.sides - 1) ? this.rotation : (angle + this.delta);
 +   var x = cx + (Math.sin(angle) * radius);
 +   var y = cy + (-Math.cos(angle) * radius);
 +   ctx.lineTo(x, y);
 + }
 + ctx.stroke();
 + ctx.closePath();
 +}
 +
 +Dygraph.DrawPolygon_ = function(sides, rotation, ctx, cx, cy, color, radius, angleAdjustment) {
 +  ctx.lineWidth = 1;
 +  ctx.strokeStyle = color;
 +  new Dygraph.RegularConvex(sides, rotation).draw(ctx, cx, cy, radius, angleAdjustment);
 +}
 +
 +Dygraph.Circles = {
 +  DEFAULT : function(g, name, ctx, canvasx, canvasy, color, radius) {
 +    ctx.beginPath();
 +    ctx.fillStyle = color;
 +    ctx.arc(canvasx, canvasy, radius, 0, 2 * Math.PI, false);
 +    ctx.fill();
 +  },
 +  TRIANGLE : function(g, name, ctx, cx, cy, color, radius) {
 +    Dygraph.DrawPolygon_(3, Math.PI / 3, ctx, cx, cy, color, radius);
 +  },
 +  SQUARE : function(g, name, ctx, cx, cy, color, radius) {
 +    Dygraph.DrawPolygon_(4, Math.PI / 4, ctx, cx, cy, color, radius);
 +  },
 +  DIAMOND : function(g, name, ctx, cx, cy, color, radius) {
 +    Dygraph.DrawPolygon_(4, Math.PI / 4, ctx, cx, cy, color, radius, Math.PI / 8);
 +  },
 +  PENTAGON : function(g, name, ctx, cx, cy, color, radius) {
 +    Dygraph.DrawPolygon_(5, Math.PI / 5, ctx, cx, cy, color, radius);
 +  },
 +  HEXAGON : function(g, name, ctx, cx, cy, color, radius) {
 +    Dygraph.DrawPolygon_(6, Math.PI / 6, ctx, cx, cy, color, radius);
 +  },
 +  CIRCLE : function(g, name, ctx, cx, cy, color, radius) {
 +    ctx.beginPath();
 +    ctx.lineStyle = color;
 +    ctx.arc(cx, cy, radius, 0, 2 * Math.PI, false);
 +    ctx.fill();
 +  },
 +  STAR : function(g, name, ctx, cx, cy, color, radius) {
 +    Dygraph.DrawPolygon_(5, 2 * Math.PI / 5, ctx, cx, cy, color, radius);
 +  }
 +  // TODO: plus, x.
 +};
diff --cc dygraph.js
Simple merge