Revision 10014

View differences:

trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/DwgObject.java
45 45
public class DwgObject {
46 46
	protected int type;
47 47

  
48
	protected int handle;
48
	protected DwgHandleReference handle;
49 49

  
50 50
	protected String version;
51 51

  
......
54 54
	/**
55 55
	 * code of the layer handle
56 56
	 */
57
	protected int layerHandleCode;
57
	//protected int layerHandleCode;
58 58

  
59 59
	/**
60 60
	 * layer handle as an integer
61 61
	 */
62
	protected int layerHandle;
62
	protected DwgHandleReference layerHandle;
63 63

  
64 64
	protected int color;
65 65

  
......
77 77

  
78 78
	protected int graphicData;
79 79

  
80
	protected int subEntityHandle;
80
	protected DwgHandleReference plotStyleHandle = null;
81 81

  
82
	protected int xDicObjHandle;
82
	protected DwgHandleReference subEntityHandle = null;
83 83

  
84
	protected DwgHandleReference xDicObjHandle = null;
85

  
84 86
	protected boolean graphicsFlag;
85 87

  
86 88
	/**
......
93 95
	 * Previous and Next Handle (this stuff has allowed us to solve the problem
94 96
	 * of layer handles
95 97
	 */
96
	private int nextHandle = -1;
98
	private DwgHandleReference nextHandle = null;
97 99

  
98
	private int previousHandle = -1;
100
	private DwgHandleReference previousHandle = null;
99 101

  
100
	private int previousHandleCode = -1;
102
	//private ArrayList reactorsHandlesCodes = new ArrayList();
101 103

  
102
	private int nextHandleCode = -1;
103

  
104
	private int xDicObjHandleCode = -1;
105

  
106
	private int subEntityHandleCode = -1;
107

  
108
	private ArrayList reactorsHandlesCodes = new ArrayList();
109

  
110 104
	private ArrayList reactorsHandles = new ArrayList();
111 105

  
112 106
	public DwgObject(int index) {
113 107
		this.index = index;
114 108
	}
115 109

  
116
	public void setNextHandleCode(int i) {
117
		this.nextHandleCode = i;
118
	}
110
	public void setNextHandle(DwgHandleReference hr) {
111
		this.nextHandle = hr;
119 112

  
120
	public void setPreviousHandleCode(int i) {
121
		this.previousHandleCode = i;
122

  
123 113
	}
124 114

  
125
	public void setNextHandle(int i) {
126
		this.nextHandle = i;
127

  
115
	public void setPreviousHandle(DwgHandleReference hr) {
116
		this.previousHandle = hr;
128 117
	}
129 118

  
130
	public void setPreviousHandle(int i) {
131
		this.previousHandle = i;
132
	}
133

  
134
	private void setSubEntityHandleCode(int i) {
135
		this.subEntityHandleCode = i;
136
	}
137

  
138
	private void setXDicObjHandleCode(int i) {
139
		this.xDicObjHandleCode = i;
140
	}
141

  
119
	/* 
142 120
	public void setReactorsHandles(ArrayList reactorsHandles) {
143 121
		this.reactorsHandlesCodes=reactorsHandles;
144 122
	}
123
	*/
145 124

  
146
	public void addReactorHandle(int reactorHandleCode, int reactorHandle) {
147
		if (this.reactorsHandlesCodes == null || this.reactorsHandles == null){
148
			this.reactorsHandlesCodes = new ArrayList();
125
	public void addReactorHandle(DwgHandleReference hr) {
126
		if (this.reactorsHandles == null){
149 127
			this.reactorsHandles = new ArrayList();
150 128
		}
151
		this.reactorsHandlesCodes.add(new Integer(reactorHandleCode));
152
		this.reactorsHandles.add(new Integer(reactorHandle));
129
		this.reactorsHandles.add(hr);
153 130
	}
154 131

  
155 132

  
156

  
157
	public int getNextHandleCode() {
158
		return this.nextHandleCode;
159
	}
160

  
161
	public int getPreviousHandleCode() {
162
		return this.previousHandleCode;
163
	}
164

  
165
	public int getNextHandle() {
133
	public DwgHandleReference getNextHandle() {
166 134
		return this.nextHandle;
167 135

  
168 136
	}
169 137

  
170
	public int getPreviousHandle() {
138
	public DwgHandleReference getPreviousHandle() {
171 139
		return this.previousHandle;
172 140
	}
173 141

  
174
	public int getSubEntityHandleCode() {
175
		return this.subEntityHandleCode;
176
	}
177

  
178
	public int getXDicObjHandleCode() {
179
		return this.xDicObjHandleCode;
180
	}
181

  
182
	public ArrayList getReactorsHandlesCodes() {
183
		return this.reactorsHandlesCodes;
184
	}
185

  
186 142
	public ArrayList getReactorsHandles() {
187 143
		return this.reactorsHandles;
188 144
	}
189 145

  
190 146
	//TODO Todo esto no vale si handle puede tomar valor -1
191 147
	public boolean hasNextHandle() {
192
		return this.nextHandle != -1;
148
		return this.nextHandle != null;
193 149
	}
194 150

  
195 151
	public boolean hasPreviousHandle() {
196
		return this.previousHandle != -1;
152
		return this.previousHandle != null;
197 153
	}
198 154

  
199 155
	public boolean hasSubEntityHandle(){
200
		return this.subEntityHandleCode != -1;
156
		return this.subEntityHandle != null;
201 157
	}
202 158

  
203 159
	public boolean hasXDicObjHandle(){
204
		return this.xDicObjHandleCode != -1;
160
		return this.xDicObjHandle != null;
205 161
	}
206 162

  
207 163
	public boolean hasReactorsHandles(){
208
		return this.reactorsHandlesCodes.size() != 0;
164
		return this.reactorsHandles.size() != 0;
209 165
	}
210 166

  
211 167
	public int reactorsHandlesQuantity(){
212
		return this.reactorsHandlesCodes.size();
168
		return this.reactorsHandles.size();
213 169
	}
214 170

  
215

  
216 171
	public int getIndex() {
217 172
		return index;
218 173
	}
......
288 243
	/**
289 244
	 * @return Returns the subEntityHandle.
290 245
	 */
291
	public int getSubEntityHandle() {
246
	public DwgHandleReference getSubEntityHandle() {
292 247
		return subEntityHandle;
293 248
	}
294 249

  
......
296 251
	 * @param subEntityHandle
297 252
	 *            The subEntityHandle to set.
298 253
	 */
299
	public void setSubEntityHandle(int subEntityHandle) {
254
	public void setSubEntityHandle(DwgHandleReference subEntityHandle) {
300 255
		this.subEntityHandle = subEntityHandle;
301 256
	}
302 257

  
303 258
	/**
304 259
	 * @return Returns the xDicObjHandle.
305 260
	 */
306
	public int getXDicObjHandle() {
261
	public DwgHandleReference getXDicObjHandle() {
307 262
		return xDicObjHandle;
308 263
	}
309 264

  
......
311 266
	 * @param dicObjHandle
312 267
	 *            The xDicObjHandle to set.
313 268
	 */
314
	public void setXDicObjHandle(int dicObjHandle) {
269
	public void setXDicObjHandle(DwgHandleReference dicObjHandle) {
315 270
		xDicObjHandle = dicObjHandle;
316 271
	}
317 272

  
318 273
	/**
319
	 * @return Returns the layerHandleCode.
320
	 */
321
	public int getLayerHandleCode() {
322
		return layerHandleCode;
323
	}
324

  
325
	/**
326
	 * @param layerHandleCode
327
	 *            The layerHandleCode to set.
328
	 */
329
	public void setLayerHandleCode(int layerHandleCode) {
330
		this.layerHandleCode = layerHandleCode;
331
	}
332

  
333
	/**
334 274
	 * @return Returns the color.
335 275
	 */
336 276
	public int getColor() {
......
348 288
	/**
349 289
	 * @return Returns the handle.
350 290
	 */
351
	public int getHandle() {
291
	public DwgHandleReference getHandle() {
352 292
		return handle;
353 293
	}
354 294

  
......
356 296
	 * @param handle
357 297
	 *            The handle to set.
358 298
	 */
359
	public void setHandle(int handle) {
299
	public void setHandle(DwgHandleReference handle) {
360 300
		this.handle = handle;
361 301
	}
362 302

  
363 303
	/**
364 304
	 * @return Returns the layerHandle.
365 305
	 */
366
	public int getLayerHandle() {
306
	public DwgHandleReference getLayerHandle() {
367 307
		return layerHandle;
368 308
	}
369 309

  
......
371 311
	 * @param layerHandle
372 312
	 *            The layerHandle to set.
373 313
	 */
374
	public void setLayerHandle(int layerHandle) {
314
	public void setLayerHandle(DwgHandleReference layerHandle) {
375 315
		this.layerHandle = layerHandle;
376 316
	}
377 317

  
......
485 425
		return lyrByLineType;
486 426
	}
487 427

  
428
	public void setPlotStyleHandle(DwgHandleReference hr) {
429
		this.plotStyleHandle = hr;
430

  
431
	}
432
	
433
	public boolean hasPlotStyleHandle() {
434
		return this.plotStyleHandle != null;
435
	}
436

  
488 437
	/*
489 438
	 * Esto solo se usa para la version 13-14
490 439
	 */
491
	int lineTypeHandle;
440
	DwgHandleReference lineTypeHandle = null;
492 441

  
493 442
	/**
494 443
	 * Sets the handle of the line type of this drawing entity.
......
497 446
	 * 
498 447
	 * @param handle2
499 448
	 */
500
	public void setLineType(int handle) {
501
		this.lineTypeHandle = handle;
449
	public void setLineTypeHandle(DwgHandleReference hr) {
450
		this.lineTypeHandle = hr;
502 451

  
503 452
	}
453
	
454
	public boolean hasLineTypeHandle() {
455
		return this.lineTypeHandle != null;
456
	}
457

  
458

  
504 459
}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/DwgFile.java
280 280
	 *
281 281
	 */
282 282
	public void addDwgLayer(DwgLayer dwgLayer){
283
		layerTable.put(new Integer(dwgLayer.getHandle()), 
283
		layerTable.put(new Integer(dwgLayer.getHandle().getOffset()), 
284 284
				dwgLayer);
285 285
	}
286 286
	
287 287
	public DwgLayer getDwgLayer(DwgObject entity){
288 288
		
289
		int handleCode = entity.getLayerHandleCode();
290
		int entityLayerHandle = entity.getLayerHandle();
289
		int handleCode = entity.getLayerHandle().getCode();
290
		int entityLayerHandle = entity.getLayerHandle().getOffset();
291 291
		int layerHandle = -1;
292 292
		
293 293
		int entityRecord;
......
318 318
			System.out.println ("handleCode"+handleCode);
319 319
			System.out.println ("entityLayerHandle"+entityLayerHandle);
320 320
			if(entity.hasNextHandle()){
321
				System.out.println ("nextHandleCode"+entity.getNextHandleCode());
322
				System.out.println ("nextHandle"+entity.getNextHandle());
321
				System.out.println ("nextHandleCode"+entity.getNextHandle().getCode());
322
				System.out.println ("nextHandle"+entity.getNextHandle().getOffset());
323 323
			}
324 324
			if(entity.hasPreviousHandle()){
325
				System.out.println ("previousHandleCode"+entity.getPreviousHandleCode());
326
				System.out.println ("previousHandle"+entity.getPreviousHandle());
325
				System.out.println ("previousHandleCode"+entity.getPreviousHandle().getCode());
326
				System.out.println ("previousHandle"+entity.getPreviousHandle().getOffset());
327 327
			}
328 328
			if(entity.hasXDicObjHandle()){
329
				System.out.println ("xDicObjHandleCode"+entity.getXDicObjHandleCode());
329
				System.out.println ("xDicObjHandleCode"+entity.getXDicObjHandle());
330 330
				System.out.println ("xDicObjHandle"+entity.getXDicObjHandle());
331 331
			}
332 332
			if(entity.hasReactorsHandles()){
333
				ArrayList reactorsHandlesCode = entity.getReactorsHandlesCodes();
333
				//ArrayList reactorsHandlesCode = entity.getReactorsHandles().get;
334 334
				ArrayList reactorsHandles = entity.getReactorsHandles();
335
				int size = reactorsHandlesCode.size();
335
				int size = reactorsHandles.size();
336 336
				System.out.print ("NUMERO DE reactors"+size);
337
				DwgHandleReference hr;
337 338
				for(int i=0; i<size; i++){
338
					System.out.print ("reactorHandleCode"+reactorsHandlesCode.get(i));
339
					System.out.println (" reactorHandle"+reactorsHandles.get(i));
339
					hr=(DwgHandleReference)reactorsHandles.get(i);
340
					System.out.print ("reactorHandleCode"+hr.getCode());
341
					System.out.println (" reactorHandle"+hr.getOffset());
340 342
				}
341 343
			}
342 344
			break;
......
344 346
		case 0x4:
345 347
		case 0x8:
346 348
			if (entity.hasNextHandle()){
347
				int nextHandleCode = entity.getNextHandleCode();
349
				int nextHandleCode = entity.getNextHandle().getCode();
348 350
				if (nextHandleCode == 0x5) {
349
					layerHandle = entity.getNextHandle();
351
					layerHandle = entity.getNextHandle().getOffset();
350 352
				} else {
351 353
					//TODO No se han previsto nextHandleCode != 0x5
352 354
					System.out.println ("DwgFile.getDwgLayer: handleCode "+handleCode+
......
354 356
				}
355 357
			}
356 358
			break;
359
		case 0x0:
357 360
		case 0x5:
358
			layerHandle = entity.getLayerHandle();
361
			layerHandle = entity.getLayerHandle().getOffset();
359 362
			break;
360 363
		case 0xC:
361 364
			if (entity.hasNextHandle()){
362
				int nextHandleCode = entity.getNextHandleCode();
365
				int nextHandleCode = entity.getNextHandle().getCode();
363 366
				if (nextHandleCode == 0x5) {
364
					layerHandle = entity.getNextHandle();
367
					layerHandle = entity.getNextHandle().getOffset();
365 368
				} else {
366 369
					//TODO No se han previsto nextHandleCode!=0x5
367 370
					System.out.println ("DwgFile.getDwgLayer: handleCode "+handleCode+
368 371
							" con nextHandleCode "+ nextHandleCode +" no implementado.");
369 372
				}
370 373
			} else {
371
				layerHandle = entity.getHandle() - entity.getLayerHandle() + 1;
374
				layerHandle = entity.getHandle().getOffset() - entity.getLayerHandle().getOffset() + 1;
372 375
			}
373 376
			break;
374 377
		default:
......
379 382
			Iterator lyrIterator = layerTable.values().iterator();
380 383
			while(lyrIterator.hasNext()){
381 384
				DwgLayer lyr = (DwgLayer) lyrIterator.next();
382
				int lyrHdl = lyr.getHandle();
385
				int lyrHdl = lyr.getHandle().getOffset();
383 386
				if (lyrHdl == layerHandle){
384 387
					return lyr;
385 388
				}
386 389
			}
387 390
		}
388
		System.out.println(" NO SE HA ENCONTRADO UNA CAPA CON HANDLE " + layerHandle + ". handleCode = " + handleCode);
391
		System.out.println(" NO SE HA ENCONTRADO UNA CAPA CON HANDLE " + layerHandle + ". handleCode = " + handleCode + " entity.index = "+entity.index +" entity.type = " + entity.type + " entityClassName = "+ entity.getClass().getName());
389 392
		return null;
390 393
	}
391 394
	
......
470 473
			DwgObject pol = (DwgObject)dwgObjects.get(i);
471 474
			if (pol instanceof DwgPolyline2D) {
472 475
				int flags = ((DwgPolyline2D)pol).getFlags();
473
				int firstHandle = ((DwgPolyline2D)pol).getFirstVertexHandle();
474
				int lastHandle = ((DwgPolyline2D)pol).getLastVertexHandle();
476
				int firstHandle = ((DwgPolyline2D)pol).getFirstVertexHandle().getOffset();
477
				int lastHandle = ((DwgPolyline2D)pol).getLastVertexHandle().getOffset();
475 478
				ArrayList pts = new ArrayList();
476 479
				ArrayList bulges = new ArrayList();
477 480
				double[] pt = new double[3];
478 481
				for (int j=0;j<dwgObjects.size();j++) {
479 482
					DwgObject firstVertex = (DwgObject)dwgObjects.get(j);
480 483
					if (firstVertex instanceof DwgVertex2D) {
481
						int vertexHandle = firstVertex.getHandle();
484
						int vertexHandle = firstVertex.getHandle().getOffset();
482 485
						if (vertexHandle==firstHandle) {
483 486
							int k=0;
484 487
							while (true) {
485 488
								DwgObject vertex = (DwgObject)dwgObjects.get(j+k);
486
								int vHandle = vertex.getHandle();
489
								int vHandle = vertex.getHandle().getOffset();
487 490
								if (vertex instanceof DwgVertex2D) {
488 491
									pt = ((DwgVertex2D)vertex).getPoint();
489 492
									pts.add(new Point2D.Double(pt[0], pt[1]));
......
587 590
					Point2D point = new Point2D.Double(p[0], p[1]);
588 591
					double[] scale = ((DwgInsert)entity).getScale();
589 592
					double rot = ((DwgInsert)entity).getRotation();
590
					int blockHandle = ((DwgInsert)entity).getBlockHeaderHandle();
593
					int blockHandle = ((DwgInsert)entity).getBlockHeaderHandle().getOffset();
591 594
					manageInsert(point, scale, rot, blockHandle, dwgObjectsWithoutBlocks);
592 595
				} else {
593 596
	//				System.out.println(entity.getClass().getName() +" en un bloque");
......
818 821
		//TODO Ver si puedo inicializar las listas especificas
819 822
		//(IDwgPolyline, etc) aqu? 
820 823
		dwgObjects.add(dwgObject);
821
		handle_objects.put(new Integer(dwgObject.getHandle()), dwgObject);
824
		handle_objects.put(new Integer(dwgObject.getHandle().getOffset()), dwgObject);
822 825
		/*
823 826
		 * TODO Quitar todos estos if-then y sustituirlos por un metodo callbackj
824 827
		 * 
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/DwgFileV14Reader.java
47 47
import com.iver.cit.gvsig.fmap.drivers.dgn.ByteUtils;
48 48
import com.iver.cit.jdwglib.dwg.DwgClass;
49 49
import com.iver.cit.jdwglib.dwg.DwgFile;
50
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
50 51
import com.iver.cit.jdwglib.dwg.DwgObject;
51 52
import com.iver.cit.jdwglib.dwg.DwgObjectFactory;
52 53
import com.iver.cit.jdwglib.dwg.DwgObjectOffset;
......
283 284
			val = DwgUtil.getBitShort(intData, bitPos);
284 285
			bitPos = ((Integer)val.get(0)).intValue();
285 286
			dwgFile.setHeader("SHORT1", val.get(1));
287

  
288
			DwgHandleReference hr = new DwgHandleReference();
289
			bitPos = hr.read(intData, bitPos);
290
			dwgFile.setHeader("HANDLE1", hr);
286 291
			
287
			//TODO Los handle se leen asi??
288
			val = DwgUtil.getHandle(intData, bitPos);
289
			bitPos = ((Integer)val.get(0)).intValue();
290
			dwgFile.setHeader("HANDLE1", val.get(1));
291
			
292 292
			val = DwgUtil.testBit(intData, bitPos);
293 293
			bitPos = ((Integer)val.get(0)).intValue();
294 294
			dwgFile.setHeader("DIMASO", val.get(1));
......
648 648
			bitPos = ((Integer)val.get(0)).intValue();
649 649
			dwgFile.setHeader("CECOLOR", val.get(1));
650 650
			
651
			val = DwgUtil.getHandle(intData, bitPos);
652
			bitPos = ((Integer)val.get(0)).intValue();
653
			int intHandle = DwgUtil.handleToInt(val);
654
			dwgFile.setHeader("HANDSEED", new Integer(intHandle));
655
			
651
			hr = new DwgHandleReference();
652
			bitPos = hr.read(intData, bitPos);
653
			dwgFile.setHeader("HANDSEED", hr);
654

  
656 655
	//creo que CLAYER marca la capa actualmente seleccionada en el menu de autocad		
657 656
			
658
			val = DwgUtil.getHandle(intData, bitPos);
659
			bitPos = ((Integer)val.get(0)).intValue();
660
			intHandle = DwgUtil.handleToInt(val);
661
			dwgFile.setHeader("CLAYER", new Integer(intHandle));
657
			hr = new DwgHandleReference();
658
			bitPos = hr.read(intData, bitPos);
659
			dwgFile.setHeader("CLAYER", hr);
662 660
			
663
			val = DwgUtil.getHandle(intData, bitPos);
664
			bitPos = ((Integer)val.get(0)).intValue();
665
			intHandle = DwgUtil.handleToInt(val);
666
			dwgFile.setHeader("TEXSTYLE", new Integer(intHandle));
661
			hr = new DwgHandleReference();
662
			bitPos = hr.read(intData, bitPos);
663
			dwgFile.setHeader("TEXSTYLE", hr);
667 664
			
668
			val = DwgUtil.getHandle(intData, bitPos);
669
			bitPos = ((Integer)val.get(0)).intValue();
670
			intHandle = DwgUtil.handleToInt(val);
671
			dwgFile.setHeader("CELLTYPE", new Integer(intHandle));
665
			hr = new DwgHandleReference();
666
			bitPos = hr.read(intData, bitPos);
667
			dwgFile.setHeader("CELLTYPE", hr);
668

  
669
			hr = new DwgHandleReference();
670
			bitPos = hr.read(intData, bitPos);
671
			dwgFile.setHeader("DIMSTYLE", hr);
672 672
			
673
			val = DwgUtil.getHandle(intData, bitPos);
674
			bitPos = ((Integer)val.get(0)).intValue();
675
			intHandle = DwgUtil.handleToInt(val);
676
			dwgFile.setHeader("DIMSTYLE", new Integer(intHandle));
677
			
678
			val = DwgUtil.getHandle(intData, bitPos);
679
			bitPos = ((Integer)val.get(0)).intValue();
680
			intHandle = DwgUtil.handleToInt(val);
681
			dwgFile.setHeader("CMLSTYLE", new Integer(intHandle));
682
			
673
			hr = new DwgHandleReference();
674
			bitPos = hr.read(intData, bitPos);
675
			dwgFile.setHeader("CMLSTYLE", hr);
676

  
683 677
			double[] spaces1 = new double[3];
684 678
			val = DwgUtil.getBitDouble(intData, bitPos);
685 679
			bitPos = ((Integer)val.get(0)).intValue();
......
775 769
			spaces8[2] = ((Double)val.get(1)).doubleValue();
776 770
			dwgFile.setHeader("PSPACE_UCSYDIR", spaces8);
777 771
			
778
			val = DwgUtil.getHandle(intData, bitPos);
779
			bitPos = ((Integer)val.get(0)).intValue();
780
			intHandle = DwgUtil.handleToInt(val);
781
			dwgFile.setHeader("PSPACE_UCSNAME", new Integer(intHandle));
772
			hr = new DwgHandleReference();
773
			bitPos = hr.read(intData, bitPos);
774
			dwgFile.setHeader("PSPACE_UCSNAME", hr);
782 775
			
783 776
			double[] spaces9 = new double[6];
784 777
			val = DwgUtil.getBitDouble(intData, bitPos);
......
874 867
			spaces16[2] = ((Double)val.get(1)).doubleValue();
875 868
			dwgFile.setHeader("MSPACE_UCSYDIR", spaces16);
876 869
			
877
			val = DwgUtil.getHandle(intData, bitPos);
878
			bitPos = ((Integer)val.get(0)).intValue();
879
			intHandle = DwgUtil.handleToInt(val);
880
			dwgFile.setHeader("MSPACE_UCSNAME", new Integer(intHandle));
881
			
870
			hr = new DwgHandleReference();
871
			bitPos = hr.read(intData, bitPos);
872
			dwgFile.setHeader("MSPACE_UCSNAME", hr);
873

  
882 874
			val = DwgUtil.testBit(intData, bitPos);
883 875
			bitPos = ((Integer)val.get(0)).intValue();
884 876
			dwgFile.setHeader("DIMTOL", val.get(1));
......
923 915
			bitPos = ((Integer)val.get(0)).intValue();
924 916
			dwgFile.setHeader("DIMSOXD", val.get(1));
925 917
			
926
			
927
			
928 918
			val = DwgUtil.getRawChar(intData, bitPos);
929 919
			bitPos = ((Integer)val.get(0)).intValue();
930 920
			dwgFile.setHeader("DIMALTD", val.get(1));
......
997 987
			bitPos = ((Integer)val.get(0)).intValue();
998 988
			dwgFile.setHeader("DIMALTTD", val.get(1));
999 989
			
1000
			val = DwgUtil.getHandle(intData, bitPos);
1001
			bitPos = ((Integer)val.get(0)).intValue();
1002
			intHandle = DwgUtil.handleToInt(val);
1003
			dwgFile.setHeader("DIMTXSTY", new Integer(intHandle));
1004
			
990
			hr = new DwgHandleReference();
991
			bitPos = hr.read(intData, bitPos);
992
			dwgFile.setHeader("DIMTXSTY", hr);
993

  
1005 994
			val = DwgUtil.getBitDouble(intData, bitPos);
1006 995
			bitPos = ((Integer)val.get(0)).intValue();
1007 996
			dwgFile.setHeader("DIMSCALE", val.get(1));
......
1102 1091
			bitPos = ((Integer)val.get(0)).intValue();
1103 1092
			dwgFile.setHeader("DIMCLRT", val.get(1));
1104 1093
			
1105
			val = DwgUtil.getHandle(intData, bitPos);
1106
			bitPos = ((Integer)val.get(0)).intValue();
1107
			intHandle = DwgUtil.handleToInt(val);
1108
			dwgFile.setHeader("BLOCK_CONTROL_OBJECT", new Integer(intHandle));
1094
			hr = new DwgHandleReference();
1095
			bitPos = hr.read(intData, bitPos);
1096
			dwgFile.setHeader("BLOCK_CONTROL_OBJECT", hr);
1109 1097
			
1110
			val = DwgUtil.getHandle(intData, bitPos);
1111
			bitPos = ((Integer)val.get(0)).intValue();
1112
			intHandle = DwgUtil.handleToInt(val);
1113
			dwgFile.setHeader("LAYER_CONTROL_OBJECT", new Integer(intHandle));
1098
			hr = new DwgHandleReference();
1099
			bitPos = hr.read(intData, bitPos);
1100
			dwgFile.setHeader("LAYER_CONTROL_OBJECT", hr);
1101

  
1102
			hr = new DwgHandleReference();
1103
			bitPos = hr.read(intData, bitPos);
1104
			dwgFile.setHeader("STYLE_CONTROL_OBJECT", hr);
1105

  
1106
			hr = new DwgHandleReference();
1107
			bitPos = hr.read(intData, bitPos);
1108
			dwgFile.setHeader("LINETYPE_CONTROL_OBJECT", hr);
1109

  
1110
			hr = new DwgHandleReference();
1111
			bitPos = hr.read(intData, bitPos);
1112
			dwgFile.setHeader("VIEW_CONTROL_OBJECT", hr);
1113

  
1114
			hr = new DwgHandleReference();
1115
			bitPos = hr.read(intData, bitPos);
1116
			dwgFile.setHeader("UCS_CONTROL_OBJECT", hr);
1117

  
1118
			hr = new DwgHandleReference();
1119
			bitPos = hr.read(intData, bitPos);
1120
			dwgFile.setHeader("VPORT_CONTROL_OBJECT", hr);
1121

  
1122
			hr = new DwgHandleReference();
1123
			bitPos = hr.read(intData, bitPos);
1124
			dwgFile.setHeader("APPID_CONTROL_OBJECT", hr);
1114 1125
			
1115
			val = DwgUtil.getHandle(intData, bitPos);
1116
			bitPos = ((Integer)val.get(0)).intValue();
1117
			intHandle = DwgUtil.handleToInt(val);
1118
			dwgFile.setHeader("STYLE_CONTROL_OBJECT", new Integer(intHandle));
1126
			hr = new DwgHandleReference();
1127
			bitPos = hr.read(intData, bitPos);
1128
			dwgFile.setHeader("DIMSTYLE_CONTROL_OBJECT", hr);
1129

  
1130
			hr = new DwgHandleReference();
1131
			bitPos = hr.read(intData, bitPos);
1132
			dwgFile.setHeader("VIEWPORT_ENTITY_HEADER", hr);
1119 1133
			
1120
			val = DwgUtil.getHandle(intData, bitPos);
1121
			bitPos = ((Integer)val.get(0)).intValue();
1122
			intHandle = DwgUtil.handleToInt(val);
1123
			dwgFile.setHeader("LINETYPE_CONTROL_OBJECT", new Integer(intHandle));
1134
			hr = new DwgHandleReference();
1135
			bitPos = hr.read(intData, bitPos);
1136
			dwgFile.setHeader("ACAD_GROUP_DICTIONARY", hr);
1124 1137
			
1125
			val = DwgUtil.getHandle(intData, bitPos);
1126
			bitPos = ((Integer)val.get(0)).intValue();
1127
			intHandle = DwgUtil.handleToInt(val);
1128
			dwgFile.setHeader("VIEW_CONTROL_OBJECT", new Integer(intHandle));
1138
			hr = new DwgHandleReference();
1139
			bitPos = hr.read(intData, bitPos);
1140
			dwgFile.setHeader("ACAD_MLINE_DICTIONARY", hr);
1129 1141
			
1130
			val = DwgUtil.getHandle(intData, bitPos);
1131
			bitPos = ((Integer)val.get(0)).intValue();
1132
			intHandle = DwgUtil.handleToInt(val);
1133
			dwgFile.setHeader("UCS_CONTROL_OBJECT", new Integer(intHandle));
1142
			hr = new DwgHandleReference();
1143
			bitPos = hr.read(intData, bitPos);
1144
			dwgFile.setHeader("NAMED_OBJECT_DICTIONARY", hr);
1134 1145
			
1135
			val = DwgUtil.getHandle(intData, bitPos);
1136
			bitPos = ((Integer)val.get(0)).intValue();
1137
			intHandle = DwgUtil.handleToInt(val);
1138
			dwgFile.setHeader("VPORT_CONTROL_OBJECT", new Integer(intHandle));
1146
			hr = new DwgHandleReference();
1147
			bitPos = hr.read(intData, bitPos);
1148
			dwgFile.setHeader("PAPER_BLOCK_RECORD", hr);
1139 1149
			
1140
			val = DwgUtil.getHandle(intData, bitPos);
1141
			bitPos = ((Integer)val.get(0)).intValue();
1142
			intHandle = DwgUtil.handleToInt(val);
1143
			dwgFile.setHeader("APPID_CONTROL_OBJECT", new Integer(intHandle));
1150
			hr = new DwgHandleReference();
1151
			bitPos = hr.read(intData, bitPos);
1152
			dwgFile.setHeader("MODEL_BLOCK_RECORD", hr);
1144 1153
			
1145
			val = DwgUtil.getHandle(intData, bitPos);
1146
			bitPos = ((Integer)val.get(0)).intValue();
1147
			intHandle = DwgUtil.handleToInt(val);
1148
			dwgFile.setHeader("DIMSTYLE_CONTROL_OBJECT", new Integer(intHandle));
1154
			hr = new DwgHandleReference();
1155
			bitPos = hr.read(intData, bitPos);
1156
			dwgFile.setHeader("LTYPE_BYLAYER", hr);
1149 1157
			
1150
			val = DwgUtil.getHandle(intData, bitPos);
1151
			bitPos = ((Integer)val.get(0)).intValue();
1152
			intHandle = DwgUtil.handleToInt(val);
1153
			dwgFile.setHeader("VIEWPORT_ENTITY_HEADER", new Integer(intHandle));
1158
			hr = new DwgHandleReference();
1159
			bitPos = hr.read(intData, bitPos);
1160
			dwgFile.setHeader("LTYPE_BYBLOCK", hr);
1154 1161
			
1155
			val = DwgUtil.getHandle(intData, bitPos);
1156
			bitPos = ((Integer)val.get(0)).intValue();
1157
			intHandle = DwgUtil.handleToInt(val);
1158
			dwgFile.setHeader("ACAD_GROUP_DICTIONARY", new Integer(intHandle));
1162
			hr = new DwgHandleReference();
1163
			bitPos = hr.read(intData, bitPos);
1164
			dwgFile.setHeader("LTYPE_CONTINUOUS", hr);
1159 1165
			
1160
			val = DwgUtil.getHandle(intData, bitPos);
1161
			bitPos = ((Integer)val.get(0)).intValue();
1162
			intHandle = DwgUtil.handleToInt(val);
1163
			dwgFile.setHeader("ACAD_MLINE_DICTIONARY", new Integer(intHandle));
1164
			
1165
			val = DwgUtil.getHandle(intData, bitPos);
1166
			bitPos = ((Integer)val.get(0)).intValue();
1167
			intHandle = DwgUtil.handleToInt(val);
1168
			dwgFile.setHeader("NAMED_OBJECT_DICTIONARY", new Integer(intHandle));
1169
			
1170
			val = DwgUtil.getHandle(intData, bitPos);
1171
			bitPos = ((Integer)val.get(0)).intValue();
1172
			intHandle = DwgUtil.handleToInt(val);
1173
			dwgFile.setHeader("PAPER_BLOCK_RECORD", new Integer(intHandle));
1174
			
1175
			val = DwgUtil.getHandle(intData, bitPos);
1176
			bitPos = ((Integer)val.get(0)).intValue();
1177
			intHandle = DwgUtil.handleToInt(val);
1178
			dwgFile.setHeader("MODEL_BLOCK_RECORD", new Integer(intHandle));
1179
			
1180
			val = DwgUtil.getHandle(intData, bitPos);
1181
			bitPos = ((Integer)val.get(0)).intValue();
1182
			intHandle = DwgUtil.handleToInt(val);
1183
			dwgFile.setHeader("LTYPE_BYLAYER", new Integer(intHandle));
1184
			
1185
			val = DwgUtil.getHandle(intData, bitPos);
1186
			bitPos = ((Integer)val.get(0)).intValue();
1187
			intHandle = DwgUtil.handleToInt(val);
1188
			dwgFile.setHeader("LTYPE_BYBLOCK", new Integer(intHandle));
1189
			
1190
			val = DwgUtil.getHandle(intData, bitPos);
1191
			bitPos = ((Integer)val.get(0)).intValue();
1192
			intHandle = DwgUtil.handleToInt(val);
1193
			dwgFile.setHeader("LTYPE_CONTINUOUS", new Integer(intHandle));
1194
			
1195 1166
//		    # remaing bits are unknown, and they end with possible
1196 1167
//		    # padding bits so that 16-bit CRC value after the data
1197 1168
//		    # is on a byte boundary - ignore them for now ...	  
......
1649 1620
		    obj.setHandle(DwgUtil.
1650 1621
		    		handleBinToHandleInt(entityHandle));
1651 1622
	*/
1652
			val = DwgUtil.getHandle(intData, bitPos);
1653
			bitPos = ((Integer)val.get(0)).intValue();
1654
			int handle = DwgUtil.handleToInt(val);
1655
			obj.setHandle(handle);
1623
			DwgHandleReference hr = new DwgHandleReference();
1624
			bitPos = hr.read(intData, bitPos);
1625
			obj.setHandle(hr);
1656 1626
			
1657 1627
//TODO Si funciona, mover el metodo de esta clase a DwgUtil 
1658 1628
		    val = readExtendedData(intData, bitPos);
......
1969 1939
			if(size == 0)
1970 1940
				break;
1971 1941
			
1972
			val = DwgUtil.getHandle(data, bitPos);
1973
			bitPos = ((Integer) val.get(0)).intValue();
1974
			int handle = DwgUtil.handleToInt(val);
1975
			logger.debug("Handle del EXTENDED ENTITY DATA:"+handle);
1942
			DwgHandleReference hr = new DwgHandleReference();
1943
			bitPos = hr.read(data, bitPos);
1944
			logger.debug("Handle del EXTENDED ENTITY DATA:"+hr.getCode()+" "+hr.getOffset());
1945

  
1976 1946
			int count = 0;
1977 1947
			while(count < size){
1978 1948
				val = DwgUtil.getRawChar(data, bitPos);
......
2157 2127
		 * Esto se aplica sobre VERTEX, ATTRIB, SEQEND
2158 2128
		 * */
2159 2129
		if (dwgObject.getMode()==0x0) {
2160
			val = DwgUtil.getHandle(data, bitPos);
2161
		    bitPos = ((Integer)val.get(0)).intValue();
2162
		    int intHandle = DwgUtil.handleToInt(val);
2163
		    dwgObject.setSubEntityHandle(intHandle);
2130
		    DwgHandleReference subEntityHandle = new DwgHandleReference();
2131
		    bitPos = subEntityHandle.read(data, bitPos);
2132
		    dwgObject.setSubEntityHandle(subEntityHandle);
2164 2133
		}
2165 2134
		
2166 2135
		/*
2167
		 * Reactors handles 
2168
		 * TODO No se est?n usando para setear nada en DwgObject
2169
		 * */
2170
		for (int i=0; i<dwgObject.getNumReactors(); i++) {
2171
			val = DwgUtil.getHandle(data, bitPos);
2172
			bitPos = ((Integer)val.get(0)).intValue();
2173
			int reactorHandle = DwgUtil.handleToInt(val);
2136
		 * Reactors handles
2137
		 * DwgObject
2138
		 */
2139
		DwgHandleReference reactorHandle;
2140
		for (int i = 0; i < dwgObject.getNumReactors(); i++) {
2141
			reactorHandle = new DwgHandleReference();
2142
			bitPos = reactorHandle.read(data, bitPos);
2143
			dwgObject.addReactorHandle(reactorHandle);
2174 2144
		}
2175 2145
		
2176
		val = DwgUtil.getHandle(data, bitPos);
2177
		bitPos = ((Integer)val.get(0)).intValue();
2178
		dwgObject.setXDicObjHandle(DwgUtil.handleToInt(val));
2146
		/*
2147
		 * XDICOBJHANDLE
2148
		 */
2149
		DwgHandleReference xDicObjHandle = new DwgHandleReference();
2150
		bitPos = xDicObjHandle.read(data, bitPos);
2151
		dwgObject.setXDicObjHandle(xDicObjHandle);
2152

  
2153
		/*
2154
		 * Layer Handle code
2155
		 */
2179 2156
		
2180
		val = DwgUtil.getHandle(data, bitPos);
2181
		bitPos = ((Integer)val.get(0)).intValue();
2182
		dwgObject.setLayerHandleCode(((Integer)val.get(1)).intValue());
2183
	    dwgObject.setLayerHandle(DwgUtil.handleToInt(val));
2184
//	  TODO Hasta aqui igual que en la 15
2157
		DwgHandleReference layerHandle = new DwgHandleReference();
2158
		bitPos = layerHandle.read(data, bitPos);
2159
		dwgObject.setLayerHandle(layerHandle);
2160

  
2161
		//	  TODO Hasta aqui igual que en la 15
2185 2162
		if(! dwgObject.isLyrByLineType()){
2186
			val = DwgUtil.getHandle(data, bitPos);
2187
			bitPos = ((Integer)val.get(0)).intValue();
2188
			int handle = DwgUtil.handleToInt(val);
2189
			dwgObject.setLineType(handle);
2163
			DwgHandleReference lineTypeHandle = new DwgHandleReference();
2164
			bitPos = lineTypeHandle.read(data, bitPos);
2165
			dwgObject.setLineTypeHandle(lineTypeHandle);
2190 2166
		}
2191 2167
		String cadena = "";
2192 2168
		if(! dwgObject.isNoLinks()){
2193
			val = DwgUtil.getHandle(data, bitPos);
2194
			bitPos = ((Integer) val.get(0)).intValue();
2195
			ArrayList prevhv = new ArrayList();
2196
			int[] prev = new int[val.size() - 1];
2197
			cadena = "PREVIOUS HANDLE = ";
2198
			for (int i = 1; i < val.size(); i++) {
2199
				prev[i - 1] = ((Integer) val.get(i)).intValue();
2200
				prevhv.add(new Integer(prev[i - 1]));
2201
				cadena += prev[i - 1] + " ";
2202
			}//for
2203
			System.out.println(cadena);
2204
			dwgObject.setPreviousHandleCode(prev[0]);
2205
			dwgObject.setPreviousHandle(DwgUtil.handleBinToHandleInt(prevhv));
2206
			
2207
			val = DwgUtil.getHandle(data, bitPos);
2208
			bitPos = ((Integer) val.get(0)).intValue();
2209
			ArrayList nexthv = new ArrayList();
2210
			int[] next = new int[val.size() - 1];
2211
			cadena = "NEXT HANDLE = ";
2212
			for (int i = 1; i < val.size(); i++) {
2213
				next[i - 1] = ((Integer) val.get(i)).intValue();
2214
				nexthv.add(new Integer(next[i - 1]));
2215
				cadena += next[i - 1] + " ";
2216
			}
2217
			System.out.println(cadena);
2218
			dwgObject.setNextHandleCode(next[0]);
2219
			dwgObject.setNextHandle(DwgUtil.handleBinToHandleInt(nexthv));
2169

  
2170
			/*
2171
			 * Previous Handle 
2172
			 */
2173
			DwgHandleReference previousHandle = new DwgHandleReference();
2174
			bitPos = previousHandle.read(data, bitPos);
2175
			dwgObject.setPreviousHandle(previousHandle);
2176

  
2177
			/*
2178
			 * Next Handle 
2179
			 */
2180
			DwgHandleReference nextHandle = new DwgHandleReference();
2181
			bitPos = nextHandle.read(data, bitPos);
2182
			dwgObject.setNextHandle(nextHandle);
2220 2183
		}
2221 2184
		return bitPos;
2222 2185
	}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/DwgFileV15Reader.java
38 38
import java.nio.ByteBuffer;
39 39
import java.nio.ByteOrder;
40 40
import java.util.ArrayList;
41
import java.util.logging.Logger;
42

  
43 41
import com.iver.cit.gvsig.fmap.drivers.dgn.ByteUtils;
44 42
import com.iver.cit.jdwglib.dwg.DwgFile;
43
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
45 44
import com.iver.cit.jdwglib.dwg.DwgObject;
46 45
import com.iver.cit.jdwglib.dwg.DwgObjectFactory;
47 46
import com.iver.cit.jdwglib.dwg.DwgObjectOffset;
......
296 295
	public int readObjectTailer(int[] data, int offset, DwgObject dwgObject)
297 296
			throws Exception {
298 297
		int bitPos = offset;
299
		ArrayList v = null;
300
		String cadena = "";
301 298
		/*
302 299
		 * Subentity ref handle. Esto se aplica sobre VERTEX, ATTRIB, SEQEND
303 300
		 */
304 301
		if (dwgObject.getMode() == 0x0) {
305
			v = DwgUtil.getHandle(data, bitPos);
306
			bitPos = ((Integer) v.get(0)).intValue();
307
			int[] sh = new int[v.size() - 1];
308
			for (int i = 1; i < v.size(); i++) {
309
				sh[i - 1] = ((Integer) v.get(i)).intValue();
310
			}
311
			ArrayList shv = new ArrayList();
312
			for (int i = 0; i < sh.length; i++) {
313
				shv.add(new Integer(sh[i]));
314
			}
315
			dwgObject.setSubEntityHandle(DwgUtil.handleBinToHandleInt(shv));
302
			DwgHandleReference subEntityHandle = new DwgHandleReference();
303
			bitPos = subEntityHandle.read(data, bitPos);
304
			dwgObject.setSubEntityHandle(subEntityHandle);
316 305
		}
317 306

  
318 307
		/*
319
		 * Reactors handles TODO No se est?n usando para setear nada en
308
		 * Reactors handles
320 309
		 * DwgObject
321 310
		 */
311
		DwgHandleReference reactorHandle;
322 312
		for (int i = 0; i < dwgObject.getNumReactors(); i++) {
323
			v = DwgUtil.getHandle(data, bitPos);
324
			bitPos = ((Integer) v.get(0)).intValue();
325
			int[] handle = new int[v.size() - 1];
326
			for (int j = 1; j < v.size(); j++) {
327
				handle[j - 1] = ((Integer) v.get(j)).intValue();
328
			}
313
			reactorHandle = new DwgHandleReference();
314
			bitPos = reactorHandle.read(data, bitPos);
315
			dwgObject.addReactorHandle(reactorHandle);
329 316
		}
330 317

  
331 318
		/*
332 319
		 * XDICOBJHANDLE
333 320
		 */
334
		v = DwgUtil.getHandle(data, bitPos);
335
		bitPos = ((Integer) v.get(0)).intValue();
336
		int[] xh = new int[v.size() - 1];
337
		for (int i = 1; i < v.size(); i++) {
338
			xh[i - 1] = ((Integer) v.get(i)).intValue();
339
		}
340
		ArrayList xhv = new ArrayList();
341
		for (int i = 0; i < xh.length; i++) {
342
			xhv.add(new Integer(xh[i]));
343
		}
344
		dwgObject.setXDicObjHandle(DwgUtil.handleBinToHandleInt(xhv));
321
		DwgHandleReference xDicObjHandle = new DwgHandleReference();
322
		bitPos = xDicObjHandle.read(data, bitPos);
323
		dwgObject.setXDicObjHandle(xDicObjHandle);
345 324

  
346 325
		/*
347 326
		 * Layer Handle code
348 327
		 */
349
		v = DwgUtil.getHandle(data, bitPos);
350
		bitPos = ((Integer) v.get(0)).intValue();
351
		/*
352
		 * v ArrayList has the next structure: v[0] -> offset of the DWG file
353
		 * v[1] -> code of the layer handle v[2] -> counter (number of bytes)
354
		 * v[3] v[4] ...
355
		 */
356
		int[] lh = new int[v.size() - 1];
357
		cadena = "LAYER HANDLE = ";
358
		for (int i = 1; i < v.size(); i++) {
359
			lh[i - 1] = ((Integer) v.get(i)).intValue();
360
			cadena += lh[i - 1] + " ";
361
		}
328
		
329
		DwgHandleReference layerHandle = new DwgHandleReference();
330
		bitPos = layerHandle.read(data, bitPos);
331
		dwgObject.setLayerHandle(layerHandle);
362 332

  
363
		dwgObject.setLayerHandleCode(lh[0]);
333
		if (!dwgObject.isNoLinks()) {
364 334

  
365
		ArrayList lhv = new ArrayList();
366
		for (int i = 0; i < lh.length; i++) {
367
			lhv.add(new Integer(lh[i]));
368
		}
369
		int handle = DwgUtil.handleBinToHandleInt(lhv);
370
		dwgObject.setLayerHandle(handle);
371
//		System.out.println(cadena + " ==> " + handle);
335
			DwgHandleReference previousHandle = new DwgHandleReference();
336
			bitPos = previousHandle.read(data, bitPos);
337
			dwgObject.setPreviousHandle(previousHandle);
338
	
339
			DwgHandleReference nextHandle = new DwgHandleReference();
340
			bitPos = nextHandle.read(data, bitPos);
341
			dwgObject.setNextHandle(nextHandle);
372 342

  
373
		if (!dwgObject.isNoLinks()) {
374
			v = DwgUtil.getHandle(data, bitPos);
375
			bitPos = ((Integer) v.get(0)).intValue();
376
			int[] prev = new int[v.size() - 1];
377
			ArrayList prevhv = new ArrayList();
378
			cadena = "PREVIOUS HANDLE = ";
379
			for (int i = 1; i < v.size(); i++) {
380
				prev[i - 1] = ((Integer) v.get(i)).intValue();
381
				prevhv.add(new Integer(prev[i - 1]));
382
				cadena += prev[i - 1] + " ";
383
			}
384
//			System.out.println(cadena);
385
			dwgObject.setPreviousHandleCode(prev[0]);
386
			dwgObject.setPreviousHandle(DwgUtil.handleBinToHandleInt(prevhv));
387
			ArrayList nexthv = new ArrayList();
388
			v = DwgUtil.getHandle(data, bitPos);
389
			bitPos = ((Integer) v.get(0)).intValue();
390
			int[] next = new int[v.size() - 1];
391
			cadena = "NEXT HANDLE = ";
392
			for (int i = 1; i < v.size(); i++) {
393
				next[i - 1] = ((Integer) v.get(i)).intValue();
394
				nexthv.add(new Integer(next[i - 1]));
395
				cadena += next[i - 1] + " ";
396
			}
397
//			System.out.println(cadena);
398
			dwgObject.setNextHandleCode(next[0]);
399
			dwgObject.setNextHandle(DwgUtil.handleBinToHandleInt(nexthv));
400 343
		}
401 344

  
402 345
		if (dwgObject.getLinetypeFlags() == 0x3) {
403
			v = DwgUtil.getHandle(data, bitPos);
404
			bitPos = ((Integer) v.get(0)).intValue();
405
			int[] lth = new int[v.size() - 1];
406
			for (int i = 1; i < v.size(); i++) {
407
				lth[i - 1] = ((Integer) v.get(i)).intValue();
408
			}
409
			//obj.setLinetype(lth);
346
			DwgHandleReference lineTypeHandle = new DwgHandleReference();
347
			bitPos = lineTypeHandle.read(data, bitPos);
348
			dwgObject.setLineTypeHandle(lineTypeHandle);
349

  
410 350
		}
411 351

  
412 352
		if (dwgObject.getPlotstyleFlags() == 0x3) {
413
			v = DwgUtil.getHandle(data, bitPos);
414
			bitPos = ((Integer) v.get(0)).intValue();
415
			int[] pth = new int[v.size() - 1];
416
			for (int i = 1; i < v.size(); i++) {
417
				pth[i - 1] = ((Integer) v.get(i)).intValue();
418
			}
419
			//obj.setPlotstyle(pth);
353
			DwgHandleReference plotStyleHandle = new DwgHandleReference();
354
			bitPos = plotStyleHandle.read(data, bitPos);
355
			dwgObject.setPlotStyleHandle(plotStyleHandle);
356
			
420 357
		}
421 358
		return bitPos;
422 359
	}
......
464 401
			int type = ((Integer) v.get(1)).intValue();
465 402

  
466 403
			obj = DwgObjectFactory.getInstance().create(type, index);
404
			
405
			System.out.println("CREANDO UN " + obj.getClass().getName());
467 406

  
468 407
			v = DwgUtil.getRawLong(data, bitPos);
469 408
			bitPos = ((Integer) v.get(0)).intValue();
470 409
			int objBSize = ((Integer) v.get(1)).intValue();
471 410
			obj.setSizeInBits(objBSize);
472 411

  
473
			ArrayList entityHandle = new ArrayList();
474
			v = DwgUtil.getHandle(data, bitPos);
475
			bitPos = ((Integer) v.get(0)).intValue();
476
			for (int i = 1; i < v.size(); i++) {
477
				entityHandle.add(v.get(i));
478
			}
479
			obj.setHandle(DwgUtil.handleBinToHandleInt(entityHandle));
412
			DwgHandleReference entityHandle = new DwgHandleReference();
413
			bitPos = entityHandle.read(data, bitPos);
414
			obj.setHandle(entityHandle);
480 415

  
481 416
			v = DwgUtil.readExtendedData(data, bitPos);
482 417
			bitPos = ((Integer) v.get(0)).intValue();
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v15/DwgAttribReader15.java
7 7
import java.awt.geom.Point2D;
8 8
import java.util.ArrayList;
9 9

  
10
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
10 11
import com.iver.cit.jdwglib.dwg.DwgObject;
11 12
import com.iver.cit.jdwglib.dwg.DwgUtil;
12 13
import com.iver.cit.jdwglib.dwg.objects.DwgArc;
......
152 153
		int flags = ((Integer) v.get(1)).intValue();
153 154
		att.setFlags(flags);
154 155
		bitPos = headTailReader.readObjectTailer(data, bitPos, att);
155
		v = DwgUtil.getHandle(data, bitPos);
156
		bitPos = ((Integer) v.get(0)).intValue();
157
		int[] handle = new int[v.size() - 1];
158
		for (int j = 1; j < v.size(); j++) {
159
			handle[j - 1] = ((Integer) v.get(j)).intValue();
160
		}
161
		ArrayList handleVect = new ArrayList();
162
		for (int i = 0; i < handle.length; i++) {
163
			handleVect.add(new Integer(handle[i]));
164
		}
165
		att.setStyleHandle(DwgUtil.handleBinToHandleInt(handleVect));
156

  
157
		DwgHandleReference styleHandle = new DwgHandleReference();
158
		bitPos = styleHandle.read(data, bitPos);
159
		att.setStyleHandle(styleHandle);
166 160
	}
167 161
}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v15/DwgBlockControlReader15.java
7 7
import java.util.ArrayList;
8 8
import java.util.Vector;
9 9

  
10
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
10 11
import com.iver.cit.jdwglib.dwg.DwgObject;
11 12
import com.iver.cit.jdwglib.dwg.DwgUtil;
12 13
import com.iver.cit.jdwglib.dwg.objects.DwgBlockControl;
......
32 33
			bitPos = ((Integer)v.get(0)).intValue();
33 34
			int numReactors = ((Integer)v.get(1)).intValue();
34 35
			blk.setNumReactors(numReactors);
36

  
35 37
			v = DwgUtil.getBitShort(data, bitPos);
36 38
			bitPos = ((Integer)v.get(0)).intValue();
37 39
			int enum = ((Integer)v.get(1)).intValue();
38
			v = DwgUtil.getHandle(data, bitPos);
39
			bitPos = ((Integer)v.get(0)).intValue();
40
			int[] handle = new int[v.size()-1];
41
		    for (int i=1;i<v.size();i++) {
42
			    handle[i-1] = ((Integer)v.get(i)).intValue();
43
		    }
44
			ArrayList handleVect = new ArrayList();
45
		    for (int i=0;i<handle.length;i++) {
46
		    	handleVect.add(new Integer(handle[i]));
47
		    }
48
		    blk.setNullHandle(DwgUtil.handleBinToHandleInt(handleVect));
49
			v = DwgUtil.getHandle(data, bitPos);
50
			bitPos = ((Integer)v.get(0)).intValue();
51
			handle = new int[v.size()-1];
52
		    for (int i=1;i<v.size();i++) {
53
			    handle[i-1] = ((Integer)v.get(i)).intValue();
54
		    }
40

  
41
			DwgHandleReference hr = new DwgHandleReference();
42
			bitPos = hr.read(data, bitPos);
43
			blk.setNullHandle(hr);
44
			
45
			hr = new DwgHandleReference();
46
			bitPos = hr.read(data, bitPos);
47
			blk.setXDicObjHandle(hr);
48
		    
55 49
			if (enum>0) {
56 50
				Vector handles = new Vector();
57 51
				for (int i=0;i<enum;i++) {
58
					v = DwgUtil.getHandle(data, bitPos);
59
					bitPos = ((Integer)v.get(0)).intValue();
60
					handle = new int[v.size()-1];
61
				    for (int j=1;j<v.size();j++) {
62
					    handle[j-1] = ((Integer)v.get(j)).intValue();
63
				    }
64
					handles.add(handle);
52
					hr = new DwgHandleReference();
53
					bitPos = hr.read(data, bitPos);
54
					handles.add(hr);
65 55
				}
66 56
				blk.setCode2Handles(handles);
67 57
			}
68
			v = DwgUtil.getHandle(data, bitPos);
69
			bitPos = ((Integer)v.get(0)).intValue();
70
			handle = new int[v.size()-1];
71
		    for (int j=1;j<v.size();j++) {
72
			    handle[j-1] = ((Integer)v.get(j)).intValue();
73
		    }
74
		    handleVect = new ArrayList();
75
		    for (int i=0;i<handle.length;i++) {
76
		    	handleVect.add(new Integer(handle[i]));
77
		    }
78
		    blk.setModelSpaceHandle(DwgUtil.handleBinToHandleInt(handleVect));
79
			v = DwgUtil.getHandle(data, bitPos);
80
			bitPos = ((Integer)v.get(0)).intValue();
81
			handle = new int[v.size()-1];
82
		    for (int j=1;j<v.size();j++) {
83
			    handle[j-1] = ((Integer)v.get(j)).intValue();
84
		    }
85
		    handleVect = new ArrayList();
86
		    for (int i=0;i<handle.length;i++) {
87
		    	handleVect.add(new Integer(handle[i]));
88
		    }
89
		    blk.setPaperSpaceHandle(DwgUtil.handleBinToHandleInt(handleVect));
58

  
59
			hr = new DwgHandleReference();
60
			bitPos = hr.read(data, bitPos);
61
			blk.setModelSpaceHandle(hr);
62

  
63
			hr = new DwgHandleReference();
64
			bitPos = hr.read(data, bitPos);
65
			blk.setPaperSpaceHandle(hr);
90 66
		}
91 67
}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v15/DwgMTextReader15.java
6 6

  
7 7
import java.util.ArrayList;
8 8

  
9
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
9 10
import com.iver.cit.jdwglib.dwg.DwgObject;
10 11
import com.iver.cit.jdwglib.dwg.DwgUtil;
11 12
import com.iver.cit.jdwglib.dwg.objects.DwgMText;
......
100 101
		bitPos = ((Integer)v.get(0)).intValue();
101 102
		boolean flag = ((Boolean)v.get(1)).booleanValue();
102 103
		bitPos = headTailReader.readObjectTailer(data, bitPos, txt);
103
		v = DwgUtil.getHandle(data, bitPos);
104
		bitPos = ((Integer)v.get(0)).intValue();
105
		int[] handle = new int[v.size()-1];
106
	    for (int j=1;j<v.size();j++) {
107
		    handle[j-1] = ((Integer)v.get(j)).intValue();
108
	    }
109
	    ArrayList handleVect = new ArrayList();
110
	    for (int i=0;i<handle.length;i++) {
111
	    	handleVect.add(new Integer(handle[i]));
112
	    }
113
	    txt.setStyleHandle(DwgUtil.handleBinToHandleInt(handleVect));
104

  
105
		DwgHandleReference hr = new DwgHandleReference();
106
		bitPos = hr.read(data, bitPos);
107
	    txt.setStyleHandle(hr);
108
		
114 109
	}
115 110
}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v15/DwgInsertReader15.java
6 6

  
7 7
import java.util.ArrayList;
8 8

  
9
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
9 10
import com.iver.cit.jdwglib.dwg.DwgObject;
10 11
import com.iver.cit.jdwglib.dwg.DwgUtil;
11 12
import com.iver.cit.jdwglib.dwg.objects.DwgInsert;
......
90 91
		bitPos = ((Integer)v.get(0)).intValue();
91 92
		boolean hasattr = ((Boolean)v.get(1)).booleanValue();
92 93
		bitPos = headTailReader.readObjectTailer(data, bitPos, ins);
93
		v = DwgUtil.getHandle(data, bitPos);
94
		bitPos = ((Integer)v.get(0)).intValue();
95
		int[] handle = new int[v.size()-1];
96
	    for (int i=1;i<v.size();i++) {
97
		    handle[i-1] = ((Integer)v.get(i)).intValue();
98
	    }
99
	    ArrayList handleVect = new ArrayList();
100
	    for (int i=0;i<handle.length;i++) {
101
	    	handleVect.add(new Integer(handle[i]));
102
	    }
103
	    ins.setBlockHeaderHandle(DwgUtil.handleBinToHandleInt(handleVect));
94

  
95
		DwgHandleReference hr = new DwgHandleReference();
96
		bitPos = hr.read(data, bitPos);
97
		ins.setBlockHeaderHandle(hr);
98

  
104 99
		if (hasattr) {
105
			v = DwgUtil.getHandle(data, bitPos);
106
			bitPos = ((Integer)v.get(0)).intValue();
107
			handle = new int[v.size()-1];
108
		    for (int i=1;i<v.size();i++) {
109
			    handle[i-1] = ((Integer)v.get(i)).intValue();
110
		    }
111
		    handleVect = new ArrayList();
112
		    for (int i=0;i<handle.length;i++) {
113
		    	handleVect.add(new Integer(handle[i]));
114
		    }
115
		    ins.setFirstAttribHandle(DwgUtil.handleBinToHandleInt(handleVect));
116
			v = DwgUtil.getHandle(data, bitPos);
117
			bitPos = ((Integer)v.get(0)).intValue();
118
			handle = new int[v.size()-1];
119
		    for (int i=1;i<v.size();i++) {
120
			    handle[i-1] = ((Integer)v.get(i)).intValue();
121
		    }
122
		    handleVect = new ArrayList();
123
		    for (int i=0;i<handle.length;i++) {
124
		    	handleVect.add(new Integer(handle[i]));
125
		    }
126
		    ins.setLastAttribHandle(DwgUtil.handleBinToHandleInt(handleVect));
127
			v = DwgUtil.getHandle(data, bitPos);
128
			bitPos = ((Integer)v.get(0)).intValue();
129
			handle = new int[v.size()-1];
130
		    for (int i=1;i<v.size();i++) {
131
			    handle[i-1] = ((Integer)v.get(i)).intValue();
132
		    }
133
		    handleVect = new ArrayList();
134
		    for (int i=0;i<handle.length;i++) {
135
		    	handleVect.add(new Integer(handle[i]));
136
		    }
137
		    ins.setSeqendHandle(DwgUtil.handleBinToHandleInt(handleVect));
100

  
101
			hr = new DwgHandleReference();
102
			bitPos = hr.read(data, bitPos);
103
			ins.setFirstAttribHandle(hr);
104
			
105
			hr = new DwgHandleReference();
106
			bitPos = hr.read(data, bitPos);
107
			ins.setLastAttribHandle(hr);
108
			
109
			hr = new DwgHandleReference();
110
			bitPos = hr.read(data, bitPos);
111
			ins.setSeqendHandle(hr);
112

  
138 113
		}
139 114
	}
140 115

  
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v15/DwgAttdefReader15.java
7 7
import java.awt.geom.Point2D;
8 8
import java.util.ArrayList;
9 9

  
10
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
10 11
import com.iver.cit.jdwglib.dwg.DwgObject;
11 12
import com.iver.cit.jdwglib.dwg.DwgUtil;
12 13
import com.iver.cit.jdwglib.dwg.objects.DwgAttdef;
......
147 148
			String prompt = (String)v.get(1);
148 149
			att.setPrompt(prompt);
149 150
			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));
151

  
152
			DwgHandleReference styleHandle = new DwgHandleReference();
153
			bitPos = styleHandle.read(data, bitPos);
154
			att.setStyleHandle(styleHandle);
155

  
161 156
		}
162 157
}
trunk/libraries/libDwg/src/com/iver/cit/jdwglib/dwg/readers/objreaders/v15/DwgLayerReader15.java
6 6

  
7 7
import java.util.ArrayList;
8 8

  
9
import com.iver.cit.jdwglib.dwg.DwgHandleReference;
9 10
import com.iver.cit.jdwglib.dwg.DwgObject;
10 11
import com.iver.cit.jdwglib.dwg.DwgUtil;
11 12
import com.iver.cit.jdwglib.dwg.objects.DwgLayer;
......
57 58
		bitPos = ((Integer)v.get(0)).intValue();
58 59
		int color = ((Integer)v.get(1)).intValue();
59 60
		lyr.setColor(color);
60
		v = DwgUtil.getHandle(data, bitPos);
61
		bitPos = ((Integer)v.get(0)).intValue();
62
		int[] handle = new int[v.size()-1];
63
	    for (int j=1;j<v.size();j++) {
64
		    handle[j-1] = ((Integer)v.get(j)).intValue();
65
	    }
66
	    ArrayList handleVect = new ArrayList();
67
	    for (int i=0;i<handle.length;i++) {
68
	    	handleVect.add(new Integer(handle[i]));
69
	    }
70
	    int layerControlHandle = DwgUtil.handleBinToHandleInt(handleVect);
71
	    lyr.setLayerControlHandle(layerControlHandle);
61

  
62
		DwgHandleReference hr = new DwgHandleReference();
63
		bitPos = hr.read(data, bitPos);
64
		lyr.setLayerControlHandle(hr);
65
	    
72 66
	    //System.out.println("DwgLayer.readDwgLayerV15: Layer Control: " + layerControlHandle);
73
		for (int i=0;i<numReactors;i++) {
74
			v = DwgUtil.getHandle(data, bitPos);
75
			bitPos = ((Integer)v.get(0)).intValue();
76
			handle = new int[v.size()-1];
77
		    for (int j=1;j<v.size();j++) {
78
			    handle[j-1] = ((Integer)v.get(j)).intValue();
79
		    }
80
		    //TODO NO SE ESTAN SETEANDO LOS HANDLE DE LOS REACTORS
67
		
68
		/*
69
		 * Reactors handles
70
		 * DwgObject
71
		 */
72
		DwgHandleReference reactorHandle;
73
		for (int i = 0; i < lyr.getNumReactors(); i++) {
74
			reactorHandle = new DwgHandleReference();
75
			bitPos = reactorHandle.read(data, bitPos);
76
			lyr.addReactorHandle(reactorHandle);
81 77
		}
82
		v = DwgUtil.getHandle(data, bitPos);
83
		bitPos = ((Integer)v.get(0)).intValue();
84
		handle = new int[v.size()-1];
85
	    for (int j=1;j<v.size();j++) {
86
		    handle[j-1] = ((Integer)v.get(j)).intValue();
87
	    }
88
	    handleVect = new ArrayList();
89
	    for (int i=0;i<handle.length;i++) {
90
	    	handleVect.add(new Integer(handle[i]));
91
	    }
92
	    int xdicobjhandle = DwgUtil.handleBinToHandleInt(handleVect);
93
	    lyr.setXDicObjHandle(xdicobjhandle);
78
		/*
79
		 * XDICOBJHANDLE
80
		 */
81
		DwgHandleReference xDicObjHandle = new DwgHandleReference();
82
		bitPos = xDicObjHandle.read(data, bitPos);
83
		lyr.setXDicObjHandle(xDicObjHandle);
94 84
	    //System.out.println("DwgLayer.readDwgLayerV15: xdicobjhandle:" + xdicobjhandle);
95
	    
96
		v = DwgUtil.getHandle(data, bitPos);
97
		bitPos = ((Integer)v.get(0)).intValue();
98
		handle = new int[v.size()-1];
99
	    for (int j=1;j<v.size();j++) {
100
		    handle[j-1] = ((Integer)v.get(j)).intValue();
101
	    }
102
	    handleVect = new ArrayList();
103
	    for (int i=0;i<handle.length;i++) {
104
	    	handleVect.add(new Integer(handle[i]));
105
	    }
106
	    int nullHandle = DwgUtil.handleBinToHandleInt(handleVect);
107
	    lyr.setNullHandle(nullHandle);
108
	    //System.out.println("DwgLayer.readDwgLayerV15: NULL (CODE 5): " + nullHandle);
109
	    
110
	    v = DwgUtil.getHandle(data, bitPos);
111
		bitPos = ((Integer)v.get(0)).intValue();
112
		handle = new int[v.size()-1];
113
	    for (int j=1;j<v.size();j++) {
114
		    handle[j-1] = ((Integer)v.get(j)).intValue();
115
	    }
116
	    handleVect = new ArrayList();
117
	    for (int i=0;i<handle.length;i++) {
118
	    	handleVect.add(new Integer(handle[i]));
119
	    }
120
	    int plotstyleHandle = DwgUtil.handleBinToHandleInt(handleVect);
121
	    lyr.setPlotstyleHandle(plotstyleHandle);
85

  
86
		DwgHandleReference nullHandle = new DwgHandleReference();
87
		bitPos = nullHandle.read(data, bitPos);
88
		lyr.setNullHandle(nullHandle);
89

  
90
		DwgHandleReference plotStyleHandle = new DwgHandleReference();
91
		bitPos = plotStyleHandle.read(data, bitPos);
92
		lyr.setPlotStyleHandle(plotStyleHandle);
93
			
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff