Revision 10113

View differences:

trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v1314/DwgMTextReader1314.java
4 4
 */
5 5
package com.iver.cit.jdwglib.dwg.readers.objreaders.v1314;
6 6

  
7
import java.util.List;
8

  
9
import com.iver.cit.jdwglib.dwg.CorruptedDwgEntityException;
10
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
7 11
import com.iver.cit.jdwglib.dwg.DwgObject;
8
import com.iver.cit.jdwglib.dwg.readers.IDwgFileReader;
9
import com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader;
12
import com.iver.cit.jdwglib.dwg.DwgUtil;
13
import com.iver.cit.jdwglib.dwg.objects.DwgMText;
10 14

  
11 15
/**
12 16
 * @author alzabord
......
14 18
 * TODO To change the template for this generated type comment go to
15 19
 * Window - Preferences - Java - Code Style - Code Templates
16 20
 */
17
public class DwgMTextReader1314 implements IDwgObjectReader{
21
public class DwgMTextReader1314 extends AbstractDwg1314Reader{
18 22

  
19 23
	/* (non-Javadoc)
20 24
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
21 25
	 */
22
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) {
23
		// TODO Auto-generated method stub
26
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
27
		if(! (dwgObj instanceof DwgMText))
28
	    	throw new RuntimeException("ArcReader 14 solo puede leer DwgMText");
29
		DwgMText txt = (DwgMText) dwgObj;
24 30
		
25
	}
26

  
27
	/* (non-Javadoc)
28
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#setFileReader(com.iver.cit.jdwglib.dwg.readers.IDwgFileReader)
29
	 */
30
	public void setFileReader(IDwgFileReader headTailReader) {
31
		// TODO Auto-generated method stub
31
		int bitPos = offset;
32
		bitPos = headTailReader.readObjectHeader(data, bitPos, txt);
32 33
		
34
		List val = DwgUtil.getBitDouble(data, bitPos);
35
		bitPos = ((Integer)val.get(0)).intValue();
36
		double x = ((Double)val.get(1)).doubleValue();
37
		
38
		val = DwgUtil.getBitDouble(data, bitPos);
39
		bitPos = ((Integer)val.get(0)).intValue();
40
		double y = ((Double)val.get(1)).doubleValue();
41
		
42
		val = DwgUtil.getBitDouble(data, bitPos);
43
		bitPos = ((Integer)val.get(0)).intValue();
44
		double z = ((Double)val.get(1)).doubleValue();
45
		txt.setInsertionPoint(new double[]{x, y, z});
46
		
47
		val = DwgUtil.getBitDouble(data, bitPos);
48
		bitPos = ((Integer)val.get(0)).intValue();
49
		x = ((Double)val.get(1)).doubleValue();
50
		
51
		val = DwgUtil.getBitDouble(data, bitPos);
52
		bitPos = ((Integer)val.get(0)).intValue();
53
		y = ((Double)val.get(1)).doubleValue();
54
		
55
		val = DwgUtil.getBitDouble(data, bitPos);
56
		bitPos = ((Integer)val.get(0)).intValue();
57
		z = ((Double)val.get(1)).doubleValue();
58
		txt.setExtrusion(new double[]{x, y, z});
59
		
60
		val = DwgUtil.getBitDouble(data, bitPos);
61
		bitPos = ((Integer)val.get(0)).intValue();
62
		x = ((Double)val.get(1)).doubleValue();
63
		
64
		val = DwgUtil.getBitDouble(data, bitPos);
65
		bitPos = ((Integer)val.get(0)).intValue();
66
		y = ((Double)val.get(1)).doubleValue();
67
		
68
		val = DwgUtil.getBitDouble(data, bitPos);
69
		bitPos = ((Integer)val.get(0)).intValue();
70
		z = ((Double)val.get(1)).doubleValue();
71
		txt.setXAxisDirection(new double[]{x, y, z});
72
		
73
		val = DwgUtil.getBitDouble(data, bitPos);
74
		bitPos = ((Integer)val.get(0)).intValue();
75
		double width = ((Double)val.get(1)).doubleValue();
76
		txt.setWidth(width);
77
		
78
		val = DwgUtil.getBitDouble(data, bitPos);
79
		bitPos = ((Integer)val.get(0)).intValue();
80
		double height = ((Double)val.get(1)).doubleValue();
81
		txt.setHeight(height);
82
		
83
		val = DwgUtil.getBitShort(data, bitPos);
84
		bitPos = ((Integer)val.get(0)).intValue();
85
		int attachment = ((Integer)val.get(1)).intValue();
86
		txt.setAttachment(attachment);
87
		
88
		val = DwgUtil.getBitShort(data, bitPos);
89
		bitPos = ((Integer)val.get(0)).intValue();
90
		int drawingDir = ((Integer)val.get(1)).intValue();
91
		txt.setAttachment(drawingDir);
92
		
93
		val = DwgUtil.getBitDouble(data, bitPos);
94
		bitPos = ((Integer)val.get(0)).intValue();
95
		double extHeight = ((Double)val.get(1)).doubleValue();
96
		txt.setExtHeight(extHeight);
97
		
98
		val = DwgUtil.getBitDouble(data, bitPos);
99
		bitPos = ((Integer)val.get(0)).intValue();
100
		double extWidth = ((Double)val.get(1)).doubleValue();
101
		txt.setExtWidth(extWidth);
102
		
103
		val = DwgUtil.getTextString(data, bitPos);
104
		bitPos = ((Integer)val.get(0)).intValue();
105
		txt.setText((String) val.get(1));
106
		
107
		bitPos = headTailReader.readObjectTailer(data, bitPos, txt);
108
		
109
		DwgHandleReference handle = new DwgHandleReference();
110
		bitPos = handle.read(data, bitPos);
111
		txt.setStyleHandle(handle);	
33 112
	}
34 113

  
35 114
}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v1314/DwgSortEntsTableReader1314.java
4 4
 */
