mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-07 12:24:58 +10:00
improve solder pads
This commit is contained in:
@@ -75,9 +75,12 @@ public abstract class AbstractMakerBoard extends AbstractTransparentComponent<Vo
|
||||
public static Color METAL_LABEL_COLOR = Color.decode("#555555");
|
||||
public static Color ANTENNA_COLOR = Color.decode("#DAA520");
|
||||
public static Color ANTENNA_BG_COLOR = Color.decode("#1E1E1E");
|
||||
public static Color PAD_COLOR = Color.decode("#DAA520");
|
||||
|
||||
public static Size PIN_SIZE = new Size(0.04d, SizeUnit.in);
|
||||
public static Size PIN_SPACING = new Size(0.1d, SizeUnit.in);
|
||||
public static Size PAD_SIZE = new Size(0.065d, SizeUnit.in);
|
||||
public static Size HOLE_SIZE = new Size(0.035d, SizeUnit.in);
|
||||
public static Size ANTENNA_WIDTH = new Size(15.0d, SizeUnit.mm);
|
||||
public static Size ANTENNA_LENGTH = new Size(7.0d, SizeUnit.mm);
|
||||
|
||||
@@ -665,6 +668,49 @@ public abstract class AbstractMakerBoard extends AbstractTransparentComponent<Vo
|
||||
drawingObserver.stopTrackingContinuityArea();
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to draw standard PCB through-hole solder pads (gold/copper pads with drill holes, square for Pin 1).
|
||||
*
|
||||
* @param g2d Graphics2D context
|
||||
* @param startIndex First control point index
|
||||
* @param count Number of pads to draw
|
||||
* @param squarePin1 If true, the first pad (index == startIndex) is drawn as a square pad
|
||||
* @param outlineMode Outline mode flag
|
||||
* @param drawingObserver Observer
|
||||
*/
|
||||
protected void drawPcbSolderPads(Graphics2D g2d, int startIndex, int count, boolean squarePin1, boolean outlineMode, IDrawingObserver drawingObserver) {
|
||||
if (outlineMode) return;
|
||||
int diameter = getClosestOdd((int) Math.round(PAD_SIZE.convertToPixels()));
|
||||
int holeDiameter = getClosestOdd((int) Math.round(HOLE_SIZE.convertToPixels()));
|
||||
|
||||
drawingObserver.startTrackingContinuityArea(true);
|
||||
for (int i = startIndex; i < startIndex + count && i < controlPoints.length; i++) {
|
||||
Point2D p = controlPoints[i];
|
||||
if (squarePin1 && i == startIndex) {
|
||||
// Pin 1 is a square solder pad
|
||||
g2d.setColor(PAD_COLOR);
|
||||
g2d.fill(new Rectangle2D.Double(p.getX() - diameter / 2.0, p.getY() - diameter / 2.0, diameter, diameter));
|
||||
g2d.setColor(PAD_COLOR.darker());
|
||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||
g2d.draw(new Rectangle2D.Double(p.getX() - diameter / 2.0, p.getY() - diameter / 2.0, diameter, diameter));
|
||||
} else {
|
||||
// Round solder pads
|
||||
g2d.setColor(PAD_COLOR);
|
||||
g2d.fill(new Ellipse2D.Double(p.getX() - diameter / 2.0, p.getY() - diameter / 2.0, diameter, diameter));
|
||||
g2d.setColor(PAD_COLOR.darker());
|
||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||
g2d.draw(new Ellipse2D.Double(p.getX() - diameter / 2.0, p.getY() - diameter / 2.0, diameter, diameter));
|
||||
}
|
||||
|
||||
// Central drill hole
|
||||
g2d.setColor(Constants.CANVAS_COLOR);
|
||||
g2d.fill(new Ellipse2D.Double(p.getX() - holeDiameter / 2.0, p.getY() - holeDiameter / 2.0, holeDiameter, holeDiameter));
|
||||
g2d.setColor(PAD_COLOR.darker());
|
||||
g2d.draw(new Ellipse2D.Double(p.getX() - holeDiameter / 2.0, p.getY() - holeDiameter / 2.0, holeDiameter, holeDiameter));
|
||||
}
|
||||
drawingObserver.stopTrackingContinuityArea();
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to draw a mounting hole.
|
||||
*/
|
||||
|
||||
@@ -268,36 +268,7 @@ public class RaspberryPiZero extends AbstractMakerBoard {
|
||||
* Helper to draw GPIO solder pads (copper pads with drill holes, square for Pin 1).
|
||||
*/
|
||||
protected void drawSolderPads(Graphics2D g2d, boolean outlineMode, IDrawingObserver drawingObserver) {
|
||||
if (outlineMode) return;
|
||||
int diameter = getClosestOdd((int) Math.round(PAD_SIZE.convertToPixels()));
|
||||
int holeDiameter = getClosestOdd((int) Math.round(HOLE_SIZE.convertToPixels()));
|
||||
|
||||
drawingObserver.startTrackingContinuityArea(true);
|
||||
for (int i = 0; i < 40 && i < controlPoints.length; i++) {
|
||||
Point2D p = controlPoints[i];
|
||||
if (i == 0) {
|
||||
// Pin 1 is a square solder pad
|
||||
g2d.setColor(PAD_COLOR);
|
||||
g2d.fill(new Rectangle2D.Double(p.getX() - diameter / 2.0, p.getY() - diameter / 2.0, diameter, diameter));
|
||||
g2d.setColor(PAD_COLOR.darker());
|
||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||
g2d.draw(new Rectangle2D.Double(p.getX() - diameter / 2.0, p.getY() - diameter / 2.0, diameter, diameter));
|
||||
} else {
|
||||
// Pins 2..40 are round solder pads
|
||||
g2d.setColor(PAD_COLOR);
|
||||
g2d.fill(new Ellipse2D.Double(p.getX() - diameter / 2.0, p.getY() - diameter / 2.0, diameter, diameter));
|
||||
g2d.setColor(PAD_COLOR.darker());
|
||||
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
|
||||
g2d.draw(new Ellipse2D.Double(p.getX() - diameter / 2.0, p.getY() - diameter / 2.0, diameter, diameter));
|
||||
}
|
||||
|
||||
// Central drill hole
|
||||
g2d.setColor(Constants.CANVAS_COLOR);
|
||||
g2d.fill(new Ellipse2D.Double(p.getX() - holeDiameter / 2.0, p.getY() - holeDiameter / 2.0, holeDiameter, holeDiameter));
|
||||
g2d.setColor(PAD_COLOR.darker());
|
||||
g2d.draw(new Ellipse2D.Double(p.getX() - holeDiameter / 2.0, p.getY() - holeDiameter / 2.0, holeDiameter, holeDiameter));
|
||||
}
|
||||
drawingObserver.stopTrackingContinuityArea();
|
||||
drawPcbSolderPads(g2d, 0, 40, true, outlineMode, drawingObserver);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -298,7 +298,7 @@ public class WemosD1Mini extends AbstractMakerBoard {
|
||||
|
||||
g2d.setTransform(oldTx);
|
||||
|
||||
drawPins(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
drawPcbSolderPads(g2d, 0, controlPoints.length, false, outlineMode, drawingObserver);
|
||||
|
||||
g2d.setComposite(oldComposite);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user