ReduceGrayscaleDialog: replaced constants with a DitheringMethod enum.
1.1 --- a/net/sourceforge/jiu/gui/awt/AwtOperationProcessor.java Sat Aug 08 22:30:03 2009 +0200
1.2 +++ b/net/sourceforge/jiu/gui/awt/AwtOperationProcessor.java Sat Aug 08 22:35:08 2009 +0200
1.3 @@ -24,6 +24,7 @@
1.4 import net.sourceforge.jiu.color.reduction.*;
1.5 import net.sourceforge.jiu.gui.awt.dialogs.*;
1.6 import net.sourceforge.jiu.gui.awt.dialogs.MapToArbitraryPaletteDialog.PaletteType;
1.7 +import net.sourceforge.jiu.gui.awt.dialogs.ReduceGrayscaleDialog.DitheringMethod;
1.8 import net.sourceforge.jiu.codecs.*;
1.9 import net.sourceforge.jiu.data.*;
1.10 import net.sourceforge.jiu.filters.*;
1.11 @@ -409,7 +410,7 @@
1.12 PixelImage image = state.getImage();
1.13 int maxBits = image.getBitsPerPixel() - 1;
1.14 ReduceGrayscaleDialog rgd = new ReduceGrayscaleDialog(frame, strings, 1, maxBits,
1.15 - ReduceGrayscaleDialog.TYPE_FLOYD_STEINBERG_ERROR_DIFFUSION);
1.16 + DitheringMethod.FLOYD_STEINBERG_ERROR_DIFFUSION);
1.17 rgd.setVisible(true);
1.18 if (!rgd.hasPressedOk())
1.19 {
1.20 @@ -419,7 +420,7 @@
1.21 ImageToImageOperation op = null;
1.22 switch (rgd.getDitheringMethod())
1.23 {
1.24 - case(ReduceGrayscaleDialog.TYPE_DITHERING_NONE):
1.25 + case NONE:
1.26 {
1.27 ReduceShadesOfGray rsog;
1.28 rsog = new ReduceShadesOfGray();
1.29 @@ -427,14 +428,14 @@
1.30 op = rsog;
1.31 break;
1.32 }
1.33 - case(ReduceGrayscaleDialog.TYPE_ORDERED_DITHERING):
1.34 + case ORDERED:
1.35 {
1.36 OrderedDither od = new OrderedDither();
1.37 od.setOutputBits(numBits);
1.38 op = od;
1.39 break;
1.40 }
1.41 - case(ReduceGrayscaleDialog.TYPE_FLOYD_STEINBERG_ERROR_DIFFUSION):
1.42 + case FLOYD_STEINBERG_ERROR_DIFFUSION:
1.43 {
1.44 ErrorDiffusionDithering ed = new ErrorDiffusionDithering();
1.45 ed.setTemplateType(ErrorDiffusionType.FLOYD_STEINBERG);
1.46 @@ -442,7 +443,7 @@
1.47 op = ed;
1.48 break;
1.49 }
1.50 - case(ReduceGrayscaleDialog.TYPE_STUCKI_ERROR_DIFFUSION):
1.51 + case STUCKI_ERROR_DIFFUSION:
1.52 {
1.53 ErrorDiffusionDithering ed = new ErrorDiffusionDithering();
1.54 ed.setTemplateType(ErrorDiffusionType.STUCKI);
1.55 @@ -450,7 +451,7 @@
1.56 op = ed;
1.57 break;
1.58 }
1.59 - case(ReduceGrayscaleDialog.TYPE_BURKES_ERROR_DIFFUSION):
1.60 + case BURKES_ERROR_DIFFUSION:
1.61 {
1.62 ErrorDiffusionDithering ed = new ErrorDiffusionDithering();
1.63 ed.setTemplateType(ErrorDiffusionType.BURKES);
1.64 @@ -458,7 +459,7 @@
1.65 op = ed;
1.66 break;
1.67 }
1.68 - case(ReduceGrayscaleDialog.TYPE_SIERRA_ERROR_DIFFUSION):
1.69 + case SIERRA_ERROR_DIFFUSION:
1.70 {
1.71 ErrorDiffusionDithering ed = new ErrorDiffusionDithering();
1.72 ed.setTemplateType(ErrorDiffusionType.SIERRA);
1.73 @@ -466,7 +467,7 @@
1.74 op = ed;
1.75 break;
1.76 }
1.77 - case(ReduceGrayscaleDialog.TYPE_JARVIS_JUDICE_NINKE_ERROR_DIFFUSION):
1.78 + case JARVIS_JUDICE_NINKE_ERROR_DIFFUSION:
1.79 {
1.80 ErrorDiffusionDithering ed = new ErrorDiffusionDithering();
1.81 ed.setTemplateType(ErrorDiffusionType.JARVIS_JUDICE_NINKE);
1.82 @@ -474,7 +475,7 @@
1.83 op = ed;
1.84 break;
1.85 }
1.86 - case(ReduceGrayscaleDialog.TYPE_STEVENSON_ARCE_ERROR_DIFFUSION):
1.87 + case STEVENSON_ARCE_ERROR_DIFFUSION:
1.88 {
1.89 ErrorDiffusionDithering ed = new ErrorDiffusionDithering();
1.90 ed.setTemplateType(ErrorDiffusionType.STEVENSON_ARCE);
2.1 --- a/net/sourceforge/jiu/gui/awt/dialogs/ReduceGrayscaleDialog.java Sat Aug 08 22:30:03 2009 +0200
2.2 +++ b/net/sourceforge/jiu/gui/awt/dialogs/ReduceGrayscaleDialog.java Sat Aug 08 22:35:08 2009 +0200
2.3 @@ -23,7 +23,10 @@
2.4 import java.awt.event.ActionListener;
2.5 import java.awt.event.AdjustmentEvent;
2.6 import java.awt.event.AdjustmentListener;
2.7 +
2.8 +import net.sourceforge.jiu.apps.StringIndexConstants;
2.9 import net.sourceforge.jiu.apps.Strings;
2.10 +import net.sourceforge.jiu.util.EnumHelper;
2.11
2.12 /**
2.13 * A dialog to enter the parameters for a grayscale reduction operation.
2.14 @@ -31,37 +34,37 @@
2.15 */
2.16 public class ReduceGrayscaleDialog extends Dialog implements ActionListener, AdjustmentListener
2.17 {
2.18 - public static final int TYPE_DITHERING_NONE = 0;
2.19 - public static final int TYPE_ORDERED_DITHERING = 1;
2.20 - public static final int TYPE_FLOYD_STEINBERG_ERROR_DIFFUSION = 2;
2.21 - public static final int TYPE_STUCKI_ERROR_DIFFUSION = 3;
2.22 - public static final int TYPE_BURKES_ERROR_DIFFUSION = 4;
2.23 - public static final int TYPE_SIERRA_ERROR_DIFFUSION = 5;
2.24 - public static final int TYPE_JARVIS_JUDICE_NINKE_ERROR_DIFFUSION = 6;
2.25 - public static final int TYPE_STEVENSON_ARCE_ERROR_DIFFUSION = 7;
2.26 - public final int[][] DITHERING_METHODS =
2.27 + /**
2.28 + * Enumerates the possible dithering methods.
2.29 + */
2.30 + public enum DitheringMethod
2.31 {
2.32 + NONE (Strings.DITHERING_NONE),
2.33 + ORDERED (Strings.ORDERED_DITHERING),
2.34 + FLOYD_STEINBERG_ERROR_DIFFUSION (Strings.FLOYD_STEINBERG_ERROR_DIFFUSION),
2.35 + STUCKI_ERROR_DIFFUSION (Strings.STUCKI_ERROR_DIFFUSION),
2.36 + BURKES_ERROR_DIFFUSION (Strings.BURKES_ERROR_DIFFUSION),
2.37 + SIERRA_ERROR_DIFFUSION (Strings.SIERRA_ERROR_DIFFUSION),
2.38 + JARVIS_JUDICE_NINKE_ERROR_DIFFUSION (Strings.JARVIS_JUDICE_NINKE_ERROR_DIFFUSION),
2.39 + STEVENSON_ARCE_ERROR_DIFFUSION (Strings.STEVENSON_ARCE_ERROR_DIFFUSION);
2.40 +
2.41 + private int stringConstant;
2.42 +
2.43 + private DitheringMethod(int stringConstant)
2.44 {
2.45 - TYPE_DITHERING_NONE,
2.46 - TYPE_ORDERED_DITHERING,
2.47 - TYPE_FLOYD_STEINBERG_ERROR_DIFFUSION,
2.48 - TYPE_STUCKI_ERROR_DIFFUSION,
2.49 - TYPE_BURKES_ERROR_DIFFUSION,
2.50 - TYPE_SIERRA_ERROR_DIFFUSION,
2.51 - TYPE_JARVIS_JUDICE_NINKE_ERROR_DIFFUSION,
2.52 - TYPE_STEVENSON_ARCE_ERROR_DIFFUSION
2.53 - },
2.54 + this.stringConstant = stringConstant;
2.55 + }
2.56 +
2.57 + /**
2.58 + * Get a string resource index which describes the enum value.
2.59 + * @return a {@link StringIndexConstants} value.
2.60 + */
2.61 + public int getStringConstant()
2.62 {
2.63 - Strings.DITHERING_NONE,
2.64 - Strings.ORDERED_DITHERING,
2.65 - Strings.FLOYD_STEINBERG_ERROR_DIFFUSION,
2.66 - Strings.STUCKI_ERROR_DIFFUSION,
2.67 - Strings.BURKES_ERROR_DIFFUSION,
2.68 - Strings.SIERRA_ERROR_DIFFUSION,
2.69 - Strings.JARVIS_JUDICE_NINKE_ERROR_DIFFUSION,
2.70 - Strings.STEVENSON_ARCE_ERROR_DIFFUSION
2.71 + return stringConstant;
2.72 }
2.73 - };
2.74 + }
2.75 +
2.76 private Strings strings;
2.77 private Button ok;
2.78 private Button cancel;
2.79 @@ -80,7 +83,7 @@
2.80 * @param ditheringMethodSelection initial selection of dithering method
2.81 */
2.82 public ReduceGrayscaleDialog(Frame owner, Strings strings, int bits, int maxBits,
2.83 - int ditheringMethodSelection)
2.84 + DitheringMethod ditheringMethodSelection)
2.85 {
2.86 super(owner, strings.get(Strings.REDUCE_NUMBER_OF_SHADES_OF_GRAY), true);
2.87 pressedOk = false;
2.88 @@ -100,12 +103,12 @@
2.89
2.90 panel.add(new Label(strings.get(Strings.DITHERING_METHOD)));
2.91 ditheringMethod = new Choice();
2.92 - for (int i = 0; i < DITHERING_METHODS[0].length; i++)
2.93 + for (DitheringMethod method: DitheringMethod.values())
2.94 {
2.95 - ditheringMethod.add(strings.get(DITHERING_METHODS[1][i]));
2.96 - if (ditheringMethodSelection == i)
2.97 + ditheringMethod.add(strings.get(method.getStringConstant()));
2.98 + if (method == ditheringMethodSelection)
2.99 {
2.100 - ditheringMethod.select(i);
2.101 + ditheringMethod.select(method.ordinal());
2.102 }
2.103 }
2.104 panel.add(ditheringMethod);
2.105 @@ -164,9 +167,9 @@
2.106 (screenSize.height / 2) - (height / 2));
2.107 }
2.108
2.109 - public int getDitheringMethod()
2.110 + public DitheringMethod getDitheringMethod()
2.111 {
2.112 - return DITHERING_METHODS[0][ditheringMethod.getSelectedIndex()];
2.113 + return EnumHelper.fromOrdinal(DitheringMethod.values(), ditheringMethod.getSelectedIndex());
2.114 }
2.115
2.116 public int getNumBits()