You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.5 KiB
96 lines
2.5 KiB
define(["./_base","dojo/_base/lang", "dojo/_base/sniff", "dojo/_base/window", "dojo/_base/config"], |
|
function(g, lang, has, win, config){ |
|
//>> noBuildResolver |
|
var currentRenderer = null; |
|
|
|
has.add("vml", function(global, document, element){ |
|
element.innerHTML = "<v:shape adj=\"1\"/>"; |
|
var supported = ("adj" in element.firstChild); |
|
element.innerHTML = ""; |
|
return supported; |
|
}); |
|
|
|
return { |
|
// summary: |
|
// This module is an AMD loader plugin that loads the appropriate graphics renderer |
|
// implementation based on detected environment and current configuration settings. |
|
|
|
load: function(id, require, load){ |
|
// tags: |
|
// private |
|
if(currentRenderer && id != "force"){ |
|
load(currentRenderer); |
|
return; |
|
} |
|
var renderer = config.forceGfxRenderer, |
|
renderers = !renderer && (lang.isString(config.gfxRenderer) ? |
|
config.gfxRenderer : "svg,vml,canvas,silverlight").split(","), |
|
silverlightObject, silverlightFlag; |
|
|
|
while(!renderer && renderers.length){ |
|
switch(renderers.shift()){ |
|
case "svg": |
|
// the next test is from https://github.com/phiggins42/has.js |
|
if("SVGAngle" in win.global){ |
|
renderer = "svg"; |
|
} |
|
break; |
|
case "vml": |
|
if(has("vml")){ |
|
renderer = "vml"; |
|
} |
|
break; |
|
case "silverlight": |
|
try{ |
|
if(has("ie")){ |
|
silverlightObject = new ActiveXObject("AgControl.AgControl"); |
|
if(silverlightObject && silverlightObject.IsVersionSupported("1.0")){ |
|
silverlightFlag = true; |
|
} |
|
}else{ |
|
if(navigator.plugins["Silverlight Plug-In"]){ |
|
silverlightFlag = true; |
|
} |
|
} |
|
}catch(e){ |
|
silverlightFlag = false; |
|
}finally{ |
|
silverlightObject = null; |
|
} |
|
if(silverlightFlag){ |
|
renderer = "silverlight"; |
|
} |
|
break; |
|
case "canvas": |
|
if(win.global.CanvasRenderingContext2D){ |
|
renderer = "canvas"; |
|
} |
|
break; |
|
} |
|
} |
|
|
|
if (renderer === 'canvas' && config.canvasEvents !== false) { |
|
renderer = "canvasWithEvents"; |
|
} |
|
|
|
if(config.isDebug){ |
|
console.log("gfx renderer = " + renderer); |
|
} |
|
|
|
function loadRenderer(){ |
|
require(["dojox/gfx/" + renderer], function(module){ |
|
g.renderer = renderer; |
|
// memorize the renderer module |
|
currentRenderer = module; |
|
// now load it |
|
load(module); |
|
}); |
|
} |
|
if(renderer == "svg" && typeof window.svgweb != "undefined"){ |
|
window.svgweb.addOnLoad(loadRenderer); |
|
}else{ |
|
loadRenderer(); |
|
} |
|
} |
|
}; |
|
});
|
|
|