Revision 400

View differences:

tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgMTextReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.util.ArrayList;
8

  
9
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
10
import org.gvsig.dwg.lib.DwgHandleReference;
11
import org.gvsig.dwg.lib.DwgObject;
12
import org.gvsig.dwg.lib.DwgUtil;
13
import org.gvsig.dwg.lib.objects.DwgMText;
14

  
15

  
16
/**
17
 * @author alzabord
18
 *
19
 * TODO To change the template for this generated type comment go to
20
 * Window - Preferences - Java - Code Style - Code Templates
21
 */
22
public class DwgMTextReader15 extends AbstractDwg15Reader{
23

  
24
	/* (non-Javadoc)
25
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
26
	 */
27
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
28
		if(! (dwgObj instanceof DwgMText))
29
			throw new RuntimeException("ArcReader 15 solo puede leer DwgMText");
30
		DwgMText txt = (DwgMText) dwgObj;
31
		int bitPos = offset;
32
		bitPos = headTailReader.readObjectHeader(data, bitPos, txt);
33
		ArrayList v = DwgUtil.getBitDouble(data, bitPos);
34
		bitPos = ((Integer)v.get(0)).intValue();
35
		double x = ((Double)v.get(1)).doubleValue();
36
		v = DwgUtil.getBitDouble(data, bitPos);
37
		bitPos = ((Integer)v.get(0)).intValue();
38
		double y = ((Double)v.get(1)).doubleValue();
39
		v = DwgUtil.getBitDouble(data, bitPos);
40
		bitPos = ((Integer)v.get(0)).intValue();
41
		double z = ((Double)v.get(1)).doubleValue();
42
		double[] coord = new double[]{x, y, z};
43
		txt.setInsertionPoint(coord);
44
		v = DwgUtil.getBitDouble(data, bitPos);
45
		bitPos = ((Integer)v.get(0)).intValue();
46
		x = ((Double)v.get(1)).doubleValue();
47
		v = DwgUtil.getBitDouble(data, bitPos);
48
		bitPos = ((Integer)v.get(0)).intValue();
49
		y = ((Double)v.get(1)).doubleValue();
50
		v = DwgUtil.getBitDouble(data, bitPos);
51
		bitPos = ((Integer)v.get(0)).intValue();
52
		z = ((Double)v.get(1)).doubleValue();
53
		coord = new double[]{x, y, z};
54
		txt.setExtrusion(coord);
55
		v = DwgUtil.getBitDouble(data, bitPos);
56
		bitPos = ((Integer)v.get(0)).intValue();
57
		x = ((Double)v.get(1)).doubleValue();
58
		v = DwgUtil.getBitDouble(data, bitPos);
59
		bitPos = ((Integer)v.get(0)).intValue();
60
		y = ((Double)v.get(1)).doubleValue();
61
		v = DwgUtil.getBitDouble(data, bitPos);
62
		bitPos = ((Integer)v.get(0)).intValue();
63
		z = ((Double)v.get(1)).doubleValue();
64
		coord = new double[]{x, y, z};
65
		txt.setXAxisDirection(coord);
66
		v = DwgUtil.getBitDouble(data, bitPos);
67
		bitPos = ((Integer)v.get(0)).intValue();
68
		double val = ((Double)v.get(1)).doubleValue();
69
		txt.setWidth(val);
70
		v = DwgUtil.getBitDouble(data, bitPos);
71
		bitPos = ((Integer)v.get(0)).intValue();
72
		val = ((Double)v.get(1)).doubleValue();
73
		txt.setHeight(val);
74
		v = DwgUtil.getBitShort(data, bitPos);
75
		bitPos = ((Integer)v.get(0)).intValue();
76
		int ival = ((Integer)v.get(1)).intValue();
77
		txt.setAttachment(ival);
78
		v = DwgUtil.getBitShort(data, bitPos);
79
		bitPos = ((Integer)v.get(0)).intValue();
80
		ival = ((Integer)v.get(1)).intValue();
81
		txt.setDrawingDir(ival);
82
		v = DwgUtil.getBitDouble(data, bitPos);
83
		bitPos = ((Integer)v.get(0)).intValue();
84
		val = ((Double)v.get(1)).doubleValue();
85
		txt.setExtHeight(val);
86
		v = DwgUtil.getBitDouble(data, bitPos);
87
		bitPos = ((Integer)v.get(0)).intValue();
88
		val = ((Double)v.get(1)).doubleValue();
89
		txt.setExtWidth(val);
90
		v = DwgUtil.getTextString(data, bitPos);
91
		bitPos = ((Integer)v.get(0)).intValue();
92
		String text = (String)v.get(1);
93
		txt.setText(text);
94
		v = DwgUtil.getBitShort(data, bitPos);
95
		bitPos = ((Integer)v.get(0)).intValue();
96
		ival = ((Integer)v.get(1)).intValue();
97
		txt.setLineSpacingStyle(ival);
98
		v = DwgUtil.getBitDouble(data, bitPos);
99
		bitPos = ((Integer)v.get(0)).intValue();
100
		val = ((Double)v.get(1)).doubleValue();
101
		txt.setLineSpacingFactor(val);
102
		v = DwgUtil.testBit(data, bitPos);
103
		bitPos = ((Integer)v.get(0)).intValue();
104
		boolean flag = ((Boolean)v.get(1)).booleanValue();
105
		bitPos = headTailReader.readObjectTailer(data, bitPos, txt);
106
		
107
		DwgHandleReference hr = new DwgHandleReference();
108
		bitPos = hr.read(data, bitPos);
109
	    txt.setStyleHandle(hr);
110
	}
111
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgCircleReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.util.ArrayList;
8

  
9
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
10
import org.gvsig.dwg.lib.DwgObject;
11
import org.gvsig.dwg.lib.DwgUtil;
12
import org.gvsig.dwg.lib.objects.DwgCircle;
13

  
14

  
15
/**
16
 * @author alzabord
17
 *
18
 * TODO To change the template for this generated type comment go to
19
 * Window - Preferences - Java - Code Style - Code Templates
20
 */
