Example #1
0
static void
color_rotate (GeglProperties *o,
              gfloat         *input,
              gfloat         *output)
{
  gfloat   h, s, v;
  gboolean skip = FALSE;

  rgb_to_hsv (input[0], input[1], input[2],
              &h, &s, &v);

  if (is_gray (s, o->threshold))
    {
      if (o->gray_mode == GEGL_COLOR_ROTATE_GRAY_TREAT_AS)
        {
          if (angle_inside_slice (o->hue, o->src_from, o->src_to,
                                  o->src_clockwise) <= 1)
            {
              h = DEG_TO_RAD (o->hue) / TWO_PI;
              s = o->saturation;
            }
          else
            {
              skip = TRUE;
            }
        }
      else
        {
          skip = TRUE;

          h = DEG_TO_RAD (o->hue) / TWO_PI;
          s = o->saturation;
        }
    }

  if (! skip)
    {
      h = linear (left_end (o->src_from, o->src_to, o->src_clockwise),
                  right_end (o->src_from, o->src_to, o->src_clockwise),
                  left_end (o->dest_from, o->dest_to, o->dest_clockwise),
                  right_end (o->dest_from, o->dest_to, o->dest_clockwise),
                  h * TWO_PI);

      h = angle_mod_2PI (h) / TWO_PI;
    }

  hsv_to_rgb (h, s, v,
              output, output + 1, output + 2);
}
Example #2
0
 const_iterator right_begin(info_type const& n)
 {
     const_iterator i=right_end(n);
     const_iterator b=right_begin_full(n);
     for (;;) {
         --i;
         if (*i == null)
             return i+1;
         if (i==b)
             return b;
     }
 }
Example #3
0
t_var		valid(t_var var, char *tmp, int i)
{
	var.n = 0;
	var.dot = 0;
	var.d = 0;
	var.link = 0;
	var.valid = 1;
	while (tmp[i] != '\0')
	{
		if (tmp[i] == '#')
			var = right_position(var, tmp, i);
		else if (tmp[i] == '\n')
			var = right_end(var, i);
		else if (tmp[i] == '.')
			var.dot++;
		else
			var.valid = 0;
		i++;
	}
	if (var.dot + var.d + var.n != 21 || var.d != 4 || var.n != 5
			|| var.link < 6)
		var.valid = 0;
	return (var);
}
Example #4
0
 void set_null(info_type& n)// we can use this for foreign word edges, to be nice
 {
     for (iterator i=left_begin(n),e=right_end(n);i!=e;++i)
         *i = null;
 }