📄 xml805.java
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: Xml805.java * * Copyright (c) 2003 Sun Microsystems and Static Free Software * * Electric(tm) is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Electric(tm) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Electric(tm); see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, Mass 02111-1307, USA. */package com.sun.electric.technology.xml;import com.sun.electric.database.geometry.EGraphics;import com.sun.electric.database.geometry.EPoint;import com.sun.electric.database.geometry.Poly.Type;import com.sun.electric.technology.DRCTemplate;import com.sun.electric.technology.EdgeH;import com.sun.electric.technology.EdgeV;import com.sun.electric.technology.SizeOffset;import com.sun.electric.technology.Technology.TechPoint;import com.sun.electric.tool.Job;import java.awt.Color;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.io.Serializable;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.TreeMap;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.InputSource;import org.xml.sax.Locator;import org.xml.sax.SAXException;import org.xml.sax.SAXParseException;import org.xml.sax.helpers.DefaultHandler;/** * */public class Xml805 { public static class Technology implements Serializable { public String techName; public String className; public String shortTechName; public String description; public final List<Version> versions = new ArrayList<Version>(); public int minNumMetals; public int maxNumMetals; public int defaultNumMetals; public double scaleValue; public boolean scaleRelevant; public String defaultFoundry; public double minResistance; public double minCapacitance; public final List<Color> transparentLayers = new ArrayList<Color>(); public final List<Layer> layers = new ArrayList<Layer>(); public final List<ArcProto> arcs = new ArrayList<ArcProto>(); public final List<PrimitiveNode> nodes = new ArrayList<PrimitiveNode>(); public final List<SpiceHeader> spiceHeaders = new ArrayList<SpiceHeader>(); public MenuPalette menuPalette; public final List<Foundry> foundries = new ArrayList<Foundry>(); public Layer findLayer(String name) { for (Layer layer: layers) { if (layer.name.equals(name)) return layer; } return null; } public ArcProto findArc(String name) { for (ArcProto arc: arcs) { if (arc.name.equals(name)) return arc; } return null; } public PrimitiveNode findNode(String name) { for (PrimitiveNode node: nodes) { if (node.name.equals(name)) return node; } return null; } public void writeXml(String fileName) { try { PrintWriter out = new PrintWriter(fileName); Writer writer = new Writer(out); writer.writeTechnology(this); out.close(); System.out.println("Wrote " + fileName); } catch (IOException e) { System.out.println("Error creating " + fileName); } } } public static class Version implements Serializable { public int techVersion; public com.sun.electric.database.text.Version electricVersion; } public static class Layer implements Serializable { public String name; public com.sun.electric.technology.Layer.Function function; public int extraFunction; public EGraphics desc; public double thick3D; public double height3D; public String mode3D; public double factor3D; public String cif; public String skill; public double resistance; public double capacitance; public double edgeCapacitance; public PureLayerNode pureLayerNode; } public static class PureLayerNode implements Serializable { public String name; public String oldName; public Type style; public String port; public final Distance size = new Distance(); public final List<String> portArcs = new ArrayList<String>(); } public static class ArcProto implements Serializable { public String name; public String oldName; public com.sun.electric.technology.ArcProto.Function function; public boolean wipable; public boolean curvable; public boolean special; public boolean notUsed; public boolean skipSizeInPalette; public final TreeMap<Integer,Double> diskOffset = new TreeMap<Integer,Double>(); public final Distance defaultWidth = new Distance(); public boolean extended; public boolean fixedAngle; public int angleIncrement; public double antennaRatio; public final List<ArcLayer> arcLayers = new ArrayList<ArcLayer>(); } public static class ArcLayer implements Serializable { public String layer; public final Distance extend = new Distance(); public Type style; } public static class PrimitiveNode implements Serializable { public String name; public String oldName; public boolean shrinkArcs; public boolean square; public boolean canBeZeroSize; public boolean wipes; public boolean lockable; public boolean edgeSelect; public boolean skipSizeInPalette; public boolean notUsed; public boolean lowVt; public boolean highVt; public boolean nativeBit; public boolean od18; public boolean od25; public boolean od33; public com.sun.electric.technology.PrimitiveNode.Function function; public final TreeMap<Integer,EPoint> diskOffset = new TreeMap<Integer,EPoint>(); public final Distance defaultWidth = new Distance(); public final Distance defaultHeight = new Distance(); public SizeOffset sizeOffset; public final List<NodeLayer> nodeLayers = new ArrayList<NodeLayer>(); public final List<PrimitivePort> ports = new ArrayList<PrimitivePort>(); public int specialType; public double[] specialValues; public NodeSizeRule nodeSizeRule; } public static class NodeLayer implements Serializable { public String layer; public Type style; public int portNum; public boolean inLayers; public boolean inElectricalLayers; public int representation; public final Distance lx = new Distance(); public final Distance hx = new Distance(); public final Distance ly = new Distance(); public final Distance hy = new Distance(); public final List<TechPoint> techPoints = new ArrayList<TechPoint>(); public double sizex, sizey, sep1d, sep2d; public double lWidth, rWidth, tExtent, bExtent; } public static class NodeSizeRule implements Serializable { public double width; public double height; public String rule; } public static class PrimitivePort implements Serializable { public String name; public int portAngle; public int portRange; public int portTopology; public final Distance lx = new Distance(); public final Distance hx = new Distance(); public final Distance ly = new Distance(); public final Distance hy = new Distance(); public final List<String> portArcs = new ArrayList<String>(); } public static class SpiceHeader implements Serializable { public int level; public final List<String> spiceLines = new ArrayList<String>(); } public static class MenuPalette implements Serializable { public int numColumns; public ArrayList<ArrayList<Object>> menuBoxes = new ArrayList<ArrayList<Object>>(); } public static class MenuNodeInst implements Serializable { public String protoName; public com.sun.electric.technology.PrimitiveNode.Function function; public String text; public double fontSize; } public static class Distance implements Serializable { public double k; public double value; } public static class Foundry implements Serializable { public String name; public final Map<String,String> layerGds = new LinkedHashMap<String,String>(); public final List<DRCTemplate> rules = new ArrayList<DRCTemplate>(); } private Xml805() {} private static enum XmlKeyword { technology, shortName(true), description(true), version, numMetals, scale, defaultFoundry, minResistance, minCapacitance, transparentLayer, r(true), g(true), b(true), layer, transparentColor, opaqueColor, patternedOnDisplay(true), patternedOnPrinter(true), pattern(true), outlined(true), opacity(true), foreground(true), display3D, cifLayer, skillLayer, parasitics, pureLayerNode, arcProto, oldName(true), wipable, curvable, special, notUsed, skipSizeInPalette, extended(true), fixedAngle(true), angleIncrement(true), antennaRatio(true), diskOffset, defaultWidth, arcLayer,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -