source: Dev/trunk/src/client/dojox/gfx/renderer.js @ 529

Last change on this file since 529 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

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