123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /**
- * jqPlot
- * Pure JavaScript plotting plugin using jQuery
- *
- * Version: @VERSION
- * Revision: @REVISION
- *
- * Copyright (c) 2009-2013 Chris Leonello
- * jqPlot is currently available for use in all personal or commercial projects
- * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL
- * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can
- * choose the license that best suits your project and use it accordingly.
- *
- * Although not required, the author would appreciate an email letting him
- * know of any substantial use of jqPlot. You can reach the author at:
- * chris at jqplot dot com or see http://www.jqplot.com/info.php .
- *
- * If you are feeling kind and generous, consider supporting the project by
- * making a donation at: http://www.jqplot.com/donate.php .
- *
- * sprintf functions contained in jqplot.sprintf.js by Ash Searle:
- *
- * version 2007.04.27
- * author Ash Searle
- * http://hexmen.com/blog/2007/03/printf-sprintf/
- * http://hexmen.com/js/sprintf.js
- * The author (Ash Searle) has placed this code in the public domain:
- * "This code is unrestricted: you are free to use it however you like."
- *
- */
- /**
- * The following dashed line support contributed by Cory Sharp.
- * After I implemented an inferior method, Cory responded with a generous
- * contribution of code and input which proved a more powerful and
- * elegant solution.
- */
-
- (function($) {
- var dotlen = 0.1;
- $.jqplot.LinePattern = function (ctx, pattern) {
- var defaultLinePatterns = {
- dotted: [ dotlen, $.jqplot.config.dotGapLength ],
- dashed: [ $.jqplot.config.dashLength, $.jqplot.config.gapLength ],
- solid: null
- };
- if (typeof pattern === 'string') {
- if (pattern[0] === '.' || pattern[0] === '-') {
- var s = pattern;
- pattern = [];
- for (var i=0, imax=s.length; i<imax; i++) {
- if (s[i] === '.') {
- pattern.push( dotlen );
- }
- else if (s[i] === '-') {
- pattern.push( $.jqplot.config.dashLength );
- }
- else {
- continue;
- }
- pattern.push( $.jqplot.config.gapLength );
- }
- }
- else {
- pattern = defaultLinePatterns[pattern];
- }
- }
- if (!(pattern && pattern.length)) {
- return ctx;
- }
- var patternIndex = 0;
- var patternDistance = pattern[0];
- var px = 0;
- var py = 0;
- var pathx0 = 0;
- var pathy0 = 0;
- var moveTo = function (x, y) {
- ctx.moveTo( x, y );
- px = x;
- py = y;
- pathx0 = x;
- pathy0 = y;
- };
- var lineTo = function (x, y) {
- var scale = ctx.lineWidth;
- var dx = x - px;
- var dy = y - py;
- var dist = Math.sqrt(dx*dx+dy*dy);
- if ((dist > 0) && (scale > 0)) {
- dx /= dist;
- dy /= dist;
- while (true) {
- var dp = scale * patternDistance;
- if (dp < dist) {
- px += dp * dx;
- py += dp * dy;
- if ((patternIndex & 1) == 0) {
- ctx.lineTo( px, py );
- }
- else {
- ctx.moveTo( px, py );
- }
- dist -= dp;
- patternIndex++;
- if (patternIndex >= pattern.length) {
- patternIndex = 0;
- }
- patternDistance = pattern[patternIndex];
- }
- else {
- px = x;
- py = y;
- if ((patternIndex & 1) == 0) {
- ctx.lineTo( px, py );
- }
- else {
- ctx.moveTo( px, py );
- }
- patternDistance -= dist / scale;
- break;
- }
- }
- }
- };
- var beginPath = function () {
- ctx.beginPath();
- };
- var closePath = function () {
- lineTo( pathx0, pathy0 );
- };
- return {
- moveTo: moveTo,
- lineTo: lineTo,
- beginPath: beginPath,
- closePath: closePath
- };
- };
- })(jQuery);
|