static int pssvg_convert_ith(grd5_t *grd5, size_t i, gstack_t *gstack, pssvg_opt_t opt) { grd5_grad_t *grd5_grad = grd5->gradients + i; svg_t *svg; int err = 0, pushed = 0; switch (grd5_grad->type) { case GRD5_GRAD_CUSTOM: if ((svg = svg_new()) == NULL) err++; else { if (pssvg_title(grd5_grad, svg, opt, i+1) != 0) err++; else { if (pssvg_convert_one(&(grd5_grad->u.custom), svg, opt) != 0) { /* failure to convert is not an error */ btrace("failed convert of gradient %zi", i); } else { if (gstack_push(gstack, &svg) != 0) { btrace("error pushing result to stack"); err++; } else { pushed++; } } } if (! pushed) svg_destroy(svg); } break; case GRD5_GRAD_NOISE: btrace("no conversion of (noise) gradient %zi", i); break; default: btrace("bad type (%i) for gradient %zi", grd5_grad->type, i); } return err; }
static void svgset_destroy(svgset_t *svgset) { int i; for (i=0 ; i < svgset->n ; i++) svg_destroy(svgset->svg[i]); free(svgset->svg); free(svgset); }
svg_android_status_t svgAndroidDestroy(svg_android_t *svg_android) { svg_android_status_t status; _svg_android_pop_state (svg_android); status = svg_destroy (svg_android->svg); free (svg_android); return status; }
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; }
void SVG_Free(SDL_svg_context *Source) { svg_destroy (Source->SVG); destroy_SDL_svg_context (Source); }