Statistics
| Revision:

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

History | View | Annotate | Download (2.06 KB)

1
package com.iver.cit.jdwglib.dwg.readers.objreaders.v2004;
2

    
3
import java.util.ArrayList;
4

    
5
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
6
import com.iver.cit.jdwglib.dwg.DwgObject;
7
import com.iver.cit.jdwglib.dwg.DwgUtil;
8
import com.iver.cit.jdwglib.dwg.objects.DwgDictionary;
9

    
10
public class DwgDictionaryReader2004 extends AbstractDwg2004Reader{
11

    
12
        public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) {
13
                if(! (dwgObj instanceof DwgDictionary))
14
                        throw new RuntimeException("DictionaryReader2004 solo puede leer DwgDictionary");
15
                DwgDictionary dict = (DwgDictionary) dwgObj;
16
                try {
17
                        int bitPos = offset;
18

    
19
                        ArrayList v;
20

    
21
                        v = DwgUtil.getBitShort(data, bitPos);
22
                        bitPos = ((Integer)v.get(0)).intValue();
23
                        int numReactors = ((Integer)v.get(1)).intValue();
24
                        dict.setNumReactors(numReactors);
25

    
26
                        v = DwgUtil.testBit(data, bitPos);
27
                        bitPos = ((Integer)v.get(0)).intValue();
28
                        boolean XdicFlag = ((Boolean) v.get(1)).booleanValue();
29

    
30
                        v = DwgUtil.getBitLong(data, bitPos);
31
                        bitPos = ((Integer)v.get(0)).intValue();
32
                        int numItems = ((Integer)v.get(1)).intValue();
33

    
34
                        v = DwgUtil.getBitShort(data, bitPos);
35
                        bitPos = ((Integer)v.get(0)).intValue();
36
                        int cloningFlag = ((Integer)v.get(1)).intValue();
37
                        dict.setCloningFlag(cloningFlag);
38

    
39
                        v = DwgUtil.getRawChar(data, bitPos);
40
                        bitPos = ((Integer)v.get(0)).intValue();
41
                        int hardOwnerFlag = ((Integer)v.get(1)).intValue();
42
                        dict.setHardOwnerFlag(hardOwnerFlag);
43

    
44
                        dict.inserta();
45

    
46
                        ArrayList entradasTexto = new ArrayList();
47
                        for(int i=0; i<numItems; i++){
48
                                v = DwgUtil.getTextString(data, bitPos);
49
                                bitPos = ((Integer)v.get(0)).intValue();
50
                                String text = ((String)v.get(1));
51
                                entradasTexto.add(text);
52
                        }
53
                        DwgHandleReference handle;
54
                        for(int i=0; i<numItems; i++){
55
                                handle = new DwgHandleReference();
56
                                bitPos = handle.read(data, bitPos);
57
                                // A la vez que leemos los handles, rellenamos el diccionario.
58
                                dict.put(entradasTexto.get(i),handle);
59
                        }
60
                }catch (Exception e){
61
                        System.out.println("Se ha producido una excepion leyendo un diccionario."+e.getMessage());
62
                }
63
        }
64
}