21
public class DwgCircleReader15 extends AbstractDwg15Reader{
22

  
23
	/* (non-Javadoc)
24
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
25
	 */
26
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
27
		if(! (dwgObj instanceof DwgCircle))
28
			throw new RuntimeException("ArcReader 15 solo puede leer DwgCircle");
29
		DwgCircle circle = (DwgCircle) dwgObj;
30
		int bitPos = offset;
31
		bitPos = headTailReader.readObjectHeader(data, bitPos, dwgObj);
32
		ArrayList v = DwgUtil.getBitDouble(data, bitPos);
33
		bitPos = ((Integer)v.get(0)).intValue();
34
		double x = ((Double)v.get(1)).doubleValue();
35
		v = DwgUtil.getBitDouble(data, bitPos);
36
		bitPos = ((Integer)v.get(0)).intValue();
37
		double y = ((Double)v.get(1)).doubleValue();
38
		v = DwgUtil.getBitDouble(data, bitPos);
39
		bitPos = ((Integer)v.get(0)).intValue();
40
		double z = ((Double)v.get(1)).doubleValue();
41
		double[] coord = new double[]{x, y, z};
42
		circle.setCenter(coord);
43
		v = DwgUtil.getBitDouble(data, bitPos);
44
		bitPos = ((Integer)v.get(0)).intValue();
45
		double val = ((Double)v.get(1)).doubleValue();
46
		circle.setRadius(val);
47
		v = DwgUtil.testBit(data, bitPos);
48
		bitPos = ((Integer)v.get(0)).intValue();
49
		boolean flag = ((Boolean)v.get(1)).booleanValue();
50
	    if (flag) {
51
			val=0.0;
52
		} else {
53
			v = DwgUtil.getBitDouble(data, bitPos);
54
			bitPos = ((Integer)v.get(0)).intValue();
55
			val = ((Double)v.get(1)).doubleValue();
56
		}
57
	    circle.setThickness(val);
58
		v = DwgUtil.testBit(data, bitPos);
59
		bitPos = ((Integer)v.get(0)).intValue();
60
		flag = ((Boolean)v.get(1)).booleanValue();
61
		if (flag) {
62
			 x = y = 0.0;
63
			 z = 1.0;
64
		} else {
65
			v = DwgUtil.getBitDouble(data, bitPos);
66
			bitPos = ((Integer)v.get(0)).intValue();
67
			x = ((Double)v.get(1)).doubleValue();
68
			v = DwgUtil.getBitDouble(data, bitPos);
69
			bitPos = ((Integer)v.get(0)).intValue();
70
			y = ((Double)v.get(1)).doubleValue();
71
			v = DwgUtil.getBitDouble(data, bitPos);
72
			bitPos = ((Integer)v.get(0)).intValue();
73
			z = ((Double)v.get(1)).doubleValue();
74
		}
75
		coord = new double[]{x, y, z};
76
		circle.setExtrusion(coord);
77
		bitPos = headTailReader.readObjectTailer(data, bitPos, dwgObj);
78
	}
79
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgLayerControlReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import org.gvsig.dwg.lib.DwgObject;
8

  
9
/**
10
 * @author alzabord
11
 */
12
public class DwgLayerControlReader15 extends AbstractDwg15Reader{
13

  
14
	/* (non-Javadoc)
15
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
16
	 */
17
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) {
18
		//TODO Si no lo leemos, mejor ni considerarlo
19
		//Ver la especificaci?n de este objeto
20
	}
21

  
22
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgPFaceReader15.java
1
/*
2
 * Created on 19-mar-2007
3
 *
4
 * gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
5
 *
6
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
7
 *
8
 * This program is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU General Public License
10
 * as published by the Free Software Foundation; either version 2
11
 * of the License, or (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program; if not, write to the Free Software
20
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
21
 *
22
 * For more information, contact:
23
 *
24
 *  Generalitat Valenciana
25
 *   Conselleria d'Infraestructures i Transport
26
 *   Av. Blasco Ib??ez, 50
27
 *   46010 VALENCIA
28
 *   SPAIN
29
 *
30
 *      +34 963862235
31
 *   gvsig@gva.es
32
 *      www.gvsig.gva.es
33
 *
34
 *    or
35
 *
36
 *   IVER T.I. S.A
37
 *   Salamanca 50
38
 *   46005 Valencia
39
 *   Spain
40
 *
41
 *   +34 963163400
42
 *   dac@iver.es
43
 */
44
/* CVS MESSAGES:
45
*
46
* $Id: DwgPFaceReader15.java 28969 2009-05-25 13:23:12Z jmvivo $
47
* $Log$
48
* Revision 1.1.2.1  2007-03-21 19:49:16  azabala
49
* implementation of dwg 12, 13, 14.
50
*
51
* Revision 1.1  2007/03/20 19:57:08  azabala
52
* source code cleaning
53
*
54
*
55
*/
56
package org.gvsig.dwg.lib.readers.v15;
57

  
58
import java.util.List;
59

  
60
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
61
import org.gvsig.dwg.lib.DwgHandleReference;
62
import org.gvsig.dwg.lib.DwgObject;
63
import org.gvsig.dwg.lib.DwgUtil;
64
import org.gvsig.dwg.lib.objects.DwgPFacePolyline;
65

  
66

  
67
public class DwgPFaceReader15 extends AbstractDwg15Reader {
68
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj)
69
			throws RuntimeException, CorruptedDwgEntityException {
70
		
71
		if(! (dwgObj instanceof DwgPFacePolyline))
72
	    	throw new RuntimeException("ArcReader 15 solo puede leer DwgPFacePolyline");
73
		DwgPFacePolyline pface = (DwgPFacePolyline) dwgObj;
74
		int bitPos = offset;
75
		bitPos = headTailReader.readObjectHeader(data, bitPos, pface);
76
		
77
		List val = DwgUtil.getBitShort(data, bitPos);
78
		bitPos = ((Integer) val.get(0)).intValue();
79
		int vertexCount = ((Integer) val.get(1)).intValue();
80
		pface.setVertexCount(vertexCount);
81
		
82
		val = DwgUtil.getBitShort(data, bitPos);
83
		bitPos = ((Integer) val.get(0)).intValue();
84
		int faceCount = ((Integer) val.get(1)).intValue();
85
		pface.setFaceCount(faceCount);
86
		
87
		bitPos = headTailReader.readObjectTailer(data, bitPos, pface);
88
		
89
		DwgHandleReference handle = new DwgHandleReference();
90
		bitPos = handle.read(data, bitPos);
91
		pface.setFirstVertexHandle(handle);
92
		
93
		handle = new DwgHandleReference();
94
		bitPos = handle.read(data, bitPos);
95
		pface.setLastVertexHandle(handle);
96
		
97
		handle = new DwgHandleReference();
98
		bitPos = handle.read(data, bitPos);
99
		pface.setSeqendHandle(handle);
100
	}
101

  
102
}
103

  
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgSeqEndReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
8
import org.gvsig.dwg.lib.DwgObject;
9

  
10
/**
11
 * @author alzabord
12
 *
13
 * TODO To change the template for this generated type comment go to
14
 * Window - Preferences - Java - Code Style - Code Templates
15
 */
16
public class DwgSeqEndReader15 extends AbstractDwg15Reader{
17

  
18
	/* (non-Javadoc)
19
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
20
	 */
21
	//TODO Algunos objetos no aportan nada al head y tail
22
	//ver si quitarlo (o pasar la implementacion a la clase abstracta)
23
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
24
		int bitPos = offset;
25
		bitPos = headTailReader.readObjectHeader(data, bitPos, dwgObj);
26
		bitPos = headTailReader.readObjectTailer(data, bitPos, dwgObj);
27
	}
28
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgPolyline2DReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.util.ArrayList;
8

  
9
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
10
import org.gvsig.dwg.lib.DwgHandleReference;
11
import org.gvsig.dwg.lib.DwgObject;
12
import org.gvsig.dwg.lib.DwgUtil;
13
import org.gvsig.dwg.lib.objects.DwgPolyline2D;
14

  
15

  
16
/**
17
 * @author alzabord
18
 *
19
 * TODO To change the template for this generated type comment go to
20
 * Window - Preferences - Java - Code Style - Code Templates
21
 */
