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 import java.awt.*;
|
samer@0
|
12 import java.util.*;
|
samer@0
|
13
|
samer@0
|
14 /**
|
samer@0
|
15 Things to add:
|
samer@0
|
16 UI for LinearMap used in MatrixImageSource
|
samer@0
|
17 vertical and horizontal scaling:
|
samer@0
|
18 cell size,
|
samer@0
|
19 vertical stretch
|
samer@0
|
20 vertical sweep version?
|
samer@0
|
21 cooperate with MatrixImageSource for efficiency:
|
samer@0
|
22 vertical strips rather than scan lines
|
samer@0
|
23
|
samer@0
|
24 */
|
samer@0
|
25
|
samer@0
|
26 public class ImageVTrace extends ImageTraceBase
|
samer@0
|
27 {
|
samer@0
|
28 private int y=0;
|
samer@0
|
29
|
samer@0
|
30 public ImageVTrace( ImageSourceBase i, Observable o) { super(i,o); }
|
samer@0
|
31
|
samer@0
|
32 public void next()
|
samer@0
|
33 {
|
samer@0
|
34 ip.sendPixels();
|
samer@0
|
35
|
samer@0
|
36 // img is m by n
|
samer@0
|
37
|
samer@0
|
38 if (!sc) {
|
samer@0
|
39 graphics.drawImage( img, 0, y, null);
|
samer@0
|
40 } else {
|
samer@0
|
41 if (stretch) {
|
samer@0
|
42 graphics.drawImage( img, 0, y, width, sy, null);
|
samer@0
|
43 } else {
|
samer@0
|
44 graphics.drawImage( img, 0, y, sx, sy, null);
|
samer@0
|
45 }
|
samer@0
|
46 }
|
samer@0
|
47
|
samer@0
|
48 // Scroll DOWN
|
samer@0
|
49 y-=sy;
|
samer@0
|
50 if (scroll) while (y<0) {
|
samer@0
|
51 graphics.copyArea(0,0,width,height-scrollStep-1,0,scrollStep);
|
samer@0
|
52 y+=scrollStep;
|
samer@0
|
53 }
|
samer@0
|
54 else if (y<0) y=height-1;
|
samer@0
|
55
|
samer@0
|
56 /*
|
samer@0
|
57 // Scroll UP
|
samer@0
|
58 y+=sy;
|
samer@0
|
59 if (scroll) while (y>=height) {
|
samer@0
|
60 graphics.copyArea(0,scrollStep,width,height-1,0,-scrollStep);
|
samer@0
|
61 y-=scrollStep;
|
samer@0
|
62 }
|
samer@0
|
63 else if (y>=height) y=0;
|
samer@0
|
64 */
|
samer@0
|
65
|
samer@0
|
66 }
|
samer@0
|
67
|
samer@0
|
68 public Dimension getPreferredSize() {
|
samer@0
|
69 return new Dimension(cx*ip.getWidth(),cy*256);
|
samer@0
|
70 }
|
samer@0
|
71 }
|