package interactive; import board.Communication; import board.LayerStructure; import board.RoutingBoard; import board.TestLevel; import geometry.planar.IntBox; import geometry.planar.PolylineShape; import rules.BoardRules; import java.util.Locale; /** * Base implementation for headless mode * * Andrey Belomutskiy * 6/28/2014 */ public class BoardHandlingImpl implements IBoardHandling { /** * The file used for logging interactive action, * so that they can be replayed later */ public final Logfile logfile = new Logfile(); /** The current settings for interactive actions on the board*/ public Settings settings = null; /** The board database used in this interactive handling. */ protected RoutingBoard board = null; public BoardHandlingImpl() { } /** * Gets the routing board of this board handling. */ @Override public RoutingBoard get_routing_board() { return this.board; } @Override public Settings get_settings() { return settings; } /** * Initializes the manual trace widths from the default trace widths in the board rules. */ @Override public void initialize_manual_trace_half_widths() { for (int i = 0; i < settings.manual_trace_half_width_arr.length; ++i) { settings.manual_trace_half_width_arr[i] = this.board.rules.get_default_net_class().get_trace_half_width(i); } } @Override public void create_board(IntBox p_bounding_box, LayerStructure p_layer_structure, PolylineShape[] p_outline_shapes, String p_outline_clearance_class_name, BoardRules p_rules, Communication p_board_communication, TestLevel p_test_level) { if (this.board != null) { System.out.println(" BoardHandling.create_board: board already created"); } int outline_cl_class_no = 0; if (p_rules != null) { if (p_outline_clearance_class_name != null && p_rules.clearance_matrix != null) { outline_cl_class_no = p_rules.clearance_matrix.get_no(p_outline_clearance_class_name); outline_cl_class_no = Math.max(outline_cl_class_no, 0); } else { outline_cl_class_no = p_rules.get_default_net_class().default_item_clearance_classes.get(rules.DefaultItemClearanceClasses.ItemClass.AREA); } } this.board = new RoutingBoard(p_bounding_box, p_layer_structure, p_outline_shapes, outline_cl_class_no, p_rules, p_board_communication, p_test_level); this.settings = new Settings(this.board, this.logfile); } @Override public Locale get_locale() { return java.util.Locale.ENGLISH; } }