annotate pads2gpcb/decals.c @ 40:1c37bec20596

pads2gpcb: slowly working on the decal processing logic
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Mon, 11 Jan 2016 08:12:40 +0000
parents
children a2d304ec3817
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
14 static int num_drawing_pieces, num_padstack_defs;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
15 static int num_text_items, num_attr_labels;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
16
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
17 static void
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
18 enter_decal()
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
19 {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
20 struct part_decal *p, **pp;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
21 char *name = input_line_fields[0];
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
22
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
23 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
24 if (!strcmp(p->name, name)) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
25 fprintf(stderr,
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
26 "%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
27 input_filename, input_lineno, name);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
28 exit(1);
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 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
31 if (!p) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
32 perror("malloc of struct part_decal");
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
33 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
34 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
35 p->name = (char *)(p + 1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
36 strcpy(p->name, name);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
37 p->body = 0;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
38 p->next = 0;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
39 **pp = p;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
40 current_decal = p;
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
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
43 static void
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
44 get_line_internal()
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
45 {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
46 if (!get_input_line()) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
47 fprintf(stderr,
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
48 "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
49 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
50 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
51 }
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 static void
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
54 one_drawing_piece()
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
55 {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
56 int ncoord, i;
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 /* just skip it for now */
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
59 get_line_internal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
60 parse_input_line_fields();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
61 if (input_line_nfields < 2) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
62 fprintf(stderr,
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
63 "%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
64 input_filename, input_lineno);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
65 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
66 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
67 ncoord = atoi(input_line_fields[1]);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
68 for (i = 0; i < ncoord; i++)
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
69 get_line_internal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
70 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
71
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
72 static void
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
73 one_text_item()
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
74 {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
75 /* just skip it for now */
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
76 get_line_internal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
77 get_line_internal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
78 get_line_internal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
79 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
80
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
81 static void
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
82 one_attr_label()
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
83 {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
84 /* just skip it for now */
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
85 get_line_internal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
86 get_line_internal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
87 get_line_internal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
88 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
89
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
90 static void
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
91 read_pindef_line(idx)
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
92 {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
93 get_line_internal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
94 if (input_line_buf[0] != 'T') {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
95 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
96 input_filename, input_lineno);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
97 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
98 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
99 parse_input_line_fields();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
100 if (input_line_nfields != 5) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
101 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
102 input_filename, input_lineno);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
103 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
104 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
105 input_line_fields[0]++;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
106
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
107 if (atoi(input_line_fields[4]) != i + 1) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
108 fprintf(stderr,
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
109 "%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
110 input_filename, input_lineno);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
111 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
112 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
113 pins_array[i].x1 = convert_input_dim(input_line_fields[0]);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
114 pins_array[i].y1 = -convert_input_dim(input_line_fields[1]);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
115 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
116
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
117 static void
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
118 one_padstack_def()
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
119 {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
120
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
121
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
122 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
123
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
124 static void
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
125 process_one_decal()
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
126 {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
127 int i;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
128
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
129 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
130 fprintf(stderr,
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
131 "%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
132 input_filename, input_lineno);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
133 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
134 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
135 enter_decal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
136 bzero(&fpbody, sizeof fpbody);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
137 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
138 || input_line_fields[1][1]) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
139 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
140 input_filename, input_lineno);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
141 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
142 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
143 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
144 if (input_units_global == 'B')
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
145 input_units_current = 'B';
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
146 else
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
147 input_units_current = fpbody.src_units;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
148 fpbody.mark_x = convert_input_dim(input_line_fields[2]);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
149 fpbody.mark_y = -convert_input_dim(input_line_fields[3]);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
150 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
151 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
152 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
153 if (input_line_nfields > 7)
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
154 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
155 else
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
156 num_text_items = 0;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
157 if (input_line_nfields > 8)
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
158 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
159 else
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
160 num_attr_labels = 0;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
161
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
162 /* sanity checks */
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
163 if (fpbody.npins < 1) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
164 fprintf(stderr, "%s line %d: # of terminals %d < 1\n",
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
165 input_filename, input_lineno, fpbody.npins);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
166 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
167 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
168 if (num_padstack_defs < 1) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
169 fprintf(stderr, "%s line %d: # of pad stack defs %d < 1\n",
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
170 input_filename, input_lineno, num_padstack_defs);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
171 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
172 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
173
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
174 /* 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
175 fpbody.refdes_scale = 100;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
176
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
177 /* read and process the miscellany */
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
178 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
179 one_drawing_piece();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
180 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
181 one_text_item();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
182 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
183 one_attr_label();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
184
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
185 /* 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
186 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
187 if (!pins_array) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
188 perror("malloc of the pins array");
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
189 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
190 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
191 fpbody.pins = pins_array;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
192 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
193 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
194 read_pindef_line(i);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
195 /* 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
196 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
197 one_padstack_def();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
198
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
199
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
200 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
201
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
202 process_partdecal_section()
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
203 {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
204 for (;;) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
205 if (!get_input_line()) {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
206 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
207 exit(1);
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
208 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
209 if (input_line_buf[0] == '*') {
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
210 parse_starline();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
211 if (strcmp(input_line_starkw, "REMARK"))
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
212 break;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
213 else
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
214 continue;
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
215 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
216 parse_input_line_fields();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
217 if (input_line_nfields)
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
218 process_one_decal();
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
219 }
1c37bec20596 pads2gpcb: slowly working on the decal processing logic
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
220 }