in web_tool/js/jscolor.js [747:864]
createPalette : function () {
var paletteObj = {
elm: null,
draw: null
};
if (jsc.isCanvasSupported) {
// Canvas implementation for modern browsers
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var drawFunc = function (width, height, type) {
canvas.width = width;
canvas.height = height;
ctx.clearRect(0, 0, canvas.width, canvas.height);
var hGrad = ctx.createLinearGradient(0, 0, canvas.width, 0);
hGrad.addColorStop(0 / 6, '#F00');
hGrad.addColorStop(1 / 6, '#FF0');
hGrad.addColorStop(2 / 6, '#0F0');
hGrad.addColorStop(3 / 6, '#0FF');
hGrad.addColorStop(4 / 6, '#00F');
hGrad.addColorStop(5 / 6, '#F0F');
hGrad.addColorStop(6 / 6, '#F00');
ctx.fillStyle = hGrad;
ctx.fillRect(0, 0, canvas.width, canvas.height);
var vGrad = ctx.createLinearGradient(0, 0, 0, canvas.height);
switch (type.toLowerCase()) {
case 's':
vGrad.addColorStop(0, 'rgba(255,255,255,0)');
vGrad.addColorStop(1, 'rgba(255,255,255,1)');
break;
case 'v':
vGrad.addColorStop(0, 'rgba(0,0,0,0)');
vGrad.addColorStop(1, 'rgba(0,0,0,1)');
break;
}
ctx.fillStyle = vGrad;
ctx.fillRect(0, 0, canvas.width, canvas.height);
};
paletteObj.elm = canvas;
paletteObj.draw = drawFunc;
} else {
// VML fallback for IE 7 and 8
jsc.initVML();
var vmlContainer = document.createElement('div');
vmlContainer.style.position = 'relative';
vmlContainer.style.overflow = 'hidden';
var hGrad = document.createElement(jsc._vmlNS + ':fill');
hGrad.type = 'gradient';
hGrad.method = 'linear';
hGrad.angle = '90';
hGrad.colors = '16.67% #F0F, 33.33% #00F, 50% #0FF, 66.67% #0F0, 83.33% #FF0'
var hRect = document.createElement(jsc._vmlNS + ':rect');
hRect.style.position = 'absolute';
hRect.style.left = -1 + 'px';
hRect.style.top = -1 + 'px';
hRect.stroked = false;
hRect.appendChild(hGrad);
vmlContainer.appendChild(hRect);
var vGrad = document.createElement(jsc._vmlNS + ':fill');
vGrad.type = 'gradient';
vGrad.method = 'linear';
vGrad.angle = '180';
vGrad.opacity = '0';
var vRect = document.createElement(jsc._vmlNS + ':rect');
vRect.style.position = 'absolute';
vRect.style.left = -1 + 'px';
vRect.style.top = -1 + 'px';
vRect.stroked = false;
vRect.appendChild(vGrad);
vmlContainer.appendChild(vRect);
var drawFunc = function (width, height, type) {
vmlContainer.style.width = width + 'px';
vmlContainer.style.height = height + 'px';
hRect.style.width =
vRect.style.width =
(width + 1) + 'px';
hRect.style.height =
vRect.style.height =
(height + 1) + 'px';
// Colors must be specified during every redraw, otherwise IE won't display
// a full gradient during a subsequential redraw
hGrad.color = '#F00';
hGrad.color2 = '#F00';
switch (type.toLowerCase()) {
case 's':
vGrad.color = vGrad.color2 = '#FFF';
break;
case 'v':
vGrad.color = vGrad.color2 = '#000';
break;
}
};
paletteObj.elm = vmlContainer;
paletteObj.draw = drawFunc;
}
return paletteObj;
},