From 2d0fbf40a85f2435875f39476baec87fb9d3fcca Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Sun, 7 May 2017 09:56:12 +0200 Subject: [PATCH] can cap added --- .../passive/AxialElectrolyticCapacitor.java | 1 + .../passive/ElectrolyticCanCapacitor.java | 327 ++++++++++++++++++ .../passive/RadialElectrolytic.java | 3 +- diylc/diylc-swing/library/main.jar | Bin 408225 -> 415600 bytes 4 files changed, 330 insertions(+), 1 deletion(-) create mode 100644 diylc/diylc-library/src/org/diylc/components/passive/ElectrolyticCanCapacitor.java diff --git a/diylc/diylc-library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java b/diylc/diylc-library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java index 0f07af04..50f01dd9 100644 --- a/diylc/diylc-library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java +++ b/diylc/diylc-library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java @@ -52,6 +52,7 @@ public class AxialElectrolyticCapacitor extends AbstractLeadedComponent { + + private static final long serialVersionUID = 1L; + + public static Color BODY_COLOR = Color.lightGray; + public static Color BORDER_COLOR = BODY_COLOR.darker(); + public static Color PIN_COLOR = Color.decode("#00B2EE"); + public static Color PIN_BORDER_COLOR = PIN_COLOR.darker(); + public static Color LABEL_COLOR = Color.black; + public static Size PIN_SIZE = new Size(0.03d, SizeUnit.in); + public static Size PIN_SPACING = new Size(0.05d, SizeUnit.in); + public static Size BODY_DIAMETER = new Size(1d, SizeUnit.in); + + private Capacitance value = null; + private org.diylc.core.measures.Voltage voltage = null; + + private Orientation orientation = Orientation.DEFAULT; + private Point[] controlPoints = new Point[] {new Point(0, 0), new Point(0, 0), new Point(0, 0)}; + transient private Area body; + private Color bodyColor = BODY_COLOR; + private Color borderColor = BORDER_COLOR; + private Color labelColor = LABEL_COLOR; + protected Display display = Display.NAME; + private Size pinSpacing = PIN_SPACING; + private CanSections sections = CanSections._1; + private Size diameter = BODY_DIAMETER; + + public ElectrolyticCanCapacitor() { + super(); + updateControlPoints(); + } + + @EditableProperty + public Capacitance getValue() { + return value; + } + + public void setValue(Capacitance value) { + this.value = value; + } + + @EditableProperty + public org.diylc.core.measures.Voltage getVoltage() { + return voltage; + } + + public void setVoltage(org.diylc.core.measures.Voltage voltage) { + this.voltage = voltage; + } + + @EditableProperty + public CanSections getSections() { + return sections; + } + + public void setSections(CanSections sections) { + this.sections = sections; + } + + @EditableProperty + public Size getDiameter() { + return diameter; + } + + public void setDiameter(Size diameter) { + this.diameter = diameter; + } + + @EditableProperty + public Orientation getOrientation() { + return orientation; + } + + public void setOrientation(Orientation orientation) { + this.orientation = orientation; + updateControlPoints(); + // Reset body shape; + body = null; + } + + @Override + public int getControlPointCount() { + return controlPoints.length; + } + + @Override + public Point getControlPoint(int index) { + return controlPoints[index]; + } + + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public void setControlPoint(Point point, int index) { + controlPoints[index].setLocation(point); + body = null; + } + + private void updateControlPoints() { + int pinSpacing = (int) getPinSpacing().convertToPixels(); + // Update control points. + int x = controlPoints[0].x; + int y = controlPoints[0].y; + switch (orientation) { + case DEFAULT: + controlPoints[1].setLocation(x - pinSpacing, y + pinSpacing); + controlPoints[2].setLocation(x, y + 2 * pinSpacing); + break; + case _90: + controlPoints[1].setLocation(x - pinSpacing, y - pinSpacing); + controlPoints[2].setLocation(x - 2 * pinSpacing, y); + break; + case _180: + controlPoints[1].setLocation(x + pinSpacing, y - pinSpacing); + controlPoints[2].setLocation(x, y - 2 * pinSpacing); + break; + case _270: + controlPoints[1].setLocation(x + pinSpacing, y + pinSpacing); + controlPoints[2].setLocation(x + 2 * pinSpacing, y); + break; + default: + throw new RuntimeException("Unexpected orientation: " + orientation); + } + } + + public Area getBody() { + if (body == null) { + int x = (controlPoints[0].x + controlPoints[1].x + controlPoints[2].x) / 3; + int y = (controlPoints[0].y + controlPoints[1].y + controlPoints[2].y) / 3; + int bodyDiameter = getClosestOdd(getDiameter().convertToPixels()); + + body = new Area(new Ellipse2D.Double(x - bodyDiameter / 2, y - bodyDiameter / 2, bodyDiameter, bodyDiameter)); + + } + return body; + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + if (checkPointsClipped(g2d.getClip())) { + return; + } + int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2; + Area mainArea = getBody(); + 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 : bodyColor); + g2d.fill(mainArea); + g2d.setComposite(oldComposite); + Color finalBorderColor; + Theme theme = (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); + if (outlineMode) { + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : theme.getOutlineColor(); + } else { + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : borderColor; + } + g2d.setColor(finalBorderColor); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + g2d.draw(mainArea); + + for (Point point : controlPoints) { + if (!outlineMode) { + g2d.setColor(PIN_COLOR); + g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + } + g2d.setColor(outlineMode ? theme.getOutlineColor() : PIN_BORDER_COLOR); + g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + } + + // Draw label. + g2d.setFont(project.getFont()); + Color finalLabelColor; + if (outlineMode) { + finalLabelColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED + : theme.getOutlineColor(); + } else { + finalLabelColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED + : getLabelColor(); + } + g2d.setColor(finalLabelColor); + String label = ""; + label = (getDisplay() == Display.NAME) ? getName() : getValue().toString(); + if (getDisplay() == Display.NONE) { + label = ""; + } + if (getDisplay() == Display.BOTH) { + label = getName() + " " + (getValue() == null ? "" : getValue().toString()); + } + FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont()); + Rectangle2D rect = fontMetrics.getStringBounds(label, g2d); + int textHeight = (int) (rect.getHeight()); + int textWidth = (int) (rect.getWidth()); + // Center text horizontally and vertically + Rectangle bounds = mainArea.getBounds(); + int x = bounds.x + (bounds.width - textWidth) / 2; + int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent(); + g2d.drawString(label, x, y); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int margin = 2 * width / 32; + Area area = new Area(new Ellipse2D.Double(margin / 2, margin, width - 2 * margin, width - 2 * margin)); + g2d.setColor(BODY_COLOR); + g2d.fill(area); + g2d.setColor(BORDER_COLOR); + g2d.draw(area); + g2d.setColor(PIN_COLOR); + int pinSize = 2 * width / 32; + for (int i = 0; i < 3; i++) { + g2d.fillOval((i == 1 ? width * 3 / 8 : width / 2) - pinSize / 2, (height / 4) * (i + 1), pinSize, pinSize); + } + } + + @EditableProperty(name = "Body") + public Color getBodyColor() { + return bodyColor; + } + + public void setBodyColor(Color bodyColor) { + this.bodyColor = bodyColor; + } + + @EditableProperty(name = "Pin spacing") + public Size getPinSpacing() { + return pinSpacing; + } + + public void setPinSpacing(Size pinSpacing) { + this.pinSpacing = pinSpacing; + updateControlPoints(); + // Reset body shape; + body = null; + } + + @EditableProperty(name = "Border") + public Color getBorderColor() { + return borderColor; + } + + public void setBorderColor(Color borderColor) { + this.borderColor = borderColor; + } + + @EditableProperty(name = "Label") + public Color getLabelColor() { + return labelColor; + } + + public void setLabelColor(Color labelColor) { + this.labelColor = labelColor; + } + + @EditableProperty + public Display getDisplay() { + if (display == null) { + display = Display.NAME; + } + return display; + } + + public void setDisplay(Display display) { + this.display = display; + } + + public enum CanSections { + _1, _2, _3, _4, _5; + + @Override + public String toString() { + return name().substring(1); + } + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/passive/RadialElectrolytic.java b/diylc/diylc-library/src/org/diylc/components/passive/RadialElectrolytic.java index bc620c52..ca842eaa 100644 --- a/diylc/diylc-library/src/org/diylc/components/passive/RadialElectrolytic.java +++ b/diylc/diylc-library/src/org/diylc/components/passive/RadialElectrolytic.java @@ -26,7 +26,7 @@ import org.diylc.utils.Constants; @ComponentDescriptor(name = "Electrolytic Capacitor (radial)", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", - description = "Vertical mounted electrolytic capacitor, polarized or bipolar", zOrder = IDIYComponent.COMPONENT, + description = "Vertically mounted electrolytic capacitor, polarized or bipolar", zOrder = IDIYComponent.COMPONENT, transformer = SimpleComponentTransformer.class) public class RadialElectrolytic extends AbstractRadialComponent { @@ -56,6 +56,7 @@ public class RadialElectrolytic extends AbstractRadialComponent { super(); this.bodyColor = BODY_COLOR; this.borderColor = BORDER_COLOR; + this.labelColor = TICK_COLOR; } @EditableProperty(validatorClass = PositiveMeasureValidator.class) diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index a49b4897651f6762fa0971114f79026ff530a512..b7a290b82b733f6b87c02b1d051b110e8f81aa26 100644 GIT binary patch delta 21241 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 GzW` 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

KRaKr|rvaBU9bdtueKu%YOU&g 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 Q&|gpwh1yz&W?R(%0f08edH?_b