root / trunk / org.gvsig.dwg / org.gvsig.dwg.lib / src / main / java / org / gvsig / dwg / lib / readers / v15 / DwgPolyline2DReader15.java @ 5
History | View | Annotate | Download (3.29 KB)
1 | 5 | jldominguez | /*
|
---|---|---|---|
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 | } |