22
public class DwgPolyline2DReader15 extends AbstractDwg15Reader{
23

  
24
	/* (non-Javadoc)
25
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
26
	 */
27
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
28
		if(! (dwgObj instanceof DwgPolyline2D))
29
			throw new RuntimeException("ArcReader 15 solo puede leer DwgPolyline2D");
30
		DwgPolyline2D ln = (DwgPolyline2D) dwgObj;
31
		int bitPos = offset;
32
		bitPos = headTailReader.readObjectHeader(data, bitPos, ln);
33
		ArrayList v = DwgUtil.getBitShort(data, bitPos);
34
		bitPos = ((Integer)v.get(0)).intValue();
35
		int flags = ((Integer)v.get(1)).intValue();
36
		ln.setFlags(flags);
37
		v = DwgUtil.getBitShort(data, bitPos);
38
		bitPos = ((Integer)v.get(0)).intValue();
39
		int ctype = ((Integer)v.get(1)).intValue();
40
		ln.setCurveType(ctype);
41
		v = DwgUtil.getBitDouble(data, bitPos);
42
		bitPos = ((Integer)v.get(0)).intValue();
43
		double sw = ((Double)v.get(1)).doubleValue();
44
		ln.setInitWidth(sw);
45
		v = DwgUtil.getBitDouble(data, bitPos);
46
		bitPos = ((Integer)v.get(0)).intValue();
47
		double ew = ((Double)v.get(1)).doubleValue();
48
		ln.setEndWidth(ew);
49
		v = DwgUtil.testBit(data, bitPos);
50
		bitPos = ((Integer)v.get(0)).intValue();
51
		boolean flag = ((Boolean)v.get(1)).booleanValue();
52
	    double th = 0.0;
53
	    if (!flag) {
54
			v = DwgUtil.getBitDouble(data, bitPos);
55
			bitPos = ((Integer)v.get(0)).intValue();
56
			th = ((Double)v.get(1)).doubleValue();
57
	    }
58
	    ln.setThickness(th);
59
		v = DwgUtil.getBitDouble(data, bitPos);
60
		bitPos = ((Integer)v.get(0)).intValue();
61
		double elev = ((Double)v.get(1)).doubleValue();
62
		ln.setElevation(elev);
63
		v = DwgUtil.testBit(data, bitPos);
64
		bitPos = ((Integer)v.get(0)).intValue();
65
		flag = ((Boolean)v.get(1)).booleanValue();
66
	    double ex, ey, ez = 0.0;
67
	    if (flag) {
68
	    	ex = 0.0;
69
	    	ey = 0.0;
70
	    	ez = 1.0;
71
	    } else {
72
			v = DwgUtil.getBitDouble(data, bitPos);
73
			bitPos = ((Integer)v.get(0)).intValue();
74
			ex = ((Double)v.get(1)).doubleValue();
75
			v = DwgUtil.getBitDouble(data, bitPos);
76
			bitPos = ((Integer)v.get(0)).intValue();
77
			ey = ((Double)v.get(1)).doubleValue();
78
			v = DwgUtil.getBitDouble(data, bitPos);
79
			bitPos = ((Integer)v.get(0)).intValue();
80
			ez = ((Double)v.get(1)).doubleValue();
81
	    }
82
	    ln.setExtrusion(new double[]{ex, ey, ez});
83

  
84
	    bitPos = headTailReader.readObjectTailer(data, bitPos, ln);
85
		DwgHandleReference hr = new DwgHandleReference();
86
		bitPos = hr.read(data, bitPos);
87
		ln.setFirstVertexHandle(hr);
88

  
89
		hr = new DwgHandleReference();
90
		bitPos = hr.read(data, bitPos);
91
		ln.setLastVertexHandle(hr);
92

  
93
		hr = new DwgHandleReference();
94
		bitPos = hr.read(data, bitPos);
95
	    ln.setSeqendHandle(hr);
96

  
97
	}
98

  
99
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgPolyline3DReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.util.ArrayList;
8

  
9
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
10
import org.gvsig.dwg.lib.DwgHandleReference;
11
import org.gvsig.dwg.lib.DwgObject;
12
import org.gvsig.dwg.lib.DwgUtil;
13
import org.gvsig.dwg.lib.objects.DwgPolyline3D;
14

  
15

  
16
/**
17
 * @author alzabord
18
 */
19
public class DwgPolyline3DReader15 extends AbstractDwg15Reader{
20

  
21
	/* (non-Javadoc)
22
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
23
	 */
24
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
25
		if(! (dwgObj instanceof DwgPolyline3D))
26
			throw new RuntimeException("ArcReader 15 solo puede leer DwgPolyline3D");
27
		DwgPolyline3D ln = (DwgPolyline3D) dwgObj;
28
		int bitPos = offset;
29
		bitPos = headTailReader.readObjectHeader(data, bitPos, ln);
30
		ArrayList v = DwgUtil.getRawChar(data, bitPos);
31
		bitPos = ((Integer)v.get(0)).intValue();
32
		int sflags = ((Integer)v.get(1)).intValue();
33
		ln.setSplineFlags(sflags);
34
		v = DwgUtil.getRawChar(data, bitPos);
35
		bitPos = ((Integer)v.get(0)).intValue();
36
		int cflags = ((Integer)v.get(1)).intValue();
37
		ln.setClosedFlags(cflags);
38
		bitPos = headTailReader.readObjectTailer(data, bitPos, ln);
39
		
40
		DwgHandleReference hr = new DwgHandleReference();
41
		bitPos = hr.read(data, bitPos);
42
		ln.setFirstVertexHandle(hr);
43

  
44
		hr = new DwgHandleReference();
45
		bitPos = hr.read(data, bitPos);
46
		ln.setLastVertexHandle(hr);
47

  
48
		hr = new DwgHandleReference();
49
		bitPos = hr.read(data, bitPos);
50
	    ln.setSeqendHandle(hr);
51
	}
52
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgTextReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.awt.geom.Point2D;
8
import java.util.ArrayList;
9

  
10
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
11
import org.gvsig.dwg.lib.DwgObject;
12
import org.gvsig.dwg.lib.DwgUtil;
13
import org.gvsig.dwg.lib.objects.DwgText;
14
import org.gvsig.dwg.lib.util.TextToUnicodeConverter;
15

  
16

  
17
/**
18
 * @author alzabord
19
 *
20
 * TODO To change the template for this generated type comment go to
21
 * Window - Preferences - Java - Code Style - Code Templates
22
 */
