diff options
Diffstat (limited to 'js/dojo/dojox/charting/themes/ThreeD.js')
| -rw-r--r-- | js/dojo/dojox/charting/themes/ThreeD.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/js/dojo/dojox/charting/themes/ThreeD.js b/js/dojo/dojox/charting/themes/ThreeD.js new file mode 100644 index 0000000..8085eb5 --- /dev/null +++ b/js/dojo/dojox/charting/themes/ThreeD.js @@ -0,0 +1,44 @@ +//>>built +define("dojox/charting/themes/ThreeD", ["dojox","dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/array", "../Theme", "./gradientGenerator", "./PrimaryColors", "dojo/colors" /* for sanitize */, "./common"], + function(dojox, kernel, lang, ArrayUtil, Theme, gradientGenerator, PrimaryColors, themes){ + + var colors = ["#f00", "#0f0", "#00f", "#ff0", "#0ff", "#f0f", "./common"], // the same is in PrimaryColors + defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 100, y2: 0}, + // 3D cylinder map is calculated using dojox.gfx3d + cyl3dMap = [ + {o: 0.00, i: 174}, {o: 0.08, i: 231}, {o: 0.18, i: 237}, {o: 0.30, i: 231}, + {o: 0.39, i: 221}, {o: 0.49, i: 206}, {o: 0.58, i: 187}, {o: 0.68, i: 165}, + {o: 0.80, i: 128}, {o: 0.90, i: 102}, {o: 1.00, i: 174} + ], + hiliteIndex = 2, hiliteIntensity = 100, lumStroke = 50, + cyl3dFills = ArrayUtil.map(colors, function(c){ + var fill = lang.delegate(defaultFill), + colors = fill.colors = gradientGenerator.generateGradientByIntensity(c, cyl3dMap), + hilite = colors[hiliteIndex].color; + // add highlight + hilite.r += hiliteIntensity; + hilite.g += hiliteIntensity; + hilite.b += hiliteIntensity; + hilite.sanitize(); + return fill; + }); + + themes.ThreeD = PrimaryColors.clone(); + themes.ThreeD.series.shadow = {dx: 1, dy: 1, width: 3, color: [0, 0, 0, 0.15]}; + + themes.ThreeD.next = function(elementType, mixin, doPost){ + if(elementType == "bar" || elementType == "column"){ + // custom processing for bars and columns: substitute fills + var index = this._current % this.seriesThemes.length, + s = this.seriesThemes[index], old = s.fill; + s.fill = cyl3dFills[index]; + var theme = Theme.prototype.next.apply(this, arguments); + // cleanup + s.fill = old; + return theme; + } + return Theme.prototype.next.apply(this, arguments); + }; + + return themes.ThreeD; +}); |
