qicadpcb.cpp
1308 lines
| 33.4 KiB
| text/x-c
|
CppLexer
/ qilib / qicadpcb.cpp
r3 | #include "qicadpcb.h" | |||
QIlib::QIcadPcb::QIcadPcb() | ||||
r6 | :pcbRoot(NULL) | |||
r3 | { | |||
} | ||||
bool QIlib::QIcadPcb::parsePcb(const QString &pcb) | ||||
{ | ||||
parse(pcb.toStdString().c_str()); | ||||
updateConcreteTree(); | ||||
return false; | ||||
} | ||||
QString QIlib::QIcadPcb::toString() | ||||
{ | ||||
} | ||||
QString QIlib::QIcadPcb::print() | ||||
{ | ||||
return rootNode.print(); | ||||
} | ||||
void QIlib::QIcadPcb::updateConcreteTree() | ||||
{ | ||||
r6 | if(this->rootNode.nodes.count()) | |||
{ | ||||
if(this->rootNode.nodes.at(0)->name==QIlib::Lexique::kicad_pcb_c) | ||||
{ | ||||
if(this->pcbRoot==NULL) | ||||
{ | ||||
this->pcbRoot = new QIcadPcbRoot(this->rootNode.nodes.at(0)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
QIlib::QIcadPcbRoot::QIcadPcbRoot(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbRoot::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
this->clrNets(); | ||||
r7 | this->clrModules(); | |||
this->clrDimensions(); | ||||
this->clrLines(); | ||||
this->clrSegments(); | ||||
this->clrVias(); | ||||
this->clrArcs(); | ||||
this->clrCircles(); | ||||
this->clrTexts(); | ||||
this->clrZones(); | ||||
r6 | if(node->name==QIlib::Lexique::kicad_pcb_c) | |||
{ | ||||
r7 | this->p_node = node; | |||
r6 | for(int i=0;i<node->nodes.count();i++) | |||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::version_c) | ||||
{ | ||||
this->version.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::host_c) | ||||
{ | ||||
this->host.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::page_c) | ||||
{ | ||||
this->page.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::general_c) | ||||
{ | ||||
this->general.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layers_c) | ||||
{ | ||||
this->layers.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::setup_c) | ||||
{ | ||||
this->setup.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::net_c) | ||||
{ | ||||
this->apendNet(node->nodes.at(i)); | ||||
} | ||||
r7 | if(node->nodes.at(i)->name==QIlib::Lexique::module_c) | |||
{ | ||||
this->apendModule(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::gr_line_c) | ||||
{ | ||||
this->apendLine(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::dimension_c) | ||||
{ | ||||
this->apendDimension(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::via_c) | ||||
{ | ||||
this->apendVia(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::segment_c) | ||||
{ | ||||
this->apendSegment(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::gr_text_c) | ||||
{ | ||||
this->apendText(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::gr_arc_c) | ||||
{ | ||||
this->apendArc(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::gr_circle_c) | ||||
{ | ||||
this->apendCircle(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::zone_c) | ||||
{ | ||||
this->apendZone(node->nodes.at(i)); | ||||
} | ||||
r6 | } | |||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::clrNets() | ||||
{ | ||||
while(nets.count()) | ||||
{ | ||||
QIcadAbstractNodeWrapper* net; | ||||
net = nets.last(); | ||||
nets.removeLast(); | ||||
delete net; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendNet(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::net_c) | ||||
{ | ||||
this->nets.append(new QIcadAbstractNodeWrapper(node)); | ||||
} | ||||
} | ||||
r7 | void QIlib::QIcadPcbRoot::clrModules() | |||
{ | ||||
while(modules.count()) | ||||
{ | ||||
QIcadPcbModule* module; | ||||
module = modules.last(); | ||||
modules.removeLast(); | ||||
delete module; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendModule(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::module_c) | ||||
{ | ||||
this->modules.append(new QIcadPcbModule(node)); | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::clrDimensions() | ||||
{ | ||||
while(dimensions.count()) | ||||
{ | ||||
QIcadPcbDimension* dimension; | ||||
dimension = dimensions.last(); | ||||
dimensions.removeLast(); | ||||
delete dimension; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendDimension(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::dimension_c) | ||||
{ | ||||
this->dimensions.append(new QIcadPcbDimension(node)); | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendLine(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::gr_line_c) | ||||
{ | ||||
this->lines.append(new QIcadPcbLine(node)); | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::clrLines() | ||||
{ | ||||
while(lines.count()) | ||||
{ | ||||
QIcadPcbLine* line; | ||||
line = lines.last(); | ||||
lines.removeLast(); | ||||
delete line; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::clrSegments() | ||||
{ | ||||
while(segments.count()) | ||||
{ | ||||
QIcadPcbSegment* segment; | ||||
segment = segments.last(); | ||||
segments.removeLast(); | ||||
delete segment; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendSegment(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::segment_c) | ||||
{ | ||||
this->segments.append(new QIcadPcbSegment(node)); | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::clrVias() | ||||
{ | ||||
while(vias.count()) | ||||
{ | ||||
QIcadPcbVia* via; | ||||
via = vias.last(); | ||||
vias.removeLast(); | ||||
delete via; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendVia(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::via_c) | ||||
{ | ||||
Jeandet Alexis
|
r11 | this->vias.append(new QIcadPcbVia(node,this->setup.defaultViaDrillSize())); | ||
r7 | } | |||
} | ||||
void QIlib::QIcadPcbRoot::clrArcs() | ||||
{ | ||||
while(arcs.count()) | ||||
{ | ||||
QIcadPcbArc* arc; | ||||
arc = arcs.last(); | ||||
arcs.removeLast(); | ||||
delete arc; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendArc(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::gr_arc_c) | ||||
{ | ||||
this->arcs.append(new QIcadPcbArc(node)); | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::clrCircles() | ||||
{ | ||||
while(circles.count()) | ||||
{ | ||||
QIcadPcbCircle* circle; | ||||
circle = circles.last(); | ||||
circles.removeLast(); | ||||
delete circle; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendCircle(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::gr_circle_c) | ||||
{ | ||||
this->circles.append(new QIcadPcbCircle(node)); | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::clrTexts() | ||||
{ | ||||
while(texts.count()) | ||||
{ | ||||
QIcadPcbText* text; | ||||
text = texts.last(); | ||||
texts.removeLast(); | ||||
delete text; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendText(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::gr_text_c) | ||||
{ | ||||
this->texts.append(new QIcadPcbText(node)); | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::clrZones() | ||||
{ | ||||
while(zones.count()) | ||||
{ | ||||
QIcadPcbZone* zone; | ||||
zone = zones.last(); | ||||
zones.removeLast(); | ||||
delete zone; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbRoot::apendZone(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::zone_c) | ||||
{ | ||||
this->zones.append(new QIcadPcbZone(node)); | ||||
} | ||||
} | ||||
r6 | ||||
QIlib::QIcadPcbGeneralInfo::QIcadPcbGeneralInfo(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbGeneralInfo::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
r7 | if(node->name==QIlib::Lexique::general_c) | |||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::links_c) | ||||
{ | ||||
this->links.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::no_connect_c) | ||||
{ | ||||
this->no_connections.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::area_c) | ||||
{ | ||||
this->area.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::thickness_c) | ||||
{ | ||||
this->thickness.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::drawings_c) | ||||
{ | ||||
this->drawings.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::tracks_c) | ||||
{ | ||||
this->tracks.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::zones_c) | ||||
{ | ||||
this->zones.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::modules_c) | ||||
{ | ||||
this->modules.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::nets_c) | ||||
{ | ||||
this->nets.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
r6 | } | |||
QIlib::QIcadPcbLayers::QIcadPcbLayers(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbLayers::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
this->p_node = node; | ||||
r7 | if(node->name==QIlib::Lexique::layers_c) | |||
{ | ||||
this->clrLayers(); | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
this->apendLayer(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbLayers::clrLayers() | ||||
{ | ||||
while(layers.count()) | ||||
{ | ||||
QIcadPcbLayer* layer; | ||||
layer = layers.last(); | ||||
layers.removeLast(); | ||||
delete layer; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbLayers::apendLayer(QIlib::AbstractNode *node) | ||||
{ | ||||
this->layers.append(new QIcadPcbLayer(node)); | ||||
r6 | } | |||
QIlib::QIcadPcbLine::QIcadPcbLine(QIlib::AbstractNode *node) | ||||
r7 | :QIcadAbstractPcbLine(node) | |||
r6 | { | |||
this->setNode(node); | ||||
} | ||||
r7 | ||||
r6 | void QIlib::QIcadPcbLine::setNode(QIlib::AbstractNode *node) | |||
{ | ||||
r7 | if(node->name==QIlib::Lexique::gr_line_c) | |||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::start_c) | ||||
{ | ||||
this->p_startpos = nodeTo2DCoords(node->nodes.at(i)); | ||||
this->start.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::end_c) | ||||
{ | ||||
this->p_stoppos = nodeTo2DCoords(node->nodes.at(i)); | ||||
this->end.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::angle_c) | ||||
{ | ||||
this->angle.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->p_layers = node->nodes.at(i)->Values; | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::width_c) | ||||
{ | ||||
this->p_width = nodeValueToDouble(node->nodes.at(i)); | ||||
this->width.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
r6 | } | |||
QIlib::QIcadPcbModule::QIcadPcbModule(QIlib::AbstractNode *node) | ||||
r13 | :QIcadAbstractNodeWrapper(node),p_angle(0.0) | |||
r6 | { | |||
this->setNode(node); | ||||
r3 | } | |||
r6 | ||||
r7 | const QPointF &QIlib::QIcadPcbModule::pos() | |||
{ | ||||
return p_pos; | ||||
} | ||||
double QIlib::QIcadPcbModule::angle() | ||||
{ | ||||
r13 | return - p_angle; | |||
r7 | } | |||
r6 | void QIlib::QIcadPcbModule::setNode(QIlib::AbstractNode *node) | |||
{ | ||||
r7 | this->clrPads(); | |||
if(node->name==QIlib::Lexique::module_c) | ||||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::tedit_c) | ||||
{ | ||||
this->tedit.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::tstamp_c) | ||||
{ | ||||
this->tstamp.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::at_c) | ||||
{ | ||||
this->at.setNode(node->nodes.at(i)); | ||||
QStringList coords=node->nodes.at(i)->Values; | ||||
p_pos = nodeTo2DCoords(node->nodes.at(i)); | ||||
if(coords.count()==3) | ||||
{ | ||||
p_angle = coords.at(2).toDouble(); | ||||
r13 | this->updatePadsAngle(); | |||
r7 | } | |||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::tags_c) | ||||
{ | ||||
this->tags.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::path_c) | ||||
{ | ||||
this->path.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::attr_c) | ||||
{ | ||||
this->attr.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::pad_c) | ||||
{ | ||||
this->apendPad(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::fp_line_c) | ||||
{ | ||||
this->apendLine(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::fp_text_c) | ||||
{ | ||||
this->apendText(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::fp_circle_c) | ||||
{ | ||||
this->apendCircle(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbModule::clrPads() | ||||
{ | ||||
while(pads.count()) | ||||
{ | ||||
QIcadPcbPad* pad; | ||||
pad = pads.last(); | ||||
pads.removeLast(); | ||||
delete pad; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbModule::apendPad(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::pad_c) | ||||
{ | ||||
r13 | this->pads.append(new QIcadPcbPad(node, this->p_angle)); | |||
r7 | } | |||
} | ||||
void QIlib::QIcadPcbModule::clrTexts() | ||||
{ | ||||
while(fp_texts.count()) | ||||
{ | ||||
QIcadPcbFPText* text; | ||||
text = fp_texts.last(); | ||||
fp_texts.removeLast(); | ||||
delete text; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbModule::apendText(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::fp_text_c) | ||||
{ | ||||
this->fp_texts.append(new QIcadPcbFPText(node)); | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbModule::clrLines() | ||||
{ | ||||
while(fp_lines.count()) | ||||
{ | ||||
QIcadPcbFPLine* line; | ||||
line = fp_lines.last(); | ||||
fp_lines.removeLast(); | ||||
delete line; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbModule::apendLine(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::fp_line_c) | ||||
{ | ||||
this->fp_lines.append(new QIcadPcbFPLine(node)); | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbModule::clrCircles() | ||||
{ | ||||
while(fp_circles.count()) | ||||
{ | ||||
QIcadPcbFPCircle* circle; | ||||
circle = fp_circles.last(); | ||||
fp_circles.removeLast(); | ||||
delete circle; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbModule::apendCircle(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::fp_circle_c) | ||||
{ | ||||
this->fp_circles.append(new QIcadPcbFPCircle(node)); | ||||
} | ||||
r6 | } | |||
r13 | void QIlib::QIcadPcbModule::updatePadsAngle() | |||
{ | ||||
for(int i=0;i<this->pads.count();i++) | ||||
{ | ||||
this->pads.at(i)->setModuleAngle(this->p_angle); | ||||
} | ||||
} | ||||
r6 | ||||
QIlib::QIcadPcbDimension::QIcadPcbDimension(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbDimension::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
r7 | if(node->name==QIlib::Lexique::dimension_c) | |||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::width_c) | ||||
{ | ||||
this->width.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::gr_text_c) | ||||
{ | ||||
this->gr_text.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::feature1_c) | ||||
{ | ||||
this->feature1.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::crossbar_c) | ||||
{ | ||||
this->crossbar.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::arrow1a_c) | ||||
{ | ||||
this->arrow1a.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::arrow1b_c) | ||||
{ | ||||
this->arrow1b.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::arrow2a_c) | ||||
{ | ||||
this->arrow2a.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::arrow2b_c) | ||||
{ | ||||
this->arrow2b.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
r6 | } | |||
QIlib::QIcadPcbModuleModel::QIcadPcbModuleModel(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbModuleModel::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
this->p_node = node; | ||||
} | ||||
r7 | QIlib::QIcadPcbFPText::QIcadPcbFPText(QIlib::AbstractNode *node) | |||
r6 | :QIcadAbstractNodeWrapper(node) | |||
{ | ||||
this->setNode(node); | ||||
} | ||||
r7 | void QIlib::QIcadPcbFPText::setNode(QIlib::AbstractNode *node) | |||
r6 | { | |||
r7 | if(node->name==QIlib::Lexique::pad_c) | |||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::at_c) | ||||
{ | ||||
this->at.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::effects_c) | ||||
{ | ||||
this->effects.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
r6 | } | |||
QIlib::QIcadPcbFpTextEffects::QIcadPcbFpTextEffects(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbFpTextEffects::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
this->p_node = node; | ||||
} | ||||
QIlib::QIcadPcbFpTextEffectsFont::QIcadPcbFpTextEffectsFont(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbFpTextEffectsFont::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
this->p_node = node; | ||||
} | ||||
QIlib::QIcadPcbNetClass::QIcadPcbNetClass(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbNetClass::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
this->p_node = node; | ||||
} | ||||
QIlib::QIcadPcbSetup::QIcadPcbSetup(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbSetup::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
Jeandet Alexis
|
r11 | if(node->name==QIlib::Lexique::setup_c) | ||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::via_drill_c) | ||||
{ | ||||
this->via_dril.setNode(node->nodes.at(i)); | ||||
this->p_defaultViaDrillSize = nodeValueToDouble(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
r6 | } | |||
QIlib::QIcadPcbPlotParams::QIcadPcbPlotParams(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbPlotParams::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
this->p_node = node; | ||||
} | ||||
QIlib::QIcadPcbSegment::QIcadPcbSegment(QIlib::AbstractNode *node) | ||||
r7 | :QIcadAbstractPcbLine(node) | |||
r6 | { | |||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbSegment::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
r7 | if(node->name==QIlib::Lexique::segment_c) | |||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::start_c) | ||||
{ | ||||
this->p_startpos = nodeTo2DCoords(node->nodes.at(i)); | ||||
this->start.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::end_c) | ||||
{ | ||||
this->p_stoppos = nodeTo2DCoords(node->nodes.at(i)); | ||||
this->end.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::width_c) | ||||
{ | ||||
this->p_width = nodeValueToDouble(node->nodes.at(i)); | ||||
this->width.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->p_layers = node->nodes.at(i)->Values; | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::net_c) | ||||
{ | ||||
this->net.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
r6 | } | |||
Jeandet Alexis
|
r11 | QIlib::QIcadPcbVia::QIcadPcbVia(QIlib::AbstractNode *node, double defaultDrill) | ||
:QIcadAbstractNodeWrapper(node),p_drill(defaultDrill) | ||||
r6 | { | |||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbVia::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
r7 | if(node->name==QIlib::Lexique::via_c) | |||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::at_c) | ||||
{ | ||||
this->at.setNode(node->nodes.at(i)); | ||||
p_pos = nodeTo2DCoords(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::size_c) | ||||
{ | ||||
this->sizeNode.setNode(node->nodes.at(i)); | ||||
Jeandet Alexis
|
r11 | p_size = QSizeF(nodeValueToDouble(node->nodes.at(i)),nodeValueToDouble(node->nodes.at(i))); | ||
r7 | } | |||
if(node->nodes.at(i)->name==QIlib::Lexique::drill_c) | ||||
{ | ||||
this->drillNode.setNode(node->nodes.at(i)); | ||||
p_drill = nodeValueToDouble(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layers_c) | ||||
{ | ||||
this->layersNode.setNode(node->nodes.at(i)); | ||||
p_layers = node->nodes.at(i)->Values; | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::net_c) | ||||
{ | ||||
this->net.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::tstamp_c) | ||||
{ | ||||
this->tstamp.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
r13 | QIlib::QIcadPcbPad::QIcadPcbPad(QIlib::AbstractNode *node, double modAngle) | |||
:QIcadAbstractNodeWrapper(node),p_Mod_angle(modAngle),p_angle(0.0) | ||||
r7 | { | |||
this->setNode(node); | ||||
} | ||||
r13 | ||||
r7 | void QIlib::QIcadPcbPad::setNode(QIlib::AbstractNode *node) | |||
{ | ||||
if(node->name==QIlib::Lexique::pad_c) | ||||
{ | ||||
this->p_node = node; | ||||
if(p_node->Values.count()>=3) | ||||
{ | ||||
if(!this->p_node->Values.at((2)).compare("rect")) | ||||
{ | ||||
this->p_shape = rectangle; | ||||
} | ||||
else | ||||
if(!this->p_node->Values.at((2)).compare("circle")) | ||||
{ | ||||
this->p_shape = circle; | ||||
} | ||||
r12 | this->p_padNumber = nodeValueToInt(node,0); | |||
r7 | } | |||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::at_c) | ||||
{ | ||||
this->at.setNode(node->nodes.at(i)); | ||||
this->p_pos = nodeTo2DCoords(node->nodes.at(i)); | ||||
r12 | this->p_angle = nodeValueToDouble(node->nodes.at(i),2); | |||
r7 | } | |||
if(node->nodes.at(i)->name==QIlib::Lexique::size_c) | ||||
{ | ||||
this->sizeNode.setNode(node->nodes.at(i)); | ||||
this->p_size = nodeTo2DSize(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layers_c) | ||||
{ | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
this->p_layers = node->nodes.at(i)->Values; | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::net_c) | ||||
{ | ||||
this->netNode.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::drill_c) | ||||
{ | ||||
this->drillNode.setNode(node->nodes.at(i)); | ||||
this->p_drill = nodeValueToDouble(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
QIlib::QIcadPcbFPLine::QIcadPcbFPLine(QIlib::AbstractNode *node) | ||||
:QIcadAbstractPcbLine(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbFPLine::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::fp_line_c) | ||||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::start_c) | ||||
{ | ||||
this->p_startpos = nodeTo2DCoords(node->nodes.at(i)); | ||||
this->start.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::end_c) | ||||
{ | ||||
this->p_stoppos = nodeTo2DCoords(node->nodes.at(i)); | ||||
this->end.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->p_layers = node->nodes.at(i)->Values; | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::width_c) | ||||
{ | ||||
this->p_width = nodeValueToDouble(node->nodes.at(i)); | ||||
this->width.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
QIlib::QIcadPcbFPCircle::QIcadPcbFPCircle(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbFPCircle::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::fp_circle_c) | ||||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::center_c) | ||||
{ | ||||
this->center.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::end_c) | ||||
{ | ||||
this->end.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::width_c) | ||||
{ | ||||
this->width.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
QIlib::QIcadPcbText::QIcadPcbText(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
r6 | } | |||
r7 | ||||
void QIlib::QIcadPcbText::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::gr_text_c) | ||||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::at_c) | ||||
{ | ||||
this->at.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::width_c) | ||||
{ | ||||
this->width.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::effects_c) | ||||
{ | ||||
this->effects.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
QIlib::QIcadPcbCircle::QIcadPcbCircle(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbCircle::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::gr_circle_c) | ||||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::center_c) | ||||
{ | ||||
this->center.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::end_c) | ||||
{ | ||||
this->end.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::width_c) | ||||
{ | ||||
this->width.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
QIlib::QIcadPcbArc::QIcadPcbArc(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbArc::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::gr_arc_c) | ||||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::start_c) | ||||
{ | ||||
this->start.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::end_c) | ||||
{ | ||||
this->end.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::angle_c) | ||||
{ | ||||
this->angle.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::width_c) | ||||
{ | ||||
this->width.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
QIlib::QIcadPcbZone::QIcadPcbZone(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbZone::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::zone_c) | ||||
{ | ||||
this->p_node = node; | ||||
r14 | for(int i=0;i<node->nodes.count();i++) | |||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::polygon_c) | ||||
{ | ||||
this->polygon.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::filled_polygon_c) | ||||
{ | ||||
this->filledPolygon.setNode(node->nodes.at(i)); | ||||
} | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::layer_c) | ||||
{ | ||||
this->layer.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
QIlib::QIcadPcbPolygonPoint::QIcadPcbPolygonPoint(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->p_pos.setX(0.0); | ||||
this->p_pos.setY(0.0); | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbPolygonPoint::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::xy_c) | ||||
{ | ||||
this->p_node = node; | ||||
this->p_pos = nodeTo2DCoords(node); | ||||
r7 | } | |||
} | ||||
r14 | QIlib::QIcadPcbPolygon::QIcadPcbPolygon(QIlib::AbstractNode *node) | |||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbPolygon::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::polygon_c) | ||||
{ | ||||
this->p_node = node; | ||||
this->p_filled = false; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::pts_c) | ||||
{ | ||||
this->points.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
if(node->name==QIlib::Lexique::filled_polygon_c) | ||||
{ | ||||
this->p_node = node; | ||||
this->p_filled = true; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::pts_c) | ||||
{ | ||||
this->points.setNode(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
QIlib::QIcadPcbPolygonPoints::QIcadPcbPolygonPoints(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->setNode(node); | ||||
} | ||||
void QIlib::QIcadPcbPolygonPoints::setNode(QIlib::AbstractNode *node) | ||||
{ | ||||
this->clrPoints(); | ||||
if(node->name==QIlib::Lexique::pts_c) | ||||
{ | ||||
this->p_node = node; | ||||
for(int i=0;i<node->nodes.count();i++) | ||||
{ | ||||
if(node->nodes.at(i)->name==QIlib::Lexique::xy_c) | ||||
{ | ||||
this->apendPoint(node->nodes.at(i)); | ||||
} | ||||
} | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbPolygonPoints::clrPoints() | ||||
{ | ||||
while(points.count()) | ||||
{ | ||||
QIcadPcbPolygonPoint* point; | ||||
point = points.last(); | ||||
points.removeLast(); | ||||
delete point; | ||||
} | ||||
} | ||||
void QIlib::QIcadPcbPolygonPoints::apendPoint(QIlib::AbstractNode *node) | ||||
{ | ||||
if(node->name==QIlib::Lexique::xy_c) | ||||
{ | ||||
this->points.append(new QIcadPcbPolygonPoint(node)); | ||||
} | ||||
} | ||||
r7 | const QPointF QIlib::nodeTo2DCoords(QIlib::AbstractNode *node) | |||
{ | ||||
QPointF point; | ||||
QStringList coords=node->Values; | ||||
if(coords.count()>=2) | ||||
{ | ||||
point.setX(coords.at(0).toDouble()); | ||||
point.setY(coords.at(1).toDouble()); | ||||
} | ||||
return point; | ||||
} | ||||
double QIlib::nodeValueToDouble(QIlib::AbstractNode *node, int index) | ||||
{ | ||||
if(node->Values.count()>index) | ||||
{ | ||||
return node->Values.at(index).toDouble(); | ||||
} | ||||
return 0.0; | ||||
} | ||||
int QIlib::nodeValueToInt(QIlib::AbstractNode *node, int index) | ||||
{ | ||||
if(node->Values.count()>index) | ||||
{ | ||||
return node->Values.at(index).toInt(); | ||||
} | ||||
return 0; | ||||
} | ||||
QIlib::QIcadPcbLayer::QIcadPcbLayer(QIlib::AbstractNode *node) | ||||
:QIcadAbstractNodeWrapper(node) | ||||
{ | ||||
this->p_index = QString(this->p_node->name).remove('(').toInt(); | ||||
if(this->p_node->Values.count()>=1) | ||||
{ | ||||
this->p_name = this->p_node->Values.at(0); | ||||
} | ||||
if(this->p_node->Values.count()>=2) | ||||
{ | ||||
QString typestr=this->p_node->Values.at(1); | ||||
this->p_type = none; | ||||
if(!typestr.compare("signal")) | ||||
{ | ||||
this->p_type = signal; | ||||
} | ||||
else | ||||
if(!typestr.compare("user")) | ||||
{ | ||||
this->p_type = user; | ||||
} | ||||
} | ||||
} | ||||
const QSizeF QIlib::nodeTo2DSize(QIlib::AbstractNode *node) | ||||
{ | ||||
QSizeF size; | ||||
QStringList sz=node->Values; | ||||
if(sz.count()>=2) | ||||
{ | ||||
size.setWidth(sz.at(0).toDouble()); | ||||
size.setHeight(sz.at(1).toDouble()); | ||||
} | ||||
return size; | ||||
} | ||||
r14 | ||||