view src/samer/tools/ImageTraceBase.java @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
line wrap: on
line source
/*
 *	Copyright (c) 2000, Samer Abdallah, King's College London.
 *	All rights reserved.
 *
 *	This software is provided AS iS and WITHOUT ANY WARRANTY; 
 *	without even the implied warranty of MERCHANTABILITY or 
 *	FITNESS FOR A PARTICULAR PURPOSE.
 */

package samer.tools;

import java.awt.*;
import java.util.*;
import samer.core.*;
import samer.core.util.*;

public abstract class ImageTraceBase extends ImageViewer
{
	int		sx, sy;
	int		scrollStep=1;
	boolean	sc;
	boolean	stretch=false;
	boolean	scroll=false;

	
	ImageTraceBase( ImageSourceBase i, Observable o)
	{
		super(i,o);

		setScroll(Shell.getBoolean("scroll",false));
		setStretch(Shell.getBoolean("stretch",false));
		setScrollStep(1);
		setCellSize(cx,cy);
	}

	public void setScrollStep(int st) { scrollStep=st; }
	public void setScroll(boolean f) { scroll=f; }
	public void setStretch(boolean f) {
		stretch = f;
		sc = stretch || (cx!=1) || (cy!=1);
	}

	public void setCellSize( int a, int b) 
	{ 
		super.setCellSize(a,b);
		sc = stretch || (cx!=1) || (cy!=1);
		sx = cx*ip.getWidth();
		sy = cy*ip.getHeight();
	}

	public void update( Graphics g) { clear(g); }
	public void paint( Graphics g) { clear(g); }

	public void getCommands(Agent.Registry r) {
		super.getCommands(r); r.group();
		r.add("scroll",scroll).add("stretch",stretch).add("cell.size");
	}

	public void execute(String cmd, Environment env)	throws Exception
	{
		if (cmd.equals("scroll")) {
			setScroll(X._bool(env.datum(),!scroll));
		} else if (cmd.equals("stretch")) {
			setStretch(X._bool(env.datum(),!stretch));
		} else if (cmd.equals("cell.size")) {
			setCellSize(
				X._int(env.datum("cell.width"),cx),
				X._int(env.datum("cell.height"),cy)
			);
		} else super.execute(cmd,env);
	}

	public abstract void next();
	
	public void update(Observable o, Object oo) {
		if (o==obs && oo!=Viewable.DISPOSING) next();
		else super.update(o,oo);
	}
}