1
|
1 package de.mpg.mpiwg.itgroup.digilib.digiImage;
|
|
2
|
|
3 import java.net.MalformedURLException;
|
|
4 import java.net.URL;
|
|
5 import java.util.ArrayList;
|
|
6 import java.util.List;
|
|
7
|
|
8 import org.apache.commons.lang.StringUtils;
|
|
9 import org.eclipse.swt.graphics.Point;
|
|
10
|
|
11 import de.mpg.mpiwg.itgroup.digilib.manipulator.extensions.RectangleListener;
|
|
12
|
|
13 public class DigiImageController {
|
|
14
|
|
15
|
|
16
|
|
17 public DigiImage digiImage;
|
|
18 private DigiImageParameter parameter;
|
|
19
|
|
20 protected DigiImageController(){}
|
|
21
|
|
22 public DigiImageController(DigiImage di){
|
|
23 this.digiImage=di;
|
|
24 }
|
|
25
|
|
26
|
|
27
|
|
28 public void mir(String mode) {
|
|
29
|
|
30 DigiImageParameter dp = digiImage.getParameter();
|
|
31
|
|
32 String parameter = dp.getMo();
|
|
33
|
|
34
|
|
35 // mo kann mehrere durch komma getrennte parameter haben
|
|
36 String[] splittmo= parameter.split(",");
|
|
37 Boolean hasHMir = false;
|
|
38 List<String> newmo = new ArrayList<String>();
|
|
39 for(String m: splittmo){
|
|
40 if (m.equals(mode)){
|
|
41 hasHMir=true;
|
|
42 } else {
|
|
43 newmo.add(m);
|
|
44 }
|
|
45 }
|
|
46 if(!hasHMir){ // kein hmir dann dazufuegen
|
|
47 newmo.add(mode);
|
|
48 }
|
|
49 String newmoString = StringUtils.join(newmo,",");
|
|
50
|
|
51 dp.setMo(newmoString);
|
|
52
|
|
53
|
|
54 digiImage.setParameter(dp);
|
|
55 digiImage.redraw();
|
|
56 }
|
|
57
|
|
58 public void vmir() {
|
|
59 mir("vmir");
|
|
60
|
|
61 }
|
|
62
|
|
63 public void hmir() {
|
|
64 mir("hmir");
|
|
65
|
|
66 }
|
|
67
|
|
68 public void rotate(float rotateValue) {
|
|
69 digiImage.getParameter().setRot(rotateValue);
|
|
70 digiImage.redraw();
|
|
71 }
|
|
72
|
|
73
|
|
74
|
|
75
|
|
76 public void zoomArea(int x, int y, int x2, int y2) {
|
|
77
|
|
78 Point size = digiImage.getLabel().getSize();
|
|
79
|
|
80 float relx = new Float(x)/new Float(size.x);
|
|
81 float rely = new Float(y)/new Float(size.y);
|
|
82
|
|
83 float relx2 = new Float(x2)/new Float(size.x);
|
|
84 float rely2 = new Float(y2)/new Float(size.y);
|
|
85
|
|
86 DigiImageParameter dp = digiImage.getParameter();
|
|
87
|
|
88 float Ww = dp.getWw();
|
|
89 float Wh = dp.getWh();
|
|
90
|
|
91 float Wx = dp.getWx();
|
|
92 float Wy = dp.getWy();
|
|
93
|
|
94
|
|
95 float nWx = relx*Ww+Wx;
|
|
96 float nWy = rely*Wh+Wy;
|
|
97
|
|
98 float nWw = (relx2-relx)*Ww;
|
|
99 float nWh = (rely2-rely)*Wh;
|
|
100
|
|
101
|
|
102
|
|
103 dp.setWx(nWx);
|
|
104 dp.setWy(nWy);
|
|
105 dp.setWw(nWw);
|
|
106 dp.setWh(nWh);
|
|
107 digiImage.setParameter(dp);
|
|
108 digiImage.redraw();
|
|
109
|
|
110
|
|
111 // setRot(rotateValue);
|
|
112 }
|
|
113
|
|
114 public void zoomFull(){
|
|
115 DigiImageParameter dp = digiImage.getParameter();
|
|
116 dp.setWw(1);
|
|
117 dp.setWh(1);
|
|
118
|
|
119 dp.setWx(0);
|
|
120 dp.setWy(0);
|
|
121
|
|
122 digiImage.setParameter(dp);
|
|
123 digiImage.redraw();
|
|
124 }
|
|
125
|
|
126 public void scaleDown() {
|
|
127 DigiImageParameter dp = digiImage.getParameter();
|
|
128 float ws = dp.getWs();
|
|
129 if (ws>1){
|
|
130 dp.setWs(ws-1);
|
|
131 digiImage.setParameter(dp);
|
|
132 digiImage.redraw();
|
|
133
|
|
134 }
|
|
135
|
|
136 }
|
|
137
|
|
138 public void scaleUp() {
|
|
139 DigiImageParameter dp = digiImage.getParameter();
|
|
140 float ws = dp.getWs();
|
|
141
|
|
142 dp.setWs(ws+1);
|
|
143 digiImage.setParameter(dp);
|
|
144 digiImage.redraw();
|
|
145
|
|
146
|
|
147
|
|
148
|
|
149 }
|
|
150
|
|
151 public void prevPage() {
|
|
152 DigiImageParameter dp = digiImage.getParameter();
|
|
153 int pn = dp.getPn();
|
|
154 if (pn>1)
|
|
155 pn=pn-1;
|
|
156 dp.setPn(pn);
|
|
157 digiImage.setParameter(dp);
|
|
158 digiImage.redraw();
|
|
159
|
|
160 }
|
|
161
|
|
162 public void nextPage() {
|
|
163 DigiImageParameter dp = digiImage.getParameter();
|
|
164 int pn = dp.getPn();
|
|
165
|
|
166 pn=pn+1;
|
|
167 dp.setPn(pn);
|
|
168 digiImage.setParameter(dp);
|
|
169 digiImage.redraw();
|
|
170
|
|
171
|
|
172 }
|
|
173
|
|
174
|
|
175 }
|