23
public class DwgTextReader15 extends AbstractDwg15Reader {
24

  
25
	/* (non-Javadoc)
26
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
27
	 */
28
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
29
		if(! (dwgObj instanceof DwgText))
30
			throw new RuntimeException("ArcReader 15 solo puede leer DwgText");
31
		DwgText txt = (DwgText) dwgObj;
32
		int bitPos = offset;
33
		bitPos = headTailReader.readObjectHeader(data, bitPos, txt);
34
		ArrayList v = DwgUtil.getRawChar(data, bitPos);
35
		bitPos = ((Integer)v.get(0)).intValue();
36
		int dflag = ((Integer)v.get(1)).intValue();
37
		txt.setDataFlag(dflag);
38
		if ((dflag & 0x1)==0) {
39
			v = DwgUtil.getRawDouble(data, bitPos);
40
			bitPos = ((Integer)v.get(0)).intValue();
41
			double elev = ((Double)v.get(1)).doubleValue();
42
			txt.setElevation(elev);
43
		}
44
		v = DwgUtil.getRawDouble(data, bitPos);
45
		bitPos = ((Integer)v.get(0)).intValue();
46
		double x1 = ((Double)v.get(1)).doubleValue();
47
		v = DwgUtil.getRawDouble(data, bitPos);
48
		bitPos = ((Integer)v.get(0)).intValue();
49
		double y1 = ((Double)v.get(1)).doubleValue();
50
		txt.setInsertionPoint(new Point2D.Double(x1, y1));
51
		if ((dflag & 0x2)==0) {
52
			v = DwgUtil.getDefaultDouble(data, bitPos, x1);
53
			bitPos = ((Integer)v.get(0)).intValue();
54
			double xa = ((Double)v.get(1)).doubleValue();
55
			v = DwgUtil.getDefaultDouble(data, bitPos, y1);
56
			bitPos = ((Integer)v.get(0)).intValue();
57
			double ya = ((Double)v.get(1)).doubleValue();
58
			txt.setAlignmentPoint(new Point2D.Double(xa, ya));
59
		}
60
		v = DwgUtil.testBit(data, bitPos);
61
		bitPos = ((Integer)v.get(0)).intValue();
62
		boolean flag = ((Boolean)v.get(1)).booleanValue();
63
		double x, y, z;
64
		if (flag) {
65
			x = 0.0;
66
			y = 0.0;
67
			z = 1.0;
68
		} else {
69
			v = DwgUtil.getBitDouble(data, bitPos);
70
			bitPos = ((Integer)v.get(0)).intValue();
71
			x = ((Double)v.get(1)).doubleValue();
72
			v = DwgUtil.getBitDouble(data, bitPos);
73
			bitPos = ((Integer)v.get(0)).intValue();
74
			y = ((Double)v.get(1)).doubleValue();
75
			v = DwgUtil.getBitDouble(data, bitPos);
76
			bitPos = ((Integer)v.get(0)).intValue();
77
			z = ((Double)v.get(1)).doubleValue();
78
		}
79
		txt.setExtrusion(new double[]{x, y, z});
80
		v = DwgUtil.testBit(data, bitPos);
81
		bitPos = ((Integer)v.get(0)).intValue();
82
		flag = ((Boolean)v.get(1)).booleanValue();
83
	    double th;
84
		if (flag) {
85
			th=0.0;
86
		} else {
87
			v = DwgUtil.getBitDouble(data, bitPos);
88
			bitPos = ((Integer)v.get(0)).intValue();
89
			th = ((Double)v.get(1)).doubleValue();
90
		}
91
		txt.setThickness(th);
92
		if ((dflag & 0x4) == 0) {
93
			v = DwgUtil.getRawDouble(data, bitPos);
94
			bitPos = ((Integer)v.get(0)).intValue();
95
			double oblique = ((Double)v.get(1)).doubleValue();
96
			txt.setObliqueAngle(oblique);
97
		}
98
		if ((dflag & 0x8) == 0) {
99
			v = DwgUtil.getRawDouble(data, bitPos);
100
			bitPos = ((Integer)v.get(0)).intValue();
101
			double rot = ((Double)v.get(1)).doubleValue();
102
			txt.setRotationAngle(rot);
103
		}
104
		v = DwgUtil.getRawDouble(data, bitPos);
105
		bitPos = ((Integer)v.get(0)).intValue();
106
		double height = ((Double)v.get(1)).doubleValue();
107
		txt.setHeight(height);
108
		if ((dflag & 0x10) == 0) {
109
			v = DwgUtil.getRawDouble(data, bitPos);
110
			bitPos = ((Integer)v.get(0)).intValue();
111
			double width = ((Double)v.get(1)).doubleValue();
112
			txt.setWidthFactor(width);
113
		}
114
		v = DwgUtil.getTextString(data, bitPos);
115
		bitPos = ((Integer)v.get(0)).intValue();
116
		String text = (String)v.get(1);
117
		text = TextToUnicodeConverter.convertText(text);
118
		txt.setText(text);
119
		if ((dflag & 0x20) == 0) {
120
			v = DwgUtil.getBitShort(data, bitPos);
121
			bitPos = ((Integer)v.get(0)).intValue();
122
			int gen = ((Integer)v.get(1)).intValue();
123
			txt.setGeneration(gen);
124
		}
125
		if ((dflag & 0x40) == 0) {
126
			v = DwgUtil.getBitShort(data, bitPos);
127
			bitPos = ((Integer)v.get(0)).intValue();
128
			int halign = ((Integer)v.get(1)).intValue();
129
			txt.setHalign(halign);
130
		}
131
		if ((dflag & 0x80) == 0) {
132
			v = DwgUtil.getBitShort(data, bitPos);
133
			bitPos = ((Integer)v.get(0)).intValue();
134
			int valign = ((Integer)v.get(1)).intValue();
135
			txt.setValign(valign);
136
		}
137
		bitPos = headTailReader.readObjectTailer(data, bitPos, txt);
138
	}
139

  
140
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgLineReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.util.ArrayList;
8

  
9
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
10
import org.gvsig.dwg.lib.DwgObject;
11
import org.gvsig.dwg.lib.DwgUtil;
12
import org.gvsig.dwg.lib.objects.DwgLine;
13

  
14

  
15
/**
16
 * @author alzabord
17
 *
18
 * TODO To change the template for this generated type comment go to
19
 * Window - Preferences - Java - Code Style - Code Templates
20
 */
