From b0123db3e7453bd4168b98a4a064b138c92eb80d Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Fri, 1 Mar 2019 09:51:55 +0100 Subject: [PATCH] Fixed bug with "Highlight Continuity Areas" that makes random components conductive --- diylc/diylc-core/src/org/diylc/core/IDrawingObserver.java | 4 +++- diylc/diylc-core/src/org/diylc/presenter/DrawingManager.java | 4 ++++ diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java | 4 ++++ .../src/org/diylc/components/AbstractLeadedComponent.java | 3 +++ .../src/org/diylc/components/connectivity/TraceCut.java | 4 +++- diylc/diylc-swing/update.xml | 4 ++++ 6 files changed, 21 insertions(+), 2 deletions(-) diff --git a/diylc/diylc-core/src/org/diylc/core/IDrawingObserver.java b/diylc/diylc-core/src/org/diylc/core/IDrawingObserver.java index 0ee8ac6a..6d5add0b 100644 --- a/diylc/diylc-core/src/org/diylc/core/IDrawingObserver.java +++ b/diylc/diylc-core/src/org/diylc/core/IDrawingObserver.java @@ -35,5 +35,7 @@ public interface IDrawingObserver { void stopTrackingContinuityArea(); - void startTrackingContinuityArea(boolean positive); + void startTrackingContinuityArea(boolean positive); + + boolean isTrackingContinuityArea(); } diff --git a/diylc/diylc-core/src/org/diylc/presenter/DrawingManager.java b/diylc/diylc-core/src/org/diylc/presenter/DrawingManager.java index 5e2a4695..0265cf91 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/DrawingManager.java +++ b/diylc/diylc-core/src/org/diylc/presenter/DrawingManager.java @@ -264,6 +264,10 @@ public class DrawingManager { // Draw the component through the g2dWrapper. try { component.draw(g2dWrapper, state, drawOptions.contains(DrawOption.OUTLINE_MODE), project, g2dWrapper); + if (g2dWrapper.isTrackingContinuityArea()) { + LOG.info("Component " + component.getName() + " of type " + component.getClass().getName() + " did not stop tracking continuity area."); + g2dWrapper.stopTrackingContinuityArea(); + } } catch (Exception e) { LOG.error("Error drawing " + component.getName(), e); failedComponents.add(component); diff --git a/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java b/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java index 73df4b3f..05c59c68 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java +++ b/diylc/diylc-core/src/org/diylc/presenter/G2DWrapper.java @@ -162,6 +162,10 @@ class G2DWrapper extends Graphics2D implements IDrawingObserver { this.trackingContinuityAllowed = false; } + @Override + public boolean isTrackingContinuityArea() { + return trackingContinuityAllowed; + } /** * Appends shape interior to the current component area. diff --git a/diylc/diylc-library/src/org/diylc/components/AbstractLeadedComponent.java b/diylc/diylc-library/src/org/diylc/components/AbstractLeadedComponent.java index 0bfd69f3..d3ee99ab 100644 --- a/diylc/diylc-library/src/org/diylc/components/AbstractLeadedComponent.java +++ b/diylc/diylc-library/src/org/diylc/components/AbstractLeadedComponent.java @@ -348,6 +348,9 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp g2d.setColor(getLeadColorForPainting(componentState)); g2d.setStroke(stroke); g2d.draw(line); + + if (isCopperArea) + observer.stopTrackingContinuityArea(); } } diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java b/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java index 97dbafb3..aaa78c9e 100644 --- a/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java +++ b/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java @@ -25,6 +25,7 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; +import org.diylc.common.ObjectCache; import org.diylc.common.SimpleComponentTransformer; import org.diylc.components.AbstractComponent; import org.diylc.components.boards.AbstractBoard; @@ -71,7 +72,8 @@ public class TraceCut extends AbstractComponent { IDrawingObserver drawingObserver) { if (checkPointsClipped(g2d.getClip())) { return; - } + } + g2d.setStroke(ObjectCache.getInstance().fetchZoomableStroke(1f)); int size = getClosestOdd((int) this.size.convertToPixels()); int cutWidth = getClosestOdd((int) CUT_WIDTH.convertToPixels()); if (getCutBetweenHoles()) { diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 1bf0eea8..9e2278a2 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -2534,6 +2534,10 @@ IMPROVEMENT Increase the range of zoom slider for images to 500% + + BUG_FIX + Fixed bug with "Highlight Connected Areas" that makes random components conductive + https://github.com/bancika/diy-layout-creator/releases