samer@0
|
1 /*
|
samer@0
|
2 * Copyright (c) 2000, Samer Abdallah, King's College London.
|
samer@0
|
3 * All rights reserved.
|
samer@0
|
4 *
|
samer@0
|
5 * This software is provided AS iS and WITHOUT ANY WARRANTY;
|
samer@0
|
6 * without even the implied warranty of MERCHANTABILITY or
|
samer@0
|
7 * FITNESS FOR A PARTICULAR PURPOSE.
|
samer@0
|
8 */
|
samer@0
|
9
|
samer@0
|
10 package samer.tools;
|
samer@0
|
11
|
samer@0
|
12 import java.awt.*;
|
samer@0
|
13 import java.util.*;
|
samer@0
|
14 import samer.core.*;
|
samer@0
|
15 import samer.core.util.*;
|
samer@0
|
16
|
samer@0
|
17 public abstract class ImageTraceBase extends ImageViewer
|
samer@0
|
18 {
|
samer@0
|
19 int sx, sy;
|
samer@0
|
20 int scrollStep=1;
|
samer@0
|
21 boolean sc;
|
samer@0
|
22 boolean stretch=false;
|
samer@0
|
23 boolean scroll=false;
|
samer@0
|
24
|
samer@0
|
25
|
samer@0
|
26 ImageTraceBase( ImageSourceBase i, Observable o)
|
samer@0
|
27 {
|
samer@0
|
28 super(i,o);
|
samer@0
|
29
|
samer@0
|
30 setScroll(Shell.getBoolean("scroll",false));
|
samer@0
|
31 setStretch(Shell.getBoolean("stretch",false));
|
samer@0
|
32 setScrollStep(1);
|
samer@0
|
33 setCellSize(cx,cy);
|
samer@0
|
34 }
|
samer@0
|
35
|
samer@0
|
36 public void setScrollStep(int st) { scrollStep=st; }
|
samer@0
|
37 public void setScroll(boolean f) { scroll=f; }
|
samer@0
|
38 public void setStretch(boolean f) {
|
samer@0
|
39 stretch = f;
|
samer@0
|
40 sc = stretch || (cx!=1) || (cy!=1);
|
samer@0
|
41 }
|
samer@0
|
42
|
samer@0
|
43 public void setCellSize( int a, int b)
|
samer@0
|
44 {
|
samer@0
|
45 super.setCellSize(a,b);
|
samer@0
|
46 sc = stretch || (cx!=1) || (cy!=1);
|
samer@0
|
47 sx = cx*ip.getWidth();
|
samer@0
|
48 sy = cy*ip.getHeight();
|
samer@0
|
49 }
|
samer@0
|
50
|
samer@0
|
51 public void update( Graphics g) { clear(g); }
|
samer@0
|
52 public void paint( Graphics g) { clear(g); }
|
samer@0
|
53
|
samer@0
|
54 public void getCommands(Agent.Registry r) {
|
samer@0
|
55 super.getCommands(r); r.group();
|
samer@0
|
56 r.add("scroll",scroll).add("stretch",stretch).add("cell.size");
|
samer@0
|
57 }
|
samer@0
|
58
|
samer@0
|
59 public void execute(String cmd, Environment env) throws Exception
|
samer@0
|
60 {
|
samer@0
|
61 if (cmd.equals("scroll")) {
|
samer@0
|
62 setScroll(X._bool(env.datum(),!scroll));
|
samer@0
|
63 } else if (cmd.equals("stretch")) {
|
samer@0
|
64 setStretch(X._bool(env.datum(),!stretch));
|
samer@0
|
65 } else if (cmd.equals("cell.size")) {
|
samer@0
|
66 setCellSize(
|
samer@0
|
67 X._int(env.datum("cell.width"),cx),
|
samer@0
|
68 X._int(env.datum("cell.height"),cy)
|
samer@0
|
69 );
|
samer@0
|
70 } else super.execute(cmd,env);
|
samer@0
|
71 }
|
samer@0
|
72
|
samer@0
|
73 public abstract void next();
|
samer@0
|
74
|
samer@0
|
75 public void update(Observable o, Object oo) {
|
samer@0
|
76 if (o==obs && oo!=Viewable.DISPOSING) next();
|
samer@0
|
77 else super.update(o,oo);
|
samer@0
|
78 }
|
samer@0
|
79 }
|