view src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImageController.java @ 1:83c58ea33792

first release (continued)
author dwinter
date Mon, 03 Jan 2011 09:11:25 +0100
parents
children e63a64652f4d
line wrap: on
line source

package de.mpg.mpiwg.itgroup.digilib.digiImage;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.eclipse.swt.graphics.Point;

import de.mpg.mpiwg.itgroup.digilib.manipulator.extensions.RectangleListener;

public class DigiImageController {
	
	
	
	public DigiImage digiImage;
	private DigiImageParameter parameter;
	
	protected DigiImageController(){}
	
	public DigiImageController(DigiImage di){
		this.digiImage=di;
	}
	
	
	
	public void mir(String mode) {
		
		DigiImageParameter dp = digiImage.getParameter();
		
		String parameter = dp.getMo();
		
		
		// mo kann mehrere durch komma getrennte parameter haben
		String[] splittmo= parameter.split(",");
		Boolean hasHMir = false;
		List<String> newmo = new ArrayList<String>();
		for(String m: splittmo){
			if (m.equals(mode)){
				hasHMir=true;
			} else {
				newmo.add(m);
			}
		}
		if(!hasHMir){ // kein hmir dann dazufuegen
			newmo.add(mode);
			}
		String newmoString = StringUtils.join(newmo,",");
		
		dp.setMo(newmoString);
			
		
		digiImage.setParameter(dp);
		digiImage.redraw();
	}

	public void vmir() {
		mir("vmir");
		
	}
	
	public void hmir() {
		mir("hmir");
		
	}
	
	public void rotate(float rotateValue) {
		digiImage.getParameter().setRot(rotateValue);
		digiImage.redraw();
	}




public void zoomArea(int x, int y, int x2, int y2) {
	
	Point size = digiImage.getLabel().getSize();
	
	float relx = new Float(x)/new Float(size.x);
	float rely = new Float(y)/new Float(size.y);
	
	float relx2 = new Float(x2)/new Float(size.x);
	float rely2 = new Float(y2)/new Float(size.y);
	
	DigiImageParameter dp = digiImage.getParameter();
	
	float Ww = dp.getWw();
	float Wh = dp.getWh();
	
	float Wx = dp.getWx();
	float Wy = dp.getWy();
	
	
	float nWx = relx*Ww+Wx;
	float nWy = rely*Wh+Wy;
	
	float nWw = (relx2-relx)*Ww;
	float nWh = (rely2-rely)*Wh;
	
	
	
	dp.setWx(nWx);
	dp.setWy(nWy);
	dp.setWw(nWw);
	dp.setWh(nWh);
	digiImage.setParameter(dp);
	digiImage.redraw();
	
	
	// setRot(rotateValue);
}

	public void zoomFull(){
		DigiImageParameter dp = digiImage.getParameter();
		dp.setWw(1);
		dp.setWh(1);
		
		dp.setWx(0);
		dp.setWy(0);
		
		digiImage.setParameter(dp);
		digiImage.redraw();
	}

	public void scaleDown() {
		DigiImageParameter dp = digiImage.getParameter();
		float ws = dp.getWs();
		if (ws>1){
			dp.setWs(ws-1);
			digiImage.setParameter(dp);
			digiImage.redraw();
			
		}
		
	}

	public void scaleUp() {
		DigiImageParameter dp = digiImage.getParameter();
		float ws = dp.getWs();
		
			dp.setWs(ws+1);
			digiImage.setParameter(dp);
			digiImage.redraw();
			
		
		
		
	}

	public void prevPage() {
		DigiImageParameter dp = digiImage.getParameter();
		int pn = dp.getPn();
		if (pn>1)
			pn=pn-1;
		dp.setPn(pn);
		digiImage.setParameter(dp);
		digiImage.redraw();
		
	}

	public void nextPage() {
		DigiImageParameter dp = digiImage.getParameter();
		int pn = dp.getPn();
		
			pn=pn+1;
		dp.setPn(pn);
		digiImage.setParameter(dp);
		digiImage.redraw();
		
		
	}


}