21
public class DwgLineReader15 extends AbstractDwg15Reader{
22

  
23
	/* (non-Javadoc)
24
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
25
	 */
26
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
27
		if(! (dwgObj instanceof DwgLine))
28
			throw new RuntimeException("ArcReader 15 solo puede leer DwgLine");
29
		DwgLine line = (DwgLine) dwgObj;
30
		int bitPos = offset;
31
		bitPos = headTailReader.readObjectHeader(data, bitPos, line);
32
		ArrayList v = DwgUtil.testBit(data, bitPos);
33
		bitPos = ((Integer)v.get(0)).intValue();
34
		line.setZflag(((Boolean)v.get(1)).booleanValue());
35
		v = DwgUtil.getRawDouble(data, bitPos);
36
		bitPos = ((Integer)v.get(0)).intValue();
37
		double x1 = ((Double)v.get(1)).doubleValue();
38
		v = DwgUtil.getDefaultDouble(data, bitPos, x1);
39
		bitPos = ((Integer)v.get(0)).intValue();
40
		double x2 = ((Double)v.get(1)).doubleValue();
41
		v = DwgUtil.getRawDouble(data, bitPos);
42
		bitPos = ((Integer)v.get(0)).intValue();
43
		double y1 = ((Double)v.get(1)).doubleValue();
44
		v = DwgUtil.getDefaultDouble(data, bitPos, y1);
45
		bitPos = ((Integer)v.get(0)).intValue();
46
		double y2 = ((Double)v.get(1)).doubleValue();
47
		double[] p1;
48
		double[] p2;
49
	    if (!line.isZflag()) {
50
			v = DwgUtil.getRawDouble(data, bitPos);
51
			bitPos = ((Integer)v.get(0)).intValue();
52
			double z1 = ((Double)v.get(1)).doubleValue();
53
			v = DwgUtil.getDefaultDouble(data, bitPos, z1);
54
			bitPos = ((Integer)v.get(0)).intValue();
55
			double z2 = ((Double)v.get(1)).doubleValue();
56
			p1 = new double[]{x1, y1, z1};
57
			p2 = new double[]{x2, y2, z2};
58
		} else {
59
			p1 = new double[]{x1, y1, 0d};
60
			p2 = new double[]{x2, y2, 0d};
61
		}
62
	    line.setP1(p1);
63
	    line.setP2(p2);
64
		v = DwgUtil.testBit(data, bitPos);
65
		bitPos = ((Integer)v.get(0)).intValue();
66
		boolean flag = ((Boolean)v.get(1)).booleanValue();
67
	    double val;
68
		if (flag) {
69
			val=0.0;
70
		} else {
71
			v = DwgUtil.getBitDouble(data, bitPos);
72
			bitPos = ((Integer)v.get(0)).intValue();
73
			val = ((Double)v.get(1)).doubleValue();
74
		}
75
		line.setThickness(val);
76
		v = DwgUtil.testBit(data, bitPos);
77
		bitPos = ((Integer)v.get(0)).intValue();
78
		flag = ((Boolean)v.get(1)).booleanValue();
79
		double x, y, z;
80
	    if (flag) {
81
			 x = y = 0.0;
82
			 z = 1.0;
83
		} else {
84
			v = DwgUtil.getBitDouble(data, bitPos);
85
			bitPos = ((Integer)v.get(0)).intValue();
86
			x = ((Double)v.get(1)).doubleValue();
87
			v = DwgUtil.getBitDouble(data, bitPos);
88
			bitPos = ((Integer)v.get(0)).intValue();
89
			y = ((Double)v.get(1)).doubleValue();
90
			v = DwgUtil.getBitDouble(data, bitPos);
91
			bitPos = ((Integer)v.get(0)).intValue();
92
			z = ((Double)v.get(1)).doubleValue();
93
		}
94
		double[] coord = new double[]{x, y, z};
95
		line.setExtrusion(coord);
96
		bitPos = headTailReader.readObjectTailer(data, bitPos, line);
97
	}
98

  
99
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgVertexMeshReader15.java
1
/*
2
 * Created on 19-mar-2007
3
 *
4
 * gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
5
 *
6
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
7
 *
8
 * This program is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU General Public License
10
 * as published by the Free Software Foundation; either version 2
11
 * of the License, or (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program; if not, write to the Free Software
20
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
21
 *
22
 * For more information, contact:
23
 *
24
 *  Generalitat Valenciana
25
 *   Conselleria d'Infraestructures i Transport
26
 *   Av. Blasco Ib??ez, 50
27
 *   46010 VALENCIA
28
 *   SPAIN
29
 *
30
 *      +34 963862235
31
 *   gvsig@gva.es
32
 *      www.gvsig.gva.es
33
 *
34
 *    or
35
 *
36
 *   IVER T.I. S.A
37
 *   Salamanca 50
38
 *   46005 Valencia
39
 *   Spain
40
 *
41
 *   +34 963163400
42
 *   dac@iver.es
43
 */
44
/* CVS MESSAGES:
45
*
46
* $Id: DwgVertexMeshReader15.java 28969 2009-05-25 13:23:12Z jmvivo $
47
* $Log$
48
* Revision 1.1.2.1  2007-03-21 19:49:16  azabala
49
* implementation of dwg 12, 13, 14.
50
*
51
* Revision 1.1  2007/03/20 19:57:08  azabala
52
* source code cleaning
53
*
54
*
55
*/
56
package org.gvsig.dwg.lib.readers.v15;
57

  
58
import java.util.List;
59

  
60
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
61
import org.gvsig.dwg.lib.DwgObject;
62
import org.gvsig.dwg.lib.DwgUtil;
63
import org.gvsig.dwg.lib.objects.DwgVertexMesh;
64

  
65

  
66
public class DwgVertexMeshReader15 extends AbstractDwg15Reader {
67
	
68
    //similar to DwgVertex3D (and all derived vertices...
69
	//apply inheritance
70
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj)
71
			throws RuntimeException, CorruptedDwgEntityException {
72
		 if(! (dwgObj instanceof DwgVertexMesh))
73
		    	throw new RuntimeException("ArcReader 15 solo puede leer DwgVertexMesh");
74
		 DwgVertexMesh v = (DwgVertexMesh) dwgObj;
75
		 int bitPos = offset;
76
		 bitPos = headTailReader.readObjectHeader(data, bitPos, v);
77
		 
78
		 List val = DwgUtil.getRawChar(data, bitPos);
79
		 bitPos = ((Integer) val.get(0)).intValue();
80
		 int flag = ((Integer) val.get(1)).intValue();
81
		 v.setFlags(flag);
82
		 
83
		 val = DwgUtil.getBitDouble(data, bitPos);
84
		 bitPos = ((Integer) val.get(0)).intValue();
85
		 double x = ((Double) val.get(1)).doubleValue();
86
		 
87
		 val = DwgUtil.getBitDouble(data, bitPos);
88
		 bitPos = ((Integer) val.get(0)).intValue();
89
		 double y = ((Double) val.get(1)).doubleValue();
90
		 
91
		 val = DwgUtil.getBitDouble(data, bitPos);
92
		 bitPos = ((Integer) val.get(0)).intValue();
93
		 double z = ((Double) val.get(1)).doubleValue();
94
		 v.setPoint(new double[]{x, y, z});
95
		 
96
		 bitPos = headTailReader.readObjectTailer(data, bitPos, v);
97
	}
98

  
99
}
100

  
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgBlockControlReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.util.ArrayList;
8
import java.util.Vector;
9

  
10
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
11
import org.gvsig.dwg.lib.DwgHandleReference;
12
import org.gvsig.dwg.lib.DwgObject;
13
import org.gvsig.dwg.lib.DwgUtil;
14
import org.gvsig.dwg.lib.objects.DwgBlockControl;
15

  
16

  
17
/**
18
 * @author azabala
19
 */
