From a4efb57452ade2e1d5e9983c0d74f0afd10573c9 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Mon, 21 Jan 2019 10:29:47 +0100 Subject: [PATCH] added pilot lamp holder --- diylc/diylc-library/lib/diylc-core.jar | Bin 243563 -> 243563 bytes .../electromechanical/PilotLampHolder.java | 437 ++++++++++++++++++ diylc/diylc-swing/lib/diylc-core.jar | Bin 243563 -> 243563 bytes diylc/diylc-swing/library/main.jar | Bin 564748 -> 566571 bytes diylc/diylc-swing/update.xml | 6 +- 5 files changed, 442 insertions(+), 1 deletion(-) create mode 100644 diylc/diylc-library/src/org/diylc/components/electromechanical/PilotLampHolder.java diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index ae89d6c4d4ad95ba864e6d1372c7b23033c0bef8..c3a3ebbb76fa2071d7123c9c510a7e65f73325d2 100644 GIT binary patch delta 5077 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 NgVXio-c=P-{tJhPl`{YU diff --git a/diylc/diylc-library/src/org/diylc/components/electromechanical/PilotLampHolder.java b/diylc/diylc-library/src/org/diylc/components/electromechanical/PilotLampHolder.java new file mode 100644 index 00000000..47e5656b --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/electromechanical/PilotLampHolder.java @@ -0,0 +1,437 @@ +/* + + 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.electromechanical; + +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Composite; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Polygon; +import java.awt.RadialGradientPaint; +import java.awt.Shape; +import java.awt.geom.AffineTransform; +import java.awt.geom.Area; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Line2D; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; +import java.util.ArrayList; +import java.util.List; + +import org.diylc.appframework.miscutils.ConfigurationManager; +import org.diylc.common.IPlugInPort; +import org.diylc.common.ObjectCache; +import org.diylc.common.Orientation; +import org.diylc.components.AbstractTransparentComponent; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.Theme; +import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; + +@ComponentDescriptor(name = "Pilot Lamp Holder", category = "Electro-Mechanical", author = "Branislav Stojkovic", + description = "Fender-style pilot bulb holder for T2 and T-3 ¼ miniature bayonet lamps", stretchable = false, + zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "PL") +public class PilotLampHolder extends AbstractTransparentComponent { + + private static final long serialVersionUID = 1L; + + private static Color BASE_COLOR = Color.lightGray; + private static Color WAFER_COLOR = Color.decode("#CD8500"); + + private static Size THREAD_OUTER_DIAMETER = new Size(11 / 16d, SizeUnit.in); + private static Size NUT_DIAMETER = new Size(14 / 16d, SizeUnit.in); + private static Size THREAD_THICKNESS = new Size(0.05d, SizeUnit.in); + private static Size WAFER_DIAMETER = new Size(0.2d, SizeUnit.in); + private static Size INNER_DIAMETER = new Size(0.05d, SizeUnit.in); + private static Size RING_DIAMETER = new Size(0.15d, SizeUnit.in); + private static Size SPRING_LENGTH = new Size(0.463d, SizeUnit.in); + private static Size SPRING_WIDTH = new Size(0.12d, SizeUnit.in); + private static Size HOLE_DIAMETER = new Size(0.05d, SizeUnit.in); + private static Size HOLE_TO_EDGE = new Size(0.063d, SizeUnit.in); + private static Size HOLE_SPACING = new Size(0.1d, SizeUnit.in); + + private String value = ""; + private Point[] controlPoints = new Point[] { new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0) }; + transient Area[] body; + private Orientation orientation = Orientation.DEFAULT; + + public PilotLampHolder() { + super(); + updateControlPoints(); + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + Shape[] body = getBody(); + + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + if (componentState != ComponentState.DRAGGING) { + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA)); + } + g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : WAFER_COLOR); + g2d.fill(body[0]); + + g2d.setComposite(oldComposite); + } + + Color finalBorderColor; + + if (outlineMode) { + Theme theme = + (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : theme.getOutlineColor(); + } else { + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : WAFER_COLOR.darker(); + } + + g2d.setColor(finalBorderColor); + g2d.draw(body[0]); + + if (componentState != ComponentState.DRAGGING) { + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA)); + } + g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : BASE_COLOR); + + drawingObserver.startTrackingContinuityArea(true); + + g2d.fill(body[3]); + g2d.fill(body[4]); + g2d.fill(body[5]); + + g2d.fill(body[1]); + g2d.fill(body[2]); + + drawingObserver.stopTrackingContinuityArea(); + + g2d.setComposite(oldComposite); + } + + if (outlineMode) { + Theme theme = + (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : theme.getOutlineColor(); + } else { + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : BASE_COLOR.darker(); + } + + g2d.setColor(finalBorderColor); + + g2d.draw(body[3]); + g2d.draw(body[4]); + g2d.draw(body[5]); + + g2d.draw(body[1]); + g2d.draw(body[2]); + } + + @SuppressWarnings("incomplete-switch") + public Area[] getBody() { + if (body == null) { + body = new Area[6]; + + int x = controlPoints[0].x; + int y = controlPoints[0].y; + int threadOuterDiameter = getClosestOdd(THREAD_OUTER_DIAMETER.convertToPixels()); + int threadThickness = getClosestOdd(THREAD_THICKNESS.convertToPixels()); + int nutDiameter = getClosestOdd(NUT_DIAMETER.convertToPixels()); + int waferDiameter = getClosestOdd(WAFER_DIAMETER.convertToPixels()); + int innerDiameter = getClosestOdd(INNER_DIAMETER.convertToPixels()); + int ringDiameter = getClosestOdd(RING_DIAMETER.convertToPixels()); + int springLength = (int) SPRING_LENGTH.convertToPixels(); + int springWidth = (int) SPRING_WIDTH.convertToPixels(); + int holeDiameter = getClosestOdd(HOLE_DIAMETER.convertToPixels()); + int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels(); + + int centerY = y + springLength - holeToEdge; + + Area wafer = + new Area(new Ellipse2D.Double(x - waferDiameter / 2, centerY - waferDiameter / 2, waferDiameter, + waferDiameter)); + wafer.subtract(new Area(new Ellipse2D.Double(x - ringDiameter / 2, centerY - ringDiameter / 2, ringDiameter, + ringDiameter))); + + body[0] = wafer; + + Area tip = + new Area(new RoundRectangle2D.Double(x - springWidth / 2, y - holeToEdge, springWidth, springLength, springWidth, springWidth)); + tip.subtract(new Area(new Ellipse2D.Double(x - waferDiameter / 2, centerY - waferDiameter / 2, waferDiameter, waferDiameter))); + + body[1] = tip; + + Area sleeve = + new Area(new RoundRectangle2D.Double(x - springWidth / 2, y - holeToEdge, springWidth, springLength, + springWidth, springWidth)); + sleeve.transform(AffineTransform.getRotateInstance(Math.PI * 0.295, x, centerY)); + sleeve.add(new Area(new Ellipse2D.Double(x - ringDiameter / 2, centerY - ringDiameter / 2, ringDiameter, ringDiameter))); + sleeve.subtract(new Area(new Ellipse2D.Double(x - innerDiameter / 2, centerY - innerDiameter / 2, innerDiameter, innerDiameter))); + + body[2] = sleeve; + tip.subtract(sleeve); + + Area thread = new Area(new Ellipse2D.Double(x - threadOuterDiameter / 2, centerY - threadOuterDiameter / 2, threadOuterDiameter, threadOuterDiameter)); + + Path2D polygon = new Path2D.Double(); + for (int i = 0; i < 6; i++) { + double theta = Math.PI /3 * i; + if (i == 0) + polygon.moveTo(x + nutDiameter / 2 * Math.cos(theta), centerY + nutDiameter / 2 * Math.sin(theta)); + else + polygon.lineTo(x + nutDiameter / 2 * Math.cos(theta), centerY + nutDiameter / 2 * Math.sin(theta)); + } + polygon.closePath(); + Area nut = new Area(polygon); + nut.subtract(thread); + nut.subtract(new Area(new Rectangle2D.Double(x - springWidth / 2, y - holeToEdge, springWidth, springLength))); + nut.subtract(sleeve); + + thread.subtract(new Area(new Ellipse2D.Double(x - threadOuterDiameter / 2 + threadThickness, centerY - threadOuterDiameter / 2 + threadThickness, + threadOuterDiameter - 2 * + threadThickness, threadOuterDiameter - 2 * + threadThickness))); + thread.subtract(tip); + thread.subtract(sleeve); + + body[3] = thread; + body[4] = nut; + + double linkLength = (int) (Math.sin(Math.PI / 3) * nutDiameter / 2); + Area link = new Area(new Rectangle2D.Double(x - waferDiameter / 2, centerY, waferDiameter, linkLength)); + link.subtract(new Area(new Ellipse2D.Double(x - waferDiameter / 2, centerY - waferDiameter / 2, waferDiameter, + waferDiameter))); + + body[5] = link; + + nut.subtract(link); + thread.subtract(link); + + double theta = 0; + // Rotate if needed + if (orientation != Orientation.DEFAULT) { + switch (orientation) { + case _90: + theta = Math.PI / 2; + break; + case _180: + theta = Math.PI; + break; + case _270: + theta = Math.PI * 3 / 2; + break; + } + } + + if (theta != 0) { + AffineTransform rotation = AffineTransform.getRotateInstance(theta, x, y); + for (Area area : body) { + if (area != null) + area.transform(rotation); + } + } + + for (int i = 1; i <= 2; i++) + for (Point p : controlPoints) + body[i].subtract(new Area(new Ellipse2D.Double(p.x - holeDiameter / 2, p.y - holeDiameter / 2, holeDiameter, holeDiameter))); + } + + return body; + } + + @SuppressWarnings("incomplete-switch") + private void updateControlPoints() { + int x = controlPoints[0].x; + int y = controlPoints[0].y; + + int springLength = (int) SPRING_LENGTH.convertToPixels(); + int holeToEdge = (int) HOLE_TO_EDGE.convertToPixels(); + int holeSpacing = (int) HOLE_SPACING.convertToPixels(); + + int centerY = y + springLength - holeToEdge; + + AffineTransform rotation = AffineTransform.getRotateInstance(Math.PI * 0.295, x, centerY); + + rotation.transform(controlPoints[0], controlPoints[1]); + + controlPoints[2].setLocation(controlPoints[0].x, controlPoints[0].y + holeSpacing); + rotation.transform(controlPoints[2], controlPoints[3]); + + // Rotate if needed + if (orientation != Orientation.DEFAULT) { + double theta = 0; + switch (orientation) { + case _90: + theta = Math.PI / 2; + break; + case _180: + theta = Math.PI; + break; + case _270: + theta = Math.PI * 3 / 2; + break; + } + rotation = AffineTransform.getRotateInstance(theta, x, y); + for (Point point : controlPoints) { + rotation.transform(point, point); + } + } + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int waferDiameter = (int) (7f * width / 32); + int sleeveDiameter = (int) (7f * width / 32); + + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(6f * width / 32)); + g2d.setColor(BASE_COLOR); + g2d.drawLine(width / 2, 4 * width / 32, width / 2, width / 4); + + g2d.setColor(WAFER_COLOR); + g2d.draw(new Ellipse2D.Double(width / 2 - waferDiameter / 2, height / 2 - waferDiameter / 2, waferDiameter, + waferDiameter)); + + g2d.setColor(BASE_COLOR); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(3f * width / 32)); + g2d.draw(new Ellipse2D.Double(width / 2 - sleeveDiameter / 2, height / 2 - sleeveDiameter / 2, sleeveDiameter, + sleeveDiameter)); + + g2d.rotate(Math.PI * 0.295, width / 2, height / 2); + + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(6f * width / 32)); + g2d.drawLine(width / 2, 4 * width / 32, width / 2, width / 3); +// +// g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(6f * width / 32)); +// g2d.rotate(-Math.PI / 2, width / 2, height / 2); +// +// g2d.drawLine(width / 2, 4 * width / 32, width / 2, width / 3); +// g2d.setColor(BASE_COLOR); +// int margin = (int) (2f * width / 32); +// g2d.fillOval(0, 0, width, height); +// Color jewelColor = Color.decode("#0CDEFF"); +// Color darkerColor = Color.decode("#0AB2CC"); +// RadialGradientPaint gradient = new RadialGradientPaint(new Point(width / 2, height / 2), width / 2 - margin * 2, new float[] {0f, 1f}, new Color[] { jewelColor, darkerColor }); +// g2d.setPaint(gradient); +// g2d.fillOval(margin, margin, width - margin * 2, height - margin * 2); +// +// g2d.setColor(darkerColor); +// double r = 6f * width / 32; +// Polygon p = new Polygon(); +// List p1 = new ArrayList(); +// for (int i = 0; i < 6; i++) { +// double theta = Math.PI / 3 * i; +// +// int x = (int) (width / 2 + r * Math.cos(theta)); +// int y = (int) (height / 2 + r * Math.sin(theta)); +// +// g2d.drawLine(width / 2, height / 2, x, y); +// p.addPoint(x, y); +// +// Polygon pa = new Polygon(); +// pa.addPoint(x, y); +// int x1 = (int) (x + r * Math.cos(theta - Math.PI / 6)); +// int y1 = (int) (x + r * Math.sin(theta - Math.PI / 6)); +// pa.addPoint(x1, y1); +// int x2 = (int) (x + r * Math.cos(theta+ Math.PI / 6)); +// int y2 = (int) (x + r * Math.sin(theta+ Math.PI / 6)); +// pa.addPoint(x2, y2); +// p1.add(pa); +//// +//// Polygon pb = new Polygon(); +//// pb.addPoint(x, y); +//// pb.addPoint(x2, y2); +//// int x3 = (int) (x + r * Math.cos(theta + Math.PI / 6)); +//// int y3 = (int) (x + r * Math.sin(theta + Math.PI / 6)); +//// pb.addPoint(x3, y3); +//// p1.add(pb); +// } +// g2d.draw(p); +// for (Polygon pa : p1) +// g2d.draw(pa); + } + + @Override + public int getControlPointCount() { + return controlPoints.length; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public Point getControlPoint(int index) { + return controlPoints[index]; + } + + @Override + public void setControlPoint(Point point, int index) { + this.controlPoints[index].setLocation(point); + // Invalidate the body + body = null; + } + + @Override + public String getValue() { + return value; + } + + @Override + public void setValue(String value) { + this.value = value; + } + + @EditableProperty + public Orientation getOrientation() { + return orientation; + } + + public void setOrientation(Orientation orientation) { + this.orientation = orientation; + updateControlPoints(); + // Invalidate the body + body = null; + } +} diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index ae89d6c4d4ad95ba864e6d1372c7b23033c0bef8..c3a3ebbb76fa2071d7123c9c510a7e65f73325d2 100644 GIT binary patch delta 5077 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 NgVXio-c=P-{tJhPl`{YU diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index d6dde11ed79a909f31b290c1c57ffe5cd5c9b725..6c54248b62a7fa21a8f6b586c1d4035c5d37f81f 100644 GIT binary patch delta 27456 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 "Signal Transformer" added + + NEW_FEATURE + "Pilot Lamp Holder" added + NEW_FEATURE "Radial Inductor" added @@ -2276,7 +2280,7 @@ NEW_FEATURE - Ability to flip the letters and numbers for board coordinates + More flexibility with coordinate display for boards NEW_FEATURE