-
Notifications
You must be signed in to change notification settings - Fork 7
/
ImgDialog.java
110 lines (98 loc) · 3.83 KB
/
ImgDialog.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.awt.image.*;
import javax.imageio.*;
import com.feradz.*;
import slider.*;
//import sun.awt.image.*;
public class ImgDialog extends JDialog{
private static final int nbin = 512;
private static final Dimension DIALOG_SIZE = new Dimension(1024/2, 1024/2);
static final String[] icons = {"res/zoom_in_16.png", "res/zoom_out_16.png",
"res/cursor_hand.png", "res/cursor.png","res/cursor_drag_hand.png"};
// to host the histogram of the image.
private ImgPanel imgPanel;
private JToggleButton[] button = new JToggleButton[4];
public ImgDialog(JFrame parent, String title, MyImage img){
super(parent, title);
//getContentPane().setLayout(new BorderLayout());
int width = img.getWidth(), height = img.getHeight();
Border raisedetched = BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
Border loweredetched = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
Border raisedbevel = BorderFactory.createRaisedBevelBorder();
Border loweredbevel = BorderFactory.createLoweredBevelBorder();
Border blackline = BorderFactory.createLineBorder(Color.black);
JPanel toolSection = new JPanel(new FlowLayout(FlowLayout.LEFT));
//toolSection.setBorder(raisedbevel);
ButtonGroup bg = new ButtonGroup();
int gap = 1;
Insets insert = new Insets(gap,gap,gap,gap);
ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent e) {
for(int i=0; i< button.length; i++)
if(button[i].equals(e.getSource())){
imgPanel.setTool(i);
System.out.format("%d-th button pressed\n",i);
break;
}}};
for(int i=0 ; i < button.length; i++){
button[i]=new JToggleButton( new ImageIcon(icons[i]));
System.out.println(button[i].getMargin());
button[i].setMargin(insert);
button[i].addActionListener(al);
bg.add(button[i]);
toolSection.add(button[i]);
}
add(toolSection, BorderLayout.PAGE_START);
JPanel imgSection = new JPanel(new BorderLayout());
imgSection.setBorder(BorderFactory.createTitledBorder("Image Reconstructed"));
imgPanel = new ImgPanel(img);
add(imgSection, BorderLayout.CENTER);
imgSection.add(imgPanel, BorderLayout.CENTER);
HistSection histSection = new HistSection(img);
add(histSection, BorderLayout.PAGE_END);
//histSection.add(new Button("test"),BorderLayout.PAGE_END);
pack();
button[3].doClick();
}
public void updateImg(){
imgPanel.update();
}
public void updateImgR(){
//imgPanel.setupRange();
imgPanel.update();
}
public static void main(String[] str){
int w=512, h=w;
double[] img=new double[w*h];
File file = new File("test.png");
BufferedImage bi;
try{
bi = ImageIO.read(file);
w=bi.getWidth();
w=512;
h=bi.getHeight();
if(w<h) h=w; else w=h;
img=new double[w*h];
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
img[i*w+j]=(double) (bi.getRGB(j,i) & 0xff);
}
}
img=new double[w*h];
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
img[i*w+j]=(i+j) % 712;
}
}
MyImage mi = new MyImage(img,w,h);
ImgDialog test = new ImgDialog(null, "test", mi);
test.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
test.setVisible(true);
}catch(IOException e){ e.printStackTrace();}
}
}