Commit 22136e1c authored by Nico Mack's avatar Nico Mack

Fixed a minor bug in buildFromProperties method

parent 9ade8ff7
...@@ -57,6 +57,7 @@ public class Sector extends SelectableCorona { ...@@ -57,6 +57,7 @@ public class Sector extends SelectableCorona {
protected boolean radialLayout; protected boolean radialLayout;
protected TouchManager touchManager; protected TouchManager touchManager;
protected FontRenderContext renderingContext = new FontRenderContext(null, true, true);
// *************************************************************************** // ***************************************************************************
// * Constants * // * Constants *
...@@ -141,11 +142,17 @@ public class Sector extends SelectableCorona { ...@@ -141,11 +142,17 @@ public class Sector extends SelectableCorona {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
private int getSpan() {
return arcSpan - gap;
}
// ---------------------------------------------------------------------------
private void buildSectorFromProperties() { private void buildSectorFromProperties() {
size = 2 * outerRadius; size = 2 * outerRadius;
double angle = this.getAngle(); double angle = this.getAngle();
arcSpan -= gap; int span = getSpan();
// Java Arc3D start angle and extend are expressed in counter clockwise rotation. Since // Java Arc3D start angle and extend are expressed in counter clockwise rotation. Since
// TULIP follows the clockwise TUIO convention, we need to convert both startAngle and // TULIP follows the clockwise TUIO convention, we need to convert both startAngle and
...@@ -153,7 +160,7 @@ public class Sector extends SelectableCorona { ...@@ -153,7 +160,7 @@ public class Sector extends SelectableCorona {
angle = (AngleUtils.THREE_SIXTY - angle); angle = (AngleUtils.THREE_SIXTY - angle);
Area pie = new Area(new Arc2D.Double(-outerRadius, -outerRadius, size, size, angle, -arcSpan, Arc2D.PIE)); Area pie = new Area(new Arc2D.Double(-outerRadius, -outerRadius, size, size, angle, -span, Arc2D.PIE));
Area background = new Area(new Ellipse2D.Double(-outerRadius, -outerRadius, size, size)); Area background = new Area(new Ellipse2D.Double(-outerRadius, -outerRadius, size, size));
Area hole = new Area(new Ellipse2D.Double(-innerRadius, -innerRadius, innerRadius * 2, innerRadius * 2)); Area hole = new Area(new Ellipse2D.Double(-innerRadius, -innerRadius, innerRadius * 2, innerRadius * 2));
...@@ -173,29 +180,29 @@ public class Sector extends SelectableCorona { ...@@ -173,29 +180,29 @@ public class Sector extends SelectableCorona {
if ((newLabel != null) && (newLabel.length() > 0)) { if ((newLabel != null) && (newLabel.length() > 0)) {
boolean flipped = false; boolean flipped = false;
double angle = this.getAngle(); double angle = this.getAngle();
int span = getSpan();
int quadrant = AngleUtils.getQuadrant(Math.toRadians(angle)); int quadrant = AngleUtils.getQuadrant(Math.toRadians(angle));
angle = AngleUtils.THREE_SIXTY - angle; angle = AngleUtils.THREE_SIXTY - angle;
FontRenderContext renderingContext = new FontRenderContext(null, true, true);
LineMetrics metrics = textFont.getLineMetrics(newLabel, renderingContext); LineMetrics metrics = textFont.getLineMetrics(newLabel, renderingContext);
Shape labelPath; Shape labelPath;
if (!radialLayout) { if (!radialLayout) {
flipped = (quadrant == 2) || (quadrant == 3); flipped = (quadrant == 2) || (quadrant == 3);
double labelRadius = outerRadius - metrics.getAscent() / 2; double labelRadius = outerRadius - metrics.getAscent() / 2;
double start = (!flipped) ? angle - arcSpan : angle; double start = (!flipped) ? angle - span : angle;
int length = (!flipped) ? arcSpan : -arcSpan; int length = (!flipped) ? span : -span;
Rectangle2D bounds = new Rectangle2D.Double(centre.x - labelRadius, Rectangle2D bounds = new Rectangle2D.Double(-labelRadius,
centre.y - labelRadius, -labelRadius,
(2 * labelRadius), (2 * labelRadius),
(2 * labelRadius)); (2 * labelRadius));
labelPath = new Arc2D.Double(bounds, start, length, Arc2D.OPEN); labelPath = new Arc2D.Double(bounds, start, length, Arc2D.OPEN);
} else { } else {
angle = AngleUtils.moduloThreeSixty(startAngle + ((double) arcSpan / 2)); angle = AngleUtils.moduloThreeSixty(startAngle + ((double) span / 2));
flipped = (quadrant == 1) || (quadrant == 2); flipped = (quadrant == 1) || (quadrant == 2);
double lineHeight = metrics.getAscent() / 2; double lineHeight = metrics.getAscent() / 2;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment