From 251389fde5a3ae708d61d113bb55d934729f18db Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Fri, 27 Apr 2018 15:40:15 -0700 Subject: Fix bugs --- src/bjc/imgchain/ImgPipeline.java | 11 ++++--- src/bjc/imgchain/pipeline/MutablePipeline.java | 16 ++++++---- src/bjc/imgchain/pipeline/PipelineStage.java | 2 +- .../pipeline/stages/AbstractPixelStage.java | 6 ++-- src/bjc/imgchain/pipeline/stages/AddMaskStage.java | 3 +- .../imgchain/pipeline/stages/BrightnessStage.java | 7 ++--- .../imgchain/pipeline/stages/ColorSkewStage.java | 34 +++++++++++++--------- src/bjc/imgchain/pipeline/stages/GaussStage.java | 7 ++--- .../imgchain/pipeline/stages/GreyscaleStage.java | 1 - src/bjc/imgchain/pipeline/stages/LoadStage.java | 1 - .../imgchain/pipeline/stages/NegativeStage.java | 3 +- src/bjc/imgchain/pipeline/stages/PipeStage.java | 1 - src/bjc/imgchain/pipeline/stages/RecallStage.java | 3 +- src/bjc/imgchain/pipeline/stages/SaveStage.java | 5 ++-- src/bjc/imgchain/pipeline/stages/StagePicker.java | 3 +- src/bjc/imgchain/pipeline/stages/StashStage.java | 3 +- src/bjc/imgchain/pipeline/stages/SubMaskStage.java | 5 ++-- .../imgchain/pipeline/stages/ThresholdStage.java | 12 ++++---- 18 files changed, 63 insertions(+), 60 deletions(-) (limited to 'src/bjc') diff --git a/src/bjc/imgchain/ImgPipeline.java b/src/bjc/imgchain/ImgPipeline.java index 0e4a7d9..ff67679 100644 --- a/src/bjc/imgchain/ImgPipeline.java +++ b/src/bjc/imgchain/ImgPipeline.java @@ -93,12 +93,14 @@ public class ImgPipeline extends JInternalFrame { stageEditor.removeAll(); - stageEditor.add(stag.getEditor(), BorderLayout.CENTER); - border.setTitle(stag.name()); + if (stag != null) { + stageEditor.add(stag.getEditor(), BorderLayout.CENTER); + border.setTitle(stag.name()); + } stageEditor.repaint(); }); - + JScrollPane stageScroll = new JScrollPane(stageList); JPanel listPanel = new JPanel(); @@ -148,6 +150,7 @@ public class ImgPipeline extends JInternalFrame { */ stag = new ColorSkewStage(.393, .769, .189, .349, .686, .168, .272, .534, .131); } + break; case "Negative": { stag = new NegativeStage(); } @@ -160,7 +163,7 @@ public class ImgPipeline extends JInternalFrame { stag = new BrightnessStage(); } break; - case "Threshold": { + case "Colorized Threshold": { stag = new ThresholdStage(); } break; diff --git a/src/bjc/imgchain/pipeline/MutablePipeline.java b/src/bjc/imgchain/pipeline/MutablePipeline.java index d1d228d..98b4ff9 100644 --- a/src/bjc/imgchain/pipeline/MutablePipeline.java +++ b/src/bjc/imgchain/pipeline/MutablePipeline.java @@ -37,7 +37,7 @@ public class MutablePipeline implements Pipeline { * Create a new named mutable pipeline. * * @param name - * The name of the pipeline. + * The name of the pipeline. */ public MutablePipeline(String name) { stages = new ArrayList<>(); @@ -52,7 +52,7 @@ public class MutablePipeline implements Pipeline { int i = 1; for (PipelineStage stage : stages) { - System.out.println("Applying stage " + stage.name()); + System.out.println("Applying stage " + stage.name() + "(" + stage.toString() + ")"); proc = stage.process(proc); @@ -78,7 +78,7 @@ public class MutablePipeline implements Pipeline { * Set the name of the pipeline. * * @param nam - * The name of the pipeline. + * The name of the pipeline. */ public void name(String nam) { name = nam; @@ -88,9 +88,10 @@ public class MutablePipeline implements Pipeline { * Append a pipeline stage to the end of this pipeline. * * @param stag - * The stage to add. + * The stage to add. */ public void addStage(PipelineStage stag) { + System.out.println("Adding stage " + stag); stages.add(stag); } @@ -98,9 +99,10 @@ public class MutablePipeline implements Pipeline { * Remove a pipeline stage. * * @param stag - * The stage to remove. + * The stage to remove. */ public void removeStage(PipelineStage stag) { + System.out.println("Removing stage " + stag); stages.remove(stag); } @@ -108,10 +110,12 @@ public class MutablePipeline implements Pipeline { * Remove a pipeline stage by index. * * @param idx - * The index of the stage to remove. + * The index of the stage to remove. */ public void removeStage(int idx) { + System.out.println("Removing stage # " + idx); stages.remove(idx); + System.out.println("Pipeline contains " + stages.size() + " stages"); } } diff --git a/src/bjc/imgchain/pipeline/PipelineStage.java b/src/bjc/imgchain/pipeline/PipelineStage.java index 46966c3..298c9b4 100644 --- a/src/bjc/imgchain/pipeline/PipelineStage.java +++ b/src/bjc/imgchain/pipeline/PipelineStage.java @@ -46,7 +46,7 @@ public interface PipelineStage { /** * Get an editor for this stage. * - * @return + * @return The editor for the stage */ JComponent getEditor(); } diff --git a/src/bjc/imgchain/pipeline/stages/AbstractPixelStage.java b/src/bjc/imgchain/pipeline/stages/AbstractPixelStage.java index 1317c12..4b65c85 100644 --- a/src/bjc/imgchain/pipeline/stages/AbstractPixelStage.java +++ b/src/bjc/imgchain/pipeline/stages/AbstractPixelStage.java @@ -16,7 +16,7 @@ public abstract class AbstractPixelStage extends AbstractPipelineStage { public Image process(Image inp) { BufferedImage buf = (BufferedImage) inp; - //BufferedImage res = new BufferedImage(buf.getWidth(), buf.getHeight(), BufferedImage.TYPE_INT_ARGB); + BufferedImage res = new BufferedImage(buf.getWidth(), buf.getHeight(), BufferedImage.TYPE_INT_ARGB); for (int y = 0; y < buf.getHeight(); y++) { for (int x = 0; x < buf.getWidth(); x++) { @@ -24,11 +24,11 @@ public abstract class AbstractPixelStage extends AbstractPipelineStage { int[] processedPixel = processPixel(pix); - buf.setRGB(x, y, Utils.fromARGBQuad(processedPixel)); + res.setRGB(x, y, Utils.fromARGBQuad(processedPixel)); } } - return buf; + return res; } public abstract int[] processPixel(int[] pix); diff --git a/src/bjc/imgchain/pipeline/stages/AddMaskStage.java b/src/bjc/imgchain/pipeline/stages/AddMaskStage.java index 50e5a7a..f2370a9 100644 --- a/src/bjc/imgchain/pipeline/stages/AddMaskStage.java +++ b/src/bjc/imgchain/pipeline/stages/AddMaskStage.java @@ -52,11 +52,10 @@ public class AddMaskStage extends AbstractPipelineStage { public JComponent getEditor() { ImgPickerPanel pan = new ImgPickerPanel("Mask name"); - pan.imgField.addPropertyChangeListener("value", (ev) -> { + pan.imgField.field.addPropertyChangeListener("value", (ev) -> { masqueName = pan.imgField.field.getText(); }); return pan; } - } diff --git a/src/bjc/imgchain/pipeline/stages/BrightnessStage.java b/src/bjc/imgchain/pipeline/stages/BrightnessStage.java index ae31dcc..5a72a23 100644 --- a/src/bjc/imgchain/pipeline/stages/BrightnessStage.java +++ b/src/bjc/imgchain/pipeline/stages/BrightnessStage.java @@ -82,15 +82,15 @@ public class BrightnessStage extends AbstractPixelStage { LabeledInputPanel bpercBlue = new LabeledInputPanel("+/- Blue", bb); bSkew.add(bpercBlue); - rpercRed.addPropertyChangeListener("value", (ev) -> { + rpercRed.field.addPropertyChangeListener("value", (ev) -> { rr = (Integer)rpercRed.field.getValue(); }); - gpercGreen.addPropertyChangeListener("value", (ev) -> { + gpercGreen.field.addPropertyChangeListener("value", (ev) -> { gg = (Integer)gpercGreen.field.getValue(); }); - bpercBlue.addPropertyChangeListener("value", (ev) -> { + bpercBlue.field.addPropertyChangeListener("value", (ev) -> { bb = (Integer)bpercBlue.field.getValue(); }); @@ -100,5 +100,4 @@ public class BrightnessStage extends AbstractPixelStage { return holder; } - } \ No newline at end of file diff --git a/src/bjc/imgchain/pipeline/stages/ColorSkewStage.java b/src/bjc/imgchain/pipeline/stages/ColorSkewStage.java index ba9d127..9f17eee 100644 --- a/src/bjc/imgchain/pipeline/stages/ColorSkewStage.java +++ b/src/bjc/imgchain/pipeline/stages/ColorSkewStage.java @@ -45,9 +45,9 @@ public class ColorSkewStage extends AbstractPixelStage { ret[2] = (int) ((pix[1] * gr) + (pix[2] * gg) + (pix[3] * gb)); ret[3] = (int) ((pix[1] * br) + (pix[2] * bg) + (pix[3] * bb)); - ret[1] = Math.min(255, ret[1]); - ret[2] = Math.min(255, ret[2]); - ret[3] = Math.min(255, ret[3]); + ret[1] = Math.max(Math.min(255, ret[1]), 0); + ret[2] = Math.max(Math.min(255, ret[2]), 0); + ret[3] = Math.max(Math.min(255, ret[3]), 0); return ret; } @@ -101,33 +101,42 @@ public class ColorSkewStage extends AbstractPixelStage { bSkew.add(bpercGreen); bSkew.add(bpercBlue); - rpercRed.addPropertyChangeListener("value", (ev) -> { + rpercRed.field.addPropertyChangeListener("value", (ev) -> { + System.out.println("TRIGGERED rr"); rr = (Double)rpercRed.field.getValue(); }); - gpercRed.addPropertyChangeListener("value", (ev) -> { + gpercRed.field.addPropertyChangeListener("value", (ev) -> { + System.out.println("TRIGGERED rr"); gr = (Double)gpercRed.field.getValue(); }); - bpercRed.addPropertyChangeListener("value", (ev) -> { + bpercRed.field.addPropertyChangeListener("value", (ev) -> { + System.out.println("TRIGGERED rr"); br = (Double)bpercRed.field.getValue(); }); - rpercGreen.addPropertyChangeListener("value", (ev) -> { + rpercGreen.field.addPropertyChangeListener("value", (ev) -> { + System.out.println("TRIGGERED rr"); rg = (Double)rpercGreen.field.getValue(); }); - gpercGreen.addPropertyChangeListener("value", (ev) -> { + gpercGreen.field.addPropertyChangeListener("value", (ev) -> { + System.out.println("TRIGGERED rr"); gg = (Double)gpercGreen.field.getValue(); }); - bpercGreen.addPropertyChangeListener("value", (ev) -> { + bpercGreen.field.addPropertyChangeListener("value", (ev) -> { + System.out.println("TRIGGERED rr"); bg = (Double)bpercGreen.field.getValue(); }); - rpercBlue.addPropertyChangeListener("value", (ev) -> { + rpercBlue.field.addPropertyChangeListener("value", (ev) -> { + System.out.println("TRIGGERED rr"); rb = (Double)rpercBlue.field.getValue(); }); - gpercBlue.addPropertyChangeListener("value", (ev) -> { + gpercBlue.field.addPropertyChangeListener("value", (ev) -> { + System.out.println("TRIGGERED rr"); gb = (Double)gpercBlue.field.getValue(); }); - bpercBlue.addPropertyChangeListener("value", (ev) -> { + bpercBlue.field.addPropertyChangeListener("value", (ev) -> { + System.out.println("TRIGGERED rr"); bb = (Double)bpercBlue.field.getValue(); }); @@ -137,5 +146,4 @@ public class ColorSkewStage extends AbstractPixelStage { return holder; } - } diff --git a/src/bjc/imgchain/pipeline/stages/GaussStage.java b/src/bjc/imgchain/pipeline/stages/GaussStage.java index 2b04ddf..6460062 100644 --- a/src/bjc/imgchain/pipeline/stages/GaussStage.java +++ b/src/bjc/imgchain/pipeline/stages/GaussStage.java @@ -88,15 +88,15 @@ public class GaussStage extends AbstractPipelineStage { holder.setLayout(new GridLayout(3, 1)); LabeledInputPanel mField = new LabeledInputPanel("Size of kernel", 3); - mField.addPropertyChangeListener("value", (ev) -> { + mField.field.addPropertyChangeListener("value", (ev) -> { m = (Integer) mField.field.getValue(); }); LabeledInputPanel sigField = new LabeledInputPanel("Value for sigma", 3.0); - sigField.addPropertyChangeListener("value", (ev) -> { + sigField.field.addPropertyChangeListener("value", (ev) -> { sig = (Double) sigField.field.getValue(); }); LabeledInputPanel kField = new LabeledInputPanel("Value for k", 1.0); - kField.addPropertyChangeListener("value", (ev) -> { + kField.field.addPropertyChangeListener("value", (ev) -> { k = (Double) kField.field.getValue(); }); @@ -106,5 +106,4 @@ public class GaussStage extends AbstractPipelineStage { return holder; } - } diff --git a/src/bjc/imgchain/pipeline/stages/GreyscaleStage.java b/src/bjc/imgchain/pipeline/stages/GreyscaleStage.java index 71bb743..5997d57 100644 --- a/src/bjc/imgchain/pipeline/stages/GreyscaleStage.java +++ b/src/bjc/imgchain/pipeline/stages/GreyscaleStage.java @@ -41,5 +41,4 @@ public class GreyscaleStage extends AbstractPixelStage { public JComponent getEditor() { return new JLabel("No configuration possible"); } - } diff --git a/src/bjc/imgchain/pipeline/stages/LoadStage.java b/src/bjc/imgchain/pipeline/stages/LoadStage.java index ed63a89..5b5c00f 100644 --- a/src/bjc/imgchain/pipeline/stages/LoadStage.java +++ b/src/bjc/imgchain/pipeline/stages/LoadStage.java @@ -83,5 +83,4 @@ public class LoadStage extends AbstractPipelineStage { return holder; } - } diff --git a/src/bjc/imgchain/pipeline/stages/NegativeStage.java b/src/bjc/imgchain/pipeline/stages/NegativeStage.java index 028139c..b1f6dfa 100644 --- a/src/bjc/imgchain/pipeline/stages/NegativeStage.java +++ b/src/bjc/imgchain/pipeline/stages/NegativeStage.java @@ -28,6 +28,5 @@ public class NegativeStage extends AbstractPixelStage { @Override public int[] processPixel(int[] pix) { return new int[] { pix[0], 255 - pix[1], 255 - pix[2], 255 - pix[3] }; - } - + } } diff --git a/src/bjc/imgchain/pipeline/stages/PipeStage.java b/src/bjc/imgchain/pipeline/stages/PipeStage.java index 1472a3c..a38717f 100644 --- a/src/bjc/imgchain/pipeline/stages/PipeStage.java +++ b/src/bjc/imgchain/pipeline/stages/PipeStage.java @@ -71,5 +71,4 @@ public class PipeStage extends AbstractPipelineStage { return holder; } - } diff --git a/src/bjc/imgchain/pipeline/stages/RecallStage.java b/src/bjc/imgchain/pipeline/stages/RecallStage.java index db5b760..b7b82ba 100644 --- a/src/bjc/imgchain/pipeline/stages/RecallStage.java +++ b/src/bjc/imgchain/pipeline/stages/RecallStage.java @@ -39,11 +39,10 @@ public class RecallStage extends AbstractPipelineStage { public JComponent getEditor() { ImgPickerPanel pan = new ImgPickerPanel(); - pan.imgField.addPropertyChangeListener("value", (ev) -> { + pan.imgField.field.addPropertyChangeListener("value", (ev) -> { stashName = pan.imgField.field.getText(); }); return pan; } - } diff --git a/src/bjc/imgchain/pipeline/stages/SaveStage.java b/src/bjc/imgchain/pipeline/stages/SaveStage.java index a4c3041..aba875f 100644 --- a/src/bjc/imgchain/pipeline/stages/SaveStage.java +++ b/src/bjc/imgchain/pipeline/stages/SaveStage.java @@ -24,7 +24,7 @@ public class SaveStage extends AbstractPipelineStage { public SaveStage() { super(StageType.IMGSINK); } - + @Override public Image process(Image inp) { try { @@ -39,7 +39,7 @@ public class SaveStage extends AbstractPipelineStage { JOptionPane.showInternalMessageDialog(null, msg, "Error saving image", JOptionPane.ERROR_MESSAGE); } - + return inp; } @@ -85,5 +85,4 @@ public class SaveStage extends AbstractPipelineStage { return holder; } - } diff --git a/src/bjc/imgchain/pipeline/stages/StagePicker.java b/src/bjc/imgchain/pipeline/stages/StagePicker.java index e627179..a62b15e 100644 --- a/src/bjc/imgchain/pipeline/stages/StagePicker.java +++ b/src/bjc/imgchain/pipeline/stages/StagePicker.java @@ -37,7 +37,8 @@ public class StagePicker extends JDialog { { "Greyscale", "Convert a color image into greyscale" }, { "Color Skew", "Adjust color balance" }, { "Sepia", "Make your image sepia toned" }, { "Negative", "Invert your images colors" }, { "Gaussian Blur", "Blur images" }, - { "Tint", "Add/remove colors" }, { "Threshold", "Convert the image to black/white" }, + { "Tint", "Add/remove colors" }, + { "Colorized Threshold", "Convert the image to three-tone" }, { "Sub-pipeline", "Execute another pipeline" }, { "Load Image", "Load an image from a file" }, { "Save Image", "Save an image to a file" }, diff --git a/src/bjc/imgchain/pipeline/stages/StashStage.java b/src/bjc/imgchain/pipeline/stages/StashStage.java index 0b7e626..67c343e 100644 --- a/src/bjc/imgchain/pipeline/stages/StashStage.java +++ b/src/bjc/imgchain/pipeline/stages/StashStage.java @@ -35,11 +35,10 @@ public class StashStage extends AbstractPipelineStage { @Override public JComponent getEditor() { LabeledInputPanel imgName = new LabeledInputPanel("Image name", ""); - imgName.addPropertyChangeListener("value", (ev) -> { + imgName.field.addPropertyChangeListener("value", (ev) -> { stashName = imgName.field.getText(); }); return imgName; } - } diff --git a/src/bjc/imgchain/pipeline/stages/SubMaskStage.java b/src/bjc/imgchain/pipeline/stages/SubMaskStage.java index 20a58ab..1503934 100644 --- a/src/bjc/imgchain/pipeline/stages/SubMaskStage.java +++ b/src/bjc/imgchain/pipeline/stages/SubMaskStage.java @@ -52,11 +52,10 @@ public class SubMaskStage extends AbstractPipelineStage { public JComponent getEditor() { ImgPickerPanel pan = new ImgPickerPanel("Mask name"); - pan.imgField.addPropertyChangeListener("value", (ev) -> { + pan.imgField.field.addPropertyChangeListener("value", (ev) -> { masqueName = pan.imgField.field.getText(); }); return pan; - } - + } } diff --git a/src/bjc/imgchain/pipeline/stages/ThresholdStage.java b/src/bjc/imgchain/pipeline/stages/ThresholdStage.java index 5a72946..ec00bcc 100644 --- a/src/bjc/imgchain/pipeline/stages/ThresholdStage.java +++ b/src/bjc/imgchain/pipeline/stages/ThresholdStage.java @@ -46,12 +46,12 @@ public class ThresholdStage extends AbstractPixelStage { @Override public String name() { - return "Tint"; + return "Colorized Threshold"; } @Override public String description() { - return "Add/remove colors"; + return "Convert image into three-tone"; } @Override @@ -73,7 +73,6 @@ public class ThresholdStage extends AbstractPixelStage { LabeledInputPanel rpercRed = new LabeledInputPanel("Red", redThreshold); rSkew.add(rpercRed); - ; LabeledInputPanel gpercGreen = new LabeledInputPanel("Green", greenThreshold); gSkew.add(gpercGreen); @@ -81,15 +80,15 @@ public class ThresholdStage extends AbstractPixelStage { LabeledInputPanel bpercBlue = new LabeledInputPanel("Blue", blueThreshold); bSkew.add(bpercBlue); - rpercRed.addPropertyChangeListener("value", (ev) -> { + rpercRed.field.addPropertyChangeListener("value", (ev) -> { redThreshold = (Integer) rpercRed.field.getValue(); }); - gpercGreen.addPropertyChangeListener("value", (ev) -> { + gpercGreen.field.addPropertyChangeListener("value", (ev) -> { greenThreshold = (Integer) gpercGreen.field.getValue(); }); - bpercBlue.addPropertyChangeListener("value", (ev) -> { + bpercBlue.field.addPropertyChangeListener("value", (ev) -> { blueThreshold = (Integer) bpercBlue.field.getValue(); }); @@ -99,5 +98,4 @@ public class ThresholdStage extends AbstractPixelStage { return holder; } - } \ No newline at end of file -- cgit v1.2.3