Statistics
| Revision:

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

History | View | Annotate | Download (5.42 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.awt.geom.Point2D;
8
import java.util.ArrayList;
9

    
10
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
11
import com.iver.cit.jdwglib.dwg.CorruptedDwgEntityException;
12
import com.iver.cit.jdwglib.dwg.DwgObject;
13
import com.iver.cit.jdwglib.dwg.DwgUtil;
14
import com.iver.cit.jdwglib.dwg.objects.DwgAttdef;
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 DwgAttdefReader2004 extends AbstractDwg2004Reader{
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 DwgAttdef))
29
                                throw new RuntimeException("DwgAttdefReader2004 solo lee Attdef");
30
                        DwgAttdef att = (DwgAttdef) dwgObj;
31
                        int bitPos = offset;
32
                        bitPos = readObjectHeader(data, bitPos, att);
33
                        ArrayList v;
34

    
35
                        v= DwgUtil.getRawChar(data, bitPos);
36
                        bitPos = ((Integer)v.get(0)).intValue();
37
                        int dflag = ((Integer)v.get(1)).intValue();
38
                        att.setDataFlag(dflag);
39

    
40
                        if ((dflag & 0x1)==0) {
41
                                v = DwgUtil.getRawDouble(data, bitPos);
42
                                bitPos = ((Integer)v.get(0)).intValue();
43
                                double elev = ((Double)v.get(1)).doubleValue();
44
                                att.setElevation(elev);
45
                        }
46

    
47
                        v = DwgUtil.getRawDouble(data, bitPos);
48
                        bitPos = ((Integer)v.get(0)).intValue();
49
                        double x1 = ((Double)v.get(1)).doubleValue();
50
                        v = DwgUtil.getRawDouble(data, bitPos);
51
                        bitPos = ((Integer)v.get(0)).intValue();
52
                        double y1 = ((Double)v.get(1)).doubleValue();
53
                        att.setInsertionPoint(new Point2D.Double(x1, y1));
54

    
55
                        double x=0, y=0, z=0;
56
                        if ((dflag & 0x2)==0) {
57
                                v = DwgUtil.getDefaultDouble(data, bitPos, x1);
58
                                bitPos = ((Integer)v.get(0)).intValue();
59
                                x = ((Double)v.get(1)).doubleValue();
60
                                v = DwgUtil.getDefaultDouble(data, bitPos, y1);
61
                                bitPos = ((Integer)v.get(0)).intValue();
62
                                y = ((Double)v.get(1)).doubleValue();
63
                        }
64
                        att.setAlignmentPoint(new Point2D.Double(x, y));
65

    
66
                        v = DwgUtil.testBit(data, bitPos);
67
                        bitPos = ((Integer)v.get(0)).intValue();
68
                        boolean flag = ((Boolean)v.get(1)).booleanValue();
69
                        if (flag) {
70
                                y = 0.0;
71
                                x = y;
72
                                z = 1.0;
73
                        } else {
74
                                v = DwgUtil.getBitDouble(data, bitPos);
75
                                bitPos = ((Integer)v.get(0)).intValue();
76
                                x = ((Double)v.get(1)).doubleValue();
77
                                v = DwgUtil.getBitDouble(data, bitPos);
78
                                bitPos = ((Integer)v.get(0)).intValue();
79
                                y = ((Double)v.get(1)).doubleValue();
80
                                v = DwgUtil.getBitDouble(data, bitPos);
81
                                bitPos = ((Integer)v.get(0)).intValue();
82
                                z = ((Double)v.get(1)).doubleValue();
83
                        }
84
                        att.setExtrusion(new double[]{x, y, z});
85

    
86
                        v = DwgUtil.testBit(data, bitPos);
87
                        bitPos = ((Integer)v.get(0)).intValue();
88
                        flag = ((Boolean)v.get(1)).booleanValue();
89
                    double th;
