Source: tools/services/colors.js

/** fonction pour gérer les couleurs des styles (utilisé par Analyse et sketchlayer) */

function hexToColor (color) {
  const result = []
  for (let i = 1, l = color.length; i < l; i += 2) {
    result.push(parseInt(color.slice(i, i + 2), 16))
  }

  // Reduction de l'opacité entre 0 et 1
  if (result.length === 4) {
    result[3] /= 255
  }

  return result.length >= 3 ? result : null
}

export function ensureColorArray (color) {
  if (Array.isArray(color)) {
    return color
  }

  if (color.startsWith('#')) {
    return hexToColor(color)
  }

  if (color.startsWith('rgb(')) {
    return color.slice(4, -1).split(',').map(i => +i)
  }

  if (color.startsWith('rgba(')) {
    return color.slice(5, -1).split(',').map(i => +i)
  }
}

export function getColorArray (color, opacity) {
  const [r, g, b, a = 1] = ensureColorArray(color)
  return [r, g, b, opacity !== undefined ? opacity : a]
}