Statistics
| Revision:

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

History | View | Annotate | Download (2.16 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
import java.util.Vector;
9

    
10
import com.iver.cit.jdwglib.dwg.CorruptedDwgEntityException;
11
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
12
import com.iver.cit.jdwglib.dwg.DwgObject;
13
import com.iver.cit.jdwglib.dwg.DwgUtil;
14
import com.iver.cit.jdwglib.dwg.objects.DwgBlockControl;
15

    
16
/**
17
 * @author azabala
18
 */
19
public class DwgBlockControlReader2004 extends AbstractDwg2004Reader{
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

    
26
                 if(! (dwgObj instanceof DwgBlockControl))
27
                            throw new RuntimeException("ArcReader 2004 solo puede leer DwgBlockControl");
28
                    DwgBlockControl blk = (DwgBlockControl) dwgObj;
29
                    blk.inserta();
30
                        int bitPos = offset;
31

    
32
                        ArrayList v;
33

    
34

    
35
                        v = DwgUtil.getBitLong(data, bitPos);
36
                        bitPos = ((Integer)v.get(0)).intValue();
37
                        int numReactors = ((Integer)v.get(1)).intValue();
38
                        blk.setNumReactors(numReactors);
39

    
40
//                        FIXME: Asegurarse de esto
41
                        v = DwgUtil.testBit(data, bitPos);
42
                        bitPos = ((Integer)v.get(0)).intValue();
43
                        boolean xdicFlag = ((Boolean)v.get(1)).booleanValue();
44

    
45
                        v = DwgUtil.getBitShort(data, bitPos);
46
                        bitPos = ((Integer)v.get(0)).intValue();
47
                        int enumeration = ((Integer)v.get(1)).intValue();
48

    
49
                        DwgHandleReference hr = new DwgHandleReference();
50
                        bitPos = hr.read(data, bitPos);
51
                        blk.setNullHandle(hr);
52

    
53
                        if(!xdicFlag){
54
                                hr = new DwgHandleReference();
55
                                bitPos = hr.read(data, bitPos);
56
                                blk.setXDicObjHandle(hr);
57
                        }
58

    
59
                        if (enumeration>0) {
60
                                Vector handles = new Vector();
61
                                for (int i=0;i<enumeration;i++) {
62
                                        hr = new DwgHandleReference();
63
                                        bitPos = hr.read(data, bitPos);
64
                                        handles.add(hr);
65
                                }
66
                                blk.setCode2Handles(handles);
67
                        }
68

    
69
                        hr = new DwgHandleReference();
70
                        bitPos = hr.read(data, bitPos);
71
                        blk.setModelSpaceHandle(hr);
72

    
73
                        hr = new DwgHandleReference();
74
                        bitPos = hr.read(data, bitPos);
75
                        blk.setPaperSpaceHandle(hr);
76
                }
77
}