FreeCalypso > hg > ueda-linux
diff pads2gpcb/decals.c @ 48:c977d637f038
pads2gpcb: decals/* writing implemented
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Sat, 30 Jan 2016 17:31:20 +0000 |
parents | bf1be6c97c28 |
children | b3b7013d9228 |
line wrap: on
line diff
--- a/pads2gpcb/decals.c Sat Jan 30 08:23:35 2016 +0000 +++ b/pads2gpcb/decals.c Sat Jan 30 17:31:20 2016 +0000 @@ -255,6 +255,40 @@ } static void +write_decal_as_element() +{ + char *filename, *cp, *dp; + int c; + FILE *outf; + + filename = malloc(strlen(current_decal->name) * 3 + 8); + if (!filename) { + perror("malloc for output file name"); + exit(1); + } + strcpy(filename, "decals/"); + dp = filename + 7; + for (cp = current_decal->name; *cp; ) { + c = *cp++; + if (isalnum(c) || c == '-' || c == '.') + *dp++ = c; + else { + sprintf(dp, "%%%02X", c); + dp += 3; + } + } + *dp = '\0'; + outf = fopen(filename, "w"); + if (!outf) { + perror(filename); + exit(1); + } + write_gpcb_element(outf, current_decal->body, 0, "", "", "", 0); + fclose(outf); + free(filename); +} + +static void process_one_decal() { int num_drawing_pieces, num_padstack_defs; @@ -346,7 +380,8 @@ exit(1); } *current_decal->body = fpbody; - /* optional file output will go here */ + if (write_decal_files) + write_decal_as_element(); } else { printf("decal to gpcb fp conversion FAILED\n"); free(pins_array);