ThreeD.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. define("dojox/charting/themes/ThreeD", ["dojox","dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/array", "../Theme", "./gradientGenerator", "./PrimaryColors", "dojo/colors" /* for sanitize */, "./common"],
  2. function(dojox, kernel, lang, ArrayUtil, Theme, gradientGenerator, PrimaryColors, themes){
  3. var colors = ["#f00", "#0f0", "#00f", "#ff0", "#0ff", "#f0f", "./common"], // the same is in PrimaryColors
  4. defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 100, y2: 0},
  5. // 3D cylinder map is calculated using dojox.gfx3d
  6. cyl3dMap = [
  7. {o: 0.00, i: 174}, {o: 0.08, i: 231}, {o: 0.18, i: 237}, {o: 0.30, i: 231},
  8. {o: 0.39, i: 221}, {o: 0.49, i: 206}, {o: 0.58, i: 187}, {o: 0.68, i: 165},
  9. {o: 0.80, i: 128}, {o: 0.90, i: 102}, {o: 1.00, i: 174}
  10. ],
  11. hiliteIndex = 2, hiliteIntensity = 100, lumStroke = 50,
  12. cyl3dFills = ArrayUtil.map(colors, function(c){
  13. var fill = lang.delegate(defaultFill),
  14. colors = fill.colors = gradientGenerator.generateGradientByIntensity(c, cyl3dMap),
  15. hilite = colors[hiliteIndex].color;
  16. // add highlight
  17. hilite.r += hiliteIntensity;
  18. hilite.g += hiliteIntensity;
  19. hilite.b += hiliteIntensity;
  20. hilite.sanitize();
  21. return fill;
  22. });
  23. themes.ThreeD = PrimaryColors.clone();
  24. themes.ThreeD.series.shadow = {dx: 1, dy: 1, width: 3, color: [0, 0, 0, 0.15]};
  25. themes.ThreeD.next = function(elementType, mixin, doPost){
  26. if(elementType == "bar" || elementType == "column"){
  27. // custom processing for bars and columns: substitute fills
  28. var index = this._current % this.seriesThemes.length,
  29. s = this.seriesThemes[index], old = s.fill;
  30. s.fill = cyl3dFills[index];
  31. var theme = Theme.prototype.next.apply(this, arguments);
  32. // cleanup
  33. s.fill = old;
  34. return theme;
  35. }
  36. return Theme.prototype.next.apply(this, arguments);
  37. };
  38. return themes.ThreeD;
  39. });