mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-07 12:24:58 +10:00
headers
This commit is contained in:
@@ -44,6 +44,7 @@ import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
import org.diylc.core.annotations.KeywordPolicy;
|
||||
import org.diylc.core.measures.Size;
|
||||
import org.diylc.core.measures.SizeUnit;
|
||||
@@ -74,12 +75,24 @@ public class ArduinoNano extends AbstractMakerBoard {
|
||||
"MISO", "5V_ICSP", "SCK", "MOSI", "RST_ICSP", "GND_ICSP"
|
||||
};
|
||||
|
||||
protected boolean headers = false;
|
||||
|
||||
public ArduinoNano() {
|
||||
super();
|
||||
this.bodyColor = ARDUINO_BLUE;
|
||||
updateControlPoints();
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Headers")
|
||||
public boolean getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
public void setHeaders(boolean headers) {
|
||||
this.headers = headers;
|
||||
invalidateCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getControlPointNodeName(int index) {
|
||||
if (index >= 0 && index < PIN_NAMES.length) {
|
||||
@@ -248,8 +261,12 @@ public class ArduinoNano extends AbstractMakerBoard {
|
||||
|
||||
g2d.setTransform(oldTx);
|
||||
|
||||
// Draw pins
|
||||
drawPinHeader(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
// Draw pins or solder pads
|
||||
if (headers) {
|
||||
drawPinHeader(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
} else {
|
||||
drawPcbSolderPads(g2d, 0, controlPoints.length, true, outlineMode, drawingObserver);
|
||||
}
|
||||
|
||||
g2d.setComposite(oldComposite);
|
||||
}
|
||||
|
||||
@@ -122,6 +122,7 @@ public class ESP32DevKit extends AbstractMakerBoard {
|
||||
};
|
||||
|
||||
private DevKitVersion version = DevKitVersion.DevKit_V1_30Pin;
|
||||
protected boolean headers = false;
|
||||
|
||||
public ESP32DevKit() {
|
||||
super();
|
||||
@@ -140,6 +141,16 @@ public class ESP32DevKit extends AbstractMakerBoard {
|
||||
invalidateCache();
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Headers")
|
||||
public boolean getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
public void setHeaders(boolean headers) {
|
||||
this.headers = headers;
|
||||
invalidateCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getControlPointNodeName(int index) {
|
||||
if (version == DevKitVersion.DevKit_V1_30Pin) {
|
||||
@@ -367,7 +378,11 @@ public class ESP32DevKit extends AbstractMakerBoard {
|
||||
|
||||
g2d.setTransform(oldTx);
|
||||
|
||||
drawPins(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
if (headers) {
|
||||
drawPins(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
} else {
|
||||
drawPcbSolderPads(g2d, 0, controlPoints.length, true, outlineMode, drawingObserver);
|
||||
}
|
||||
|
||||
g2d.setComposite(oldComposite);
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
import org.diylc.core.annotations.KeywordPolicy;
|
||||
import org.diylc.core.measures.Size;
|
||||
import org.diylc.core.measures.SizeUnit;
|
||||
@@ -84,12 +85,24 @@ public class ESP8266NodeMCU extends AbstractMakerBoard {
|
||||
"D0 (GPIO16)", "D1 (GPIO5)", "D2 (GPIO4)", "D3 (GPIO0)", "D4 (GPIO2)", "3V3_2", "GND3", "D5 (GPIO14)", "D6 (GPIO12)", "D7 (GPIO13)", "D8 (GPIO15)", "RX (GPIO3)", "TX (GPIO1)", "GND4", "3V3_3"
|
||||
};
|
||||
|
||||
protected boolean headers = false;
|
||||
|
||||
public ESP8266NodeMCU() {
|
||||
super();
|
||||
this.bodyColor = NODEMCU_BLACK;
|
||||
updateControlPoints();
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Headers")
|
||||
public boolean getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
public void setHeaders(boolean headers) {
|
||||
this.headers = headers;
|
||||
invalidateCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getControlPointNodeName(int index) {
|
||||
if (index >= 0 && index < PIN_NAMES.length) {
|
||||
@@ -238,7 +251,11 @@ public class ESP8266NodeMCU extends AbstractMakerBoard {
|
||||
|
||||
g2d.setTransform(oldTx);
|
||||
|
||||
drawPins(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
if (headers) {
|
||||
drawPins(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
} else {
|
||||
drawPcbSolderPads(g2d, 0, controlPoints.length, true, outlineMode, drawingObserver);
|
||||
}
|
||||
|
||||
g2d.setComposite(oldComposite);
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
import org.diylc.core.annotations.KeywordPolicy;
|
||||
import org.diylc.core.measures.Size;
|
||||
import org.diylc.core.measures.SizeUnit;
|
||||
@@ -79,12 +80,24 @@ public class RaspberryPiPico extends AbstractMakerBoard {
|
||||
"SWCLK", "GND_SWD", "SWDIO"
|
||||
};
|
||||
|
||||
protected boolean headers = false;
|
||||
|
||||
public RaspberryPiPico() {
|
||||
super();
|
||||
this.bodyColor = RPI_GREEN;
|
||||
updateControlPoints();
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Headers")
|
||||
public boolean getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
public void setHeaders(boolean headers) {
|
||||
this.headers = headers;
|
||||
invalidateCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getControlPointNodeName(int index) {
|
||||
if (index >= 0 && index < PIN_NAMES.length) {
|
||||
@@ -230,10 +243,16 @@ public class RaspberryPiPico extends AbstractMakerBoard {
|
||||
|
||||
drawingObserver.stopTracking();
|
||||
|
||||
drawCastellatedPads(g2d, boardX, boardY, boardW, pin1OffsetX, pin1OffsetY, outlineMode, drawingObserver);
|
||||
if (!headers) {
|
||||
drawCastellatedPads(g2d, boardX, boardY, boardW, pin1OffsetX, pin1OffsetY, outlineMode, drawingObserver);
|
||||
}
|
||||
|
||||
g2d.setTransform(oldTx);
|
||||
|
||||
if (headers) {
|
||||
drawPinHeader(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
}
|
||||
|
||||
g2d.setComposite(oldComposite);
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
import org.diylc.core.annotations.KeywordPolicy;
|
||||
import org.diylc.core.measures.Size;
|
||||
import org.diylc.core.measures.SizeUnit;
|
||||
@@ -74,12 +75,24 @@ public class RaspberryPiZero extends AbstractMakerBoard {
|
||||
PIN_NAMES[40] = "MIPI (CSI)";
|
||||
}
|
||||
|
||||
protected boolean headers = false;
|
||||
|
||||
public RaspberryPiZero() {
|
||||
super();
|
||||
this.bodyColor = RPI_GREEN;
|
||||
updateControlPoints();
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Headers")
|
||||
public boolean getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
public void setHeaders(boolean headers) {
|
||||
this.headers = headers;
|
||||
invalidateCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getControlPointNodeName(int index) {
|
||||
if (index >= 0 && index < PIN_NAMES.length) {
|
||||
@@ -259,7 +272,11 @@ public class RaspberryPiZero extends AbstractMakerBoard {
|
||||
|
||||
g2d.setTransform(oldTx);
|
||||
|
||||
drawSolderPads(g2d, outlineMode, drawingObserver);
|
||||
if (headers) {
|
||||
drawPinHeader(g2d, 0, 40, false, outlineMode, drawingObserver);
|
||||
} else {
|
||||
drawSolderPads(g2d, outlineMode, drawingObserver);
|
||||
}
|
||||
|
||||
g2d.setComposite(oldComposite);
|
||||
}
|
||||
|
||||
@@ -153,6 +153,7 @@ public class Teensy extends AbstractMakerBoard {
|
||||
};
|
||||
|
||||
private TeensyVersion version = TeensyVersion.Teensy_4_0;
|
||||
protected boolean headers = false;
|
||||
|
||||
public Teensy() {
|
||||
super();
|
||||
@@ -171,6 +172,16 @@ public class Teensy extends AbstractMakerBoard {
|
||||
invalidateCache();
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Headers")
|
||||
public boolean getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
public void setHeaders(boolean headers) {
|
||||
this.headers = headers;
|
||||
invalidateCache();
|
||||
}
|
||||
|
||||
private String[] getPinNames() {
|
||||
return (version == TeensyVersion.Teensy_4_0) ? PIN_NAMES_40 : PIN_NAMES_41;
|
||||
}
|
||||
@@ -392,8 +403,12 @@ public class Teensy extends AbstractMakerBoard {
|
||||
|
||||
g2d.setTransform(oldTx);
|
||||
|
||||
// Render gold solder pads with drill holes (square for Pin 1 / GND)
|
||||
drawSolderPads(g2d, outlineMode, drawingObserver);
|
||||
// Render pin headers or gold solder pads with drill holes
|
||||
if (headers) {
|
||||
drawPinHeader(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
} else {
|
||||
drawSolderPads(g2d, outlineMode, drawingObserver);
|
||||
}
|
||||
|
||||
g2d.setComposite(oldComposite);
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ import org.diylc.core.IDrawingObserver;
|
||||
import org.diylc.core.Project;
|
||||
import org.diylc.core.annotations.BomPolicy;
|
||||
import org.diylc.core.annotations.ComponentDescriptor;
|
||||
import org.diylc.core.annotations.EditableProperty;
|
||||
import org.diylc.core.annotations.KeywordPolicy;
|
||||
import org.diylc.core.measures.Size;
|
||||
import org.diylc.core.measures.SizeUnit;
|
||||
@@ -107,12 +108,24 @@ public class WemosD1Mini extends AbstractMakerBoard {
|
||||
"TX", "RX", "D1", "D2", "D3", "D4", "G", "5V"
|
||||
};
|
||||
|
||||
protected boolean headers = false;
|
||||
|
||||
public WemosD1Mini() {
|
||||
super();
|
||||
this.bodyColor = WEMOS_BLUE;
|
||||
updateControlPoints();
|
||||
}
|
||||
|
||||
@EditableProperty(name = "Headers")
|
||||
public boolean getHeaders() {
|
||||
return headers;
|
||||
}
|
||||
|
||||
public void setHeaders(boolean headers) {
|
||||
this.headers = headers;
|
||||
invalidateCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getControlPointNodeName(int index) {
|
||||
if (index >= 0 && index < PIN_NAMES.length) {
|
||||
@@ -298,7 +311,11 @@ public class WemosD1Mini extends AbstractMakerBoard {
|
||||
|
||||
g2d.setTransform(oldTx);
|
||||
|
||||
drawPcbSolderPads(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
if (headers) {
|
||||
drawPinHeader(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
} else {
|
||||
drawPcbSolderPads(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
}
|
||||
|
||||
g2d.setComposite(oldComposite);
|
||||
}
|
||||
|
||||
@@ -112,4 +112,16 @@ public class ArduinoNanoTest {
|
||||
Point2D p0 = nano.getControlPoint(0);
|
||||
Assert.assertEquals(30.0, p0.getY() - bounds.getY(), 0.1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeadersProperty() {
|
||||
ArduinoNano nano = new ArduinoNano();
|
||||
Assert.assertFalse("Headers should be false by default", nano.getHeaders());
|
||||
|
||||
nano.setHeaders(true);
|
||||
Assert.assertTrue("Headers should be true after setter", nano.getHeaders());
|
||||
|
||||
nano.setHeaders(false);
|
||||
Assert.assertFalse("Headers should be false after setter", nano.getHeaders());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,4 +219,16 @@ public class ESP32DevKitTest {
|
||||
Assert.assertEquals("3V3", devKit.getControlPointNodeName(14));
|
||||
Assert.assertEquals("D23", devKit.getControlPointNodeName(29));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeadersProperty() {
|
||||
ESP32DevKit devKit = new ESP32DevKit();
|
||||
Assert.assertFalse("Headers should be false by default", devKit.getHeaders());
|
||||
|
||||
devKit.setHeaders(true);
|
||||
Assert.assertTrue("Headers should be true after setter", devKit.getHeaders());
|
||||
|
||||
devKit.setHeaders(false);
|
||||
Assert.assertFalse("Headers should be false after setter", devKit.getHeaders());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,4 +102,16 @@ public class ESP8266NodeMCUTest {
|
||||
Point2D p0 = mcu.getControlPoint(0);
|
||||
Assert.assertEquals(expectedTopMargin, p0.getY() - bounds.getY(), 0.1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeadersProperty() {
|
||||
ESP8266NodeMCU mcu = new ESP8266NodeMCU();
|
||||
Assert.assertFalse("Headers should be false by default", mcu.getHeaders());
|
||||
|
||||
mcu.setHeaders(true);
|
||||
Assert.assertTrue("Headers should be true after setter", mcu.getHeaders());
|
||||
|
||||
mcu.setHeaders(false);
|
||||
Assert.assertFalse("Headers should be false after setter", mcu.getHeaders());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,4 +151,38 @@ public class RaspberryPiPicoTest {
|
||||
Assert.assertEquals(p0Rot.getX() - spacing, p1Rot.getX(), 0.01);
|
||||
Assert.assertEquals(p0Rot.getY(), p1Rot.getY(), 0.01);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeadersProperty() {
|
||||
RaspberryPiPico pico = new RaspberryPiPico();
|
||||
Assert.assertFalse("Headers should be false by default", pico.getHeaders());
|
||||
|
||||
pico.setHeaders(true);
|
||||
Assert.assertTrue("Headers should be true after setter", pico.getHeaders());
|
||||
|
||||
pico.setHeaders(false);
|
||||
Assert.assertFalse("Headers should be false after setter", pico.getHeaders());
|
||||
|
||||
// Test drawing with headers true and false
|
||||
BufferedImage img = new BufferedImage(600, 600, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D g2d = img.createGraphics();
|
||||
g2d.setClip(new Rectangle(0, 0, 600, 600));
|
||||
Project project = new Project();
|
||||
IDrawingObserver observer = new IDrawingObserver() {
|
||||
@Override public void startTracking() {}
|
||||
@Override public void stopTracking() {}
|
||||
@Override public void startTrackingContinuityArea(boolean positive) {}
|
||||
@Override public void stopTrackingContinuityArea() {}
|
||||
@Override public boolean isTrackingContinuityArea() { return false; }
|
||||
@Override public void setContinuityMarker(String marker) {}
|
||||
};
|
||||
|
||||
pico.setHeaders(false);
|
||||
pico.draw(g2d, ComponentState.NORMAL, false, project, observer);
|
||||
|
||||
pico.setHeaders(true);
|
||||
pico.draw(g2d, ComponentState.NORMAL, false, project, observer);
|
||||
|
||||
g2d.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,4 +166,38 @@ public class RaspberryPiZeroTest {
|
||||
Assert.assertEquals(p0Rot.getX() + spacing, p1Rot.getX(), 0.01);
|
||||
Assert.assertEquals(p0Rot.getY(), p1Rot.getY(), 0.01);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeadersProperty() {
|
||||
RaspberryPiZero pi = new RaspberryPiZero();
|
||||
Assert.assertFalse("Headers should be false by default", pi.getHeaders());
|
||||
|
||||
pi.setHeaders(true);
|
||||
Assert.assertTrue("Headers should be true after setter", pi.getHeaders());
|
||||
|
||||
pi.setHeaders(false);
|
||||
Assert.assertFalse("Headers should be false after setter", pi.getHeaders());
|
||||
|
||||
// Test drawing with headers true and false
|
||||
BufferedImage img = new BufferedImage(600, 600, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D g2d = img.createGraphics();
|
||||
g2d.setClip(new Rectangle(0, 0, 600, 600));
|
||||
Project project = new Project();
|
||||
IDrawingObserver observer = new IDrawingObserver() {
|
||||
@Override public void startTracking() {}
|
||||
@Override public void stopTracking() {}
|
||||
@Override public void startTrackingContinuityArea(boolean positive) {}
|
||||
@Override public void stopTrackingContinuityArea() {}
|
||||
@Override public boolean isTrackingContinuityArea() { return false; }
|
||||
@Override public void setContinuityMarker(String marker) {}
|
||||
};
|
||||
|
||||
pi.setHeaders(false);
|
||||
pi.draw(g2d, ComponentState.NORMAL, false, project, observer);
|
||||
|
||||
pi.setHeaders(true);
|
||||
pi.draw(g2d, ComponentState.NORMAL, false, project, observer);
|
||||
|
||||
g2d.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -350,4 +350,42 @@ public class TeensyTest {
|
||||
// Board should be green (like Pi Zero)
|
||||
Assert.assertEquals(Teensy.TEENSY_GREEN, teensy.getBodyColor());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeadersProperty() {
|
||||
Teensy teensy = new Teensy();
|
||||
Assert.assertFalse("Headers should be false by default", teensy.getHeaders());
|
||||
|
||||
teensy.setHeaders(true);
|
||||
Assert.assertTrue("Headers should be true after setter", teensy.getHeaders());
|
||||
|
||||
teensy.setHeaders(false);
|
||||
Assert.assertFalse("Headers should be false after setter", teensy.getHeaders());
|
||||
|
||||
// Test drawing with headers true and false for both 4.0 and 4.1
|
||||
BufferedImage img = new BufferedImage(600, 600, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D g2d = img.createGraphics();
|
||||
g2d.setClip(new Rectangle(0, 0, 600, 600));
|
||||
Project project = new Project();
|
||||
IDrawingObserver observer = new IDrawingObserver() {
|
||||
@Override public void startTracking() {}
|
||||
@Override public void stopTracking() {}
|
||||
@Override public void startTrackingContinuityArea(boolean positive) {}
|
||||
@Override public void stopTrackingContinuityArea() {}
|
||||
@Override public boolean isTrackingContinuityArea() { return false; }
|
||||
@Override public void setContinuityMarker(String marker) {}
|
||||
};
|
||||
|
||||
teensy.setHeaders(false);
|
||||
teensy.draw(g2d, ComponentState.NORMAL, false, project, observer);
|
||||
|
||||
teensy.setHeaders(true);
|
||||
teensy.draw(g2d, ComponentState.NORMAL, false, project, observer);
|
||||
|
||||
teensy.setVersion(Teensy.TeensyVersion.Teensy_4_1);
|
||||
teensy.setHeaders(true);
|
||||
teensy.draw(g2d, ComponentState.NORMAL, false, project, observer);
|
||||
|
||||
g2d.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,4 +125,38 @@ public class WemosD1MiniTest {
|
||||
|
||||
g2d.dispose();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHeadersProperty() {
|
||||
WemosD1Mini mcu = new WemosD1Mini();
|
||||
Assert.assertFalse("Headers should be false by default", mcu.getHeaders());
|
||||
|
||||
mcu.setHeaders(true);
|
||||
Assert.assertTrue("Headers should be true after setter", mcu.getHeaders());
|
||||
|
||||
mcu.setHeaders(false);
|
||||
Assert.assertFalse("Headers should be false after setter", mcu.getHeaders());
|
||||
|
||||
// Test drawing with headers true and false
|
||||
BufferedImage img = new BufferedImage(400, 400, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D g2d = img.createGraphics();
|
||||
g2d.setClip(new Rectangle(0, 0, 400, 400));
|
||||
Project project = new Project();
|
||||
IDrawingObserver observer = new IDrawingObserver() {
|
||||
@Override public void startTracking() {}
|
||||
@Override public void stopTracking() {}
|
||||
@Override public void startTrackingContinuityArea(boolean positive) {}
|
||||
@Override public void stopTrackingContinuityArea() {}
|
||||
@Override public boolean isTrackingContinuityArea() { return false; }
|
||||
@Override public void setContinuityMarker(String marker) {}
|
||||
};
|
||||
|
||||
mcu.setHeaders(false);
|
||||
mcu.draw(g2d, ComponentState.NORMAL, false, project, observer);
|
||||
|
||||
mcu.setHeaders(true);
|
||||
mcu.draw(g2d, ComponentState.NORMAL, false, project, observer);
|
||||
|
||||
g2d.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user