5 5
package com.iver.cit.jdwglib.dwg.readers.objreaders.v1314;
6 6

  
7
import java.util.List;
8

  
7 9
import com.iver.cit.jdwglib.dwg.CorruptedDwgEntityException;
10
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
8 11
import com.iver.cit.jdwglib.dwg.DwgObject;
12
import com.iver.cit.jdwglib.dwg.DwgUtil;
13
import com.iver.cit.jdwglib.dwg.objects.DwgSortEntStable;
9 14

  
10 15
/**
11 16
 * @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 17
 */
16 18
public class DwgSortEntsTableReader1314 extends AbstractDwg1314Reader {
17 19

  
......
20 22
	 */
21 23
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj)
22 24
			throws RuntimeException, CorruptedDwgEntityException {
23
		// TODO Auto-generated method stub
24

  
25
		
26
		if(! (dwgObj instanceof DwgSortEntStable))
27
	    	throw new RuntimeException("ArcReader 14 solo puede leer DwgSortEntStable");
28
		DwgSortEntStable stable = (DwgSortEntStable) dwgObj;
29
		int bitPos = offset;
30
		
31
		List val = DwgUtil.getBitLong(data, bitPos);
32
		bitPos = ((Integer) val.get(0)).intValue();
33
		int numReactors = ((Integer)val.get(1)).intValue();
34
		
35
		val = DwgUtil.getBitLong(data, bitPos);
36
		bitPos = ((Integer) val.get(0)).intValue();
37
		int ne = ((Integer)val.get(1)).intValue();
38
		if(ne > 0){
39
			DwgHandleReference[] handles = new DwgHandleReference[ne];
40
			for(int i = 0; i < ne; i++){
41
				handles[i] = new DwgHandleReference();
42
				bitPos = handles[i].read(data, bitPos);
43
			}//for
44
			stable.setSortedHandles(handles);
45
		}
46
		
47
		DwgHandleReference handle = new DwgHandleReference();
48
		bitPos = handle.read(data, bitPos);
49
		stable.setParentHandle(handle);
50
		
51
		for(int i = 0; i < numReactors; i++){
52
			handle = new DwgHandleReference();
53
			bitPos = handle.read(data, bitPos);
54
			stable.addReactorHandle(handle);
55
		}
56
		
57
		handle = new DwgHandleReference();
58
		bitPos = handle.read(data, bitPos);
59
		stable.setXDicObjHandle(handle);
60
		
61
		if(ne > 0){
62
			DwgHandleReference[] handles = new DwgHandleReference[ne];
63
			for(int i = 0; i < ne; i++){
64
				handles[i] = new DwgHandleReference();
65
				bitPos = handles[i].read(data, bitPos);
66
			}//for
67
			stable.setObjHandles(handles);
68
		}
25 69
	}
