Statistics
| Revision:

root / trunk / libraries / libDwg / src / com / iver / cit / jdwglib / dwg / readers / objreaders / v2004 / DwgLineReader2004.java @ 23942

History | View | Annotate | Download (3.36 KB)

1
/*
2
 * Created on 25-ene-2007 by azabala
3
 *
4
 */
5
package com.iver.cit.jdwglib.dwg.readers.objreaders.v2004;
6

    
7
import java.util.ArrayList;
8

    
9
import com.iver.cit.jdwglib.dwg.CorruptedDwgEntityException;
10
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
11
import com.iver.cit.jdwglib.dwg.DwgObject;
12
import com.iver.cit.jdwglib.dwg.DwgUtil;
13
import com.iver.cit.jdwglib.dwg.objects.DwgLine;
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 DwgLineReader2004 extends AbstractDwg2004Reader{
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("LineReader 2004 solo puede leer DwgLine");
29
                DwgLine line = (DwgLine) dwgObj;
30
                line.inserta();
31

    
32
                int bitPos = offset;
33
                ArrayList v;
34

    
35
                bitPos = readObjectHeader(data, bitPos, line);
36

    
37
                v = DwgUtil.testBit(data, bitPos);
38
                bitPos = ((Integer)v.get(0)).intValue();
39
                line.setZflag(((Boolean)v.get(1)).booleanValue());
40

    
41
                v = DwgUtil.getRawDouble(data, bitPos);
42
                bitPos = ((Integer)v.get(0)).intValue();
43
                double x1 = ((Double)v.get(1)).doubleValue();
44
                v = DwgUtil.getDefaultDouble(data, bitPos, x1);
45
                bitPos = ((Integer)v.get(0)).intValue();
46
                double x2 = ((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
                v = DwgUtil.getDefaultDouble(data, bitPos, y1);
51
                bitPos = ((Integer)v.get(0)).intValue();
52
                double y2 = ((Double)v.get(1)).doubleValue();
53
                double[] p1;
54
                double[] p2;
55
            if (!line.isZflag()) {
56
                        v = DwgUtil.getRawDouble(data, bitPos);
57
                        bitPos = ((Integer)v.get(0)).intValue();
58
                        double z1 = ((Double)v.get(1)).doubleValue();
59
                        v = DwgUtil.getDefaultDouble(data, bitPos, z1);
60
                        bitPos = ((Integer)v.get(0)).intValue();
61
                        double z2 = ((Double)v.get(1)).doubleValue();
62
                        p1 = new double[]{x1, y1, z1};
63
                        p2 = new double[]{x2, y2, z2};
64
                } else {
65
                        p1 = new double[]{x1, y1, 0d};
66
                        p2 = new double[]{x2, y2, 0d};
67
                }
68
            line.setP1(p1);
69
            line.setP2(p2);
70

    
71
                v = DwgUtil.testBit(data, bitPos);
72
                bitPos = ((Integer)v.get(0)).intValue();
73
                boolean flag = ((Boolean)v.get(1)).booleanValue();
74
            double val;
75
                if (flag) {
76
                        val=0.0;
77
                } else {
78
                        v = DwgUtil.getBitDouble(data, bitPos);
79
                        bitPos = ((Integer)v.get(0)).intValue();
80
                        val = ((Double)v.get(1)).doubleValue();
81
                }
82
                line.setThickness(val);
83

    
84
                v = DwgUtil.testBit(data, bitPos);
85
                bitPos = ((Integer)v.get(0)).intValue();
86
                flag = ((Boolean)v.get(1)).booleanValue();
87
                double x, y, z;
88
            if (flag) {
89
                         x = y = 0.0;
90
                         z = 1.0;
91
                } else {
92
                        v = DwgUtil.getBitDouble(data, bitPos);
93
                        bitPos = ((Integer)v.get(0)).intValue();
94
                        x = ((Double)v.get(1)).doubleValue();
95
                        v = DwgUtil.getBitDouble(data, bitPos);
96
                        bitPos = ((Integer)v.get(0)).intValue();
97
                        y = ((Double)v.get(1)).doubleValue();
98
                        v = DwgUtil.getBitDouble(data, bitPos);
99
                        bitPos = ((Integer)v.get(0)).intValue();
100
                        z = ((Double)v.get(1)).doubleValue();
101
                }
102
                double[] coord = new double[]{x, y, z};
103
                line.setExtrusion(coord);
104
                if(line.getAvanzar()) bitPos++;
105
                bitPos = readObjectTailer(data, bitPos, line);
106
        }
107

    
108
}