1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
function convertPlotToImage(plot)
{
var parentSelector = plot.targetId;
var titleDiv = $(parentSelector).children('.jqplot-title').get(0);
var baseCanvas = $(parentSelector).children('.jqplot-base- canvas').get(0);
var orig = $(baseCanvas).offset();
var maxX = 0;
var maxY = 0;
var titleText = plot.title.text;
var titleRenderer = new $.jqplot.CanvasTextRenderer({fontSize: '1.1em'});
var textCanvas = document.createElement('canvas');
var textContext = textCanvas.getContext('2d');
titleRenderer.setText(titleText,textContext);
var textWidth = titleRenderer.getWidth(textContext);
var textHeight = titleRenderer.getHeight(textContext);
textContext = null;
textCanvas = null;
$(parentSelector).find("canvas").each(function(i,elem)
{
var p = $(elem).offset();
if(maxX < (p.left+elem.width)) maxX = p.left+elem.width;
if(maxY < (p.top+elem.height)) maxY = p.top+elem.height;
});
maxX -= orig.left;
maxY -= orig.top;
if(maxX < textWidth) maxX = textWidth;
var imgCanvas = document.createElement('canvas');
imgCanvas.background = 'white';
imgCanvas.width = maxX;
imgCanvas.height = maxY;
var imgContext = imgCanvas.getContext('2d');
titleRenderer.setText(titleText,imgContext);
titleRenderer.draw(imgContext,titleText);
imgContext.drawImage(baseCanvas,0,0);
$(parentSelector).find("canvas").each(function(i,elem)
{
if(elem!=baseCanvas)
{
var w = elem.width;
var h = elem.height;
var p = $(elem).offset();
imgContext.drawImage(elem,p.left-orig.left, p.top-orig.top);
}
});
var oImg = Canvas2Image.saveAsPNG(imgCanvas, true);
if (!oImg)
{
alert("Sorry, this browser is not capable of saving " + png + " files!");
return false;
}
oImg.id = 'canvasimage';
$(parentSelector).empty();
$(parentSelector).prepend(oImg);
imageContext = null;
imageCanvas = null;
} |
Partager