20
public class DwgBlockControlReader15 extends AbstractDwg15Reader{
21

  
22
	/* (non-Javadoc)
23
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
24
	 */
25
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException{
26
		
27
		 if(! (dwgObj instanceof DwgBlockControl))
28
		    	throw new RuntimeException("ArcReader 15 solo puede leer DwgBlockControl");
29
		    DwgBlockControl blk = (DwgBlockControl) dwgObj;
30
			int bitPos = offset;
31
			ArrayList v = DwgUtil.getBitLong(data, bitPos);
32
			bitPos = ((Integer)v.get(0)).intValue();
33
			int numReactors = ((Integer)v.get(1)).intValue();
34
			blk.setNumReactors(numReactors);
35
			
36
			v = DwgUtil.getBitShort(data, bitPos);
37
			bitPos = ((Integer)v.get(0)).intValue();
38
			int enumeration = ((Integer)v.get(1)).intValue();
39
			
40
			DwgHandleReference hr = new DwgHandleReference();
41
			bitPos = hr.read(data, bitPos);
42
			blk.setNullHandle(hr);
43
			
44
			hr = new DwgHandleReference();
45
			bitPos = hr.read(data, bitPos);
46
			blk.setXDicObjHandle(hr);
47
		    
48
			if (enumeration>0) {
49
				Vector handles = new Vector();
50
				for (int i=0;i<enumeration;i++) {
51
					hr = new DwgHandleReference();
52
					bitPos = hr.read(data, bitPos);
53
					handles.add(hr);
54
				}
55
				blk.setCode2Handles(handles);
56
			}
57
			
58
			hr = new DwgHandleReference();
59
			bitPos = hr.read(data, bitPos);
60
			blk.setModelSpaceHandle(hr);
61

  
62
			hr = new DwgHandleReference();
63
			bitPos = hr.read(data, bitPos);
64
			blk.setPaperSpaceHandle(hr);
65
		}
66
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgVertexPFaceFaceReader15.java
1
/*
2
 * Created on 19-mar-2007
3
 *
4
 * gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
5
 *
6
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
7
 *
8
 * This program is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU General Public License
10
 * as published by the Free Software Foundation; either version 2
11
 * of the License, or (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program; if not, write to the Free Software
20
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
21
 *
22
 * For more information, contact:
23
 *
24
 *  Generalitat Valenciana
25
 *   Conselleria d'Infraestructures i Transport
26
 *   Av. Blasco Ib??ez, 50
27
 *   46010 VALENCIA
28
 *   SPAIN
29
 *
30
 *      +34 963862235
31
 *   gvsig@gva.es
32
 *      www.gvsig.gva.es
33
 *
34
 *    or
35
 *
36
 *   IVER T.I. S.A
37
 *   Salamanca 50
38
 *   46005 Valencia
39
 *   Spain
40
 *
41
 *   +34 963163400
42
 *   dac@iver.es
43
 */
44
/* CVS MESSAGES:
45
*
46
* $Id: DwgVertexPFaceFaceReader15.java 28969 2009-05-25 13:23:12Z jmvivo $
47
* $Log$
48
* Revision 1.1.2.1  2007-03-21 19:49:16  azabala
49
* implementation of dwg 12, 13, 14.
50
*
51
* Revision 1.1  2007/03/20 19:57:08  azabala
52
* source code cleaning
53
*
54
*
55
*/
56
package org.gvsig.dwg.lib.readers.v15;
57

  
58
import java.util.List;
59

  
60
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
61
import org.gvsig.dwg.lib.DwgObject;
62
import org.gvsig.dwg.lib.DwgUtil;
63
import org.gvsig.dwg.lib.objects.DwgVertexPFaceFace;
64

  
65

  
66
public class DwgVertexPFaceFaceReader15 extends AbstractDwg15Reader {
67

  
68
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj)
69
			throws RuntimeException, CorruptedDwgEntityException {
70
		
71
		 if(! (dwgObj instanceof DwgVertexPFaceFace))
72
		    	throw new RuntimeException("ArcReader 15 solo puede leer DwgVertexPFaceFace");
73
		 DwgVertexPFaceFace v = (DwgVertexPFaceFace) dwgObj;
74
		 
75
		 int bitPos = offset;
76
		 
77
		 bitPos = headTailReader.readObjectHeader(data, offset, v);
78
		 
79
		 List val = DwgUtil.getBitShort(data, bitPos);
80
		 bitPos = ((Integer) val.get(0)).intValue();
81
		 int v1 = ((Integer) val.get(1)).intValue();
82
		 
83
		 val = DwgUtil.getBitShort(data, bitPos);
84
		 bitPos = ((Integer) val.get(0)).intValue();
85
		 int v2 = ((Integer) val.get(1)).intValue();
86
		 
87
		 val = DwgUtil.getBitShort(data, bitPos);
88
		 bitPos = ((Integer) val.get(0)).intValue();
89
		 int v3 = ((Integer) val.get(1)).intValue();
90
		 
91
		 val = DwgUtil.getBitShort(data, bitPos);
92
		 bitPos = ((Integer) val.get(0)).intValue();
93
		 int v4 = ((Integer) val.get(1)).intValue();
94
		 
95
		 v.setVerticesidx(new int[]{v1, v2, v3, v4});
96
		 
97
		 bitPos = headTailReader.readObjectTailer(data, bitPos, v);
98
	}
99

  
100
}
101

  
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgEllipseReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.util.ArrayList;
8

  
9
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
10
import org.gvsig.dwg.lib.DwgObject;
11
import org.gvsig.dwg.lib.DwgUtil;
12
import org.gvsig.dwg.lib.objects.DwgEllipse;
13

  
14

  
15
/**
16
 * @author alzabord
17
 *
18
 * TODO To change the template for this generated type comment go to
19
 * Window - Preferences - Java - Code Style - Code Templates
20
 */
21
public class DwgEllipseReader15 extends AbstractDwg15Reader{
22

  
23
	/* (non-Javadoc)
24
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
25
	 */
26
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
27
		if(! (dwgObj instanceof DwgEllipse))
28
			throw new RuntimeException("ArcReader 15 solo puede leer DwgEllipse");
29
		DwgEllipse ell = (DwgEllipse) dwgObj;
30
		int bitPos = offset;
31
		bitPos = headTailReader.readObjectHeader(data, bitPos, ell);
32
		ArrayList v = DwgUtil.getBitDouble(data, bitPos);
33
		bitPos = ((Integer)v.get(0)).intValue();
34
		double x = ((Double)v.get(1)).doubleValue();
35
		v = DwgUtil.getBitDouble(data, bitPos);
36
		bitPos = ((Integer)v.get(0)).intValue();
37
		double y = ((Double)v.get(1)).doubleValue();
38
		v = DwgUtil.getBitDouble(data, bitPos);
39
		bitPos = ((Integer)v.get(0)).intValue();
40
		double z = ((Double)v.get(1)).doubleValue();
41
		double[] coord = new double[]{x, y, z};
42
		ell.setCenter(coord);
43
		v = DwgUtil.getBitDouble(data, bitPos);
44
		bitPos = ((Integer)v.get(0)).intValue();
45
		x = ((Double)v.get(1)).doubleValue();
46
		v = DwgUtil.getBitDouble(data, bitPos);
47
		bitPos = ((Integer)v.get(0)).intValue();
48
		y = ((Double)v.get(1)).doubleValue();
49
		v = DwgUtil.getBitDouble(data, bitPos);
50
		bitPos = ((Integer)v.get(0)).intValue();
51
		z = ((Double)v.get(1)).doubleValue();
52
		coord = new double[]{x, y, z};
53
		ell.setSemiMajorAxisVector(coord);
54
		v = DwgUtil.getBitDouble(data, bitPos);
55
		bitPos = ((Integer)v.get(0)).intValue();
56
		x = ((Double)v.get(1)).doubleValue();
57
		v = DwgUtil.getBitDouble(data, bitPos);
58
		bitPos = ((Integer)v.get(0)).intValue();
59
		y = ((Double)v.get(1)).doubleValue();
60
		v = DwgUtil.getBitDouble(data, bitPos);
61
		bitPos = ((Integer)v.get(0)).intValue();
62
		z = ((Double)v.get(1)).doubleValue();
63
		coord = new double[]{x, y, z};
64
		ell.setExtrusion(coord);
65
		v = DwgUtil.getBitDouble(data, bitPos);
66
		bitPos = ((Integer)v.get(0)).intValue();
67
		double val = ((Double)v.get(1)).doubleValue();
68
		ell.setAxisRatio(val);
69
		v = DwgUtil.getBitDouble(data, bitPos);
70
		bitPos = ((Integer)v.get(0)).intValue();
71
		val = ((Double)v.get(1)).doubleValue();
72
		ell.setInitAngle(val);
73
		v = DwgUtil.getBitDouble(data, bitPos);
74
		bitPos = ((Integer)v.get(0)).intValue();
75
		val = ((Double)v.get(1)).doubleValue();
76
		ell.setEndAngle(val);
77
		bitPos = headTailReader.readObjectTailer(data, bitPos, ell);
78
	}
