blob: 98b4ff91f101ac7a47f0dffc552a3ef7f171a100 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
package bjc.imgchain.pipeline;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import bjc.imgchain.ImgChain;
import bjc.imgchain.utils.Utils;
/**
* An editable {@link Pipeline}
*
* @author acm
*
*/
public class MutablePipeline implements Pipeline {
private final List<PipelineStage> stages;
private String name;
/**
* Create a new unnamed mutable pipeline.
*/
public MutablePipeline() {
stages = new ArrayList<>();
name = "Unnamed Pipeline";
}
/**
* Create a new named mutable pipeline.
*
* @param name
* The name of the pipeline.
*/
public MutablePipeline(String name) {
stages = new ArrayList<>();
this.name = name;
}
@Override
public Image process(Image input) {
Image proc = input;
int i = 1;
for (PipelineStage stage : stages) {
System.out.println("Applying stage " + stage.name() + "(" + stage.toString() + ")");
proc = stage.process(proc);
Utils.displayImage(proc, "Pipeline Results - " + stage.name() + " - #" + i);
System.out.println("Applied stage " + stage.name());
}
return proc;
}
@Override
public List<PipelineStage> stages() {
return stages;
}
@Override
public String name() {
return name;
}
/**
* Set the name of the pipeline.
*
* @param nam
* The name of the pipeline.
*/
public void name(String nam) {
name = nam;
}
/**
* Append a pipeline stage to the end of this pipeline.
*
* @param stag
* The stage to add.
*/
public void addStage(PipelineStage stag) {
System.out.println("Adding stage " + stag);
stages.add(stag);
}
/**
* Remove a pipeline stage.
*
* @param stag
* The stage to remove.
*/
public void removeStage(PipelineStage stag) {
System.out.println("Removing stage " + stag);
stages.remove(stag);
}
/**
* Remove a pipeline stage by index.
*
* @param idx
* 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");
}
}
|