Exemple #1
0
static int pssvg_convert_one(grd5_grad_custom_t *grd5_gradc,
			     svg_t *svg,
			     pssvg_opt_t opt)
{
  gstack_t *rgbrec;
  int err = 0;

  if ((rgbrec = rectify_rgb(grd5_gradc, opt)) == NULL)
    err++;
  else
    {
      gstack_t *oprec;

      if ((oprec = rectify_op(grd5_gradc)) == NULL)
	err++;
      else
	{
	  err += (grdxsvg(rgbrec, oprec, svg) != 0);
	  gstack_destroy(oprec);
	}

      gstack_destroy(rgbrec);
    }

  if (err)
    btrace("failed conversion of rectified stops to svg");
  else if (opt.verbose)
    printf("  '%s', %i%% smooth; %i colour, %i opacity converted to %i RGBA\n",
	   svg->name,
	   (int)round(grd5_gradc->interp/40.96),
	   grd5_gradc->colour.n,
	   grd5_gradc->transp.n,
	   svg_num_stops(svg));

  return err;
}
Exemple #2
0
extern int gimpsvg(const char *infile, 
		   const char *outfile, 
		   gimpsvg_opt_t opt)
{
    gradient_t *gradient;
    svg_t *svg;
    int err;

    /* load the gradient */
    
    if ((gradient = grad_load_gradient(infile)) == NULL)
      {
	btrace("failed to load gradient from %s",
	       (infile ? infile : "<stdin>"));
	return 1;
      }
    
    /* create a svg struct */

    if ((svg = svg_new()) == NULL)
      {
	btrace("failed to get new cpt strcture");
	return 1;
      }
    
    /* transfer the gradient data to the svg_t struct */

    if ((err = gimpsvg_convert(gradient, svg, opt)) != 0)
      {
	switch (err)
	  {
	  case ERR_SEGMENT_RGBA:
	    btrace("error gretting colour from segment");
	    break;
	  case ERR_NULL:
	    btrace("null structure");
	    break;
	  case ERR_INSERT:
	    btrace("failed structure insert");
	    break;
	  default:
	    btrace("unknown error");
	  }
	return 1;
      }

    if (opt.verbose) 
      printf("converted to %i stops\n",svg_num_stops(svg));

    /* write the cpt file */
    
    if (svg_write(outfile, 1, (const svg_t**)(&svg), &(opt.preview)) != 0)
      {
	btrace("failed to write gradient to %s",
	       (outfile ? outfile : "<stdout>"));
	return 1;
      }
    
    /* tidy */
    
    svg_destroy(svg);
    grad_free_gradient(gradient);
    
    return 0;
}