gradientGenerator.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. define("dojox/charting/themes/gradientGenerator", ["dojo/_base/lang", "dojo/_base/array", "dojo/_base/Color", "../Theme", "dojox/color/_base", "./common"],
  2. function(lang, arr, Color, Theme, dxcolor, themes){
  3. var gg = lang.getObject("gradientGenerator", true, themes);
  4. gg.generateFills = function(colors, fillPattern, lumFrom, lumTo){
  5. // summary:
  6. // generates 2-color gradients using pure colors, a fill pattern, and two luminance values
  7. // colors: Array:
  8. // Array of colors to generate gradients for each.
  9. // fillPattern: Object:
  10. // Gradient fill descriptor which colors list will be generated.
  11. // lumFrom: Number:
  12. // Initial luminance value (0-100).
  13. // lumTo: Number:
  14. // Final luminance value (0-100).
  15. return arr.map(colors, function(c){ // Array
  16. return Theme.generateHslGradient(c, fillPattern, lumFrom, lumTo);
  17. });
  18. };
  19. gg.updateFills = function(themes, fillPattern, lumFrom, lumTo){
  20. // summary:
  21. // transforms solid color fills into 2-color gradients using a fill pattern, and two luminance values
  22. // themes: Array:
  23. // Array of mini-themes (usually series themes or marker themes), which fill will be transformed.
  24. // fillPattern: Object:
  25. // Gradient fill descriptor which colors list will be generated.
  26. // lumFrom: Number:
  27. // Initial luminance value (0-100).
  28. // lumTo: Number:
  29. // Final luminance value (0-100).
  30. arr.forEach(themes, function(t){
  31. if(t.fill && !t.fill.type){
  32. t.fill = Theme.generateHslGradient(t.fill, fillPattern, lumFrom, lumTo);
  33. }
  34. });
  35. };
  36. gg.generateMiniTheme = function(colors, fillPattern, lumFrom, lumTo, lumStroke){
  37. // summary:
  38. // generates mini-themes with 2-color gradients using colors, a fill pattern, and three luminance values
  39. // colors: Array:
  40. // Array of colors to generate gradients for each.
  41. // fillPattern: Object:
  42. // Gradient fill descriptor which colors list will be generated.
  43. // lumFrom: Number:
  44. // Initial luminance value (0-100).
  45. // lumTo: Number:
  46. // Final luminance value (0-100).
  47. // lumStroke: Number:
  48. // Stroke luminance value (0-100).
  49. return arr.map(colors, function(c){ // Array
  50. c = new dxcolor.Color(c);
  51. return {
  52. fill: Theme.generateHslGradient(c, fillPattern, lumFrom, lumTo),
  53. stroke: {color: Theme.generateHslColor(c, lumStroke)}
  54. }
  55. });
  56. };
  57. gg.generateGradientByIntensity = function(color, intensityMap){
  58. // summary:
  59. // generates gradient colors using an intensity map
  60. // color: dojo.Color:
  61. // Color to use to generate gradients.
  62. // intensityMap: Array:
  63. // Array of tuples {o, i}, where o is a gradient offset (0-1),
  64. // and i is an intensity (0-255).
  65. color = new Color(color);
  66. return arr.map(intensityMap, function(stop){ // Array
  67. var s = stop.i / 255;
  68. return {
  69. offset: stop.o,
  70. color: new Color([color.r * s, color.g * s, color.b * s, color.a])
  71. };
  72. });
  73. }
  74. return gg;
  75. });