26 70

  
27 71
}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v1314/DwgXrecordReader1314.java
4 4
 */
5 5
package com.iver.cit.jdwglib.dwg.readers.objreaders.v1314;
6 6

  
7
import java.util.List;
8

  
7 9
import com.iver.cit.jdwglib.dwg.CorruptedDwgEntityException;
8 10
import com.iver.cit.jdwglib.dwg.DwgObject;
11
import com.iver.cit.jdwglib.dwg.DwgUtil;
12
import com.iver.cit.jdwglib.dwg.objects.DwgXRecord;
9 13

  
10 14
/**
11 15
 * @author alzabord
......
20 24
	 */
21 25
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj)
22 26
			throws RuntimeException, CorruptedDwgEntityException {
23
		// TODO Auto-generated method stub
24

  
27
		 if(! (dwgObj instanceof DwgXRecord))
28
	    	throw new RuntimeException("ArcReader 14 solo puede leer DwgXrecord");
29
		 DwgXRecord v = (DwgXRecord) dwgObj;
30
		 int bitPos = offset;
31
		 
32
		 List val = DwgUtil.getBitLong(data, bitPos);
33
		 bitPos = ((Integer) val.get(0)).intValue();
34
		 int numReactors = ((Integer) val.get(1)).intValue();
35
		 
36
		 val = DwgUtil.getBitLong(data, bitPos);
37
		 bitPos = ((Integer) val.get(0)).intValue();
38
		 int numDataBytes = ((Integer) val.get(1)).intValue();
39
		 
40
		 //FIXME More stuff here....
25 41
	}
26 42

  
27 43
}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v1314/DwgSplineReader1314.java
4 4
 */
5 5
package com.iver.cit.jdwglib.dwg.readers.objreaders.v1314;
6 6

  
7
import java.util.List;
8

  
9
import com.iver.cit.jdwglib.dwg.CorruptedDwgEntityException;
7 10
import com.iver.cit.jdwglib.dwg.DwgObject;
8
import com.iver.cit.jdwglib.dwg.readers.IDwgFileReader;
9
import com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader;
11
import com.iver.cit.jdwglib.dwg.DwgUtil;
12
import com.iver.cit.jdwglib.dwg.objects.DwgSpline;
10 13

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

  
19 19
	/* (non-Javadoc)
20 20
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
21 21
	 */
