341{
342 uchar abyHeader[100];
343 int i;
345 double dValue;
347
348 if (psSHP->
fpSHX == NULL)
349 {
350 psSHP->
sHooks.
Error(
"SHPWriteHeader failed : SHX file is closed");
351 return;
352 }
353
354
355
356
357 for( i = 0; i < 100; i++ )
358 abyHeader[i] = 0;
359
360 abyHeader[2] = 0x27;
361 abyHeader[3] = 0x0a;
362
366
367 i32 = 1000;
370
374
376 ByteCopy( &dValue, abyHeader+36, 8 );
378
380 ByteCopy( &dValue, abyHeader+44, 8 );
382
384 ByteCopy( &dValue, abyHeader+52, 8 );
386
388 ByteCopy( &dValue, abyHeader+60, 8 );
390
392 ByteCopy( &dValue, abyHeader+68, 8 );
394
396 ByteCopy( &dValue, abyHeader+76, 8 );
398
400 ByteCopy( &dValue, abyHeader+84, 8 );
402
404 ByteCopy( &dValue, abyHeader+92, 8 );
406
407
408
409
412 {
413 psSHP->
sHooks.
Error(
"Failure writing .shp header" );
414 return;
415 }
416
417
418
419
423
426 {
427 psSHP->
sHooks.
Error(
"Failure writing .shx header" );
428 return;
429 }
430
431
432
433
435
436 for( i = 0; i < psSHP->
nRecords; i++ )
437 {
442 }
443
446 {
447 psSHP->
sHooks.
Error(
"Failure writing .shx contents" );
448 }
449
451
452
453
454
457}
static void SwapWord(int length, void *wordP)
#define ByteCopy(a, b, c)
void(* Error)(const char *message)
int(* FFlush)(SAFile file)
SAOffset(* FWrite)(void *p, SAOffset size, SAOffset nmemb, SAFile file)
SAOffset(* FSeek)(SAFile file, SAOffset offset, int whence)
unsigned int * panRecSize
unsigned int * panRecOffset