define([ "esri/symbols/SimpleFillSymbol", "esri/Color", "esri/renderers/SimpleRenderer", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol", "esri/symbols/PictureMarkerSymbol" ], function(SimpleFillSymbol, Color, SimpleRenderer, SimpleMarkerSymbol, SimpleLineSymbol, PictureMarkerSymbol){ var privateValue = 0; return { createRenderer:function(rendererConfig){ var renderer = null; if(rendererConfig != undefined && rendererConfig != null && rendererConfig != "default") { switch(rendererConfig.type) { case "SimpleRenderer": var symbol = this.createSymbol(rendererConfig.symbol); renderer = new SimpleRenderer(symbol); break; } } return renderer; }, createSymbol:function(symbolConfig) { var symbol = null; switch(symbolConfig.type) { case "SimpleMarkerSymbol": symbol = this.createSimpleMarkerSymbol(symbolConfig); break; case "PictureMarkerSymbol": symbol = this.createPictureMarkerSymbol(symbolConfig); break; case "SimpleLineSymbol": symbol = this.createLineSymbol(symbolConfig); break; case "SimpleFillSymbol": symbol = this.creatFillSymbol(symbolConfig); break; } return symbol; }, creatFillSymbol:function(symbolConfig) { var style; var symbol=null; var lineSymbol = this.createLineSymbol(symbolConfig.outline); switch(symbolConfig.style) { case "solid": style = SimpleFillSymbol.STYLE_SOLID; break; case "null": style = SimpleFillSymbol.STYLE_NULL; break; case "cross": style = SimpleFillSymbol.STYLE_CROSS; break; case "diagonal_cross": style = SimpleFillSymbol.STYLE_DIAGONAL_CROSS; break; case "backward_diagonal": style = SimpleFillSymbol.STYLE_BACKWARD_DIAGONAL; break; case "forward_diagonal": style = SimpleFillSymbol.STYLE_FORWARD_DIAGONAL; break; case "horizontal": style = SimpleFillSymbol.STYLE_HORIZONTAL; break; case "vertical": style = SimpleFillSymbol.STYLE_VERTICAL; break; } var color = new Color(symbolConfig.color); color.a=symbolConfig.alpha; symbol = new SimpleFillSymbol(style, lineSymbol,color); return symbol; }, createSimpleMarkerSymbol:function(symbolConfig) { var style; var symbol = null; var lineSymbol = this.createLineSymbol(symbolConfig.outline); switch(symbolConfig.style) { case "circle": style = SimpleMarkerSymbol.STYLE_CIRCLE; break; case "cross": style = SimpleMarkerSymbol.STYLE_CROSS; break; case "diamond": style = SimpleMarkerSymbol.STYLE_DIAMOND; break; case "path": style = SimpleMarkerSymbol.STYLE_PATH; break; case "square": style = SimpleMarkerSymbol.STYLE_SQUARE; break; case "STYLE_X": style = SimpleMarkerSymbol.STYLE_X; break; default: style = SimpleMarkerSymbol.STYLE_CIRCLE; break; } symbol = new SimpleMarkerSymbol(style,symbolConfig.size,lineSymbol,new Color(symbolConfig.color)); return symbol; }, createLineSymbol:function(config) { var symbol=null; if(config != undefined && config != null) { switch(config.type) { case "SimpleLineSymbol": var style = this.parseLineStyle(config.style); symbol = new SimpleLineSymbol(style, new Color(config.color), config.width); break; } } return symbol; }, parseLineStyle:function(style) { var returnStyle; switch(style) { case "solid": returnStyle = SimpleLineSymbol.STYLE_SOLID; break; case "dashdot": returnStyle = SimpleLineSymbol.STYLE_DASHDOT; break; case "dashdotdot": returnStyle = SimpleLineSymbol.STYLE_DASHDOT; break; case "dot": returnStyle = SimpleLineSymbol.STYLE_DOT; break; case "longdash": returnStyle = SimpleLineSymbol.STYLE_LONGDASH; break; case "longdashdot": returnStyle = SimpleLineSymbol.STYLE_LONGDASHDOT; break; case "null": returnStyle = SimpleLineSymbol.STYLE_NULL; break; case "shortdash": returnStyle = SimpleLineSymbol.STYLE_SHORTDASH; break; case "shortdashdot": returnStyle = SimpleLineSymbol.STYLE_SHORTDASHDOT; break; default: returnStyle = SimpleLineSymbol.STYLE_SOLID; break; } return returnStyle; }, createPictureMarkerSymbol:function(config) { var symbol = new PictureMarkerSymbol(config.url, config.width, config.height); symbol.xoffset=config.xoffset; symbol.yoffset=config.yoffset; return symbol; } }; });