/************************************************************************** Add effect to ruleset cache. **************************************************************************/ struct effect *effect_new(enum effect_type type, int value) { struct effect *peffect; /* Create the effect. */ peffect = fc_malloc(sizeof(*peffect)); peffect->type = type; peffect->value = value; peffect->reqs = requirement_list_new(); peffect->nreqs = requirement_list_new(); /* Now add the effect to the ruleset cache. */ effect_list_append(ruleset_cache.tracker, peffect); effect_list_append(get_effects(type), peffect); return peffect; }
void start_font(std::ostream& os, Font_spec font) { if (!supports_color(os)) return; char const* codes[3] { get_weight(font.weight), get_foreground_color(font.color), get_effects(font.effects) }; char const** last = std::remove(codes, codes + 3, nullptr); char const** first = codes; os << "\033["; while (first != last) { os << *first; if (first + 1 != last) os << ';'; ++first; } os << 'm'; }