31 lines
882 B
TypeScript
31 lines
882 B
TypeScript
const SELECTED_APPENDIX_BACKGROUND = Promise.resolve('rgba(255,255,255,1)');
|
|
|
|
export default function getCustomAppendixBg(src: string, isOwn: boolean, inSelectMode?: boolean, isSelected?: boolean) {
|
|
return isSelected ? SELECTED_APPENDIX_BACKGROUND : getAppendixColorFromImage(src, isOwn);
|
|
}
|
|
|
|
async function getAppendixColorFromImage(src: string, isOwn: boolean) {
|
|
const img = new Image();
|
|
img.src = src;
|
|
|
|
if (!img.width) {
|
|
await new Promise((resolve) => {
|
|
img.onload = resolve;
|
|
});
|
|
}
|
|
|
|
const canvas = document.createElement('canvas');
|
|
const ctx = canvas.getContext('2d')!;
|
|
|
|
canvas.width = img.width;
|
|
canvas.height = img.height;
|
|
|
|
ctx.drawImage(img, 0, 0, img.width, img.height);
|
|
|
|
const x = isOwn ? img.width - 1 : 0;
|
|
const y = img.height - 1;
|
|
|
|
const pixel = Array.from(ctx.getImageData(x, y, 1, 1).data);
|
|
return `rgba(${pixel.join(',')})`;
|
|
}
|