14 lines
635 B
TypeScript
14 lines
635 B
TypeScript
/** 색상 문자열(#rrggbb 또는 rgba(...))을 deck.gl용 RGBA 배열로 변환 */
|
|
export function hexToRgba(color: string, alpha = 255): [number, number, number, number] {
|
|
// rgba(r,g,b,a) 형식 처리
|
|
const rgbaMatch = color.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);
|
|
if (rgbaMatch) {
|
|
return [Number(rgbaMatch[1]), Number(rgbaMatch[2]), Number(rgbaMatch[3]), alpha];
|
|
}
|
|
// hex #rrggbb 형식 처리
|
|
const r = parseInt(color.slice(1, 3), 16);
|
|
const g = parseInt(color.slice(3, 5), 16);
|
|
const b = parseInt(color.slice(5, 7), 16);
|
|
return [isNaN(r) ? 0 : r, isNaN(g) ? 0 : g, isNaN(b) ? 0 : b, alpha];
|
|
}
|