Как определить, темный ли цвет?
Прошу прощения, уже сам нашел аналогичный вопрос на Stack Overflow.

Вот, кому надо, пример на Си, который у меня вроде бы заработал:

if (1 - (0.299 * red + 0.587 * green + 0.114 * blue) / 255 < 0.5)
    // светлый
else
    // темный

С яркостью все правильно выбрано, вот только подсчет яркости…
Если интересно более точное определение яркости, тут статья на английском языке про расчет яркости.