Added orientation parameter to "Ground Simbol" to allow rotation

This commit is contained in:
bancika
2020-03-26 11:36:19 +01:00
parent 8a6d98e496
commit a500ccb165
2 changed files with 52 additions and 21 deletions
@@ -21,22 +21,23 @@
*/
package org.diylc.components.misc;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import org.diylc.common.ObjectCache;
import org.diylc.components.AbstractComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.components.AbstractComponent;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
import org.diylc.core.Project;
import org.diylc.core.VisibilityPolicy;
import org.diylc.core.annotations.BomPolicy;
import org.diylc.core.annotations.ComponentDescriptor;
import org.diylc.core.annotations.EditableProperty;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
@ComponentDescriptor(name = "Ground", author = "Branislav Stojkovic", category = "Schematic Symbols",
@@ -52,8 +53,10 @@ public class GroundSymbol extends AbstractComponent<Void> {
private Point point = new Point(0, 0);
private Color color = COLOR;
private Size size = SIZE;
private GroundSymbolType type = GroundSymbolType.DEFAULT;
private GroundSymbolType type = GroundSymbolType.DEFAULT;
private Orientation orientation = Orientation.DEFAULT;
@SuppressWarnings("incomplete-switch")
@Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
@@ -61,7 +64,20 @@ public class GroundSymbol extends AbstractComponent<Void> {
g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1));
g2d.setColor(color);
int x = point.x;
int y = point.y;
int y = point.y;
switch (getOrientation()) {
case _90:
g2d.rotate(Math.PI / 2, point.x, point.y);
break;
case _180:
g2d.rotate(Math.PI, point.x, point.y);
break;
case _270:
g2d.rotate(Math.PI * 3 / 2, point.x, point.y);
break;
}
g2d.drawLine(x, y, x, y + sizePx / 6);
if (type == GroundSymbolType.DEFAULT) {
int delta = sizePx / 7;
@@ -96,6 +112,17 @@ public class GroundSymbol extends AbstractComponent<Void> {
public void setType(GroundSymbolType type) {
this.type = type;
}
@EditableProperty
public Orientation getOrientation() {
if (orientation == null)
orientation = Orientation.DEFAULT;
return orientation;
}
public void setOrientation(Orientation orientation) {
this.orientation = orientation;
}
@Override