From e208ad936016e871412d19848ea15db54f8e8b52 Mon Sep 17 00:00:00 2001 From: Gintas Grigelionis Date: Wed, 14 Nov 2018 22:32:21 +0100 Subject: [PATCH] Implement ArcType as suggested --- .../tools/ant/types/optional/imageio/Arc.java | 65 +++++++++++++++---- 1 file changed, 52 insertions(+), 13 deletions(-) diff --git a/src/main/org/apache/tools/ant/types/optional/imageio/Arc.java b/src/main/org/apache/tools/ant/types/optional/imageio/Arc.java index 0fdbaf7dc..be7931737 100644 --- a/src/main/org/apache/tools/ant/types/optional/imageio/Arc.java +++ b/src/main/org/apache/tools/ant/types/optional/imageio/Arc.java @@ -17,10 +17,14 @@ */ package org.apache.tools.ant.types.optional.imageio; +import org.apache.tools.ant.types.EnumeratedAttribute; + import java.awt.BasicStroke; import java.awt.Graphics2D; import java.awt.geom.Arc2D; import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.List; /** * Draw an arc. @@ -28,7 +32,7 @@ import java.awt.image.BufferedImage; public class Arc extends BasicShape implements DrawOperation { private int start = 0; private int stop = 0; - private int type = Arc2D.OPEN; + private ArcType type = ArcType.getDefault(); /** * Set the start of the arc. @@ -48,17 +52,10 @@ public class Arc extends BasicShape implements DrawOperation { /** * Set the type of arc. - * @param strType the type to use - open, pie or chord. - * @todo refactor using an EnumeratedAttribute + * @param arcType the type to use - open, pie or chord. */ - public void setType(String strType) { - if ("open".equalsIgnoreCase(strType)) { - type = Arc2D.OPEN; - } else if ("pie".equalsIgnoreCase(strType)) { - type = Arc2D.PIE; - } else if ("chord".equalsIgnoreCase(strType)) { - type = Arc2D.CHORD; - } + public void setType(ArcType arcType) { + type = arcType; } /** {@inheritDoc}. */ @@ -74,13 +71,13 @@ public class Arc extends BasicShape implements DrawOperation { graphics.setColor(ColorMapper.getColorByName(stroke)); graphics.setStroke(bStroke); graphics.draw(new Arc2D.Double(strokeWidth, strokeWidth, width, - height, start, stop, type)); + height, start, stop, type.getIndex())); } if (!"transparent".equalsIgnoreCase(fill)) { graphics.setColor(ColorMapper.getColorByName(fill)); graphics.fill(new Arc2D.Double(strokeWidth, strokeWidth, - width, height, start, stop, type)); + width, height, start, stop, type.getIndex())); } for (ImageOperation instr : instructions) { @@ -94,4 +91,46 @@ public class Arc extends BasicShape implements DrawOperation { } return bi; } + + public static class ArcType extends EnumeratedAttribute { + + private static final List VALUES = new ArrayList<>(); + + static { + VALUES.add(Arc2D.OPEN, "open"); + VALUES.add(Arc2D.CHORD, "chord"); + VALUES.add(Arc2D.PIE, "pie"); + } + + /** + * Constructor + */ + public ArcType() { + } + + /** + * Constructor using a string. + * @param value the value of the attribute + */ + public ArcType(String value) { + setValue(value); + } + + /** + * Get the default ArcType value. + * @return the default value. + */ + public static ArcType getDefault() { + return new ArcType(VALUES.get(0)); + } + + /** + * @see EnumeratedAttribute#getValues() + * {@inheritDoc}. + */ + @Override + public String[] getValues() { + return VALUES.toArray(new String[0]); + } + } }