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.
43 lines
1.7 KiB
43 lines
1.7 KiB
define(["dojo/_base/lang", "dojo/_base/array", "../Theme", "./gradientGenerator", "./PrimaryColors", "dojo/colors" /* for sanitize */, "./common"], |
|
function(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, |
|
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; |
|
});
|
|
|