From a18a2260204faf46b96776c296f0734dbc4a1eec Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 15 Apr 2020 14:12:24 +0200 Subject: [PATCH] Added optional outer foil marking for all film capacitors --- .../src/org/diylc/presenter/update.xml | 4 + .../passive/AbstractFilmCapacitor.java | 147 +++++++++++++++ .../passive/AxialFilmCapacitor.java | 173 ++++++------------ .../passive/RadialFilmCapacitor.java | 58 +----- 4 files changed, 205 insertions(+), 177 deletions(-) create mode 100644 diylc/diylc-library/src/org/diylc/components/passive/AbstractFilmCapacitor.java diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 3902e66f..25f020f2 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -2954,6 +2954,10 @@ NEW_FEATURE Transistor components can display pinout instead of name or value + + NEW_FEATURE + Added optional outer foil marking for all film capacitors + NEW_FEATURE "Trace Cut" can now be placed horizontally or vertically when "Cut Between Lines" is selected diff --git a/diylc/diylc-library/src/org/diylc/components/passive/AbstractFilmCapacitor.java b/diylc/diylc-library/src/org/diylc/components/passive/AbstractFilmCapacitor.java new file mode 100644 index 00000000..ac2047a2 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/passive/AbstractFilmCapacitor.java @@ -0,0 +1,147 @@ +/* + * + * DIY Layout Creator (DIYLC). Copyright (c) 2009-2018 held jointly by the individual authors. + * + * This file is part of DIYLC. + * + * DIYLC 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. + * + * DIYLC 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 DIYLC. If not, see + * . + * + */ +package org.diylc.components.passive; + +import java.awt.Color; +import java.awt.Graphics2D; + +import org.diylc.appframework.miscutils.ConfigurationManager; +import org.diylc.common.IPlugInPort; +import org.diylc.common.ObjectCache; +import org.diylc.components.AbstractLeadedComponent; +import org.diylc.core.Theme; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.annotations.PositiveMeasureValidator; +import org.diylc.core.measures.Capacitance; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; + +public abstract class AbstractFilmCapacitor extends AbstractLeadedComponent { + + private static final long serialVersionUID = 1L; + + public static Size DEFAULT_WIDTH = new Size(1d / 2, SizeUnit.in); + public static Size DEFAULT_HEIGHT = new Size(1d / 8, SizeUnit.in); + public static Color OUTER_FOIL_COLOR = Color.white; + + protected Capacitance value = null; + @Deprecated + protected Voltage voltage = Voltage._63V; + protected org.diylc.core.measures.Voltage voltageNew = null; + protected Boolean showOuterFoil = false; + protected Color outerFoilColor = OUTER_FOIL_COLOR; + + @Override + protected boolean supportsStandingMode() { + return true; + } + + @EditableProperty(validatorClass = PositiveMeasureValidator.class) + public Capacitance getValue() { + return value; + } + + public void setValue(Capacitance value) { + this.value = value; + } + + @Deprecated + public Voltage getVoltage() { + return voltage; + } + + @Deprecated + public void setVoltage(Voltage voltage) { + this.voltage = voltage; + } + + @Override + public String getValueForDisplay() { + return (getValue() == null ? "" : getValue().toString()) + + (getVoltageNew() == null ? "" : " " + getVoltageNew().toString()); + } + + @EditableProperty(name = "Voltage") + public org.diylc.core.measures.Voltage getVoltageNew() { + return voltageNew; + } + + public void setVoltageNew(org.diylc.core.measures.Voltage voltageNew) { + this.voltageNew = voltageNew; + } + + @Override + protected Size getDefaultWidth() { + return DEFAULT_HEIGHT; + } + + @Override + protected Size getDefaultLength() { + return DEFAULT_WIDTH; + } + + @EditableProperty(name = "Reverse (standing)") + public boolean getFlipStanding() { + return super.getFlipStanding(); + } + + @EditableProperty(name = "Outer Foil Mark") + public Boolean getShowOuterFoil() { + if (showOuterFoil == null) + showOuterFoil = false; + return showOuterFoil; + } + + public void setShowOuterFoil(Boolean showOuterFoil) { + this.showOuterFoil = showOuterFoil; + } + + @Override + protected void decorateComponentBody(Graphics2D g2d, boolean outlineMode) { + if (!getShowOuterFoil()) + return; + int width = (int) getWidth().convertToPixels(); + int offset = (int) (getLength().convertToPixels() * 0.08); + Color finalTickColor; + if (outlineMode) { + Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, + Constants.DEFAULT_THEME); + finalTickColor = theme.getOutlineColor(); + } else { + finalTickColor = getOuterFoilColor(); + } + g2d.setColor(finalTickColor); + g2d.setStroke(ObjectCache.getInstance().fetchZoomableStroke((float) (width * 0.1))); + g2d.drawLine((int) getLength().convertToPixels() - offset, + (int) (width / 2 - width * 0.35), (int) getLength().convertToPixels() - offset, + (int) (width / 2 + width * 0.35)); + } + + @EditableProperty(name = "Outer Foil") + public Color getOuterFoilColor() { + if (outerFoilColor == null) + outerFoilColor = OUTER_FOIL_COLOR; + return outerFoilColor; + } + + public void setOuterFoilColor(Color outerFoilColor) { + this.outerFoilColor = outerFoilColor; + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/passive/AxialFilmCapacitor.java b/diylc/diylc-library/src/org/diylc/components/passive/AxialFilmCapacitor.java index 39e08ffe..f69b2cd8 100644 --- a/diylc/diylc-library/src/org/diylc/components/passive/AxialFilmCapacitor.java +++ b/diylc/diylc-library/src/org/diylc/components/passive/AxialFilmCapacitor.java @@ -1,131 +1,64 @@ /* + * + * DIY Layout Creator (DIYLC). Copyright (c) 2009-2018 held jointly by the individual authors. + * + * This file is part of DIYLC. + * + * DIYLC 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. + * + * DIYLC 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 DIYLC. If not, see + * . + * + */ +package org.diylc.components.passive; - DIY Layout Creator (DIYLC). - Copyright (c) 2009-2018 held jointly by the individual authors. - - This file is part of DIYLC. - - DIYLC 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. - - DIYLC 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 DIYLC. If not, see . - -*/ -package org.diylc.components.passive; - import java.awt.Color; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.Rectangle2D; import org.diylc.common.SimpleComponentTransformer; -import org.diylc.components.AbstractLeadedComponent; import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.EditableProperty; -import org.diylc.core.annotations.PositiveMeasureValidator; -import org.diylc.core.measures.Capacitance; -import org.diylc.core.measures.Size; -import org.diylc.core.measures.SizeUnit; - -@ComponentDescriptor(name = "Film Capacitor (Axial)", author = "Branislav Stojkovic", category = "Passive", - creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", - description = "Axial film capacitor, similar to Mallory 150s", zOrder = IDIYComponent.COMPONENT, - transformer = SimpleComponentTransformer.class) -public class AxialFilmCapacitor extends AbstractLeadedComponent { - - private static final long serialVersionUID = 1L; - - public static Size DEFAULT_WIDTH = new Size(1d / 2, SizeUnit.in); - public static Size DEFAULT_HEIGHT = new Size(1d / 8, SizeUnit.in); - public static Color BODY_COLOR = Color.decode("#FFE303"); - public static Color BORDER_COLOR = BODY_COLOR.darker(); - - private Capacitance value = null; - @Deprecated - private Voltage voltage = Voltage._63V; - private org.diylc.core.measures.Voltage voltageNew = null; - - public AxialFilmCapacitor() { - super(); - this.bodyColor = BODY_COLOR; - this.borderColor = BORDER_COLOR; - } - - @Override - protected boolean supportsStandingMode() { - return true; - } - - @EditableProperty(validatorClass = PositiveMeasureValidator.class) - public Capacitance getValue() { - return value; - } - - public void setValue(Capacitance value) { - this.value = value; - } - - @Deprecated - public Voltage getVoltage() { - return voltage; - } - - @Deprecated - public void setVoltage(Voltage voltage) { - this.voltage = voltage; - } - - @Override - public String getValueForDisplay() { - return (getValue() == null ? "" : getValue().toString()) + (getVoltageNew() == null ? "" : " " + getVoltageNew().toString()); - } - - @EditableProperty(name = "Voltage") - public org.diylc.core.measures.Voltage getVoltageNew() { - return voltageNew; - } - - public void setVoltageNew(org.diylc.core.measures.Voltage voltageNew) { - this.voltageNew = voltageNew; - } - - public void drawIcon(Graphics2D g2d, int width, int height) { - g2d.rotate(-Math.PI / 4, width / 2, height / 2); - g2d.setColor(LEAD_COLOR_ICON); - g2d.drawLine(0, height / 2, width, height / 2); - g2d.setColor(BODY_COLOR); - g2d.fillRect(4, height / 2 - 3, width - 8, 6); - g2d.setColor(BORDER_COLOR); - g2d.drawRect(4, height / 2 - 3, width - 8, 6); - } - - @Override - protected Size getDefaultWidth() { - return DEFAULT_HEIGHT; - } - - @Override - protected Size getDefaultLength() { - return DEFAULT_WIDTH; - } - - @Override - protected Shape getBodyShape() { - return new Rectangle2D.Double(0f, 0f, getLength().convertToPixels(), getClosestOdd(getWidth().convertToPixels())); - } - - @EditableProperty(name = "Reverse (standing)") - public boolean getFlipStanding() { - return super.getFlipStanding(); - } -} + +@ComponentDescriptor(name = "Film Capacitor (Axial)", author = "Branislav Stojkovic", + category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", + description = "Axial film capacitor, similar to Mallory 150s", zOrder = IDIYComponent.COMPONENT, + transformer = SimpleComponentTransformer.class) +public class AxialFilmCapacitor extends AbstractFilmCapacitor { + + private static final long serialVersionUID = 1L; + + public static Color BODY_COLOR = Color.decode("#FFE303"); + public static Color BORDER_COLOR = BODY_COLOR.darker(); + public static Color OUTER_FOIL_COLOR = Color.white; + + public AxialFilmCapacitor() { + super(); + this.bodyColor = BODY_COLOR; + this.borderColor = BORDER_COLOR; + } + + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.rotate(-Math.PI / 4, width / 2, height / 2); + g2d.setColor(LEAD_COLOR_ICON); + g2d.drawLine(0, height / 2, width, height / 2); + g2d.setColor(BODY_COLOR); + g2d.fillRect(4, height / 2 - 3, width - 8, 6); + g2d.setColor(BORDER_COLOR); + g2d.drawRect(4, height / 2 - 3, width - 8, 6); + } + + @Override + protected Shape getBodyShape() { + return new Rectangle2D.Double(0f, 0f, getLength().convertToPixels(), + getClosestOdd(getWidth().convertToPixels())); + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/passive/RadialFilmCapacitor.java b/diylc/diylc-library/src/org/diylc/components/passive/RadialFilmCapacitor.java index c875ec1c..0fb84d15 100644 --- a/diylc/diylc-library/src/org/diylc/components/passive/RadialFilmCapacitor.java +++ b/diylc/diylc-library/src/org/diylc/components/passive/RadialFilmCapacitor.java @@ -27,73 +27,27 @@ import java.awt.Shape; import java.awt.geom.RoundRectangle2D; import org.diylc.common.SimpleComponentTransformer; -import org.diylc.components.AbstractRadialComponent; import org.diylc.core.CreationMethod; import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.EditableProperty; -import org.diylc.core.annotations.PositiveMeasureValidator; -import org.diylc.core.measures.Capacitance; -import org.diylc.core.measures.Size; -import org.diylc.core.measures.SizeUnit; @ComponentDescriptor(name = "Film Capacitor (Radial)", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "Radial film capacitor, similar to Sprague Orange Drop", zOrder = IDIYComponent.COMPONENT, transformer = SimpleComponentTransformer.class) -public class RadialFilmCapacitor extends AbstractRadialComponent { +public class RadialFilmCapacitor extends AbstractFilmCapacitor { private static final long serialVersionUID = 1L; - public static Size DEFAULT_WIDTH = new Size(1d / 4, SizeUnit.in); - public static Size DEFAULT_HEIGHT = new Size(1d / 8, SizeUnit.in); public static Color BODY_COLOR = Color.decode("#FF8000"); public static Color BORDER_COLOR = BODY_COLOR.darker(); - private Capacitance value = null; - @Deprecated - private Voltage voltage = Voltage._63V; - private org.diylc.core.measures.Voltage voltageNew = null; - public RadialFilmCapacitor() { super(); this.bodyColor = BODY_COLOR; this.borderColor = BORDER_COLOR; } - @EditableProperty(validatorClass = PositiveMeasureValidator.class) - public Capacitance getValue() { - return value; - } - - public void setValue(Capacitance value) { - this.value = value; - } - - @Override - public String getValueForDisplay() { - return (getValue() == null ? "" : getValue().toString()) + (getVoltageNew() == null ? "" : " " + getVoltageNew().toString()); - } - - @Deprecated - public Voltage getVoltage() { - return voltage; - } - - @Deprecated - public void setVoltage(Voltage voltage) { - this.voltage = voltage; - } - - @EditableProperty(name = "Voltage") - public org.diylc.core.measures.Voltage getVoltageNew() { - return voltageNew; - } - - public void setVoltageNew(org.diylc.core.measures.Voltage voltageNew) { - this.voltageNew = voltageNew; - } - public void drawIcon(Graphics2D g2d, int width, int height) { g2d.rotate(-Math.PI / 4, width / 2, height / 2); g2d.setColor(LEAD_COLOR_ICON); @@ -104,16 +58,6 @@ public class RadialFilmCapacitor extends AbstractRadialComponent { g2d.drawRoundRect(4, height / 2 - 3, width - 8, 6, 5, 5); } - @Override - protected Size getDefaultWidth() { - return DEFAULT_HEIGHT; - } - - @Override - protected Size getDefaultLength() { - return DEFAULT_WIDTH; - } - @Override protected Shape getBodyShape() { double radius = getWidth().convertToPixels() * 0.7;