diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/.classpath b/ diy-layout-creator --username bancika@gmail.com/diylc-core/.classpath
index c0ec8be1..1d2aca0d 100644
--- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/.classpath
+++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/.classpath
@@ -8,6 +8,6 @@
-
+
diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/diylc-core/library/main.jar
index 7c39bd34..e439b308 100644
Binary files a/ diy-layout-creator --username bancika@gmail.com/diylc-core/library/main.jar and b/ diy-layout-creator --username bancika@gmail.com/diylc-core/library/main.jar differ
diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/.classpath b/ diy-layout-creator --username bancika@gmail.com/diylc-library/.classpath
index 19090f8d..dc0adbd6 100644
--- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/.classpath
+++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/.classpath
@@ -5,6 +5,6 @@
-
+
diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/passive/PotentiometerSymbol.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/passive/PotentiometerSymbol.java
index 92c036bc..1eb69a46 100644
--- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/passive/PotentiometerSymbol.java
+++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/passive/PotentiometerSymbol.java
@@ -1,18 +1,26 @@
package org.diylc.components.passive;
+import java.awt.Color;
+import java.awt.FontMetrics;
import java.awt.Graphics2D;
+import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
+import java.awt.geom.Rectangle2D;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.components.semiconductors.AbstractTransistorSymbol;
-@ComponentDescriptor(name = "Trimmer Symbol", author = "MCbx", category = "Schematics", instanceNamePrefix = " VR", description = "Trimmer (potentiometer) symbol", stretchable = false, zOrder = IDIYComponent.COMPONENT, rotatable = true)
+@ComponentDescriptor(name = "Potentiometer Symbol", author = "MCbx", category = "Schematics", instanceNamePrefix = " VR", description = "Potentiometer symbol", stretchable = false, zOrder = IDIYComponent.COMPONENT, rotatable = true)
public class PotentiometerSymbol extends AbstractTransistorSymbol {
private static final long serialVersionUID = 1L;
+ public PotentiometerSymbol() {
+ this.color = Color.blue;
+ }
+
public Shape[] getBody() {
if (body == null) {
body = new Shape[3];
@@ -41,30 +49,65 @@ public class PotentiometerSymbol extends AbstractTransistorSymbol {
polyline.lineTo(x + pinSpacing * 2, (y - pinSpacing * 2) + 7 * pinSpacing / 2);
polyline.lineTo(x + pinSpacing * 2, y + pinSpacing * 2);
polyline.moveTo(x, y);
- polyline.lineTo(x + pinSpacing * 2 - pinSpacing / 4, y);
- polyline.lineTo(x + pinSpacing * 2 - 2 * pinSpacing / 3, y - pinSpacing / 2);
- polyline.moveTo(x + pinSpacing * 2 - pinSpacing / 4, y);
- polyline.lineTo(x + pinSpacing * 2 - 2 * pinSpacing / 3, y + pinSpacing / 2);
-
- body[0] = polyline;
- polyline = new GeneralPath();
+ polyline.lineTo(x + pinSpacing * 2 - pinSpacing / 2, y);
body[1] = polyline;
+ polyline = new GeneralPath();
+
+ body[0] = polyline;
+
+ polyline = new GeneralPath();
+ polyline.moveTo(x + pinSpacing * 2 - pinSpacing / 3, y);
+ polyline.lineTo(x + pinSpacing * 2 - pinSpacing * 2 / 3, y - pinSpacing / 3);
+ polyline.lineTo(x + pinSpacing * 2 - pinSpacing * 2 / 3, y + pinSpacing / 3);
+ polyline.lineTo(x + pinSpacing * 2 - pinSpacing / 3, y);
body[2] = polyline;
}
return body;
}
+ @Override
+ protected int getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
+ int pinSpacing = (int) PIN_SPACING.convertToPixels();
+ if (controlPoints[0].x < controlPoints[1].x && controlPoints[0].x < controlPoints[2].x)
+ return controlPoints[1].x + pinSpacing / 3;
+ if (controlPoints[0].y < controlPoints[1].y && controlPoints[0].y < controlPoints[2].y)
+ return controlPoints[0].x - (int) (textRect.getWidth() / 2);
+ if (controlPoints[0].x > controlPoints[1].x && controlPoints[0].x > controlPoints[2].x)
+ return controlPoints[1].x - pinSpacing / 2 - (int)textRect.getWidth();
+ if (controlPoints[0].y > controlPoints[1].y && controlPoints[0].y > controlPoints[2].y)
+ return controlPoints[0].x - (int) (textRect.getWidth() / 2);
+ return 2 * ((int) (shapeRect.getWidth() - textRect.getWidth()) / 2 + (int) shapeRect.getX());
+ }
+
+ @Override
+ protected int getLabelY(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
+ int pinSpacing = (int) PIN_SPACING.convertToPixels();
+ if (controlPoints[0].x < controlPoints[1].x && controlPoints[0].x < controlPoints[2].x)
+ return controlPoints[0].y;
+ if (controlPoints[0].y < controlPoints[1].y && controlPoints[0].y < controlPoints[2].y)
+ return controlPoints[1].y + pinSpacing * 2 / 3;
+ if (controlPoints[0].x > controlPoints[1].x && controlPoints[0].x > controlPoints[2].x)
+ return controlPoints[0].y;
+ if (controlPoints[0].y > controlPoints[1].y && controlPoints[0].y > controlPoints[2].y)
+ return controlPoints[1].y - pinSpacing * 2 / 3;
+ return 2 * ((int) (shapeRect.getHeight() - textRect.getHeight()) / 2 + fontMetrics.getAscent()
+ + (int) shapeRect.getY());
+ }
+
@Override
public void drawIcon(Graphics2D g2d, int width, int height) {
g2d.rotate(-Math.PI / 4, width / 2, height / 2);
- g2d.setColor(COLOR);
+ g2d.setColor(Color.blue);
g2d.drawLine(0, height / 2, 4, height / 2);
g2d.drawLine(width - 4, height / 2, width, height / 2);
g2d.drawPolyline(new int[] { 4, 6, 10, 14, 18, 22, 26, 28 }, new int[] { height / 2, height / 2 + 2,
height / 2 - 2, height / 2 + 2, height / 2 - 2, height / 2 + 2, height / 2 - 2, height / 2 }, 8);
- g2d.drawPolyline(new int[] { width / 2, width / 2 - 2, width / 2 - 4, width / 2 + 2, width / 2 - 2 },
- new int[] { height, height / 2 + 2, height / 2 + 6, height / 2 + 6, height / 2 + 2 }, 5);
+
+ g2d.drawPolyline(new int[] { width / 2, width / 2 - 2 }, new int[] { height, height / 2 + 2 }, 2);
+
+ g2d.fill(new Polygon(new int[] { width / 2 - 4, width / 2 + 2, width / 2 - 2 },
+ new int[] { height / 2 + 6, height / 2 + 6, height / 2 + 2 }, 3));
}
}
\ No newline at end of file
diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java
index f7d718e4..d09a6476 100644
--- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java
+++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java
@@ -1,10 +1,13 @@
package org.diylc.components.semiconductors;
import java.awt.Color;
+import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Point;
+import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.Display;
@@ -35,7 +38,7 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent
protected Point[] controlPoints = new Point[] { new Point(0, 0), new Point(0, 0),
new Point(0, 0) };
protected Color color = COLOR;
- protected SymbolFlipping flipping = FLIPPING;
+ protected SymbolFlipping flip = FLIPPING;
protected Display display = Display.NAME;
transient protected Shape[] body;
@@ -90,7 +93,7 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent
AffineTransform old = g2d.getTransform();
g2d.rotate(Math.toRadians(rotation),controlPoints[0].x,controlPoints[0].y);
- if (this.flipping==SymbolFlipping.Y){
+ if (this.flip==SymbolFlipping.Y){
g2d.translate(0,controlPoints[0].y);
g2d.scale(1, -1);
g2d.translate(0, -1*controlPoints[0].y);
@@ -129,8 +132,13 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent
if (display==Display.BOTH) {
label=getName()+" "+(getValue() == null ? "" : getValue().toString());
}
+
+ FontMetrics fontMetrics = g2d.getFontMetrics();
+ Rectangle2D textRect = fontMetrics.getStringBounds(label, g2d);
+ Rectangle shapeRect = body[0].getBounds().union(body[1].getBounds()).union(body[2].getBounds());
+
drawCenteredText(g2d, label,
- x + pinSpacing * 2, y, HorizontalAlignment.LEFT, VerticalAlignment.CENTER);
+ getLabelX(shapeRect, textRect, fontMetrics, outlineMode), getLabelY(shapeRect, textRect, fontMetrics, outlineMode), HorizontalAlignment.LEFT, VerticalAlignment.CENTER);
}
@Override
@@ -142,6 +150,14 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent
public int getControlPointCount() {
return controlPoints.length;
}
+
+ protected int getLabelX(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
+ return controlPoints[0].x + (int) PIN_SPACING.convertToPixels() * 2;
+ }
+
+ protected int getLabelY(Rectangle2D shapeRect, Rectangle2D textRect, FontMetrics fontMetrics, boolean outlineMode) {
+ return controlPoints[0].y;
+ }
private void updateControlPoints() {
int pinSpacing = (int) PIN_SPACING.convertToPixels();
@@ -185,12 +201,12 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent
}
@EditableProperty
- public SymbolFlipping getFlipping() {
- return flipping;
+ public SymbolFlipping getFlip() {
+ return flip;
}
- public void setFlipping(SymbolFlipping flipping) {
- this.flipping = flipping;
+ public void setFlip(SymbolFlipping flip) {
+ this.flip = flip;
}
@EditableProperty
diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/SymbolFlipping.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/SymbolFlipping.java
index 1b77e82a..d4b146a5 100644
--- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/SymbolFlipping.java
+++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/SymbolFlipping.java
@@ -6,6 +6,13 @@ public enum SymbolFlipping {
@Override
public String toString() {
- return name();
+ switch (this) {
+ case Y:
+ return "Y-axis";
+ case NONE:
+ return "None";
+ default:
+ return name();
+ }
}
}
\ No newline at end of file
diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/.classpath b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/.classpath
index b7926aca..46ccb2bb 100644
--- a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/.classpath
+++ b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/.classpath
@@ -15,6 +15,6 @@
-
+
diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/DIYLCStarter.launch b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/DIYLCStarter.launch
index 23679b63..8a6de7d1 100644
--- a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/DIYLCStarter.launch
+++ b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/DIYLCStarter.launch
@@ -9,6 +9,7 @@
+
diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/library/main.jar
index 7c39bd34..e439b308 100644
Binary files a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/library/main.jar and b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/library/main.jar differ
diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/update.xml b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/update.xml
index eef1fd35..57ea2952 100644
--- a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/update.xml
+++ b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/update.xml
@@ -1296,6 +1296,22 @@
http://code.google.com/p/diy-layout-creator/downloads/list
+
+
+
+ 3
+ 30
+ 0
+
+ 2016-04-25 20:00:00.000 CET
+
+
+
+ IMPROVEMENT
+ Improved potentiometer symbol appearance
+
+
+ http://code.google.com/p/diy-layout-creator/downloads/list
\ No newline at end of file