2020-09-04 18:02:20 +00:00
|
|
|
// drawing functionality and constants
|
|
|
|
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
|
|
const draw = (() => {
|
|
|
|
const horizontalGradient = (context, x1, y1, x2, y2, color1, color2) => {
|
|
|
|
const linearGradient = context.createLinearGradient(0, y1, 0, y2);
|
|
|
|
linearGradient.addColorStop(0, color1);
|
|
|
|
linearGradient.addColorStop(0.4, color2);
|
|
|
|
linearGradient.addColorStop(0.6, color2);
|
|
|
|
linearGradient.addColorStop(1, color1);
|
|
|
|
context.fillStyle = linearGradient;
|
|
|
|
context.fillRect(x1, y1, x2 - x1, y2 - y1);
|
|
|
|
};
|
|
|
|
|
|
|
|
const horizontalGradientSingle = (context, x1, y1, x2, y2, color1, color2) => {
|
|
|
|
const linearGradient = context.createLinearGradient(0, y1, 0, y2);
|
|
|
|
linearGradient.addColorStop(0, color1);
|
|
|
|
linearGradient.addColorStop(1, color2);
|
|
|
|
context.fillStyle = linearGradient;
|
|
|
|
context.fillRect(x1, y1, x2 - x1, y2 - y1);
|
|
|
|
};
|
|
|
|
|
|
|
|
const triangle = (context, color, x1, y1, x2, y2, x3, y3) => {
|
|
|
|
context.fillStyle = color;
|
|
|
|
context.beginPath();
|
|
|
|
context.moveTo(x1, y1);
|
|
|
|
context.lineTo(x2, y2);
|
|
|
|
context.lineTo(x3, y3);
|
|
|
|
context.fill();
|
|
|
|
};
|
|
|
|
|
|
|
|
const titleText = (context, title1, title2) => {
|
|
|
|
const font = 'Star4000';
|
|
|
|
const size = '24pt';
|
|
|
|
const color = '#ffff00';
|
|
|
|
const shadow = 3;
|
|
|
|
const x = 170;
|
|
|
|
let y = 55;
|
|
|
|
|
|
|
|
if (title2) {
|
|
|
|
text(context, font, size, color, x, y, title1, shadow); y += 30;
|
|
|
|
text(context, font, size, color, x, y, title2, shadow); y += 30;
|
|
|
|
} else {
|
|
|
|
y += 15;
|
|
|
|
text(context, font, size, color, x, y, title1, shadow); y += 30;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2020-10-29 21:44:28 +00:00
|
|
|
const text = (context, font, size, color, x, y, myText, shadow = 0, align = 'start') => {
|
2020-09-04 18:02:20 +00:00
|
|
|
context.textAlign = align;
|
2020-10-29 21:44:28 +00:00
|
|
|
context.font = `${size} '${font}'`;
|
2020-09-04 18:02:20 +00:00
|
|
|
context.shadowColor = '#000000';
|
|
|
|
context.shadowOffsetX = shadow;
|
|
|
|
context.shadowOffsetY = shadow;
|
|
|
|
context.strokeStyle = '#000000';
|
|
|
|
context.lineWidth = 2;
|
2020-10-29 21:44:28 +00:00
|
|
|
context.strokeText(myText, x, y);
|
2020-09-04 18:02:20 +00:00
|
|
|
context.fillStyle = color;
|
2020-10-29 21:44:28 +00:00
|
|
|
context.fillText(myText, x, y);
|
2020-09-04 18:02:20 +00:00
|
|
|
context.fillStyle = '';
|
|
|
|
context.strokeStyle = '';
|
|
|
|
context.shadowOffsetX = 0;
|
|
|
|
context.shadowOffsetY = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
const box = (context, color, x, y, width, height) => {
|
|
|
|
context.fillStyle = color;
|
|
|
|
context.fillRect(x, y, width, height);
|
|
|
|
};
|
|
|
|
|
|
|
|
const border = (context, color, lineWith, x, y, width, height) => {
|
|
|
|
context.strokeStyle = color;
|
|
|
|
context.lineWidth = lineWith;
|
|
|
|
context.strokeRect(x, y, width, height);
|
|
|
|
};
|
|
|
|
|
|
|
|
const theme = 1; // classic
|
|
|
|
const topColor1 = 'rgb(192, 91, 2)';
|
|
|
|
const topColor2 = 'rgb(72, 34, 64)';
|
|
|
|
const sideColor1 = 'rgb(46, 18, 80)';
|
|
|
|
const sideColor2 = 'rgb(192, 91, 2)';
|
|
|
|
|
|
|
|
return {
|
|
|
|
// methods
|
|
|
|
horizontalGradient,
|
|
|
|
horizontalGradientSingle,
|
|
|
|
triangle,
|
|
|
|
titleText,
|
|
|
|
text,
|
|
|
|
box,
|
|
|
|
border,
|
|
|
|
|
|
|
|
// constant-ish
|
|
|
|
theme,
|
|
|
|
topColor1,
|
|
|
|
topColor2,
|
|
|
|
sideColor1,
|
|
|
|
sideColor2,
|
|
|
|
};
|
2020-10-29 21:44:28 +00:00
|
|
|
})();
|