Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libDwg / src / com / iver / cit / jdwglib / dwg / readers / objreaders / v15 / DwgAttdefReader15.java @ 9925

History | View | Annotate | Download (5.55 KB)

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

    
7
import java.awt.geom.Point2D;
8
import java.util.ArrayList;
9

    
10
import com.iver.cit.jdwglib.dwg.DwgObject;
11
import com.iver.cit.jdwglib.dwg.DwgUtil;
12
import com.iver.cit.jdwglib.dwg.objects.DwgAttdef;
13

    
14
/**
15
 * @author alzabord
16
 *
17
 * TODO To change the template for this generated type comment go to
18
 * Window - Preferences - Java - Code Style - Code Templates
19
 */
20
public class DwgAttdefReader15 extends AbstractDwg15Reader{
21

    
22
        /* (non-Javadoc)
23
         * @see com.iver.cit.jdwglib.dwg.readers.IDwgObjectReader#readSpecificObj(int[], int, com.iver.cit.jdwglib.dwg.DwgObject)
24
         */
25
        public void readSpecificObj(int[] data, int offset, DwgObject dwgObj) throws Exception {
26
                        if(!(dwgObj instanceof DwgAttdef))
27
                                throw new RuntimeException("AttdefReader 15 solo lee Attdef");
28
                        DwgAttdef att = (DwgAttdef) dwgObj;
29
                        int bitPos = offset;
30
                        bitPos = headTailReader.readObjectHeader(data, bitPos, att);
31
                        ArrayList v = DwgUtil.getRawChar(data, bitPos);
32
                        bitPos = ((Integer)v.get(0)).intValue();
33
                        int dflag = ((Integer)v.get(1)).intValue();
34
                        att.setDataFlag(dflag);
35
                        if ((dflag & 0x1)==0) {
36
                                v = DwgUtil.getRawDouble(data, bitPos);
37
                                bitPos = ((Integer)v.get(0)).intValue();
38
                                double elev = ((Double)v.get(1)).doubleValue();
39
                                att.setElevation(elev);
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.getRawDouble(data, bitPos);
45
                        bitPos = ((Integer)v.get(0)).intValue();
46
                        double y1 = ((Double)v.get(1)).doubleValue();
47
                        att.setInsertionPoint(new Point2D.Double(x1, y1));
48
                        double x=0, y=0, z=0;
49
                        if ((dflag & 0x2)==0) {
50
                                v = DwgUtil.getDefaultDouble(data, bitPos, x1);
51
                                bitPos = ((Integer)v.get(0)).intValue();
52
                                x = ((Double)v.get(1)).doubleValue();
53
                                v = DwgUtil.getDefaultDouble(data, bitPos, y1);
54
                                bitPos = ((Integer)v.get(0)).intValue();
55
                                y = ((Double)v.get(1)).doubleValue();
56
                        }
57
                        att.setAlignmentPoint(new Point2D.Double(x, y));
58
                        v = DwgUtil.testBit(data, bitPos);
59
                        bitPos = ((Integer)v.get(0)).intValue();
60
                        boolean flag = ((Boolean)v.get(1)).booleanValue();
61
                        if (flag) {
62
                                y = 0.0;
63
                                x = y;
64
                                z = 1.0;
65
                        } else {
66
                                v = DwgUtil.getBitDouble(data, bitPos);
67
                                bitPos = ((Integer)v.get(0)).intValue();
68
                                x = ((Double)v.get(1)).doubleValue();
69
                                v = DwgUtil.getBitDouble(data, bitPos);
70
                                bitPos = ((Integer)v.get(0)).intValue();
71
                                y = ((Double)v.get(1)).doubleValue();
72
                                v = DwgUtil.getBitDouble(data, bitPos);
73
                                bitPos = ((Integer)v.get(0)).intValue();
74
                                z = ((Double)v.get(1)).doubleValue();
75
                        }
76
                        att.setExtrusion(new double[]{x, y, z});
77
                        v = DwgUtil.testBit(data, bitPos);
78
                        bitPos = ((Integer)v.get(0)).intValue();
79
                        flag = ((Boolean)v.get(1)).booleanValue();
80
                    double th;
81
                        if (flag) {
82
                                th=0.0;
83
                        } else {
84
                                v = DwgUtil.getBitDouble(data, bitPos);
85
                                bitPos = ((Integer)v.get(0)).intValue();
86
                                th = ((Double)v.get(1)).doubleValue();
87
                        }
88
                        att.setThickness(th);
89
                        if ((dflag & 0x4)==0) {
90
                                v = DwgUtil.getRawDouble(data, bitPos);
91
                                bitPos = ((Integer)v.get(0)).intValue();
92
                                double oblique = ((Double)v.get(1)).doubleValue();
93
                                att.setObliqueAngle(oblique);
94
                        }
95
                        if ((dflag & 0x8)==0) {
96
                                v = DwgUtil.getRawDouble(data, bitPos);
97
                                bitPos = ((Integer)v.get(0)).intValue();
98
                                double rot = ((Double)v.get(1)).doubleValue();
99
                                att.setRotationAngle(rot);
100
                        }
101
                        v = DwgUtil.getRawDouble(data, bitPos);
102
                        bitPos = ((Integer)v.get(0)).intValue();
103
                        double height = ((Double)v.get(1)).doubleValue();
104
                        att.setHeight(height);
105
                        if ((dflag & 0x10)==0) {
106
                                v = DwgUtil.getRawDouble(data, bitPos);
107
                                bitPos = ((Integer)v.get(0)).intValue();
108
                                double width = ((Double)v.get(1)).doubleValue();
109
                                att.setWidthFactor(width);
110
                        }
111
                        v = DwgUtil.getTextString(data, bitPos);
112
                        bitPos = ((Integer)v.get(0)).intValue();
113
                        String text = (String)v.get(1);
114
                        att.setText(text);
115
                        if ((dflag & 0x20)==0) {
116
                                v = DwgUtil.getBitShort(data, bitPos);
117
                                bitPos = ((Integer)v.get(0)).intValue();
118
                                int gen = ((Integer)v.get(1)).intValue();
119
                                att.setGeneration(gen);
120
                        }
121
                        if ((dflag & 0x40)==0) {
122
                                v = DwgUtil.getBitShort(data, bitPos);
123
                                bitPos = ((Integer)v.get(0)).intValue();
124
                                int halign = ((Integer)v.get(1)).intValue();
125
                                att.setHalign(halign);
126
                        }
127
                        if ((dflag & 0x80)==0) {
128
                                v = DwgUtil.getBitShort(data, bitPos);
129
                                bitPos = ((Integer)v.get(0)).intValue();
130
                                int valign = ((Integer)v.get(1)).intValue();
131
                                att.setValign(valign);
132
                        }
133
                        v = DwgUtil.getTextString(data, bitPos);
134
                        bitPos = ((Integer)v.get(0)).intValue();
135
                        String tag = (String)v.get(1);
136
                        att.setTag(tag);
137
                        v = DwgUtil.getBitShort(data, bitPos);
138
                        bitPos = ((Integer)v.get(0)).intValue();
139
                        int fl = ((Integer)v.get(1)).intValue();
140
                        att.setFieldLength(fl);
141
                        v = DwgUtil.getRawChar(data, bitPos);
142
                        bitPos = ((Integer)v.get(0)).intValue();
143
                        int flags = ((Integer)v.get(1)).intValue();
144
                        att.setFlags(flags);
145
                        v = DwgUtil.getTextString(data, bitPos);
146
                        bitPos = ((Integer)v.get(0)).intValue();
147
                        String prompt = (String)v.get(1);
148
                        att.setPrompt(prompt);
149
                        bitPos = headTailReader.readObjectTailer(data, bitPos, att);
150
                        v = DwgUtil.getHandle(data, bitPos);
151
                        bitPos = ((Integer)v.get(0)).intValue();
152
                        int[] handle = new int[v.size()-1];
153
                    for (int j=1;j<v.size();j++) {
154
                            handle[j-1] = ((Integer)v.get(j)).intValue();
155
                    }
156
                    ArrayList handleVect = new ArrayList();
157
                    for (int i=0;i<handle.length;i++) {
158
                            handleVect.add(new Integer(handle[i]));
159
                    }
160
                    att.setStyleHandle(DwgUtil.handleBinToHandleInt(handleVect));
161
                }
162
}