22
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) {
23
		// TODO Auto-generated method stub
22
	public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws RuntimeException, CorruptedDwgEntityException {
23
		if(! (dwgObj instanceof DwgSpline))
24
	    	throw new RuntimeException("ArcReader 14 solo puede leer DwgSpline");
25
		DwgSpline spline = (DwgSpline) dwgObj;
24 26
		
25
	}
26

  
27
	/* (non-Javadoc)
28
	 * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#setFileReader(com.iver.cit.jdwglib.dwg.readers.IDwgFileReader)
29
	 */
30
	public void setFileReader(IDwgFileReader headTailReader) {
31
		// TODO Auto-generated method stub
27
		int bitPos = offset;
28
		bitPos = headTailReader.readObjectHeader(data, bitPos, spline );
32 29
		
30
		List val = DwgUtil.getBitShort(data, bitPos);
31
		bitPos = ((Integer) val.get(0)).intValue();
32
		int scenario = ((Integer) val.get(1)).intValue();
33
		
34
		val = DwgUtil.getBitShort(data, bitPos);
35
		bitPos = ((Integer) val.get(0)).intValue();
36
		int degree = ((Integer) val.get(1)).intValue();
37
		spline.setDegree(degree);
38
		
39
		int knots = 0;
40
		int numCtPts = 0;
41
		int numFitPts = 0;
42
		
43
		boolean weight = false;
44
		
45
		switch(scenario){
46
			case 2:
47
				val = DwgUtil.getBitDouble(data, bitPos);
48
				bitPos = ((Integer) val.get(0)).intValue();
49
				double fitTolerance = ((Integer) val.get(1)).intValue();
50
				spline.setFitTolerance(fitTolerance);
51
				
52
				val = DwgUtil.getBitDouble(data, bitPos);
53
				bitPos = ((Integer) val.get(0)).intValue();
54
				double x = ((Integer) val.get(1)).intValue();
55
				
56
				val = DwgUtil.getBitDouble(data, bitPos);
57
				bitPos = ((Integer) val.get(0)).intValue();
58
				double y = ((Integer) val.get(1)).intValue();
59
				
60
				val = DwgUtil.getBitDouble(data, bitPos);
61
				bitPos = ((Integer) val.get(0)).intValue();
62
				double z = ((Integer) val.get(1)).intValue();
63
				spline.setBeginTanVector(new double[]{x, y, z});
64
				
65
				val = DwgUtil.getBitDouble(data, bitPos);
66
				bitPos = ((Integer) val.get(0)).intValue();
67
				x = ((Integer) val.get(1)).intValue();
68
				
69
				val = DwgUtil.getBitDouble(data, bitPos);
70
				bitPos = ((Integer) val.get(0)).intValue();
71
				y = ((Integer) val.get(1)).intValue();
72
				
73
				val = DwgUtil.getBitDouble(data, bitPos);
74
				bitPos = ((Integer) val.get(0)).intValue();
75
				z = ((Integer) val.get(1)).intValue();
76
				spline.setEndTanVector(new double[]{x, y, z});
77
				
78
				val = DwgUtil.getBitShort(data, bitPos);
79
				bitPos = ((Integer) val.get(0)).intValue();
80
				numFitPts = ((Integer) val.get(1)).intValue();
81
			break;
82
			
83
			case 1:
84
				val = DwgUtil.testBit(data, bitPos);
85
				bitPos = ((Integer) val.get(0)).intValue();
86
				boolean rational  = ((Boolean) val.get(1)).booleanValue();
87
				
88
				val = DwgUtil.testBit(data, bitPos);
89
				bitPos = ((Integer) val.get(0)).intValue();
90
				boolean closed  = ((Boolean) val.get(1)).booleanValue();
91
				
92
				val = DwgUtil.testBit(data, bitPos);
93
				bitPos = ((Integer) val.get(0)).intValue();
94
				boolean periodic  = ((Boolean) val.get(1)).booleanValue();
95
				
96
				val = DwgUtil.getBitDouble(data, bitPos);
97
				bitPos = ((Integer) val.get(0)).intValue();
98
				double knotTolerance = ((Double) val.get(1)).doubleValue();
99
				spline.setKnotTolerance(knotTolerance);
100
				
101
				val = DwgUtil.getBitDouble(data, bitPos);
102
				bitPos = ((Integer) val.get(0)).intValue();
103
				double controlTolerance = ((Double) val.get(1)).doubleValue();
104
				spline.setControlTolerance(controlTolerance);
105
				
106
				val = DwgUtil.getBitLong(data, bitPos);
107
				bitPos = ((Integer) val.get(0)).intValue();
108
				knots = ((Integer) val.get(1)).intValue();
109
				
110
				val = DwgUtil.getBitLong(data, bitPos);
111
				bitPos = ((Integer) val.get(0)).intValue();
112
				numCtPts = ((Integer) val.get(1)).intValue();
113
				
114
				val = DwgUtil.testBit(data, bitPos);
115
				bitPos = ((Integer) val.get(0)).intValue();
116
				weight  = ((Boolean) val.get(1)).booleanValue();
117
				
118
			break;
119
		
120
		
121
			default:
122
				System.out.println("Unexpected spline scenario "+scenario);
123
			break;
124
		}
125
		
126
		if(knots > 0){
127
			double[] knotsArray = new double[knots];
128
			for(int i = 0; i < knots; i++){
129
				val = DwgUtil.getBitDouble(data, bitPos);
130
				bitPos = ((Integer) val.get(0)).intValue();
131
				knotsArray[i] = ((Double) val.get(1)).doubleValue();
132
			}
133
			spline.setKnotPoints(knotsArray);
134
		}
135
		
136
		if(numCtPts > 0){
137
			double[][] ctrlPoint = new double[3][numCtPts];
138
			double[] weights = new double[numCtPts];
139
			for(int i = 0; i < numCtPts; i++){
140
				val = DwgUtil.getBitDouble(data, bitPos);
141
				bitPos = ((Integer) val.get(0)).intValue();
142
				double x = ((Integer) val.get(1)).intValue();
143
				
144
				val = DwgUtil.getBitDouble(data, bitPos);
145
				bitPos = ((Integer) val.get(0)).intValue();
146
				double y = ((Integer) val.get(1)).intValue();
147
				
148
				val = DwgUtil.getBitDouble(data, bitPos);
149
				bitPos = ((Integer) val.get(0)).intValue();
150
				double z = ((Integer) val.get(1)).intValue();
151
				
152
				ctrlPoint[0][i] = x;
153
				ctrlPoint[1][i] = y;
154
				ctrlPoint[2][i] = z;
155
				
156
				if(weight){
157
					val = DwgUtil.getBitDouble(data, bitPos);
158
					bitPos = ((Integer) val.get(0)).intValue();
159
					weights[i] = ((Integer) val.get(1)).intValue();
160
				}
161
			}//for
162
			spline.setControlPoints(ctrlPoint);
163
			spline.setWeights(weights);
164
		}//if
165
		
166
		
167
		if(numFitPts > 0){
168
			double[][] fitPoint = new double[3][numCtPts];
169
			for(int i = 0; i < numFitPts; i++){
170
				val = DwgUtil.getBitDouble(data, bitPos);
171
				bitPos = ((Integer) val.get(0)).intValue();
172
				double x = ((Integer) val.get(1)).intValue();
173
				
174
				val = DwgUtil.getBitDouble(data, bitPos);
175
				bitPos = ((Integer) val.get(0)).intValue();
176
				double y = ((Integer) val.get(1)).intValue();
177
				
178
				val = DwgUtil.getBitDouble(data, bitPos);
179
				bitPos = ((Integer) val.get(0)).intValue();
180
				double z = ((Integer) val.get(1)).intValue();
181
				
182
				fitPoint[0][i] = x;
183
				fitPoint[1][i] = y;
184
				fitPoint[2][i] = z;
185
			}
186
			spline.setFitPoints(fitPoint);
187
		}
188
		bitPos = headTailReader.readObjectTailer(data, bitPos, spline);
33 189
	}
34

  
35 190
}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/objects/DwgSortEntStable.java
4 4
 */
5 5
package com.iver.cit.jdwglib.dwg.objects;
6 6

  
7
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
7 8
import com.iver.cit.jdwglib.dwg.DwgObject;
8 9

  
9 10
/**
......
14 15
 */
15 16
public class DwgSortEntStable extends DwgObject {
16 17

  
18
	private DwgHandleReference[] handles;
19
	private DwgHandleReference[] objHandles;
20
	private DwgHandleReference parentHdl;
21

  
17 22
	/**
18 23
	 * @param index
19 24
	 */
......
22 27
		// TODO Auto-generated constructor stub
23 28
	}
24 29

  
30
	/**
31
	 * @param handles
32
	 */
33
	public void setSortedHandles(DwgHandleReference[] handles) {
34
		this.handles = handles;
35
	}
36

  
37
	/**
38
	 * @param handles2
39
	 */
40
	public void setObjHandles(DwgHandleReference[] handles2) {
41
		this.objHandles = handles2;
42
	}
43

  
44
	/**
45
	 * @param handle
46
	 */
47
	public void setParentHandle(DwgHandleReference handle) {
48
		this.parentHdl = handle;
49
	}
50

  
25 51
}

Also available in: Unified diff