package org.jzy3d.chart.controllers.camera;

import org.jzy3d.chart.Chart;
import org.jzy3d.chart.controllers.AbstractController;
import org.jzy3d.chart.controllers.ControllerType;
import org.jzy3d.chart.controllers.mouse.camera.ICameraMouseController;
import org.jzy3d.chart.controllers.thread.camera.CameraThreadController;
import org.jzy3d.maths.Coord2d;


public abstract class AbstractCameraController extends AbstractController implements ICameraMouseController{
	public AbstractCameraController() {
        super();
    }

    public AbstractCameraController(Chart chart) {
        super(chart);
    }
    
    @Override
    public void dispose(){
		if(threadController!=null)
			threadController.stop();
    	super.dispose();
    }

    public static boolean DEFAULT_UPDATE_VIEW = false;
    
    protected void rotate(final Coord2d move){
        rotate(move, DEFAULT_UPDATE_VIEW);
    }
    
	protected void rotate(final Coord2d move, boolean updateView){
		for(Chart c: targets)
			c.getView().rotate(move, updateView);
		fireControllerEvent(ControllerType.ROTATE, move);
	}
	
    protected void shift(final float factor){
        shift(factor, DEFAULT_UPDATE_VIEW);
    }	
    
	protected void shift(final float factor, boolean updateView){
		for(Chart c: targets)
			c.getView().shift(factor, updateView);
		fireControllerEvent(ControllerType.SHIFT, factor);
	}
	
	protected void zoomX(final float factor){
        zoomX(factor, DEFAULT_UPDATE_VIEW);
    }   
    
	protected void zoomX(final float factor, boolean updateView){
        for(Chart c: targets)
            c.getView().zoomX(factor, updateView);
        fireControllerEvent(ControllerType.ZOOM, factor);
    }
	
	protected void zoomY(final float factor){
        zoomY(factor, DEFAULT_UPDATE_VIEW);
    }   
    
    protected void zoomY(final float factor, boolean updateView){
        for(Chart c: targets)
            c.getView().zoomY(factor, updateView);
        fireControllerEvent(ControllerType.ZOOM, factor);
    }
    
    protected void zoomZ(final float factor){
        zoomZ(factor, DEFAULT_UPDATE_VIEW);
    }   
    
    protected void zoomZ(final float factor, boolean updateView){
        for(Chart c: targets)
            c.getView().zoomZ(factor, updateView);
        fireControllerEvent(ControllerType.ZOOM, factor);
    }
    


    

	@Override
    public void addSlaveThreadController(CameraThreadController controller){
		removeSlaveThreadController();
		this.threadController = controller;
	}
	
	public void removeSlaveThreadController(){
		if(threadController!=null){
			threadController.stop();
			threadController = null;
		}
	}
	
	public void stopThreadController(){
		if(threadController!=null)
			threadController.stop();
	}
	
	public void startThreadController(){
		if(threadController!=null){
			threadController.start();
		}
	}
	
	protected CameraThreadController threadController;
	
	protected Coord2d prevMouse = Coord2d.ORIGIN;

}

 

Ads help maintain this website.