##// END OF EJS Templates
Sync
jeandet -
r5:c48b43d9c7fb default
parent child
Show More
@@ -1,67 +1,212
1 /*------------------------------------------------------------------------------
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
3 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
4 --
4 --
5 -- This program is free software; you can redistribute it and/or modify
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
8 -- (at your option) any later version.
9 --
9 --
10 -- This program is distributed in the hope that it will be useful,
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
13 -- GNU General Public License for more details.
14 --
14 --
15 -- You should have received a copy of the GNU General Public License
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
21 ----------------------------------------------------------------------------*/
22 #ifndef QICADPCB_H
22 #ifndef QICADPCB_H
23 #define QICADPCB_H
23 #define QICADPCB_H
24 #include <QString>
24 #include <QString>
25 #include <QStringList>
25 #include <QStringList>
26 #include <QList>
26 #include <QList>
27 #include <QFile>
27 #include <QFile>
28 #include <parsers/lispLike_driver.h>
28 #include <parsers/lispLike_driver.h>
29 #include <qicadlisplikelexique.h>
29 #include <qicadlisplikelexique.h>
30
30
31 namespace QIlib{
31 namespace QIlib{
32
32
33 class QIcadPcbPlotParams : public QIcadAbstractNodeWrapper
34 {
35 public:
36 QIcadPcbPlotParams(QIlib::AbstractNode* node);
37 QIcadAbstractNodeWrapper layerselection;
38 QIcadAbstractNodeWrapper usegerberextensions;
39 QIcadAbstractNodeWrapper excludeedgelayer;
40 QIcadAbstractNodeWrapper linewidth;
41 QIcadAbstractNodeWrapper plotframeref;
42 QIcadAbstractNodeWrapper viasonmask;
43 QIcadAbstractNodeWrapper mode;
44 QIcadAbstractNodeWrapper useauxorigin;
45 QIcadAbstractNodeWrapper hpglpennumber;
46 QIcadAbstractNodeWrapper hpglpenspeed;
47 QIcadAbstractNodeWrapper hpglpendiameter;
48 QIcadAbstractNodeWrapper hpglpenoverlay;
49 QIcadAbstractNodeWrapper psnegative;
50 QIcadAbstractNodeWrapper psa4output;
51 QIcadAbstractNodeWrapper plotreference;
52 QIcadAbstractNodeWrapper plotvalue;
53 QIcadAbstractNodeWrapper layerselection;
54 QIcadAbstractNodeWrapper plotothertext;
55 QIcadAbstractNodeWrapper plotinvisibletext;
56 QIcadAbstractNodeWrapper padsonsilk;
57 QIcadAbstractNodeWrapper subtractmaskfromsilk;
58 QIcadAbstractNodeWrapper outputformat;
59 QIcadAbstractNodeWrapper mirror;
60 QIcadAbstractNodeWrapper drillshape;
61 QIcadAbstractNodeWrapper scaleselection;
62 QIcadAbstractNodeWrapper outputdirectory;
63 void setNode(QIlib::AbstractNode* node);
64 };
65
66 class QIcadPcbSetup : public QIcadAbstractNodeWrapper
67 {
68 public:
69 QIcadPcbSetup(QIlib::AbstractNode* node);
70 QIcadAbstractNodeWrapper last_trace_width;
71 QIcadAbstractNodeWrapper trace_clearance;
72 QIcadAbstractNodeWrapper zone_clearance;
73 QIcadAbstractNodeWrapper zone_45_only;
74 QIcadAbstractNodeWrapper trace_min;
75 QIcadAbstractNodeWrapper segment_width;
76 QIcadAbstractNodeWrapper edge_width;
77 QIcadAbstractNodeWrapper via_size;
78 QIcadAbstractNodeWrapper via_dril;
79 QIcadAbstractNodeWrapper via_min_size;
80 QIcadAbstractNodeWrapper via_min_drill;
81 QIcadAbstractNodeWrapper uvia_size;
82 QIcadAbstractNodeWrapper uvia_drill;
83 QIcadAbstractNodeWrapper uvias_allowed;
84 QIcadAbstractNodeWrapper uvia_min_size;
85 QIcadAbstractNodeWrapper uvia_min_drill;
86 QIcadAbstractNodeWrapper pcb_text_width;
87 QIcadAbstractNodeWrapper pcb_text_size;
88 QIcadAbstractNodeWrapper mod_edge_width;
89 QIcadAbstractNodeWrapper mod_text_size;
90 QIcadAbstractNodeWrapper mod_text_width;
91 QIcadAbstractNodeWrapper pad_size;
92 QIcadAbstractNodeWrapper pad_drill;
93 QIcadAbstractNodeWrapper pad_to_mask_clearance;
94 QIcadAbstractNodeWrapper aux_axis_origin;
95 QIcadAbstractNodeWrapper visible_elements;
96 QIcadPcbPlotParams plotParams;
97 void setNode(QIlib::AbstractNode* node);
98 };
99
100
101 class QIcadPcbNetClass : public QIcadAbstractNodeWrapper
102 {
103 public:
104 QIcadPcbNetClass(QIlib::AbstractNode* node);
105 QIcadAbstractNodeWrapper clearance;
106 QIcadAbstractNodeWrapper trace_width;
107 QIcadAbstractNodeWrapper via_dia;
108 QIcadAbstractNodeWrapper via_drill;
109 QIcadAbstractNodeWrapper uvia_dia;
110 QIcadAbstractNodeWrapper uvia_drill;
111 QList<QIcadAbstractNodeWrapper> nets;
112 void setNode(QIlib::AbstractNode* node);
113 };
114
115 class QIcadPcbFpTextEffectsFont : public QIcadAbstractNodeWrapper
116 {
117 public:
118 QIcadPcbFpTextEffectsFont(QIlib::AbstractNode* node);
119 QIcadAbstractNodeWrapper size;
120 void setNode(QIlib::AbstractNode* node);
121 };
122
123 class QIcadPcbFpTextEffects : public QIcadAbstractNodeWrapper
124 {
125 public:
126 QIcadPcbFpTextEffects(QIlib::AbstractNode* node);
127 QIcadAbstractNodeWrapper font;
128 QIcadAbstractNodeWrapper thickness;
129 void setNode(QIlib::AbstractNode* node);
130 };
131
132 class QIcadPcbFpText : public QIcadAbstractNodeWrapper
133 {
134 public:
135 QIcadPcbFpText(QIlib::AbstractNode* node);
136 QIcadAbstractNodeWrapper at;
137 QIcadAbstractNodeWrapper layer;
138 void setNode(QIlib::AbstractNode* node);
139 };
140
141
142 class QIcadPcbModule : public QIcadAbstractNodeWrapper
143 {
144 public:
145 QIcadPcbModule(QIlib::AbstractNode* node);
146 QIcadAbstractNodeWrapper layer;
147 QIcadAbstractNodeWrapper tedit;
148 QIcadAbstractNodeWrapper tstamp;
149 QIcadAbstractNodeWrapper at;
150 QIcadAbstractNodeWrapper descr;
151 QIcadAbstractNodeWrapper tags;
152 QIcadAbstractNodeWrapper path;
153 QIcadAbstractNodeWrapper attr;
154 QList<QIcadAbstractNodeWrapper> fp_texts;
155 QList<QIcadAbstractNodeWrapper> fp_lines;
156 QList<QIcadAbstractNodeWrapper> pads;
157 void setNode(QIlib::AbstractNode* node);
158 };
159
160 class QIcadPcbLayers : public QIcadAbstractNodeWrapper
161 {
162 public:
163 QIcadPcbLayers(QIlib::AbstractNode* node);
164 QList<QIcadAbstractNodeWrapper> layers;
165 void setNode(QIlib::AbstractNode* node);
166 };
33
167
34 class QIcadPcbGeneralInfo : public QIcadAbstractNodeWrapper
168 class QIcadPcbGeneralInfo : public QIcadAbstractNodeWrapper
35 {
169 {
36 public:
170 public:
37 QIcadPcbGeneralInfo(QIlib::AbstractNode* node);
171 QIcadPcbGeneralInfo(QIlib::AbstractNode* node);
38 QIcadAbstractNodeWrapper version;
172 QIcadAbstractNodeWrapper links;
39 QIcadAbstractNodeWrapper host;
173 QIcadAbstractNodeWrapper no_connections;
174 QIcadAbstractNodeWrapper area;
175 QIcadAbstractNodeWrapper thickness;
176 QIcadAbstractNodeWrapper drawings;
177 QIcadAbstractNodeWrapper tracks;
178 QIcadAbstractNodeWrapper zones;
179 QIcadAbstractNodeWrapper modules;
180 QIcadAbstractNodeWrapper nets;
40 void setNode(QIlib::AbstractNode* node);
181 void setNode(QIlib::AbstractNode* node);
41 };
182 };
42
183
43 class QIcadPcbRoot : public QIcadAbstractNodeWrapper
184 class QIcadPcbRoot : public QIcadAbstractNodeWrapper
44 {
185 {
45 public:
186 public:
46 QIcadPcbRoot(QIlib::AbstractNode* node);
187 QIcadPcbRoot(QIlib::AbstractNode* node);
47 QIcadAbstractNodeWrapper version;
188 QIcadAbstractNodeWrapper version;
48 QIcadAbstractNodeWrapper host;
189 QIcadAbstractNodeWrapper host;
49 QIcadAbstractNodeWrapper page;
190 QIcadAbstractNodeWrapper page;
191 QIcadPcbGeneralInfo general;
192 QIcadPcbLayers layers;
193 QIcadPcbSetup setup;
194 QList<QIcadAbstractNodeWrapper> nets;
50 void setNode(QIlib::AbstractNode* node);
195 void setNode(QIlib::AbstractNode* node);
51 };
196 };
52
197
53 class QIcadPcb : private lispLike_Driver
198 class QIcadPcb : private lispLike_Driver
54 {
199 {
55 public:
200 public:
56 QIcadPcb();
201 QIcadPcb();
57 bool parsePcb(const QString& pcb);
202 bool parsePcb(const QString& pcb);
58 QString toString();
203 QString toString();
59 QString fileName;
204 QString fileName;
60 QString print();
205 QString print();
61 private:
206 private:
62 void updateConcreteTree();
207 void updateConcreteTree();
63 };
208 };
64
209
65
210
66 }
211 }
67 #endif // QICADPCB_H
212 #endif // QICADPCB_H
General Comments 0
You need to be logged in to leave comments. Login now