Revision 23058

View differences:

trunk/libraries/libRaster/src-test/org/gvsig/raster/potrace/TestRasterPotrace.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.raster.potrace;
20

  
21
import org.gvsig.jpotrace.Potrace;
22
import org.gvsig.jpotrace.PotraceException;
23
import org.gvsig.raster.buffer.BufferFactory;
24
import org.gvsig.raster.buffer.RasterBuffer;
25
import org.gvsig.raster.dataset.NotSupportedExtensionException;
26
import org.gvsig.raster.dataset.RasterDataset;
27
import org.gvsig.raster.dataset.io.RasterDriverException;
28
/**
29
 * 
30
 * @version 05/08/2008
31
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
32
 */
33
public class TestRasterPotrace {
34
	private String baseDir = "./test-images/";
35
//	private String fileIn = baseDir + "wheel.bmp";
36
//	private String fileOut = "/tmp/wheel.eps";
37
	private String fileIn = baseDir + "letters.bmp";
38
	private String fileOut = "/tmp/letters.eps";
39
//	private String fileIn = baseDir + "potrace.bmp";
40
//	private String fileOut = "/tmp/potrace.eps";
41

  
42
	private RasterDataset f1 = null;
43
	
44
	private int activaBit(int value, int pos) {
45
		value = (value | ((int)1 << pos));
46
		return value;
47
	}
48
	
49
	public TestRasterPotrace() {
50
		try {
51
			f1 = RasterDataset.open(null, fileIn);
52
			BufferFactory ds = new BufferFactory(f1);
53
			ds.setAllDrawableBands();
54
			ds.setAreaOfInterest();
55
			RasterBuffer buf = (RasterBuffer) ds.getRasterBuf();
56

  
57
			int dy = (buf.getWidth() + 32 - 1) / 32;
58

  
59
			int[] bufferBits = new int[buf.getHeight() * dy];
60

  
61
			for (int i = 0; i < bufferBits.length; i++)
62
				bufferBits[i] = 0;
63
			
64
			int bit = 0;
65
			int pos = 0;
66
			for (int i = 0; i < buf.getHeight(); i++) {
67
				pos = (buf.getHeight() - i - 1) * dy;
68
				bit = 0;
69
				for (int j = 0; j < buf.getWidth(); j++) {
70
					byte data = buf.getElemByte(i, j, 0);
71

  
72
					if (data == 0) {
73
						bufferBits[pos] = activaBit(bufferBits[pos], 31 - bit);
74
					}
75
					
76
					bit++;
77
					if (bit >= 32) {
78
						bit = 0;
79
						pos++;
80
					}
81
				}
82
			}
83
			
84
//			for (int i = 0; i < bufferBits.length; i++) {
85
//				if ((i % dy) == 0)
86
//					System.out.println("");
87
//				for (int j=31; j>=0; j--) {
88
//					if ((bufferBits[i] & ((int) 1 << j)) == 0)
89
//						System.out.print('1');
90
//					else
91
//						System.out.print('0');
92
//				}
93
//			}
94
			
95
			Potrace.vectorizeBufferRaster(bufferBits, buf.getWidth(), buf.getHeight(), fileOut);
96
		} catch (NotSupportedExtensionException e) {
97
			e.printStackTrace();
98
		} catch (RasterDriverException e) {
99
			e.printStackTrace();
100
		} catch (InterruptedException e) {
101
			e.printStackTrace();
102
		} catch (PotraceException e) {
103
			e.printStackTrace();
104
		}
105
	}
106

  
107
	public static void main(String[] args){
108
		new TestRasterPotrace();
109
	}
110
}

Also available in: Unified diff