Beispiel #1
0
/**************************************************************************
  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;
}
Beispiel #2
0
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';
}