/* * Copyright (C) 2014 Alfons Wirtz * website www.freerouting.net * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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 at <http://www.gnu.org/licenses/> * for more details. * * ClearanceViolations.java * * Created on 3. Oktober 2004, 09:13 */ package interactive; import java.util.Collection; import java.util.LinkedList; import java.util.Iterator; import java.awt.Graphics; import boardgraphics.GraphicsContext; import board.Item; import board.ClearanceViolation; /** * To display the clearance violations between items on the screen. * * @author alfons */ public class ClearanceViolations { /** Creates a new instance of ClearanceViolations */ public ClearanceViolations(Collection<Item> p_item_list) { this.list = new LinkedList<ClearanceViolation>(); Iterator<Item> it = p_item_list.iterator(); while (it.hasNext()) { Item curr_item = it.next(); this.list.addAll(curr_item.clearance_violations()); } } public void draw(Graphics p_graphics, GraphicsContext p_graphics_context) { java.awt.Color draw_color = p_graphics_context.get_violations_color(); Iterator<ClearanceViolation> it = list.iterator(); while (it.hasNext()) { ClearanceViolation curr_violation = it.next(); double intensity = p_graphics_context.get_layer_visibility(curr_violation.layer); p_graphics_context.fill_area(curr_violation.shape, p_graphics, draw_color, intensity); // draw a circle around the violation. double draw_radius = curr_violation.first_item.board.rules.get_min_trace_half_width() * 5; p_graphics_context.draw_circle(curr_violation.shape.centre_of_gravity(), draw_radius, 0.1 * draw_radius, draw_color, p_graphics, intensity); } } /** The list of clearance violations. */ public final Collection<ClearanceViolation> list; }