90
                        if (flag) {
91
                                th=0.0;
92
                        } else {
93
                                v = DwgUtil.getBitDouble(data, bitPos);
94
                                bitPos = ((Integer)v.get(0)).intValue();
95
                                th = ((Double)v.get(1)).doubleValue();
96
                        }
97
                        att.setThickness(th);
98

    
99
                        if ((dflag & 0x4)==0) {
100
                                v = DwgUtil.getRawDouble(data, bitPos);
101
                                bitPos = ((Integer)v.get(0)).intValue();
102
                                double oblique = ((Double)v.get(1)).doubleValue();
103
                                att.setObliqueAngle(oblique);
104
                        }
105

    
106
                        if ((dflag & 0x8)==0) {
107
                                v = DwgUtil.getRawDouble(data, bitPos);
108
                                bitPos = ((Integer)v.get(0)).intValue();
109
                                double rot = ((Double)v.get(1)).doubleValue();
110
                                att.setRotationAngle(rot);
111
                        }
112

    
113
                        v = DwgUtil.getRawDouble(data, bitPos);
114
                        bitPos = ((Integer)v.get(0)).intValue();
115
                        double height = ((Double)v.get(1)).doubleValue();
116
                        att.setHeight(height);
117

    
118
                        if ((dflag & 0x10)==0) {
119
                                v = DwgUtil.getRawDouble(data, bitPos);
120
                                bitPos = ((Integer)v.get(0)).intValue();
121
                                double width = ((Double)v.get(1)).doubleValue();
122
                                att.setWidthFactor(width);
123
                        }
124

    
125
                        v = DwgUtil.getTextString(data, bitPos);
126
                        bitPos = ((Integer)v.get(0)).intValue();
127
                        String text = (String)v.get(1);
128
                        att.setText(text);
129

    
130
                        if ((dflag & 0x20)==0) {
131
                                v = DwgUtil.getBitShort(data, bitPos);
132
                                bitPos = ((Integer)v.get(0)).intValue();
133
                                int gen = ((Integer)v.get(1)).intValue();
134
                                att.setGeneration(gen);
135
                        }
136

    
137
                        if ((dflag & 0x40)==0) {
138
                                v = DwgUtil.getBitShort(data, bitPos);
139
                                bitPos = ((Integer)v.get(0)).intValue();
140
                                int halign = ((Integer)v.get(1)).intValue();
141
                                att.setHalign(halign);
142
                        }
143

    
144
                        if ((dflag & 0x80)==0) {
145
                                v = DwgUtil.getBitShort(data, bitPos);
146
                                bitPos = ((Integer)v.get(0)).intValue();
147
                                int valign = ((Integer)v.get(1)).intValue();
148
                                att.setValign(valign);
149
                        }
150

    
151
                        v = DwgUtil.getTextString(data, bitPos);
152
                        bitPos = ((Integer)v.get(0)).intValue();
153
                        String tag = (String)v.get(1);
154
                        att.setTag(tag);
155

    
156
                        v = DwgUtil.getBitShort(data, bitPos);
157
                        bitPos = ((Integer)v.get(0)).intValue();
158
                        int fl = ((Integer)v.get(1)).intValue();
159
                        att.setFieldLength(fl);
160

    
161
                        v = DwgUtil.getRawChar(data, bitPos);
162
                        bitPos = ((Integer)v.get(0)).intValue();
163
                        int flags = ((Integer)v.get(1)).intValue();
164
                        att.setFlags(flags);
165

    
166
                        v = DwgUtil.getTextString(data, bitPos);
167
                        bitPos = ((Integer)v.get(0)).intValue();
168
                        String prompt = (String)v.get(1);
169
                        att.setPrompt(prompt);
170

    
171
                        bitPos = readObjectTailer(data, bitPos, att);
172
                        DwgHandleReference styleHandle = new DwgHandleReference();
173
                        bitPos = styleHandle.read(data, bitPos);
174
                        att.setStyleHandle(styleHandle);
175
                }
176
}