bool ShadingResult::is_valid_linear_rgb() const { assert(m_color_space == ColorSpaceLinearRGB); if (!is_valid_color(spectrum_as_color3f(m_main.m_color))) return false; if (!is_valid_color(m_main.m_alpha)) return false; const size_t aov_count = m_aovs.size(); for (size_t i = 0; i < aov_count; ++i) { const ShadingFragment& aov = m_aovs[i]; if (!is_valid_color(spectrum_as_color3f(aov.m_color))) return false; if (!is_valid_color(aov.m_alpha)) return false; } return true; }
static int parse_febg_color(const char *arg) { int color = parse_color(arg); if (color < 0) color = strtos32_or_err(arg, _("argument error")); if (!is_valid_color(color) || color == GREY) errx(EXIT_FAILURE, "%s: %s", _("argument error"), arg); return color; }
static int parse_ulhb_color(char **av, int *oi) { char *color_name; int bright = 0; int color = -1; if (av[*oi] && strcmp(av[*oi - 1], "bright") == 0) { bright = 1; color_name = av[*oi]; (*oi)++; } else color_name = av[*oi - 1]; color = parse_color(color_name); if (color < 0) color = strtos32_or_err(color_name, _("argument error")); if (!is_valid_color(color)) errx(EXIT_FAILURE, "%s: %s", _("argument error"), color_name); if (bright && (color == BLACK || color == GREY)) errx(EXIT_FAILURE, _("argument error: bright %s is not supported"), color_name); return color; }