/** * */ package com.sun.electric.tool.generator.layout.fill; import java.io.Serializable; public class ExportConfig implements Serializable { public static final long serialVersionUID = 0; public static final int HIGHEST_LAYER = -1000; public static final int NEXT_TO_HIGHEST_LAYER = -2000; public static final int LOWEST_LAYER = -3000; public static final int NEXT_TO_LOWEST_LAYER = -4000; public static final ExportConfig PERIMETER = new ExportConfig(new int[] {HIGHEST_LAYER, NEXT_TO_HIGHEST_LAYER}, new int[] {}); public static final ExportConfig PERIMETER_AND_INTERNAL = new ExportConfig(new int[] {HIGHEST_LAYER, NEXT_TO_HIGHEST_LAYER}, new int[] {LOWEST_LAYER}); private int[] perimeterExports; private int[] internalExports; public ExportConfig(int[] layersToGetPerimeterExports, int[] layersToGetInternalExports) { int l = layersToGetPerimeterExports.length; perimeterExports = new int[l]; for (int i=0; i<l; i++) { perimeterExports[i] = layersToGetPerimeterExports[i]; } l = layersToGetInternalExports.length; internalExports = new int[l]; for (int i=0; i<l; i++) { internalExports[i] = layersToGetInternalExports[i]; } } private int translate(int lay, int loLay, int hiLay) { if (lay==HIGHEST_LAYER) { return hiLay; } else if (lay==NEXT_TO_HIGHEST_LAYER) { return hiLay-1; } else if (lay==LOWEST_LAYER) { return loLay; } else if (lay==NEXT_TO_LOWEST_LAYER) { return loLay+1; } else { return lay; } } int[] getPerimeterExports(int loLay, int hiLay) { int len = perimeterExports.length; int[] ans = new int[len]; for (int i=0; i<len; i++) { ans[i] = translate(perimeterExports[i], loLay, hiLay); } return ans; } int[] getInternalExports(int loLay, int hiLay) { int len = internalExports.length; int[] ans = new int[len]; for (int i=0; i<len; i++) { ans[i] = translate(internalExports[i], loLay, hiLay); } return ans; } }