Пример #1
0
Файл: color.c Проект: AZed/cdo
int getrgb (char *line, int rgb[], int color_model)
{
  int n, count;
	
  count = slash_count (line);
	
  if (count == 3) {	/* c/m/y/k */
    double cmyk[4];
    n = sscanf (line, "%lf/%lf/%lf/%lf", &cmyk[0], &cmyk[1], &cmyk[2], &cmyk[3]);
    if (n != 4 || check_cmyk (cmyk)) return (TRUE);
    cmyk_to_rgb (rgb, cmyk);
    return (FALSE);
  }
	
  if (count == 2) {	/* r/g/b or h/s/v */
    if (color_model == RGB) {	/* r/g/b */
      n = sscanf (line, "%d/%d/%d", &rgb[0], &rgb[1], &rgb[2]);
      if (n != 3 || check_rgb (rgb)) return (TRUE);
    }
    else {					/* h/s/v */
      double h, s, v;
      n = sscanf (line, "%lf/%lf/%lf", &h, &s, &v);
      if (n != 3 || check_hsv (h, s, v)) return (TRUE);
      hsv_to_rgb (rgb, h, s, v);
    }
    return (FALSE);
  }
	
  if (count == 0) {				/* gray */
    n = sscanf (line, "%d", &rgb[0]);
    rgb[1] = rgb[2] = rgb[0];
    if (n != 1 || check_rgb (rgb)) return (TRUE);
    return (FALSE);
  }

  /* Get here if there is a problem */
			
  return (TRUE);
}
Пример #2
0
void dir_cnt_up(dir_cnt *d)
{
  dir_cnt_clean(d);
  int sc = slash_count(d->path, d->plen);
  if(sc <= 2) {
    d->plen = 1;
    strcpy(d->path, "/");
    dir_cnt_reload(d);
    return;
  }
  if(d->path[d->plen - 1] == '/')
    sc--;
  int tmpsc = 0;
  for(int n = 0; n < d->plen; n++) {
    if(d->path[n] == '/')
      tmpsc++;
    if(tmpsc == sc) {
      d->path[n + 1 ] = '\0';
      d->plen = n + 1;
      break;
    }
  }
  dir_cnt_reload(d);
}