1 package nom.tam.fits.compression.provider.param.quant;
2
3 import nom.tam.fits.compression.algorithm.api.ICompressOption;
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 import nom.tam.fits.compression.algorithm.quant.QuantizeOption;
37 import nom.tam.fits.compression.provider.param.api.ICompressColumnParameter;
38 import nom.tam.fits.compression.provider.param.api.ICompressHeaderParameter;
39 import nom.tam.fits.compression.provider.param.base.CompressParameters;
40
41
42
43
44
45
46
47 public class QuantizeParameters extends CompressParameters {
48
49 private ZQuantizeParameter quantz;
50
51 private ZBlankParameter blank;
52
53 private ZDither0Parameter seed;
54
55 private ZBlankColumnParameter blankColumn;
56
57 private ZZeroColumnParameter zero;
58
59 private ZScaleColumnParameter scale;
60
61 private QuantizeOption options;
62
63
64
65
66
67
68
69 @SuppressWarnings("deprecation")
70 public QuantizeParameters(QuantizeOption option) {
71 options = option;
72 quantz = new ZQuantizeParameter(option);
73 blank = new ZBlankParameter(option);
74 seed = new ZDither0Parameter(option);
75 blankColumn = new ZBlankColumnParameter(option);
76 zero = new ZZeroColumnParameter(option);
77 scale = new ZScaleColumnParameter(option);
78 }
79
80 private Integer getCurrentZBlank() {
81 return options.getBNull();
82 }
83
84 @Override
85 protected ICompressColumnParameter[] columnParameters() {
86 return new ICompressColumnParameter[] {blankColumn, zero, scale};
87 }
88
89 @Override
90 protected ICompressHeaderParameter[] headerParameters() {
91 return new ICompressHeaderParameter[] {quantz, blank, seed};
92 }
93
94 @Override
95 protected ICompressColumnParameter[] activeColumnParameters() {
96 if (blankColumn.isUniform()) {
97 return new ICompressColumnParameter[] {zero, scale};
98 }
99
100 return new ICompressColumnParameter[] {blankColumn, zero, scale};
101 }
102
103 @Override
104 protected ICompressHeaderParameter[] activeHeaderParameters() {
105 Integer zblank = getCurrentZBlank();
106
107 if (zblank == null || !blankColumn.isUniform()) {
108
109 return new ICompressHeaderParameter[] {quantz, seed};
110 }
111 return new ICompressHeaderParameter[] {quantz, blank, seed};
112 }
113
114 @Override
115 public void setTileIndex(int index) {
116 seed.setTileIndex(index);
117 }
118
119 @Override
120 public QuantizeParameters copy(ICompressOption option) {
121 if (option instanceof QuantizeOption) {
122 QuantizeOption qo = (QuantizeOption) option;
123
124 QuantizeParameters p = (QuantizeParameters) super.clone();
125 p.quantz = (ZQuantizeParameter) quantz.copy(qo);
126 p.blank = (ZBlankParameter) blank.copy(qo);
127 p.seed = (ZDither0Parameter) seed.copy(qo);
128 p.blankColumn = (ZBlankColumnParameter) blankColumn.copy(qo);
129 p.zero = (ZZeroColumnParameter) zero.copy(qo);
130 p.scale = (ZScaleColumnParameter) scale.copy(qo);
131
132 return p;
133 }
134 return null;
135 }
136 }