From 6d2e876381ddc23cc1ac5464837fe1871b687bf3 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Fri, 8 Feb 2019 23:42:09 +0100 Subject: [PATCH] Better rendering of TO-3 transformer package --- .../semiconductors/TransistorTO3.java | 123 +++++++----------- diylc/diylc-swing/library/main.jar | Bin 590695 -> 590590 bytes diylc/diylc-swing/update.xml | 6 +- 3 files changed, 54 insertions(+), 75 deletions(-) diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO3.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO3.java index 9f7808f3..5cd24d7d 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO3.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/TransistorTO3.java @@ -21,38 +21,39 @@ */ package org.diylc.components.semiconductors; -import java.awt.AlphaComposite; -import java.awt.Color; -import java.awt.Composite; -import java.awt.FontMetrics; -import java.awt.Graphics2D; -import java.awt.Point; -import java.awt.Polygon; -import java.awt.Rectangle; -import java.awt.RenderingHints; -import java.awt.geom.AffineTransform; -import java.awt.geom.Area; -import java.awt.geom.Ellipse2D; -import java.awt.geom.Rectangle2D; - -import org.diylc.appframework.miscutils.ConfigurationManager; -import org.diylc.common.Display; -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.annotations.KeywordPolicy; -import org.diylc.core.measures.Size; -import org.diylc.core.measures.SizeUnit; -import org.diylc.utils.Constants; +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Composite; +import java.awt.FontMetrics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.RenderingHints; +import java.awt.geom.AffineTransform; +import java.awt.geom.Area; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; + +import org.diylc.appframework.miscutils.ConfigurationManager; +import org.diylc.awt.TwoCircleTangent; +import org.diylc.common.Display; +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.annotations.KeywordPolicy; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; @ComponentDescriptor(name = "Transistor (TO-3)", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "Q", description = "Transistor with large metal body", stretchable = false, @@ -189,36 +190,16 @@ public class TransistorTO3 extends AbstractTransparentComponent { int innerDiameter = getClosestOdd(INNER_DIAMETER.convertToPixels()); int smallDiameter = getClosestOdd(SMALL_DIAMETER.convertToPixels()); int holeDistance = getClosestOdd(HOLE_DISTANCE.convertToPixels()); - int holeSize = getClosestOdd(HOLE_SIZE.convertToPixels()); + int holeSize = getClosestOdd(HOLE_SIZE.convertToPixels()); + + TwoCircleTangent left = new TwoCircleTangent(new Point2D.Double(x, y), new Point2D.Double(x - holeDistance / 2, y), largeDiameter / 2, smallDiameter / 2); + TwoCircleTangent right = new TwoCircleTangent(new Point2D.Double(x, y), new Point2D.Double(x + holeDistance / 2, y), largeDiameter / 2, smallDiameter / 2); + + body[0] = left; + body[0].add(right); - body[0] = - new Area(new Ellipse2D.Double(x - largeDiameter / 2, y - largeDiameter / 2, largeDiameter, largeDiameter)); - - int[] xPoints = - new int[] {x + (int) (Math.cos(Math.PI / 4) * largeDiameter / 2), - x + holeDistance / 2 + (int) (Math.cos(Math.PI / 4) * smallDiameter / 2), - x + holeDistance / 2 + (int) (Math.cos(Math.PI / 4) * smallDiameter / 2), - x + (int) (Math.cos(Math.PI / 4) * largeDiameter / 2), - x - (int) (Math.cos(Math.PI / 4) * largeDiameter / 2), - x - holeDistance / 2 - (int) (Math.cos(Math.PI / 4) * smallDiameter / 2), - x - holeDistance / 2 - (int) (Math.cos(Math.PI / 4) * smallDiameter / 2), - x - (int) (Math.cos(Math.PI / 4) * largeDiameter / 2)}; - int[] yPoints = - new int[] {y - (int) (Math.sin(Math.PI / 4) * largeDiameter / 2), - y - (int) (Math.sin(Math.PI / 4) * smallDiameter / 2), - y + (int) (Math.sin(Math.PI / 4) * smallDiameter / 2), - y + (int) (Math.sin(Math.PI / 4) * largeDiameter / 2), - y + (int) (Math.sin(Math.PI / 4) * largeDiameter / 2), - y + (int) (Math.sin(Math.PI / 4) * smallDiameter / 2), - y - (int) (Math.sin(Math.PI / 4) * smallDiameter / 2), - y - (int) (Math.sin(Math.PI / 4) * largeDiameter / 2)}; - body[0].add(new Area(new Polygon(xPoints, yPoints, xPoints.length))); - body[0].add(new Area(new Ellipse2D.Double(x - holeDistance / 2 - smallDiameter / 2, y - smallDiameter / 2, - smallDiameter, smallDiameter))); body[0].subtract(new Area(new Ellipse2D.Double(x - holeDistance / 2 - holeSize / 2, y - holeSize / 2, holeSize, holeSize))); - body[0].add(new Area(new Ellipse2D.Double(x + holeDistance / 2 - smallDiameter / 2, y - smallDiameter / 2, - smallDiameter, smallDiameter))); body[0].subtract(new Area(new Ellipse2D.Double(x + holeDistance / 2 - holeSize / 2, y - holeSize / 2, holeSize, holeSize))); @@ -323,20 +304,14 @@ public class TransistorTO3 extends AbstractTransparentComponent { @Override public void drawIcon(Graphics2D g2d, int width, int height) { g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); - int sizeLarge = getClosestOdd(width * 3d / 4); - int sizeInner = getClosestOdd(width * 5d / 10); - int sizeSmall = getClosestOdd(width / 3d); - int hole = 4 * width / 32; - Area area = new Area(new Ellipse2D.Double((width - sizeLarge) / 2, (height - sizeLarge) / 2, sizeLarge, sizeLarge)); - -// Polygon p = -// new Polygon(new int[] {(width - sizeSmall) / 2, (width + sizeSmall) / 2, (width + sizeLarge) / 2, -// (width + sizeSmall) / 2, (width - sizeSmall) / 2, (width - sizeLarge) / 2}, new int[] {height / 8, -// height / 8, height / 2, height * 7 / 8, height * 7 / 8, height / 2}, 6); -// area.add(new Area(p)); - area.add(new Area(new Ellipse2D.Double((width - sizeSmall) / 2, height / 8 - sizeSmall / 2, sizeSmall, sizeSmall))); - area.add(new Area(new Ellipse2D.Double((width - sizeSmall) / 2, height * 7 / 8 - sizeSmall / 2, sizeSmall, - sizeSmall))); + int largeR = getClosestOdd(width * 3d / 8); + int smallR = getClosestOdd(width / 6d); + int innerD = getClosestOdd(width / 2d); + int hole = 4 * width / 32; + + Area area = new TwoCircleTangent(new Point2D.Double(width * 0.5, height * 0.5), new Point2D.Double(width / 2, height / 8d), largeR, smallR); + area.add((Area)new TwoCircleTangent(new Point2D.Double(width * 0.5, height * 0.5), new Point2D.Double(width / 2, height * 7 / 8d), largeR, smallR)); + area.subtract(new Area(new Ellipse2D.Double((width - hole) / 2, height / 8 - hole / 2, hole, hole))); area.subtract(new Area(new Ellipse2D.Double((width - hole) / 2, height * 7 / 8 - hole / 2, hole, hole))); area.transform(AffineTransform.getRotateInstance(Math.PI / 4, width / 2, height / 2)); @@ -344,7 +319,7 @@ public class TransistorTO3 extends AbstractTransparentComponent { g2d.fill(area); g2d.setColor(BORDER_COLOR); g2d.draw(area); - g2d.drawOval((width - sizeInner) / 2, (height - sizeInner) / 2, sizeInner, sizeInner); + g2d.drawOval((width - innerD) / 2, (height - innerD) / 2, innerD, innerD); } @EditableProperty(name = "Body") diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index b0cc4c7862484bca3f7c670e1735e6b581ace913..5755f26dd2c1055ee98b92fe28c28ac40bb51d10 100644 GIT binary patch delta 12237 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 delta 12512 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 diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 5d0a4d0f..17bff4c2 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -2404,7 +2404,7 @@ NEW_FEATURE - Show mouse position coordiantes in the status bar + Show mouse cursor coordiantes in the status bar NEW_FEATURE @@ -2434,6 +2434,10 @@ IMPROVEMENT Better rendering of guitar pickups when dragging and in outline mode + + IMPROVEMENT + Better rendering of TO-3 transformer package + BUG_FIX Drag&Drop from the tree sometimes picks up a wrong component type