FreeCalypso > hg > ueda-linux
annotate pads2gpcb/decals.c @ 72:fab9fc646044
pads2gpcb: single -f option to write loose footprint files
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Feb 2016 00:26:04 +0000 |
parents | a7f0e9bb3fb7 |
children | f673b6ad2a78 |
rev | line source |
---|---|
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 #include <stdio.h> |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 #include <stdlib.h> |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 #include <ctype.h> |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 #include <string.h> |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 #include <strings.h> |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 #include "globals.h" |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 #include "struct.h" |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 extern long convert_input_dim(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 static struct part_decal *current_decal; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 static struct footprint_body fpbody; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 static struct footprint_pad *pins_array; |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
14 |
62
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
15 #define MAX_SILK_LINES 64 |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
16 static struct element_line silk_lines[MAX_SILK_LINES]; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
17 static struct element_arc silk_arcs[MAX_SILK_LINES]; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
18 static int num_silk_lines; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
19 static int num_silk_arcs; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
20 |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
21 #define SOLDERMASK_DELTA (600 * 254) |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
22 #define CLEARANCE_SETTING (2000 * 254) |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 static void |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 enter_decal() |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 struct part_decal *p, **pp; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 char *name = input_line_fields[0]; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 for (pp = &part_decal_list; p = *pp; pp = &p->next) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 if (!strcmp(p->name, name)) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 fprintf(stderr, |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 "%s line %d: decal name \"%s\" already defined\n", |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 input_filename, input_lineno, name); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 p = malloc(sizeof(struct part_decal) + strlen(name) + 1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 if (!p) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 perror("malloc of struct part_decal"); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 p->name = (char *)(p + 1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 strcpy(p->name, name); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 p->body = 0; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 p->next = 0; |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
46 *pp = p; |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 current_decal = p; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 static void |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 get_line_internal() |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
53 if (!get_input_line()) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 fprintf(stderr, |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
55 "error: EOF in the middle of a part decal definition\n"); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
60 static |
62
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
61 drawpiece_silk_candidate() |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
62 { |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
63 int level; |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
64 |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
65 if (input_line_nfields != 5) |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
66 return(0); |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
67 level = atoi(input_line_fields[4]); |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
68 return is_drawlevel_selected(level); |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
69 } |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
70 |
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
71 static |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
72 try_silk_open_closed() |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
73 { |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
74 int ncoord, i, bad; |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
75 struct coord_pair coord[MAX_SILK_LINES+1]; |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
76 long thickness; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
77 |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
78 if (strcmp(input_line_fields[0], "OPEN") && |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
79 strcmp(input_line_fields[0], "CLOSED")) |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
80 return(0); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
81 ncoord = atoi(input_line_fields[1]); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
82 if (ncoord < 2) { |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
83 printf("line %d: silk %s piece ncoord < 2\n", input_lineno, |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
84 input_line_fields[0]); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
85 return(0); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
86 } |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
87 if (ncoord > MAX_SILK_LINES + 1) { |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
88 printf("line %d: silk %s piece ncoord too big\n", input_lineno, |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
89 input_line_fields[0]); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
90 return(0); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
91 } |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
92 thickness = convert_input_dim(input_line_fields[2]); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
93 |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
94 bad = 0; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
95 for (i = 0; i < ncoord; i++) { |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
96 get_line_internal(); |
53
0e18818206e5
pads2gpcb/decals.c: silk line extraction appears to work
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
52
diff
changeset
|
97 parse_input_line_fields(); |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
98 if (input_line_nfields != 2) { |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
99 printf("line %d: silk line coord not 2 numbers\n", |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
100 input_lineno); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
101 bad = 1; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
102 continue; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
103 } |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
104 coord[i].x = convert_input_dim(input_line_fields[0]); |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
105 coord[i].y = convert_input_dim(input_line_fields[1]); |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
106 } |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
107 if (bad) |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
108 return(1); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
109 |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
110 for (i = 0; i < ncoord - 1; i++) { |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
111 if (num_silk_lines >= MAX_SILK_LINES) { |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
112 printf("Too many silk lines!\n"); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
113 return(1); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
114 } |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
115 silk_lines[num_silk_lines].end1 = coord[i]; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
116 silk_lines[num_silk_lines].end2 = coord[i+1]; |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
117 silk_lines[num_silk_lines].thickness = thickness; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
118 num_silk_lines++; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
119 } |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
120 return(1); |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
121 } |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
122 |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
123 static |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
124 try_silk_circle() |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
125 { |
54
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
126 int i, bad; |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
127 struct coord_pair coord[2], centre; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
128 long diameter, thickness; |
54
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
129 |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
130 if (strcmp(input_line_fields[0], "CIRCLE")) |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
131 return(0); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
132 if (strcmp(input_line_fields[1], "2")) { |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
133 printf("line %d: silk CIRCLE piece ncoord != 2\n", |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
134 input_lineno); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
135 return(0); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
136 } |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
137 thickness = convert_input_dim(input_line_fields[2]); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
138 |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
139 bad = 0; |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
140 for (i = 0; i < 2; i++) { |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
141 get_line_internal(); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
142 parse_input_line_fields(); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
143 if (input_line_nfields != 2) { |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
144 printf("line %d: silk CIRCLE coord not 2 numbers\n", |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
145 input_lineno); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
146 bad = 1; |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
147 continue; |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
148 } |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
149 coord[i].x = convert_input_dim(input_line_fields[0]); |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
150 coord[i].y = convert_input_dim(input_line_fields[1]); |
54
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
151 } |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
152 if (bad) |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
153 return(1); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
154 |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
155 /* find the centre and diameter */ |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
156 if (coord[0].x == coord[1].x) { |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
157 centre.x = coord[0].x; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
158 if (coord[0].y < coord[1].y) { |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
159 diameter = coord[1].y - coord[0].y; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
160 centre.y = coord[0].y + diameter / 2; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
161 } else if (coord[1].y < coord[0].y) { |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
162 diameter = coord[0].y - coord[1].y; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
163 centre.y = coord[1].y + diameter / 2; |
54
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
164 } else |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
165 goto centre_diam_fail; |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
166 } else if (coord[0].y == coord[1].y) { |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
167 centre.y = coord[0].y; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
168 if (coord[0].x < coord[1].x) { |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
169 diameter = coord[1].x - coord[0].x; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
170 centre.x = coord[0].x + diameter / 2; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
171 } else if (coord[1].x < coord[0].x) { |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
172 diameter = coord[0].x - coord[1].x; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
173 centre.x = coord[1].x + diameter / 2; |
54
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
174 } else |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
175 goto centre_diam_fail; |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
176 } else { |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
177 centre_diam_fail: |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
178 printf("line %d: unable to find circle centre and diameter\n", |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
179 input_lineno); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
180 return(1); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
181 } |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
182 if (diameter % 2) |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
183 printf("warning: line %d: circle diameter in nm is odd!\n", |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
184 input_lineno); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
185 |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
186 if (num_silk_arcs >= MAX_SILK_LINES) { |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
187 printf("Too many silk arcs!\n"); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
188 return(1); |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
189 } |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
190 silk_arcs[num_silk_arcs].centre = centre; |
59
aeef205f7580
pads2gpcb: width and height in ElementArc need be radius, not diameter
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
58
diff
changeset
|
191 silk_arcs[num_silk_arcs].width = diameter / 2; |
aeef205f7580
pads2gpcb: width and height in ElementArc need be radius, not diameter
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
58
diff
changeset
|
192 silk_arcs[num_silk_arcs].height = diameter / 2; |
54
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
193 silk_arcs[num_silk_arcs].start_angle = 0; |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
194 silk_arcs[num_silk_arcs].delta_angle = 360; |
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
195 silk_arcs[num_silk_arcs].thickness = thickness; |
58
05fd0b432e8c
pads2gpcb/decals.c: forgot to increment num_silk_arcs
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
55
diff
changeset
|
196 num_silk_arcs++; |
54
a930e05cf908
pads2gpcb/decals.c: silk circle extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
53
diff
changeset
|
197 return(1); |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
198 } |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
199 |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
200 static void |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
201 one_drawing_piece() |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
202 { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
203 int ncoord, i; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
204 |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
205 /* extract silk lines and arcs if enabled, otherwise skip */ |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
206 get_line_internal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
207 parse_input_line_fields(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
208 if (input_line_nfields < 2) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
209 fprintf(stderr, |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
210 "%s line %d: expected piece header line giving # of coords\n", |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
211 input_filename, input_lineno); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
212 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
213 } |
62
9d7e2937883d
pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
61
diff
changeset
|
214 if (do_footprint_silk && drawpiece_silk_candidate()) { |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
215 if (try_silk_open_closed()) |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
216 return; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
217 if (try_silk_circle()) |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
218 return; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
219 } |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
220 ncoord = atoi(input_line_fields[1]); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
221 for (i = 0; i < ncoord; i++) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
222 get_line_internal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
223 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
224 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
225 static void |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
226 one_text_item() |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
227 { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
228 /* just skip it for now */ |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
229 get_line_internal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
230 get_line_internal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
231 get_line_internal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
232 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
233 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
234 static void |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
235 one_attr_label() |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
236 { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
237 /* just skip it for now */ |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
238 get_line_internal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
239 get_line_internal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
240 get_line_internal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
241 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
242 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
243 static void |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
244 read_pindef_line(idx) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
245 { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
246 get_line_internal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
247 if (input_line_buf[0] != 'T') { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
248 fprintf(stderr, "%s line %d: 'T' line expected\n", |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
249 input_filename, input_lineno); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
250 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
251 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
252 parse_input_line_fields(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
253 if (input_line_nfields != 5) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
254 fprintf(stderr, "%s line %d: expected 5 fields in 'T' line\n", |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
255 input_filename, input_lineno); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
256 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
257 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
258 input_line_fields[0]++; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
259 |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
260 if (atoi(input_line_fields[4]) != idx + 1) { |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
261 fprintf(stderr, |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
262 "%s line %d: expected %d in the pin number field\n", |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
263 input_filename, input_lineno); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
264 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
265 } |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
266 pins_array[idx].end1.x = convert_input_dim(input_line_fields[0]); |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
267 pins_array[idx].end1.y = convert_input_dim(input_line_fields[1]); |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
268 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
269 |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
270 static void |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
271 process_pad_shape(padptr) |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
272 struct pad_shape_info *padptr; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
273 { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
274 padptr->short_dim = convert_input_dim(input_line_fields[1]); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
275 if (padptr->short_dim <= 0) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
276 printf("line %d: pad short dim <= 0\n", input_lineno); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
277 return; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
278 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
279 if (!strcmp(input_line_fields[2], "R")) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
280 padptr->rounded = 1; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
281 padptr->elongated = 0; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
282 } else if (!strcmp(input_line_fields[2], "S")) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
283 padptr->rounded = 0; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
284 padptr->elongated = 0; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
285 } else if (!strcmp(input_line_fields[2], "OF")) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
286 padptr->rounded = 1; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
287 padptr->elongated = 1; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
288 } else if (!strcmp(input_line_fields[2], "RF")) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
289 padptr->rounded = 0; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
290 padptr->elongated = 1; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
291 } else { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
292 printf("line %d: unsupported pad shape %s\n", input_lineno, |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
293 input_line_fields[2]); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
294 return; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
295 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
296 if (padptr->elongated) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
297 if (input_line_nfields < 6) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
298 fprintf(stderr, |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
299 "%s line %d: too few fields in OF/RF pad stack line\n", |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
300 input_filename, input_lineno); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
301 exit(1); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
302 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
303 padptr->angle = parse_input_angle_90s(input_line_fields[3]); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
304 if (padptr->angle != 0 && padptr->angle != 90) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
305 printf("line %d: unsupported OF/RF angle\n", |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
306 input_lineno); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
307 return; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
308 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
309 padptr->long_dim = convert_input_dim(input_line_fields[4]); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
310 if (strcmp(input_line_fields[5], "0")) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
311 printf("line %d: unsupported nonzero finoffset\n", |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
312 input_lineno); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
313 return; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
314 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
315 if (padptr->long_dim <= padptr->short_dim) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
316 printf("line %d: OF/RF long dim <= short dim\n", |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
317 input_lineno); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
318 return; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
319 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
320 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
321 padptr->valid = 1; |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
322 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
323 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
324 static void |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
325 one_padstack_def() |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
326 { |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
327 int pinno, stacklines, i; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
328 struct pad_shape_info *padptr; |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
329 |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
330 get_line_internal(); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
331 parse_input_line_fields(); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
332 if (input_line_nfields != 3 || strcmp(input_line_fields[0], "PAD")) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
333 fprintf(stderr, "%s line %d: expected PAD header line\n", |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
334 input_filename, input_lineno); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
335 exit(1); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
336 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
337 pinno = atoi(input_line_fields[1]); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
338 stacklines = atoi(input_line_fields[2]); |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
339 |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
340 if (pinno < 0 || pinno > fpbody.npins) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
341 fprintf(stderr, "%s line %d: PAD pinno field invalid\n", |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
342 input_filename, input_lineno); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
343 exit(1); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
344 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
345 if (pinno) |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
346 padptr = &pins_array[pinno-1].shape; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
347 else |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
348 padptr = &fpbody.default_pad; |
43
4a50888d09ce
pads2gpcb: handle error cases when the default pad is defined, but failed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
41
diff
changeset
|
349 padptr->defined = 1; |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
350 |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
351 for (i = 0; i < stacklines; i++) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
352 get_line_internal(); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
353 parse_input_line_fields(); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
354 if (input_line_nfields < 3) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
355 fprintf(stderr, |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
356 "%s line %d: too few fields in pad stack line\n", |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
357 input_filename, input_lineno); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
358 exit(1); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
359 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
360 if (!strcmp(input_line_fields[0], "-2")) |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
361 process_pad_shape(padptr); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
362 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
363 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
364 |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
365 static void |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
366 apply_default_padstack() |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
367 { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
368 int i; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
369 |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
370 if (!fpbody.default_pad.valid) |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
371 return; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
372 for (i = 0; i < fpbody.npins; i++) |
43
4a50888d09ce
pads2gpcb: handle error cases when the default pad is defined, but failed
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
41
diff
changeset
|
373 if (!pins_array[i].shape.defined) |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
374 pins_array[i].shape = fpbody.default_pad; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
375 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
376 |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
377 static |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
378 convert_pad_to_gpcb(pinidx) |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
379 { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
380 struct footprint_pad *pin = pins_array + pinidx; |
44
bf1be6c97c28
pads2gpcb: fixed conversion of elongated pads
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
43
diff
changeset
|
381 long long_minus_short, delta; |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
382 |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
383 if (!pin->shape.valid) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
384 printf("error: no pad shape for pin #%d\n", pinidx + 1); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
385 return(-1); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
386 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
387 pin->thickness = pin->shape.short_dim; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
388 pin->clearance = CLEARANCE_SETTING; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
389 pin->mask = pin->thickness + SOLDERMASK_DELTA; |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
390 pin->end2 = pin->end1; |
44
bf1be6c97c28
pads2gpcb: fixed conversion of elongated pads
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
43
diff
changeset
|
391 if (!pin->shape.elongated) |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
392 return(0); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
393 long_minus_short = pin->shape.long_dim - pin->shape.short_dim; |
44
bf1be6c97c28
pads2gpcb: fixed conversion of elongated pads
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
43
diff
changeset
|
394 delta = long_minus_short / 2; |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
395 switch (pin->shape.angle) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
396 case 0: |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
397 pin->end1.x -= delta; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
398 pin->end2.x += delta; |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
399 return(0); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
400 case 90: |
69
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
401 pin->end1.y -= delta; |
a7f0e9bb3fb7
pads2gpcb: struct coord_pair introduced
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
68
diff
changeset
|
402 pin->end2.y += delta; |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
403 return(0); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
404 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
405 return(-1); |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
406 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
407 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
408 static void |
48
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
409 write_decal_as_element() |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
410 { |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
411 char *filename, *cp, *dp; |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
412 int c; |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
413 FILE *outf; |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
414 |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
415 filename = malloc(strlen(current_decal->name) * 3 + 8); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
416 if (!filename) { |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
417 perror("malloc for output file name"); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
418 exit(1); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
419 } |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
420 strcpy(filename, "decals/"); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
421 dp = filename + 7; |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
422 for (cp = current_decal->name; *cp; ) { |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
423 c = *cp++; |
49
b3b7013d9228
pads2gpcb.c/decals.c: allow underscores in written decal file names
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
48
diff
changeset
|
424 if (isalnum(c) || c == '-' || c == '.' || c == '_') |
48
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
425 *dp++ = c; |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
426 else { |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
427 sprintf(dp, "%%%02X", c); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
428 dp += 3; |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
429 } |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
430 } |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
431 *dp = '\0'; |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
432 outf = fopen(filename, "w"); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
433 if (!outf) { |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
434 perror(filename); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
435 exit(1); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
436 } |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
437 write_gpcb_element(outf, current_decal->body, 0, "", "", "", 0); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
438 fclose(outf); |
49
b3b7013d9228
pads2gpcb.c/decals.c: allow underscores in written decal file names
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
48
diff
changeset
|
439 printf("Written to %s\n", filename); |
48
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
440 free(filename); |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
441 } |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
442 |
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
443 static void |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
444 process_one_decal() |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
445 { |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
446 int num_drawing_pieces, num_padstack_defs; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
447 int num_text_items, num_attr_labels; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
448 int i, valid; |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
449 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
450 if (input_line_nfields < 7 || input_line_nfields > 9) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
451 fprintf(stderr, |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
452 "%s line %d: expected beginning of part decal definition, wrong # of fields\n", |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
453 input_filename, input_lineno); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
454 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
455 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
456 enter_decal(); |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
457 printf("Processing decal %s\n", current_decal->name); |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
458 bzero(&fpbody, sizeof fpbody); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
459 if (input_line_fields[1][0] != 'I' && input_line_fields[1][0] != 'M' |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
460 || input_line_fields[1][1]) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
461 fprintf(stderr, "%s line %d: expected 'I' or 'M' in field 1\n", |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
462 input_filename, input_lineno); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
463 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
464 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
465 fpbody.src_units = input_line_fields[1][0]; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
466 if (input_units_global == 'B') |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
467 input_units_current = 'B'; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
468 else |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
469 input_units_current = fpbody.src_units; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
470 fpbody.mark_x = convert_input_dim(input_line_fields[2]); |
68
b7f49f029bc3
pads2gpcb: use Cartesian Y axis direction internally
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
63
diff
changeset
|
471 fpbody.mark_y = convert_input_dim(input_line_fields[3]); |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
472 num_drawing_pieces = atoi(input_line_fields[4]); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
473 fpbody.npins = atoi(input_line_fields[5]); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
474 num_padstack_defs = atoi(input_line_fields[6]); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
475 if (input_line_nfields > 7) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
476 num_text_items = atoi(input_line_fields[7]); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
477 else |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
478 num_text_items = 0; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
479 if (input_line_nfields > 8) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
480 num_attr_labels = atoi(input_line_fields[8]); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
481 else |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
482 num_attr_labels = 0; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
483 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
484 /* done parsing the header line, initialize some misc */ |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
485 fpbody.refdes_scale = 100; |
52
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
486 num_silk_lines = 0; |
727d4e56d5c8
pads2gpcb/decals.c: silk line extraction implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
49
diff
changeset
|
487 num_silk_arcs = 0; |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
488 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
489 /* read and process the miscellany */ |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
490 for (i = 0; i < num_drawing_pieces; i++) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
491 one_drawing_piece(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
492 for (i = 0; i < num_text_items; i++) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
493 one_text_item(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
494 for (i = 0; i < num_attr_labels; i++) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
495 one_attr_label(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
496 |
61
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
497 /* deal with dummies */ |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
498 if (fpbody.npins == 0 && num_padstack_defs == 0) { |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
499 printf("Dummy decal with no pins, skipping\n"); |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
500 return; |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
501 } |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
502 if (fpbody.npins < 1) { |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
503 fprintf(stderr, "Error in decal %s: # of terminals %d < 1\n", |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
504 current_decal->name, fpbody.npins); |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
505 exit(1); |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
506 } |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
507 if (num_padstack_defs < 1) { |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
508 fprintf(stderr, |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
509 "Error in decal %s: # of pad stack defs %d < 1\n", |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
510 current_decal->name, num_padstack_defs); |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
511 exit(1); |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
512 } |
ff1d565d233c
pads2gpcb: handle dummy decals with no pins (found in the E-Sample PCB)
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
60
diff
changeset
|
513 |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
514 /* the meat: allocate and fill the pins array */ |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
515 pins_array = malloc(sizeof(struct footprint_pad) * fpbody.npins); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
516 if (!pins_array) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
517 perror("malloc of the pins array"); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
518 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
519 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
520 fpbody.pins = pins_array; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
521 bzero(pins_array, sizeof(struct footprint_pad) * fpbody.npins); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
522 for (i = 0; i < fpbody.npins; i++) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
523 read_pindef_line(i); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
524 /* read and process the pad stack definitions */ |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
525 for (i = 0; i < num_padstack_defs; i++) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
526 one_padstack_def(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
527 |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
528 /* post-processing */ |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
529 apply_default_padstack(); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
530 valid = 1; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
531 for (i = 0; i < fpbody.npins; i++) |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
532 if (convert_pad_to_gpcb(i) < 0) |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
533 valid = 0; |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
534 if (valid) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
535 /* good, save it */ |
55
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
536 if (num_silk_lines) { |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
537 fpbody.silk_lines = |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
538 malloc(sizeof(struct element_line) * num_silk_lines); |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
539 if (!fpbody.silk_lines) { |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
540 perror("malloc to save silk lines"); |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
541 exit(1); |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
542 } |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
543 bcopy(silk_lines, fpbody.silk_lines, |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
544 sizeof(struct element_line) * num_silk_lines); |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
545 fpbody.num_silk_lines = num_silk_lines; |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
546 } |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
547 if (num_silk_arcs) { |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
548 fpbody.silk_arcs = |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
549 malloc(sizeof(struct element_arc) * num_silk_arcs); |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
550 if (!fpbody.silk_arcs) { |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
551 perror("malloc to save silk arcs"); |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
552 exit(1); |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
553 } |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
554 bcopy(silk_arcs, fpbody.silk_arcs, |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
555 sizeof(struct element_arc) * num_silk_arcs); |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
556 fpbody.num_silk_arcs = num_silk_arcs; |
e93375570f91
pads2gpcb/decals.c: saving of silk lines and arcs implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
54
diff
changeset
|
557 } |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
558 current_decal->body = malloc(sizeof(struct footprint_body)); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
559 if (!current_decal->body) { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
560 perror("malloc to save footprint body"); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
561 exit(1); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
562 } |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
563 *current_decal->body = fpbody; |
72
fab9fc646044
pads2gpcb: single -f option to write loose footprint files
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
69
diff
changeset
|
564 if (write_footprint_files) |
48
c977d637f038
pads2gpcb: decals/* writing implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
44
diff
changeset
|
565 write_decal_as_element(); |
41
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
566 } else { |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
567 printf("decal to gpcb fp conversion FAILED\n"); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
568 free(pins_array); |
a2d304ec3817
pads2gpcb: decal processing code compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
40
diff
changeset
|
569 } |
40
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
570 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
571 |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
572 process_partdecal_section() |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
573 { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
574 for (;;) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
575 if (!get_input_line()) { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
576 fprintf(stderr, "error: EOF in PARTDECAL section\n"); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
577 exit(1); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
578 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
579 if (input_line_buf[0] == '*') { |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
580 parse_starline(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
581 if (strcmp(input_line_starkw, "REMARK")) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
582 break; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
583 else |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
584 continue; |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
585 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
586 parse_input_line_fields(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
587 if (input_line_nfields) |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
588 process_one_decal(); |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
589 } |
1c37bec20596
pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
590 } |
63
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
591 |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
592 struct part_decal * |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
593 find_decal_by_name(name) |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
594 char *name; |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
595 { |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
596 struct part_decal *p; |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
597 |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
598 for (p = part_decal_list; p; p = p->next) |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
599 if (!strcmp(p->name, name)) |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
600 break; |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
601 return(p); |
455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
62
diff
changeset
|
602 } |