From c082267a7f3239024e85291758224b82e4417ee1 Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Mon, 13 Apr 2020 18:33:34 -0400 Subject: Rename BrightnessStage Rename BrightnessState to TintingStage, to better match its functionality --- src/bjc/imgchain/ImgPipeline.java | 4 +- .../imgchain/pipeline/stages/BrightnessStage.java | 101 ----------------- src/bjc/imgchain/pipeline/stages/TintingStage.java | 123 +++++++++++++++++++++ 3 files changed, 125 insertions(+), 103 deletions(-) delete mode 100644 src/bjc/imgchain/pipeline/stages/BrightnessStage.java create mode 100644 src/bjc/imgchain/pipeline/stages/TintingStage.java (limited to 'src') diff --git a/src/bjc/imgchain/ImgPipeline.java b/src/bjc/imgchain/ImgPipeline.java index d009ecc..0c914e9 100644 --- a/src/bjc/imgchain/ImgPipeline.java +++ b/src/bjc/imgchain/ImgPipeline.java @@ -18,7 +18,7 @@ import javax.swing.border.TitledBorder; import bjc.imgchain.pipeline.MutablePipeline; import bjc.imgchain.pipeline.PipelineStage; -import bjc.imgchain.pipeline.stages.BrightnessStage; +import bjc.imgchain.pipeline.stages.TintingStage; import bjc.imgchain.pipeline.stages.ColorSkewStage; import bjc.imgchain.pipeline.stages.GaussStage; import bjc.imgchain.pipeline.stages.GreyscaleStage; @@ -158,7 +158,7 @@ public class ImgPipeline extends JInternalFrame { } break; case "Tint": { - stag = new BrightnessStage(); + stag = new TintingStage(); } break; case "Colorized Threshold": { diff --git a/src/bjc/imgchain/pipeline/stages/BrightnessStage.java b/src/bjc/imgchain/pipeline/stages/BrightnessStage.java deleted file mode 100644 index cca914a..0000000 --- a/src/bjc/imgchain/pipeline/stages/BrightnessStage.java +++ /dev/null @@ -1,101 +0,0 @@ -package bjc.imgchain.pipeline.stages; - -import java.awt.GridLayout; - -import javax.swing.JComponent; -import javax.swing.JPanel; -import javax.swing.border.BevelBorder; -import javax.swing.border.TitledBorder; - -import bjc.imgchain.pipeline.StageType; -import bjc.imgchain.utils.LabeledInputPanel; - -public class BrightnessStage extends AbstractPixelStage { - public BrightnessStage() { - this(0, 0, 0); - } - - public BrightnessStage(int rr, int gg, int bb) { - super(StageType.IMGTRANS); - - this.rr = rr; - this.gg = gg; - this.bb = bb; - } - - private int rr; - private int gg; - private int bb; - - @Override - public int[] processPixel(int[] pix) { - int[] ret = new int[4]; - - ret[0] = pix[0]; - ret[1] = pix[1] + rr; - ret[2] = pix[2] + gg; - ret[3] = pix[3] + bb; - - ret[1] = Math.max(0, Math.min(255, ret[1])); - ret[2] = Math.max(0, Math.min(255, ret[2])); - ret[3] = Math.max(0, Math.min(255, ret[3])); - - return ret; - } - - @Override - public String name() { - return "Tint"; - } - - @Override - public String description() { - return "Add/remove colors"; - } - - @Override - public JComponent getEditor() { - JPanel holder = new JPanel(); - holder.setLayout(new GridLayout(3, 1)); - - JPanel rSkew = new JPanel(); - rSkew.setLayout(new GridLayout(1, 3)); - rSkew.setBorder(new TitledBorder(new BevelBorder(BevelBorder.LOWERED), "Red Balance")); - - JPanel gSkew = new JPanel(); - gSkew.setLayout(new GridLayout(1, 3)); - gSkew.setBorder(new TitledBorder(new BevelBorder(BevelBorder.LOWERED), "Green Balance")); - - JPanel bSkew = new JPanel(); - bSkew.setLayout(new GridLayout(1, 3)); - bSkew.setBorder(new TitledBorder(new BevelBorder(BevelBorder.LOWERED), "Blue Balance")); - - LabeledInputPanel rpercRed = new LabeledInputPanel("+/- Red", rr); - rSkew.add(rpercRed); - ; - - LabeledInputPanel gpercGreen = new LabeledInputPanel("+/- Green", gg); - gSkew.add(gpercGreen); - - LabeledInputPanel bpercBlue = new LabeledInputPanel("+/- Blue", bb); - bSkew.add(bpercBlue); - - rpercRed.field.addPropertyChangeListener("value", (ev) -> { - rr = (Integer) rpercRed.field.getValue(); - }); - - gpercGreen.field.addPropertyChangeListener("value", (ev) -> { - gg = (Integer) gpercGreen.field.getValue(); - }); - - bpercBlue.field.addPropertyChangeListener("value", (ev) -> { - bb = (Integer) bpercBlue.field.getValue(); - }); - - holder.add(rSkew); - holder.add(gSkew); - holder.add(bSkew); - - return holder; - } -} \ No newline at end of file diff --git a/src/bjc/imgchain/pipeline/stages/TintingStage.java b/src/bjc/imgchain/pipeline/stages/TintingStage.java new file mode 100644 index 0000000..ed3b8f2 --- /dev/null +++ b/src/bjc/imgchain/pipeline/stages/TintingStage.java @@ -0,0 +1,123 @@ +package bjc.imgchain.pipeline.stages; + +import java.awt.GridLayout; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.border.BevelBorder; +import javax.swing.border.TitledBorder; + +import bjc.imgchain.pipeline.StageType; +import bjc.imgchain.utils.LabeledInputPanel; + +/** + * A stage to tint an image, by increasing/decreasing the values of the color components. + * + * @author Ben Culkin + * + */ +public class TintingStage extends AbstractPixelStage { + /** + * Create a new brightness stage with no effect. + */ + public TintingStage() { + this(0, 0, 0); + } + + /** + * Create a new brightness stage with the specified effect. + * + * @param rr + * The value to change the red component by. + * @param gg + * The value to change the green component by. + * @param bb + * The value to change the blue component by. + */ + public TintingStage(int rr, int gg, int bb) { + super(StageType.IMGTRANS); + + this.rr = rr; + this.gg = gg; + this.bb = bb; + } + + private int rr; + private int gg; + private int bb; + + @Override + public int[] processPixel(int[] pix) { + int[] ret = new int[4]; + + ret[0] = pix[0]; + ret[1] = pix[1] + rr; + ret[2] = pix[2] + gg; + ret[3] = pix[3] + bb; + + ret[1] = Math.max(0, Math.min(255, ret[1])); + ret[2] = Math.max(0, Math.min(255, ret[2])); + ret[3] = Math.max(0, Math.min(255, ret[3])); + + return ret; + } + + @Override + public String name() { + return "Tint"; + } + + @Override + public String description() { + return "Add/remove colors"; + } + + @Override + public JComponent getEditor() { + JPanel holder = new JPanel(); + holder.setLayout(new GridLayout(3, 1)); + + JPanel rSkew = new JPanel(); + rSkew.setLayout(new GridLayout(1, 3)); + rSkew.setBorder( + new TitledBorder(new BevelBorder(BevelBorder.LOWERED), "Red Balance")); + + JPanel gSkew = new JPanel(); + gSkew.setLayout(new GridLayout(1, 3)); + gSkew.setBorder( + new TitledBorder(new BevelBorder(BevelBorder.LOWERED), "Green Balance")); + + JPanel bSkew = new JPanel(); + bSkew.setLayout(new GridLayout(1, 3)); + bSkew.setBorder( + new TitledBorder(new BevelBorder(BevelBorder.LOWERED), "Blue Balance")); + + LabeledInputPanel rpercRed = new LabeledInputPanel("+/- Red", rr); + rSkew.add(rpercRed); + ; + + LabeledInputPanel gpercGreen = new LabeledInputPanel("+/- Green", gg); + gSkew.add(gpercGreen); + + LabeledInputPanel bpercBlue = new LabeledInputPanel("+/- Blue", bb); + bSkew.add(bpercBlue); + + rpercRed.field.addPropertyChangeListener("value", (ev) -> { + rr = (Integer) rpercRed.field.getValue(); + }); + + gpercGreen.field.addPropertyChangeListener("value", (ev) -> { + gg = (Integer) gpercGreen.field.getValue(); + }); + + bpercBlue.field.addPropertyChangeListener("value", (ev) -> { + bb = (Integer) bpercBlue.field.getValue(); + }); + + holder.add(rSkew); + holder.add(gSkew); + holder.add(bSkew); + + return holder; + } +} \ No newline at end of file -- cgit v1.2.3