renderer.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. define("dojox/gfx/renderer", ["./_base","dojo/_base/lang", "dojo/_base/sniff", "dojo/_base/window", "dojo/_base/config"],
  2. function(g, lang, has, win, config){
  3. //>> noBuildResolver
  4. /*=====
  5. dojox.gfx.renderer = {
  6. // summary:
  7. // This module is an AMD loader plugin that loads the appropriate graphics renderer
  8. // implementation based on detected environment and current configuration settings.
  9. };
  10. =====*/
  11. var currentRenderer = null;
  12. has.add("vml", function(global, document, element){
  13. element.innerHTML = "<v:shape adj=\"1\"/>";
  14. var supported = ("adj" in element.firstChild);
  15. element.innerHTML = "";
  16. return supported;
  17. });
  18. return {
  19. load: function(id, require, load){
  20. if(currentRenderer && id != "force"){
  21. load(currentRenderer);
  22. return;
  23. }
  24. var renderer = config.forceGfxRenderer,
  25. renderers = !renderer && (lang.isString(config.gfxRenderer) ?
  26. config.gfxRenderer : "svg,vml,canvas,silverlight").split(","),
  27. silverlightObject, silverlightFlag;
  28. while(!renderer && renderers.length){
  29. switch(renderers.shift()){
  30. case "svg":
  31. // the next test is from https://github.com/phiggins42/has.js
  32. if("SVGAngle" in win.global){
  33. renderer = "svg";
  34. }
  35. break;
  36. case "vml":
  37. if(has("vml")){
  38. renderer = "vml";
  39. }
  40. break;
  41. case "silverlight":
  42. try{
  43. if(has("ie")){
  44. silverlightObject = new ActiveXObject("AgControl.AgControl");
  45. if(silverlightObject && silverlightObject.IsVersionSupported("1.0")){
  46. silverlightFlag = true;
  47. }
  48. }else{
  49. if(navigator.plugins["Silverlight Plug-In"]){
  50. silverlightFlag = true;
  51. }
  52. }
  53. }catch(e){
  54. silverlightFlag = false;
  55. }finally{
  56. silverlightObject = null;
  57. }
  58. if(silverlightFlag){
  59. renderer = "silverlight";
  60. }
  61. break;
  62. case "canvas":
  63. if(win.global.CanvasRenderingContext2D){
  64. renderer = "canvas";
  65. }
  66. break;
  67. }
  68. }
  69. if (renderer === 'canvas' && config.canvasEvents !== false) {
  70. renderer = "canvasWithEvents";
  71. }
  72. if(config.isDebug){
  73. console.log("gfx renderer = " + renderer);
  74. }
  75. function loadRenderer(){
  76. require(["dojox/gfx/" + renderer], function(module){
  77. g.renderer = renderer;
  78. // memorize the renderer module
  79. currentRenderer = module;
  80. // now load it
  81. load(module);
  82. });
  83. }
  84. if(renderer == "svg" && typeof window.svgweb != "undefined"){
  85. window.svgweb.addOnLoad(loadRenderer);
  86. }else{
  87. loadRenderer();
  88. }
  89. }
  90. };
  91. });