gradientGenerator.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.charting.themes.gradientGenerator"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
  7. dojo._hasResource["dojox.charting.themes.gradientGenerator"] = true;
  8. dojo.provide("dojox.charting.themes.gradientGenerator");
  9. dojo.require("dojox.charting.Theme");
  10. (function(){
  11. var gg = dojox.charting.themes.gradientGenerator;
  12. gg.generateFills = function(colors, fillPattern, lumFrom, lumTo){
  13. // summary:
  14. // generates 2-color gradients using pure colors, a fill pattern, and two luminance values
  15. // colors: Array:
  16. // Array of colors to generate gradients for each.
  17. // fillPattern: Object:
  18. // Gradient fill descriptor which colors list will be generated.
  19. // lumFrom: Number:
  20. // Initial luminance value (0-100).
  21. // lumTo: Number:
  22. // Final luminance value (0-100).
  23. var Theme = dojox.charting.Theme;
  24. return dojo.map(colors, function(c){ // Array
  25. return Theme.generateHslGradient(c, fillPattern, lumFrom, lumTo);
  26. });
  27. };
  28. gg.updateFills = function(themes, fillPattern, lumFrom, lumTo){
  29. // summary:
  30. // transforms solid color fills into 2-color gradients using a fill pattern, and two luminance values
  31. // themes: Array:
  32. // Array of mini-themes (usually series themes or marker themes), which fill will be transformed.
  33. // fillPattern: Object:
  34. // Gradient fill descriptor which colors list will be generated.
  35. // lumFrom: Number:
  36. // Initial luminance value (0-100).
  37. // lumTo: Number:
  38. // Final luminance value (0-100).
  39. var Theme = dojox.charting.Theme;
  40. dojo.forEach(themes, function(t){
  41. if(t.fill && !t.fill.type){
  42. t.fill = Theme.generateHslGradient(t.fill, fillPattern, lumFrom, lumTo);
  43. }
  44. });
  45. };
  46. gg.generateMiniTheme = function(colors, fillPattern, lumFrom, lumTo, lumStroke){
  47. // summary:
  48. // generates mini-themes with 2-color gradients using colors, a fill pattern, and three luminance values
  49. // colors: Array:
  50. // Array of colors to generate gradients for each.
  51. // fillPattern: Object:
  52. // Gradient fill descriptor which colors list will be generated.
  53. // lumFrom: Number:
  54. // Initial luminance value (0-100).
  55. // lumTo: Number:
  56. // Final luminance value (0-100).
  57. // lumStroke: Number:
  58. // Stroke luminance value (0-100).
  59. var Theme = dojox.charting.Theme;
  60. return dojo.map(colors, function(c){ // Array
  61. c = new dojox.color.Color(c);
  62. return {
  63. fill: Theme.generateHslGradient(c, fillPattern, lumFrom, lumTo),
  64. stroke: {color: Theme.generateHslColor(c, lumStroke)}
  65. }
  66. });
  67. };
  68. gg.generateGradientByIntensity = function(color, intensityMap){
  69. // summary:
  70. // generates gradient colors using an intensity map
  71. // color: dojo.Color:
  72. // Color to use to generate gradients.
  73. // intensityMap: Array:
  74. // Array of tuples {o, i}, where o is a gradient offset (0-1),
  75. // and i is an intensity (0-255).
  76. color = new dojo.Color(color);
  77. return dojo.map(intensityMap, function(stop){ // Array
  78. var s = stop.i / 255;
  79. return {
  80. offset: stop.o,
  81. color: new dojo.Color([color.r * s, color.g * s, color.b * s, color.a])
  82. };
  83. });
  84. }
  85. })();
  86. }