79
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgEndBlkReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
8
import org.gvsig.dwg.lib.DwgObject;
9
import org.gvsig.dwg.lib.objects.DwgEndblk;
10

  
11

  
12
/**
13
 * @author alzabord
14
 *
15
 * TODO To change the template for this generated type comment go to
16
 * Window - Preferences - Java - Code Style - Code Templates
17
 */
18
public class DwgEndBlkReader15 extends AbstractDwg15Reader{
19

  
20
	/* (non-Javadoc)
21
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
22
	 */
23
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
24
		if(! (dwgObj instanceof DwgEndblk))
25
			throw new RuntimeException("ArcReader 15 solo puede leer DwgEndBlk");
26
		DwgEndblk end = (DwgEndblk) dwgObj;
27
		int bitPos = offset;
28
		bitPos = headTailReader.readObjectHeader(data, bitPos, end);
29
		bitPos = headTailReader.readObjectTailer(data, bitPos, end);
30
	}
31
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgBlockHeaderReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.util.ArrayList;
8

  
9
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
10
import org.gvsig.dwg.lib.DwgHandleReference;
11
import org.gvsig.dwg.lib.DwgObject;
12
import org.gvsig.dwg.lib.DwgUtil;
13
import org.gvsig.dwg.lib.objects.DwgBlockHeader;
14

  
15

  
16
/**
17
 * @author alzabord
18
 *
19
 * TODO To change the template for this generated type comment go to
20
 * Window - Preferences - Java - Code Style - Code Templates
21
 */
22
public class DwgBlockHeaderReader15 extends AbstractDwg15Reader{
23

  
24
	/* (non-Javadoc)
25
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
26
	 */
27
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
28
		 if(! (dwgObj instanceof DwgBlockHeader))
29
		    	throw new RuntimeException("DwgBlockHeaderReader15 solo puede leer DwgBlockControl");
30
		DwgBlockHeader hdr = (DwgBlockHeader) dwgObj;
31
		int bitPos = offset;
32
		ArrayList v = DwgUtil.getBitLong(data, bitPos);
33
		bitPos = ((Integer)v.get(0)).intValue();
34
		int numReactors = ((Integer)v.get(1)).intValue();
35
		hdr.setNumReactors(numReactors);
36

  
37
		v = DwgUtil.getTextString(data, bitPos);
38
		bitPos = ((Integer)v.get(0)).intValue();
39
		String name = (String)v.get(1);
40
		hdr.setName(name);
41

  
42
		v = DwgUtil.testBit(data, bitPos);
43
		bitPos = ((Integer)v.get(0)).intValue();
44
		boolean flag = ((Boolean)v.get(1)).booleanValue();
45
		hdr.setFlag64(flag);
46

  
47
		v = DwgUtil.getBitShort(data, bitPos);
48
		bitPos = ((Integer)v.get(0)).intValue();
49
		int xrefplus1 = ((Integer)v.get(1)).intValue();
50
		hdr.setXRefPlus(xrefplus1);
51

  
52
		v = DwgUtil.testBit(data, bitPos);
53
		bitPos = ((Integer)v.get(0)).intValue();
54
		boolean xdep = ((Boolean)v.get(1)).booleanValue();
55
		hdr.setXdep(xdep);
56

  
57
		v = DwgUtil.testBit(data, bitPos);
58
		bitPos = ((Integer)v.get(0)).intValue();
59
		boolean anon = ((Boolean)v.get(1)).booleanValue();
60
		hdr.setAnonymous(anon);
61

  
62
		v = DwgUtil.testBit(data, bitPos);
63
		bitPos = ((Integer)v.get(0)).intValue();
64
		boolean hasatts = ((Boolean)v.get(1)).booleanValue();
65
		hdr.setHasAttrs(hasatts);
66

  
67
		v = DwgUtil.testBit(data, bitPos);
68
		bitPos = ((Integer)v.get(0)).intValue();
69
		boolean bxref = ((Boolean)v.get(1)).booleanValue();
70
		hdr.setBlkIsXRef(bxref);
71

  
72
		v = DwgUtil.testBit(data, bitPos);
73
		bitPos = ((Integer)v.get(0)).intValue();
74
		boolean xover = ((Boolean)v.get(1)).booleanValue();
75
		hdr.setXRefOverLaid(xover);
76

  
77
		v = DwgUtil.testBit(data, bitPos);
78
		bitPos = ((Integer)v.get(0)).intValue();
79
		boolean loaded = ((Boolean)v.get(1)).booleanValue();
80
		hdr.setLoaded(loaded);
81

  
82
		v = DwgUtil.getBitDouble(data, bitPos);
83
		bitPos = ((Integer)v.get(0)).intValue();
84
		double bx = ((Double)v.get(1)).doubleValue();
85

  
86
		v = DwgUtil.getBitDouble(data, bitPos);
87
		bitPos = ((Integer)v.get(0)).intValue();
88
		double by = ((Double)v.get(1)).doubleValue();
89

  
90
		v = DwgUtil.getBitDouble(data, bitPos);
91
		bitPos = ((Integer)v.get(0)).intValue();
92
		double bz = ((Double)v.get(1)).doubleValue();
93
		double[] coord = new double[]{bx, by, bz};
94
		hdr.setBasePoint(coord);
95

  
96
		v = DwgUtil.getTextString(data, bitPos);
97
		bitPos = ((Integer)v.get(0)).intValue();
98
		String pname = (String)v.get(1);
99
		hdr.setXRefPName(pname);
100
		int icount = 0;
101
		while (true) {
102
			v = DwgUtil.getRawChar(data, bitPos);
103
			bitPos = ((Integer)v.get(0)).intValue();
104
			int val = ((Integer)v.get(1)).intValue();
105
			if (val==0) {
106
				break;
107
			}
108
			icount++;
109
		}
110

  
111
		v = DwgUtil.getTextString(data, bitPos);
112
		bitPos = ((Integer)v.get(0)).intValue();
113
		String desc = (String)v.get(1);
114
		hdr.setBlockDescription(desc);
115
		v = DwgUtil.getBitLong(data, bitPos);
116
		bitPos = ((Integer)v.get(0)).intValue();
117
		int pdsize = ((Integer)v.get(1)).intValue();
118
		if (pdsize>0) {
119
			int count = pdsize + icount;
120
			//int pdata = ((Integer)DwgUtil.getBits(data, count, bitPos)).intValue();
121
			//previewData = pdata;
122
			bitPos = bitPos + count;
123
		}
124

  
125
		DwgHandleReference blkCtrlHdl = new DwgHandleReference();
126
		bitPos = blkCtrlHdl.read(data, bitPos);
127
		hdr.setBlockControlHandle(blkCtrlHdl);
128

  
129
		for (int i=0;i<numReactors;i++) {
130
			DwgHandleReference reactor = new DwgHandleReference();
131
			bitPos = reactor.read(data, bitPos);
132

  
133
		}
134

  
135
		DwgHandleReference xdicObjHdl = new DwgHandleReference();
136
		bitPos = xdicObjHdl.read(data, bitPos);
137
		hdr.setXDicObjHandle(xdicObjHdl);
138

  
139
		DwgHandleReference handle = new DwgHandleReference();
140
		bitPos = handle.read(data, bitPos);
141
		hdr.setNullHandle(handle);
142

  
143
		handle = new DwgHandleReference();
144
		bitPos = handle.read(data, bitPos);
145
		hdr.setBlockEntityHandle(handle);
146

  
147
		if ((!bxref) && (!xover)) {
148
			handle = new DwgHandleReference();
149
			bitPos = handle.read(data, bitPos);
150
			hdr.setFirstEntityHandle(handle);
151

  
152
			handle = new DwgHandleReference();
153
			bitPos = handle.read(data, bitPos);
154
			hdr.setLastEntityHandle(handle);
155
		}//si el bloque es una referencia externa, es un fichero entero
156
		//(no ninguna entidad del fichero actual)
157

  
158
		handle = new DwgHandleReference();
159
		bitPos = handle.read(data, bitPos);
160
		hdr.setEndBlkEntityHandle(handle);
161

  
162
		if(icount > 0){
163
			DwgHandleReference[] insertHandles = new
164
				DwgHandleReference[icount];
165
			for(int i = 0; i < icount; i++){
166
				insertHandles[i] = new DwgHandleReference();
167
				bitPos = insertHandles[i].read(data, bitPos);
168
			}
169
			hdr.setInsertHandles(insertHandles);
170
		}
171

  
172
		handle = new DwgHandleReference();
173
		bitPos = handle.read(data, bitPos);
174
		hdr.setLayoutHandle(handle);
175
	}
