]> icculus.org git repositories - divverent/nexuiz.git/blob - tools/ImgToMap/src/imgtomap/JFrameMain.java
evaluate alpha channels (can be used to punch "holes" into the generated terrain...
[divverent/nexuiz.git] / tools / ImgToMap / src / imgtomap / JFrameMain.java
1 /*
2  * JFrameMain.java
3  *
4  * Created on 17. Mai 2008, 15:02
5  */
6
7 package imgtomap;
8
9 import java.io.File;
10 import javax.swing.JFileChooser;
11
12 /**
13  *
14  * @author  maik
15  */
16 public class JFrameMain extends javax.swing.JFrame {
17
18     /** Creates new form JFrameMain */
19     public JFrameMain() {
20         initComponents();
21         String testinput = "/mnt/data/nexuizsvn/nexuiz/trunk/tools/ImgToMap/test1.png";
22         String testoutput = "/tmp/test.map";
23         
24         if(new File(testinput).exists()) {
25             jTextFieldInput.setText(testinput);
26             jTextFieldOutput.setText(testoutput);
27         }
28         
29     }
30
31     /** This method is called from within the constructor to
32      * initialize the form.
33      * WARNING: Do NOT modify this code. The content of this method is
34      * always regenerated by the Form Editor.
35      */
36     @SuppressWarnings("unchecked")
37     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
38     private void initComponents() {
39
40         jPanel1 = new javax.swing.JPanel();
41         jTextFieldInput = new javax.swing.JTextField();
42         jButtonInput = new javax.swing.JButton();
43         jTextFieldOutput = new javax.swing.JTextField();
44         jButtonOutput = new javax.swing.JButton();
45         jSpinnerUnits = new javax.swing.JSpinner();
46         jLabel1 = new javax.swing.JLabel();
47         jSpinnerHeight = new javax.swing.JSpinner();
48         jLabel2 = new javax.swing.JLabel();
49         jButtonOK = new javax.swing.JButton();
50         jLabel3 = new javax.swing.JLabel();
51         jTextFieldTexture = new javax.swing.JTextField();
52         jCheckBoxDetail = new javax.swing.JCheckBox();
53         jLabel4 = new javax.swing.JLabel();
54         jSpinner1 = new javax.swing.JSpinner();
55
56         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
57         setTitle("ImgToMap");
58
59         jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Convert image to map"));
60
61         jButtonInput.setText("Select input file");
62         jButtonInput.addActionListener(new java.awt.event.ActionListener() {
63             public void actionPerformed(java.awt.event.ActionEvent evt) {
64                 jButtonInputActionPerformed(evt);
65             }
66         });
67
68         jButtonOutput.setText("Select output file");
69
70         jSpinnerUnits.setModel(new javax.swing.SpinnerNumberModel(256, 1, 2048, 1));
71
72         jLabel1.setText("Units per pixel:");
73
74         jSpinnerHeight.setModel(new javax.swing.SpinnerNumberModel(1024, 256, 16384, 1));
75
76         jLabel2.setText("Height for white:");
77
78         jButtonOK.setText("Start conversion!");
79         jButtonOK.addActionListener(new java.awt.event.ActionListener() {
80             public void actionPerformed(java.awt.event.ActionEvent evt) {
81                 jButtonOKActionPerformed(evt);
82             }
83         });
84
85         jLabel3.setText("Cover terrain surface with texture:");
86
87         jTextFieldTexture.setText("terrain/terrain1");
88
89         jCheckBoxDetail.setSelected(true);
90         jCheckBoxDetail.setText("make detail");
91
92         jLabel4.setText("Texture scale:");
93
94         jSpinner1.setModel(new javax.swing.SpinnerNumberModel(0.5d, 0.25d, 16.0d, 0.25d));
95
96         javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
97         jPanel1.setLayout(jPanel1Layout);
98         jPanel1Layout.setHorizontalGroup(
99             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
100             .addGroup(jPanel1Layout.createSequentialGroup()
101                 .addContainerGap()
102                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
103                     .addComponent(jTextFieldTexture, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE)
104                     .addGroup(jPanel1Layout.createSequentialGroup()
105                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
106                             .addComponent(jTextFieldInput, javax.swing.GroupLayout.DEFAULT_SIZE, 313, Short.MAX_VALUE)
107                             .addComponent(jTextFieldOutput, javax.swing.GroupLayout.DEFAULT_SIZE, 313, Short.MAX_VALUE))
108                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
109                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
110                             .addComponent(jButtonOutput, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)
111                             .addComponent(jButtonInput, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)))
112                     .addComponent(jButtonOK)
113                     .addGroup(jPanel1Layout.createSequentialGroup()
114                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
115                             .addComponent(jLabel1)
116                             .addComponent(jSpinnerUnits, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
117                         .addGap(27, 27, 27)
118                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
119                             .addGroup(jPanel1Layout.createSequentialGroup()
120                                 .addComponent(jSpinnerHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
121                                 .addGap(18, 18, 18)
122                                 .addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
123                             .addGroup(jPanel1Layout.createSequentialGroup()
124                                 .addComponent(jLabel2)
125                                 .addGap(18, 18, 18)
126                                 .addComponent(jLabel4)))
127                         .addGap(132, 132, 132))
128                     .addComponent(jLabel3)
129                     .addComponent(jCheckBoxDetail))
130                 .addContainerGap())
131         );
132         jPanel1Layout.setVerticalGroup(
133             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
134             .addGroup(jPanel1Layout.createSequentialGroup()
135                 .addContainerGap()
136                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
137                     .addComponent(jButtonInput)
138                     .addComponent(jTextFieldInput, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
139                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
140                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
141                     .addComponent(jButtonOutput)
142                     .addComponent(jTextFieldOutput, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
143                 .addGap(18, 18, 18)
144                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
145                     .addComponent(jLabel1)
146                     .addComponent(jLabel2)
147                     .addComponent(jLabel4))
148                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
149                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
150                     .addComponent(jSpinnerUnits, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
151                     .addComponent(jSpinnerHeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
152                     .addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
153                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
154                 .addComponent(jLabel3)
155                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
156                 .addComponent(jTextFieldTexture, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
157                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
158                 .addComponent(jCheckBoxDetail)
159                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
160                 .addComponent(jButtonOK)
161                 .addContainerGap())
162         );
163
164         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
165         getContentPane().setLayout(layout);
166         layout.setHorizontalGroup(
167             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
168             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
169                 .addContainerGap()
170                 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
171                 .addContainerGap())
172         );
173         layout.setVerticalGroup(
174             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
175             .addGroup(layout.createSequentialGroup()
176                 .addContainerGap()
177                 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
178                 .addContainerGap())
179         );
180
181         pack();
182     }// </editor-fold>//GEN-END:initComponents
183
184 private void jButtonInputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInputActionPerformed
185     JFileChooser fc = new JFileChooser();
186     int ret = fc.showOpenDialog(this);
187     
188     if(ret == fc.APPROVE_OPTION) {
189         File f = fc.getSelectedFile();
190         if(f.exists()) {
191             jTextFieldInput.setText(f.getAbsolutePath());
192         }
193     }
194 }//GEN-LAST:event_jButtonInputActionPerformed
195
196 private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOKActionPerformed
197     Parameters p = new Parameters();
198     p.infile = jTextFieldInput.getText();
199     p.outfile = jTextFieldOutput.getText();
200     p.texture = jTextFieldTexture.getText();
201     p.pixelsize = (Integer)jSpinnerUnits.getValue();
202     p.height = (Integer)jSpinnerHeight.getValue();
203     p.texturescale = (Double)jSpinner1.getValue();
204     p.detail = jCheckBoxDetail.isSelected();
205     new MapWriter().writeMap(p);
206 }//GEN-LAST:event_jButtonOKActionPerformed
207
208     /**
209     * @param args the command line arguments
210     */
211     public static void main(String args[]) {
212         java.awt.EventQueue.invokeLater(new Runnable() {
213             public void run() {
214                 new JFrameMain().setVisible(true);
215             }
216         });
217     }
218
219     // Variables declaration - do not modify//GEN-BEGIN:variables
220     private javax.swing.JButton jButtonInput;
221     private javax.swing.JButton jButtonOK;
222     private javax.swing.JButton jButtonOutput;
223     private javax.swing.JCheckBox jCheckBoxDetail;
224     private javax.swing.JLabel jLabel1;
225     private javax.swing.JLabel jLabel2;
226     private javax.swing.JLabel jLabel3;
227     private javax.swing.JLabel jLabel4;
228     private javax.swing.JPanel jPanel1;
229     private javax.swing.JSpinner jSpinner1;
230     private javax.swing.JSpinner jSpinnerHeight;
231     private javax.swing.JSpinner jSpinnerUnits;
232     private javax.swing.JTextField jTextFieldInput;
233     private javax.swing.JTextField jTextFieldOutput;
234     private javax.swing.JTextField jTextFieldTexture;
235     // End of variables declaration//GEN-END:variables
236
237 }