mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-13 02:32:09 +10:00
Resistors, capacitors, diodes, ICs, transistors and other PCB parts can be placed on the bottom of the board with the new 'Board Side' property; Gerber export puts their silkscreen on the bottom layer with the text mirrored
This commit is contained in:
+14
-1
@@ -32,10 +32,12 @@ import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.Orientation;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractTransparentComponent;
|
||||
import org.diylc.components.connectivity.PCBTerminalBlock.PCBTerminalBlockCount;
|
||||
import org.diylc.components.transform.PCBTerminalBlockTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
@@ -52,7 +54,7 @@ import org.diylc.utils.Constants;
|
||||
author = "Branislav Stojkovic", description = "Horizontal PCB terminal block with configurable pitch",
|
||||
zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "TB",
|
||||
enableCache = true, transformer = PCBTerminalBlockTransformer.class)
|
||||
public class PCBTerminalBlock extends AbstractTransparentComponent<PCBTerminalBlockCount> implements IGerberComponentSimple {
|
||||
public class PCBTerminalBlock extends AbstractTransparentComponent<PCBTerminalBlockCount> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -72,6 +74,7 @@ public class PCBTerminalBlock extends AbstractTransparentComponent<PCBTerminalBl
|
||||
private Size width = new Size(0.3d, SizeUnit.in);
|
||||
private ScrewPosition screwPosition = ScrewPosition.Offset;
|
||||
private String nodeNames = "";
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public PCBTerminalBlock() {
|
||||
super();
|
||||
@@ -370,6 +373,16 @@ public class PCBTerminalBlock extends AbstractTransparentComponent<PCBTerminalBl
|
||||
bounds.getWidth() + 2 * margin, bounds.getHeight() + 2 * margin);
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
|
||||
static enum PCBTerminalBlockCount {
|
||||
_2("Two"), _3("Three"), _4("Four"), _5("Five"), _6("Six"), _7("Seven"), _8("Eight"), _9(
|
||||
"Nine"), _10("Ten");
|
||||
|
||||
+14
-1
@@ -40,10 +40,12 @@ import org.diylc.common.HorizontalAlignment;
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.Orientation;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.common.VerticalAlignment;
|
||||
import org.diylc.components.AbstractMultiPartComponent;
|
||||
import org.diylc.components.transform.CliffJackTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
@@ -62,7 +64,7 @@ import org.diylc.utils.Constants;
|
||||
description = "Cliff-style closed panel mount 1/4\" phono jack",
|
||||
zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "J", transformer = CliffJackTransformer.class,
|
||||
enableCache = true)
|
||||
public class CliffJack1_4 extends AbstractMultiPartComponent<JackType> implements IGerberComponentSimple {
|
||||
public class CliffJack1_4 extends AbstractMultiPartComponent<JackType> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -84,6 +86,7 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<JackType> implement
|
||||
@SuppressWarnings("unused")
|
||||
@Deprecated
|
||||
private transient String value = "";
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public CliffJack1_4() {
|
||||
super();
|
||||
@@ -373,4 +376,14 @@ public class CliffJack1_4 extends AbstractMultiPartComponent<JackType> implement
|
||||
public boolean canPointMoveFreely(int pointIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -36,10 +36,12 @@ import org.diylc.common.HorizontalAlignment;
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.Orientation;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.common.VerticalAlignment;
|
||||
import org.diylc.components.AbstractMultiPartComponent;
|
||||
import org.diylc.components.transform.CliffJackTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
@@ -56,7 +58,7 @@ import org.diylc.utils.Constants;
|
||||
author = "Branislav Stojkovic", description = "Cliff-style closed 1/8\" phono jack",
|
||||
zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "J",
|
||||
transformer = CliffJackTransformer.class, enableCache = true)
|
||||
public class CliffJack1_8 extends AbstractMultiPartComponent<JackType> implements IGerberComponentSimple {
|
||||
public class CliffJack1_8 extends AbstractMultiPartComponent<JackType> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -80,6 +82,7 @@ public class CliffJack1_8 extends AbstractMultiPartComponent<JackType> implement
|
||||
private Orientation orientation = Orientation.DEFAULT;
|
||||
transient private Shape[] body;
|
||||
private boolean nut = false;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public CliffJack1_8() {
|
||||
super();
|
||||
@@ -394,4 +397,14 @@ public class CliffJack1_8 extends AbstractMultiPartComponent<JackType> implement
|
||||
public boolean canPointMoveFreely(int pointIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -41,10 +41,12 @@ import org.diylc.common.HorizontalAlignment;
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.Orientation;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.common.VerticalAlignment;
|
||||
import org.diylc.components.AbstractMultiPartComponent;
|
||||
import org.diylc.components.transform.ClosedJackTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
@@ -62,7 +64,7 @@ import org.diylc.utils.Constants;
|
||||
@ComponentDescriptor(name = "Closed 1/4\" Jack", category = "Electro-Mechanical", author = "Branislav Stojkovic",
|
||||
description = "Enclosed panel mount 1/4\" phono jack", zOrder = IDIYComponent.COMPONENT,
|
||||
instanceNamePrefix = "J", transformer = ClosedJackTransformer.class, enableCache = true)
|
||||
public class ClosedJack1_4 extends AbstractMultiPartComponent<JackType> implements IGerberComponentSimple {
|
||||
public class ClosedJack1_4 extends AbstractMultiPartComponent<JackType> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -86,6 +88,7 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<JackType> implemen
|
||||
@SuppressWarnings("unused")
|
||||
@Deprecated
|
||||
private transient String value = "";
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public ClosedJack1_4() {
|
||||
super();
|
||||
@@ -380,4 +383,14 @@ public class ClosedJack1_4 extends AbstractMultiPartComponent<JackType> implemen
|
||||
public boolean canPointMoveFreely(int pointIndex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+13
-1
@@ -40,6 +40,7 @@ import org.diylc.components.AbstractTransparentComponent;
|
||||
import org.diylc.components.guitar.ToggleSwitchPositionPropertyValueSource;
|
||||
import org.diylc.components.transform.MiniToggleSwitchTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.ILayeredComponent;
|
||||
@@ -62,7 +63,7 @@ import org.diylc.utils.SwitchUtils;
|
||||
@ComponentDescriptor(name = "Mini Toggle Switch", category = "Electro-Mechanical", author = "Branislav Stojkovic",
|
||||
description = "Panel mounted mini toggle switch", zOrder = IDIYComponent.COMPONENT,
|
||||
instanceNamePrefix = "SW", enableCache = true, transformer = MiniToggleSwitchTransformer.class)
|
||||
public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchType> implements ISwitch, ILayeredComponent, IGerberComponentSimple {
|
||||
public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchType> implements ISwitch, ILayeredComponent, IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -96,6 +97,7 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
|
||||
|
||||
@Deprecated
|
||||
protected String name;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public MiniToggleSwitch() {
|
||||
super();
|
||||
@@ -636,4 +638,14 @@ public class MiniToggleSwitch extends AbstractTransparentComponent<ToggleSwitchT
|
||||
public int getLayerId() {
|
||||
return hashCode();
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -24,7 +24,9 @@ import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLeadedComponent;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.Theme;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
import org.diylc.core.annotations.PositiveMeasureValidator;
|
||||
@@ -34,7 +36,7 @@ import org.diylc.core.measures.Size;
|
||||
import org.diylc.core.measures.SizeUnit;
|
||||
import org.diylc.utils.Constants;
|
||||
|
||||
public abstract class AbstractFilmCapacitor extends AbstractLeadedComponent<Capacitance> implements IGerberComponentSimple {
|
||||
public abstract class AbstractFilmCapacitor extends AbstractLeadedComponent<Capacitance> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -49,6 +51,7 @@ public abstract class AbstractFilmCapacitor extends AbstractLeadedComponent<Capa
|
||||
protected Boolean showOuterFoil = false;
|
||||
protected Color outerFoilColor = OUTER_FOIL_COLOR;
|
||||
protected String type;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
@EditableProperty(validatorClass = PositiveMeasureValidator.class)
|
||||
public Capacitance getValue() {
|
||||
@@ -145,4 +148,14 @@ public abstract class AbstractFilmCapacitor extends AbstractLeadedComponent<Capa
|
||||
public void setOuterFoilColor(Color outerFoilColor) {
|
||||
this.outerFoilColor = outerFoilColor;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -24,14 +24,16 @@ package org.diylc.components.passive;
|
||||
import java.awt.geom.Point2D;
|
||||
|
||||
import org.diylc.common.Orientation;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLabeledComponent;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.VisibilityPolicy;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
import org.diylc.core.annotations.PositiveMeasureValidator;
|
||||
import org.diylc.core.gerber.IGerberComponentSimple;
|
||||
import org.diylc.core.measures.Resistance;
|
||||
|
||||
public abstract class AbstractPotentiometer extends AbstractLabeledComponent<Resistance> implements IGerberComponentSimple {
|
||||
public abstract class AbstractPotentiometer extends AbstractLabeledComponent<Resistance> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -40,6 +42,7 @@ public abstract class AbstractPotentiometer extends AbstractLabeledComponent<Res
|
||||
protected Resistance resistance = null;
|
||||
protected Orientation orientation = Orientation.DEFAULT;
|
||||
protected Taper taper = Taper.LIN;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
@Override
|
||||
public int getControlPointCount() {
|
||||
@@ -110,4 +113,14 @@ public abstract class AbstractPotentiometer extends AbstractLabeledComponent<Res
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -23,7 +23,9 @@ package org.diylc.components.passive;
|
||||
|
||||
import java.awt.Rectangle;
|
||||
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLeadedComponent;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.annotations.AiNote;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
import org.diylc.core.gerber.IGerberComponentSimple;
|
||||
@@ -39,7 +41,7 @@ import org.diylc.core.measures.SizeUnit;
|
||||
* @param <T>
|
||||
*/
|
||||
@AiNote("The two control points are the holes; the body's own leads are 'Lead Spacing' apart and centred between them, with lead wire drawn out to each hole. Place the points exactly 'Lead Spacing' apart for straight leads")
|
||||
public abstract class AbstractRadialComponent<T> extends AbstractLeadedComponent<T> implements IGerberComponentSimple {
|
||||
public abstract class AbstractRadialComponent<T> extends AbstractLeadedComponent<T> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -48,6 +50,7 @@ public abstract class AbstractRadialComponent<T> extends AbstractLeadedComponent
|
||||
protected Size pinSpacing = PIN_SPACING;
|
||||
|
||||
protected String type;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
@Override
|
||||
protected int calculatePinSpacing(Rectangle shapeRect) {
|
||||
@@ -74,4 +77,14 @@ public abstract class AbstractRadialComponent<T> extends AbstractLeadedComponent
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -29,10 +29,12 @@ import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLeadedComponent;
|
||||
import org.diylc.components.passive.CapacitorDatasheetService.CapacitorDatasheet;
|
||||
import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.CreationMethod;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDatasheetSupport;
|
||||
import org.diylc.core.Theme;
|
||||
@@ -53,7 +55,7 @@ import org.diylc.utils.Constants;
|
||||
description = "Axial electrolytic capacitor, similar to Sprague Atom, F&T, etc",
|
||||
zOrder = IDIYComponent.COMPONENT, transformer = SimpleComponentTransformer.class,
|
||||
enableCache = true, enableDatasheet = true, datasheetCreationStepCount = 3)
|
||||
public class AxialElectrolyticCapacitor extends AbstractLeadedComponent<Capacitance> implements IDatasheetSupport, IGerberComponentSimple {
|
||||
public class AxialElectrolyticCapacitor extends AbstractLeadedComponent<Capacitance> implements IDatasheetSupport, IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -73,6 +75,7 @@ public class AxialElectrolyticCapacitor extends AbstractLeadedComponent<Capacita
|
||||
private Color tickColor = TICK_COLOR;
|
||||
private boolean polarized = true;
|
||||
private String type;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public AxialElectrolyticCapacitor() {
|
||||
super();
|
||||
@@ -296,4 +299,14 @@ public class AxialElectrolyticCapacitor extends AbstractLeadedComponent<Capacita
|
||||
|
||||
return new Color((int) r, (int) g, (int) b, (int) a);
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -28,9 +28,11 @@ import java.awt.Shape;
|
||||
import java.awt.geom.RoundRectangle2D;
|
||||
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLeadedComponent;
|
||||
import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.CreationMethod;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
@@ -43,7 +45,7 @@ import org.diylc.core.measures.SizeUnit;
|
||||
creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "X",
|
||||
description = "Radial crystal oscillator", zOrder = IDIYComponent.COMPONENT,
|
||||
transformer = SimpleComponentTransformer.class)
|
||||
public class CrystalOscillator extends AbstractLeadedComponent<Frequency> implements IGerberComponentSimple {
|
||||
public class CrystalOscillator extends AbstractLeadedComponent<Frequency> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -59,6 +61,7 @@ public class CrystalOscillator extends AbstractLeadedComponent<Frequency> implem
|
||||
private Size pinSpacing = PIN_SPACING;
|
||||
|
||||
private Frequency value;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public CrystalOscillator() {
|
||||
super();
|
||||
@@ -133,4 +136,14 @@ public class CrystalOscillator extends AbstractLeadedComponent<Frequency> implem
|
||||
protected Size getDefaultWidth() {
|
||||
return DEFAULT_WIDTH;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -36,9 +36,11 @@ import java.awt.geom.Rectangle2D;
|
||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLeadedComponent;
|
||||
import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.CreationMethod;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDatasheetSupport;
|
||||
import org.diylc.core.annotations.AiNote;
|
||||
@@ -63,7 +65,7 @@ import org.diylc.utils.Constants;
|
||||
zOrder = IDIYComponent.COMPONENT, transformer = SimpleComponentTransformer.class, enableCache = true,
|
||||
enableDatasheet = true, datasheetCreationStepCount = 2, datasheetModelColumn = 1)
|
||||
public class HeatSinkResistor extends AbstractLeadedComponent<Resistance>
|
||||
implements IGerberComponentSimple, IDatasheetSupport {
|
||||
implements IGerberComponentSimple, IDatasheetSupport, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -101,6 +103,7 @@ public class HeatSinkResistor extends AbstractLeadedComponent<Resistance>
|
||||
* Top/bottom lip thickness; main body height = A − 2 × lip = D (HS25: A=28, D=14 → lip 7 mm each).
|
||||
*/
|
||||
private Size lipSize = DEFAULT_LIP_SIZE;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public HeatSinkResistor() {
|
||||
super();
|
||||
@@ -544,6 +547,16 @@ public class HeatSinkResistor extends AbstractLeadedComponent<Resistance>
|
||||
g2d.draw(a);
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
|
||||
public enum MountingHoleCount {
|
||||
TWO_DIAGONAL("2 diagonal"),
|
||||
FOUR("4 holes"),
|
||||
|
||||
@@ -32,10 +32,12 @@ import java.awt.geom.Rectangle2D;
|
||||
import java.awt.geom.RoundRectangle2D;
|
||||
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.common.ResistorColorCode;
|
||||
import org.diylc.components.AbstractLeadedComponent;
|
||||
import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.CreationMethod;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDatasheetSupport;
|
||||
import org.diylc.core.annotations.AiNote;
|
||||
@@ -55,7 +57,7 @@ import org.diylc.core.measures.SizeUnit;
|
||||
zOrder = IDIYComponent.COMPONENT, transformer = SimpleComponentTransformer.class, enableCache = true,
|
||||
enableDatasheet = true, datasheetCreationStepCount = 2)
|
||||
public class Resistor extends AbstractLeadedComponent<Resistance>
|
||||
implements IGerberComponentSimple, IDatasheetSupport {
|
||||
implements IGerberComponentSimple, IDatasheetSupport, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -72,6 +74,7 @@ public class Resistor extends AbstractLeadedComponent<Resistance>
|
||||
private org.diylc.core.measures.Power powerNew = null;
|
||||
private ResistorColorCode colorCode = ResistorColorCode._5_BAND;
|
||||
private ResistorShape shape = ResistorShape.Standard;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public Resistor() {
|
||||
super();
|
||||
@@ -263,6 +266,16 @@ public class Resistor extends AbstractLeadedComponent<Resistance>
|
||||
return super.getFlipStanding();
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
|
||||
public enum ResistorShape {
|
||||
Tubular, Tubular_Beveled, Standard;
|
||||
|
||||
|
||||
+14
-1
@@ -28,9 +28,11 @@ import java.awt.geom.Rectangle2D;
|
||||
import java.awt.geom.RoundRectangle2D;
|
||||
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLeadedComponent;
|
||||
import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.CreationMethod;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
@@ -45,7 +47,7 @@ import org.diylc.core.measures.SizeUnit;
|
||||
creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "L",
|
||||
description = "Ferrite core toroidal inductor mounted vertically", zOrder = IDIYComponent.COMPONENT,
|
||||
transformer = SimpleComponentTransformer.class)
|
||||
public class ToroidalInductor extends AbstractLeadedComponent<Inductance> implements IGerberComponentSimple {
|
||||
public class ToroidalInductor extends AbstractLeadedComponent<Inductance> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -59,6 +61,7 @@ public class ToroidalInductor extends AbstractLeadedComponent<Inductance> implem
|
||||
|
||||
private Inductance value = null;
|
||||
private Resistance resistance = null;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public ToroidalInductor() {
|
||||
super();
|
||||
@@ -165,4 +168,14 @@ public class ToroidalInductor extends AbstractLeadedComponent<Inductance> implem
|
||||
public void setResistance(Resistance resistance) {
|
||||
this.resistance = resistance;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,11 +39,13 @@ import org.diylc.common.HorizontalAlignment;
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.Orientation;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.common.VerticalAlignment;
|
||||
import org.diylc.components.AbstractLabeledComponent;
|
||||
import org.diylc.components.AbstractMakerBoard;
|
||||
import org.diylc.components.transform.DIL_ICTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDatasheetSupport;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
@@ -69,7 +71,7 @@ import org.diylc.utils.Constants;
|
||||
transformer = DIL_ICTransformer.class, enableCache = true, enableDatasheet = true,
|
||||
datasheetCreationStepCount = 2, datasheetModelColumn = 1)
|
||||
public class DIL_IC extends AbstractLabeledComponent<String>
|
||||
implements IGerberComponentSimple, IDatasheetSupport {
|
||||
implements IGerberComponentSimple, IDatasheetSupport, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -97,6 +99,7 @@ public class DIL_IC extends AbstractLabeledComponent<String>
|
||||
private Color indentColor = INDENT_COLOR;
|
||||
private DisplayNumbers displayNumbers = DISPLAY_NUMBERS;
|
||||
private String pinNames = null;
|
||||
private PCBLayer boardSide;
|
||||
// new Point(0, pinSpacing.convertToPixels()),
|
||||
// new Point(0, 2 * pinSpacing.convertToPixels()),
|
||||
// new Point(0, 3 * pinSpacing.convertToPixels()),
|
||||
@@ -695,6 +698,16 @@ public class DIL_IC extends AbstractLabeledComponent<String>
|
||||
return name == null ? Integer.toString(pinNumber) : name;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
|
||||
public static enum PinCount {
|
||||
|
||||
_4, _6, _8, _10, _12, _14, _16, _18, _20, _22, _24, _26, _28, _30, _32, _34, _36, _38, _40, _42, _44, _46, _48, _50;
|
||||
|
||||
+14
-1
@@ -28,9 +28,11 @@ import java.awt.geom.Rectangle2D;
|
||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLeadedComponent;
|
||||
import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.CreationMethod;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDatasheetSupport;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.Theme;
|
||||
@@ -51,7 +53,7 @@ import org.diylc.utils.Constants;
|
||||
transformer = SimpleComponentTransformer.class, enableCache = true, enableDatasheet = true,
|
||||
datasheetCreationStepCount = 2, datasheetModelColumn = 1)
|
||||
public class DiodeGlass extends AbstractLeadedComponent<String>
|
||||
implements IGerberComponentSimple, IDatasheetSupport {
|
||||
implements IGerberComponentSimple, IDatasheetSupport, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -67,6 +69,7 @@ public class DiodeGlass extends AbstractLeadedComponent<String>
|
||||
private String value = "";
|
||||
private Color markerColor = MARKER_COLOR;
|
||||
private Color insideColor = INSIDE_COLOR;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public DiodeGlass() {
|
||||
super();
|
||||
@@ -204,4 +207,14 @@ public class DiodeGlass extends AbstractLeadedComponent<String>
|
||||
public void setInsideColor(Color insideColor) {
|
||||
this.insideColor = insideColor;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -28,9 +28,11 @@ import java.awt.geom.Rectangle2D;
|
||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLeadedComponent;
|
||||
import org.diylc.components.transform.SimpleComponentTransformer;
|
||||
import org.diylc.core.CreationMethod;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDatasheetSupport;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.Theme;
|
||||
@@ -51,7 +53,7 @@ import org.diylc.utils.Constants;
|
||||
transformer = SimpleComponentTransformer.class, enableCache = true, enableDatasheet = true,
|
||||
datasheetCreationStepCount = 2, datasheetModelColumn = 1)
|
||||
public class DiodePlastic extends AbstractLeadedComponent<String>
|
||||
implements IGerberComponentSimple, IDatasheetSupport {
|
||||
implements IGerberComponentSimple, IDatasheetSupport, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -65,6 +67,7 @@ public class DiodePlastic extends AbstractLeadedComponent<String>
|
||||
|
||||
private String value = "";
|
||||
private Color markerColor = MARKER_COLOR;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public DiodePlastic() {
|
||||
super();
|
||||
@@ -178,4 +181,14 @@ public class DiodePlastic extends AbstractLeadedComponent<String>
|
||||
public void setMarkerColor(Color markerColor) {
|
||||
this.markerColor = markerColor;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.diylc.components.AbstractMakerBoard;
|
||||
import org.diylc.components.AbstractTransparentComponent;
|
||||
import org.diylc.components.transform.SIL_ICTransformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDatasheetSupport;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
@@ -65,7 +66,7 @@ import org.diylc.utils.Constants;
|
||||
enableCache = true, enableDatasheet = true, datasheetCreationStepCount = 2,
|
||||
datasheetModelColumn = 1)
|
||||
public class SIL_IC extends AbstractTransparentComponent<String>
|
||||
implements IGerberComponentSimple, IDatasheetSupport {
|
||||
implements IGerberComponentSimple, IDatasheetSupport, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -90,6 +91,7 @@ public class SIL_IC extends AbstractTransparentComponent<String>
|
||||
private Color indentColor = INDENT_COLOR;
|
||||
private String pinNames = null;
|
||||
private PinLabels pinLabels = null;
|
||||
private PCBLayer boardSide;
|
||||
// new Point(0, pinSpacing.convertToPixels()),
|
||||
// new Point(0, 2 * pinSpacing.convertToPixels()),
|
||||
// new Point(0, 3 * pinSpacing.convertToPixels()),
|
||||
@@ -553,6 +555,16 @@ public class SIL_IC extends AbstractTransparentComponent<String>
|
||||
return new Rectangle2D.Double(minX - margin, minY - margin, maxX - minX + 2 * margin, maxY - minY + 2 * margin);
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
|
||||
public static enum PinCount {
|
||||
|
||||
_2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20;
|
||||
|
||||
+14
-1
@@ -37,9 +37,11 @@ import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.common.Percentage;
|
||||
import org.diylc.components.transform.TO1Transformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
@@ -60,7 +62,7 @@ import org.diylc.utils.Constants;
|
||||
zOrder = IDIYComponent.COMPONENT, keywordPolicy = KeywordPolicy.SHOW_VALUE, transformer = TO1Transformer.class,
|
||||
enableCache = true, enableDatasheet = true, datasheetCreationStepCount = 2,
|
||||
datasheetModelColumn = 1)
|
||||
public class TransistorTO1 extends AbstractTransistorPackage {
|
||||
public class TransistorTO1 extends AbstractTransistorPackage implements IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -77,6 +79,7 @@ public class TransistorTO1 extends AbstractTransistorPackage {
|
||||
|
||||
private Size pinSpacing = PIN_SPACING;
|
||||
private Boolean flange = true;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public TransistorTO1() {
|
||||
super();
|
||||
@@ -329,4 +332,14 @@ public class TransistorTO1 extends AbstractTransistorPackage {
|
||||
protected boolean flipPinoutLabel() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -37,9 +37,11 @@ import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.common.Percentage;
|
||||
import org.diylc.components.transform.TO220Transformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
@@ -60,7 +62,7 @@ import org.diylc.utils.Constants;
|
||||
zOrder = IDIYComponent.COMPONENT, keywordPolicy = KeywordPolicy.SHOW_VALUE, transformer = TO220Transformer.class,
|
||||
enableCache = true, enableDatasheet = true, datasheetCreationStepCount = 2,
|
||||
datasheetModelColumn = 1)
|
||||
public class TransistorTO220 extends AbstractTransistorPackage {
|
||||
public class TransistorTO220 extends AbstractTransistorPackage implements IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -83,6 +85,7 @@ public class TransistorTO220 extends AbstractTransistorPackage {
|
||||
private Color tabColor = TAB_COLOR;
|
||||
private Color tabBorderColor = TAB_BORDER_COLOR;
|
||||
private Size leadLength = LEAD_LENGTH;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public TransistorTO220() {
|
||||
super();
|
||||
@@ -437,4 +440,14 @@ public class TransistorTO220 extends AbstractTransistorPackage {
|
||||
protected boolean flipPinoutLabel() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -36,9 +36,11 @@ import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.common.Percentage;
|
||||
import org.diylc.components.transform.TO92Transformer;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
@@ -60,7 +62,7 @@ import org.diylc.utils.Constants;
|
||||
zOrder = IDIYComponent.COMPONENT, keywordPolicy = KeywordPolicy.SHOW_VALUE, transformer = TO92Transformer.class,
|
||||
enableCache = true, enableDatasheet = true, datasheetCreationStepCount = 2,
|
||||
datasheetModelColumn = 1)
|
||||
public class TransistorTO92 extends AbstractTransistorPackage {
|
||||
public class TransistorTO92 extends AbstractTransistorPackage implements IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -72,6 +74,7 @@ public class TransistorTO92 extends AbstractTransistorPackage {
|
||||
public static Size BODY_DIAMETER = new Size(0.2d, SizeUnit.in);
|
||||
|
||||
private Size pinSpacing = PIN_SPACING;
|
||||
private PCBLayer boardSide;
|
||||
|
||||
public TransistorTO92() {
|
||||
super();
|
||||
@@ -285,4 +288,14 @@ public class TransistorTO92 extends AbstractTransistorPackage {
|
||||
g2d.fillOval(width / 2 - pinSize / 2, (height / 4) * (i + 1), pinSize, pinSize);
|
||||
}
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -37,8 +37,10 @@ import org.diylc.common.Display;
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ObjectCache;
|
||||
import org.diylc.common.Orientation;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.components.AbstractLabeledComponent;
|
||||
import org.diylc.core.ComponentState;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.Theme;
|
||||
@@ -49,7 +51,7 @@ import org.diylc.core.measures.Size;
|
||||
import org.diylc.core.measures.SizeUnit;
|
||||
import org.diylc.utils.Constants;
|
||||
|
||||
public abstract class PassiveSMDComponent<T> extends AbstractLabeledComponent<T> implements IGerberComponentSimple {
|
||||
public abstract class PassiveSMDComponent<T> extends AbstractLabeledComponent<T> implements IGerberComponentSimple, IBoardSideComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -68,6 +70,7 @@ public abstract class PassiveSMDComponent<T> extends AbstractLabeledComponent<T>
|
||||
protected Color bodyColor;
|
||||
protected Color borderColor;
|
||||
private Color labelColor = LABEL_COLOR;
|
||||
private PCBLayer boardSide;
|
||||
transient private Area[] body;
|
||||
|
||||
public PassiveSMDComponent() {
|
||||
@@ -413,6 +416,16 @@ public abstract class PassiveSMDComponent<T> extends AbstractLabeledComponent<T>
|
||||
return false;
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Board Side")
|
||||
@Override
|
||||
public PCBLayer getBoardSide() {
|
||||
return boardSide == null ? PCBLayer._2 : boardSide;
|
||||
}
|
||||
|
||||
public void setBoardSide(PCBLayer boardSide) {
|
||||
this.boardSide = boardSide;
|
||||
}
|
||||
|
||||
public static enum SMDSize {
|
||||
|
||||
_0805(new Size(0.05d, SizeUnit.in), new Size(0.08d, SizeUnit.in)), _1206(new Size(1.6d, SizeUnit.mm), new Size(3.2d,
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
|
||||
DIY Layout Creator (DIYLC).
|
||||
Copyright (c) 2009-2025 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
*/
|
||||
package org.diylc.components;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.diylc.common.ComponentType;
|
||||
import org.diylc.common.PCBLayer;
|
||||
import org.diylc.core.IBoardSideComponent;
|
||||
import org.diylc.core.IDIYComponent;
|
||||
import org.diylc.presenter.ComponentProcessor;
|
||||
import org.diylc.utils.ReflectionUtils;
|
||||
import org.junit.Test;
|
||||
|
||||
public class BoardSideComponentsTest {
|
||||
|
||||
@Test
|
||||
public void testBoardSideComponentsStartOnTop() throws Exception {
|
||||
for (IDIYComponent<?> component : createBoardSideComponents()) {
|
||||
assertEquals(component.getClass().getName(), PCBLayer._2,
|
||||
((IBoardSideComponent) component).getBoardSide());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBoardSideCanBeChanged() throws Exception {
|
||||
for (IDIYComponent<?> component : createBoardSideComponents()) {
|
||||
component.getClass().getMethod("setBoardSide", PCBLayer.class).invoke(component, PCBLayer._1);
|
||||
assertEquals(component.getClass().getName(), PCBLayer._1,
|
||||
((IBoardSideComponent) component).getBoardSide());
|
||||
}
|
||||
}
|
||||
|
||||
// a part moved to the bottom is seen mirrored from the top, so it must be possible to mirror it
|
||||
@Test
|
||||
public void testBoardSideComponentsCanBeMirrored() throws Exception {
|
||||
for (IDIYComponent<?> component : createBoardSideComponents()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
ComponentType type = ComponentProcessor.getInstance().extractComponentTypeFrom(
|
||||
(Class<? extends IDIYComponent<?>>) component.getClass());
|
||||
assertTrue(component.getClass().getName(), type.getTransformer().canMirror(component));
|
||||
}
|
||||
}
|
||||
|
||||
private static List<IDIYComponent<?>> createBoardSideComponents() throws Exception {
|
||||
List<IDIYComponent<?>> components = new ArrayList<IDIYComponent<?>>();
|
||||
for (Class<?> type : ReflectionUtils.getIndexedClasses(IDIYComponent.class)) {
|
||||
if (IBoardSideComponent.class.isAssignableFrom(type)
|
||||
&& !Modifier.isAbstract(type.getModifiers())) {
|
||||
components.add((IDIYComponent<?>) type.getDeclaredConstructor().newInstance());
|
||||
}
|
||||
}
|
||||
assertTrue(components.size() > 0);
|
||||
return components;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user