176
}
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/AbstractDwg15Reader.java
1
/*
2
 * Created on 25-ene-2007
3
 *
4
 * gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
5
 *
6
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
7
 *
8
 * This program is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU General Public License
10
 * as published by the Free Software Foundation; either version 2
11
 * of the License, or (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program; if not, write to the Free Software
20
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
21
 *
22
 * For more information, contact:
23
 *
24
 *  Generalitat Valenciana
25
 *   Conselleria d'Infraestructures i Transport
26
 *   Av. Blasco Ib??ez, 50
27
 *   46010 VALENCIA
28
 *   SPAIN
29
 *
30
 *      +34 963862235
31
 *   gvsig@gva.es
32
 *      www.gvsig.gva.es
33
 *
34
 *    or
35
 *
36
 *   IVER T.I. S.A
37
 *   Salamanca 50
38
 *   46005 Valencia
39
 *   Spain
40
 *
41
 *   +34 963163400
42
 *   dac@iver.es
43
 */
44
/* CVS MESSAGES:
45
*
46
* $Id: AbstractDwg15Reader.java 28969 2009-05-25 13:23:12Z jmvivo $
47
* $Log$
48
* Revision 1.1.2.2  2007-03-21 19:49:16  azabala
49
* implementation of dwg 12, 13, 14.
50
*
51
* Revision 1.1  2007/01/25 20:05:58  azabala
52
* start of implementation of specific versions' object readers
53
*
54
*
55
*/
56
package org.gvsig.dwg.lib.readers.v15;
57

  
58
import org.gvsig.dwg.lib.readers.DwgFileV15Reader;
59
import org.gvsig.dwg.lib.readers.IDwgFileReader;
60
import org.gvsig.dwg.lib.readers.IDwgObjectReader;
61

  
62
public abstract class AbstractDwg15Reader implements IDwgObjectReader{
63
	protected IDwgFileReader headTailReader;
64
	public void setFileReader(IDwgFileReader headTailReader) {
65
		if( ! (headTailReader instanceof DwgFileV15Reader))
66
			throw new RuntimeException("Tratando de leer entidad de DWG 15 (2000) con"+
67
					headTailReader.getClass().getName());
68
		this.headTailReader = headTailReader;
69
	}
70

  
71
}
72

  
tags/org.gvsig.dwg-2.0.91/org.gvsig.dwg.lib/src/main/java/org/gvsig/dwg/lib/readers/v15/DwgVertex2DReader15.java
1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package org.gvsig.dwg.lib.readers.v15;
6

  
7
import java.util.ArrayList;
8

  
9
import org.gvsig.dwg.lib.CorruptedDwgEntityException;
10
import org.gvsig.dwg.lib.DwgObject;
11
import org.gvsig.dwg.lib.DwgUtil;
12
import org.gvsig.dwg.lib.objects.DwgVertex2D;
13

  
14

  
15
/**
16
 * @author alzabord
17
 *
18
 * TODO To change the template for this generated type comment go to
19
 * Window - Preferences - Java - Code Style - Code Templates
20
 */
21
public class DwgVertex2DReader15 extends AbstractDwg15Reader{
22

  
23
	/* (non-Javadoc)
24
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
25
	 */
26
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
27
		 if(! (dwgObj instanceof DwgVertex2D))
28
		    	throw new RuntimeException("ArcReader 15 solo puede leer DwgVertex2D");
29
		 DwgVertex2D ver = (DwgVertex2D) dwgObj;
30
		int bitPos = offset;
31
		bitPos = headTailReader.readObjectHeader(data, bitPos, ver);
32
		ArrayList v = DwgUtil.getRawChar(data, bitPos);
33
		bitPos = ((Integer)v.get(0)).intValue();
34
		int flags = ((Integer)v.get(1)).intValue();
35
		ver.setFlags(flags);
36
		v = DwgUtil.getBitDouble(data, bitPos);
37
		bitPos = ((Integer)v.get(0)).intValue();
38
		double x = ((Double)v.get(1)).doubleValue();
39
		v = DwgUtil.getBitDouble(data, bitPos);
40
		bitPos = ((Integer)v.get(0)).intValue();
41
		double y = ((Double)v.get(1)).doubleValue();
42
		v = DwgUtil.getBitDouble(data, bitPos);
43
		bitPos = ((Integer)v.get(0)).intValue();
44
		double z = ((Double)v.get(1)).doubleValue();
45
		ver.setPoint(new double[]{x, y, z});
46
		v = DwgUtil.getBitDouble(data, bitPos);
47
		bitPos = ((Integer)v.get(0)).intValue();
48
		double sw = ((Double)v.get(1)).doubleValue();
49
		double ew = 0.0;
50
		if (sw<0.0) {
51
			ew = Math.abs(sw);
52
			sw = ew;
53
		} else {
54
			v = DwgUtil.getBitDouble(data, bitPos);
55
			bitPos = ((Integer)v.get(0)).intValue();
56
			ew = ((Double)v.get(1)).doubleValue();
57
		}
58
		ver.setInitWidth(sw);
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff