00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #define MAX_SOURCE_NAME 32
00030 #define MAX_MODE_NAME 8
00031 #define MAX_UNIT_STRING 8
00032
00033
00034 #define PSI_HEADER_OFFSET 0x03A0
00035
00036
00037
00038
00039
00040
00041 typedef struct psiHEADER
00042 {
00043
00044 short nHardware;
00045 short nSource;
00046 char szSourceName[MAX_SOURCE_NAME];
00047 char szImageMode[MAX_MODE_NAME];
00048 short bFastScanDir;
00049 short bSlowScanDir;
00050 short bXYSwap;
00051 short nCols, nRows;
00052
00053
00054
00055 short dummy, dummy2;
00056 short fLowPass;
00057 short b3rdOrder;
00058 short bAutoFlatten;
00059 float fXScanSize, fYScanSize;
00060 float fXOffset, fYOffset;
00061 float fFastAngle, fSlowAngle;
00062
00063 float fScanRate;
00064 float fSetPoint;
00065 char szSetPointUnit[MAX_UNIT_STRING];
00066 float fTipBiasVoltage;
00067 float fSampleBiasVoltage;
00068 float fDataGain;
00069 char szUnit[MAX_UNIT_STRING];
00070 short nDataMin;
00071 short nDataMax;
00072
00073 float fXSlope;
00074 float fYSlope;
00075
00076
00077 } PsiHEADER;
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097 #ifndef PSIHDF_H
00098 #define PSIHDF_H
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 #define DFMT_SUN 0x1111
00113 #define DFMT_ALLIANT 0x1111
00114 #define DFMT_IRIS4 0x1111
00115 #define DFMT_APOLLO 0x1111
00116 #define DFMT_IBM6000 0x1111
00117 #define DFMT_HP9000 0x1111
00118 #define DFMT_CONVEXNATIVE 0x5511
00119 #define DFMT_CONVEX 0x1111
00120 #define DFMT_UNICOS 0x3331
00121 #define DFMT_CTSS 0x3331
00122 #define DFMT_VAX 0x2221
00123 #define DFMT_MIPSEL 0x4441
00124 #define DFMT_PC 0x4441
00125 #define DFMT_MAC 0x1111
00126 #define DFMT_SUN386 0x4441
00127 #define DFMT_NEXT 0x1111
00128 #define DFMT_MOTOROLA 0x1111
00129 #define DFMT_ALPHA 0x4441
00130 #define DFMT_VP 0x6611
00131
00132
00133 typedef char char8;
00134 typedef unsigned char uchar8;
00135 typedef char int8;
00136 typedef unsigned char uint8;
00137 typedef short int int16;
00138 typedef unsigned short int uint16;
00139 typedef long int int32;
00140 typedef unsigned long int uint32;
00141 typedef int intn;
00142 typedef unsigned int uintn;
00143 typedef float float32;
00144 typedef double float64;
00145 typedef long intf;
00146
00147
00148 #define DFNT_HDF 0x00000000 // standard HDF format
00149 #define DFNT_NATIVE 0x00001000 // native format
00150 #define DFNT_CUSTOM 0x00002000 // custom format
00151 #define DFNT_LITEND 0x00004000 // Little Endian format
00152
00153
00154 #define DFNT_NONE 0 // indicates that number type not set
00155 #define DFNT_QUERY 0 // use this code to find the current type
00156 #define DFNT_VERSION 1 // current version of NT info
00157
00158 #define DFNT_FLOAT32 5
00159 #define DFNT_FLOAT 5 // For backward compat; don't use
00160 #define DFNT_FLOAT64 6
00161 #define DFNT_DOUBLE 6 // For backward compat; don't use
00162 #define DFNT_FLOAT128 7 // No current plans for support
00163
00164 #define DFNT_INT8 20
00165 #define DFNT_UINT8 21
00166
00167 #define DFNT_INT16 22
00168 #define DFNT_UINT16 23
00169 #define DFNT_INT32 24
00170 #define DFNT_UINT32 25
00171 #define DFNT_INT64 26
00172 #define DFNT_UINT64 27
00173 #define DFNT_INT128 28 // No current plans for support
00174 #define DFNT_UINT128 30 // No current plans for support
00175
00176 #define DFNT_UCHAR8 3 // 3 chosen for backward compatibility
00177 #define DFNT_UCHAR 3 // uchar=uchar8 for backward combatibility
00178 #define DFNT_CHAR8 4 // 4 chosen for backward compatibility
00179 #define DFNT_CHAR 4 // uchar=uchar8 for backward combatibility
00180 #define DFNT_CHAR16 42 // No current plans for support
00181 #define DFNT_UCHAR16 43 // No current plans for support
00182
00183
00184 #define DFNTI_MBO 1 // Motorola byte order 2's compl
00185 #define DFNTI_VBO 2 // Vax byte order 2's compl
00186 #define DFNTI_IBO 4 // Intel byte order 2's compl
00187
00188
00189 #define DFNTF_NONE 0 // indicates subclass is not set
00190 #define DFNTF_HDFDEFAULT 1 // hdf default float format is ieee
00191 #define DFNTF_IEEE 1 // IEEE format
00192 #define DFNTF_VAX 2 // Vax format
00193 #define DFNTF_CRAY 3 // Cray format
00194 #define DFNTF_PC 4 // PC floats - flipped IEEE
00195 #define DFNTF_CONVEX 5 // CONVEX native format
00196 #define DFNTF_VP 6 // Fujitsu VP native format
00197
00198
00199 #define DFNTC_BYTE 0 // bitwise/numeric field
00200 #define DFNTC_ASCII 1 // ASCII
00201 #define DFNTC_EBCDIC 5 // EBCDIC
00202
00203
00204 #define DFO_FORTRAN 1 // column major order
00205 #define DFO_C 2 // row major order
00206
00207
00208
00209
00210
00211
00212
00213 #define SIZE_FLOAT32 4
00214 #define SIZE_FLOAT64 8
00215 #define SIZE_FLOAT128 16 // No current plans for support
00216
00217 #define SIZE_INT8 1
00218 #define SIZE_UINT8 1
00219 #define SIZE_INT16 2
00220 #define SIZE_UINT16 2
00221 #define SIZE_INT32 4
00222 #define SIZE_UINT32 4
00223 #define SIZE_INT64 8
00224 #define SIZE_UINT64 8
00225 #define SIZE_INT128 16 // No current plans for support
00226 #define SIZE_UINT128 16 // No current plans for support
00227
00228 #define SIZE_CHAR8 1
00229 #define SIZE_CHAR 1 // For backward compat char8 == char
00230 #define SIZE_UCHAR8 1
00231 #define SIZE_UCHAR 1 // For backward compat uchar8 == uchar
00232 #define SIZE_CHAR16 2 // No current plans for support
00233 #define SIZE_UCHAR16 2 // No current plans for support
00234
00235
00236 #define DFREF_WILDCARD 0
00237 #define DFTAG_WILDCARD 0
00238 #define DFTAG_NULL 1
00239 #define DFTAG_LINKED 20 // check uniqueness
00240 #define DFTAG_VERSION 30
00241
00242
00243 #define DFTAG_FID ((uint16)100) // File identifier
00244 #define DFTAG_FD ((uint16)101) // File description
00245 #define DFTAG_TID ((uint16)102) // Tag identifier
00246 #define DFTAG_TD ((uint16)103) // Tag descriptor
00247 #define DFTAG_DIL ((uint16)104) // data identifier label
00248 #define DFTAG_DIA ((uint16)105) // data identifier annotation
00249 #define DFTAG_NT ((uint16)106) // number type
00250 #define DFTAG_MT ((uint16)107) // machine type
00251
00252
00253 #define DFTAG_ID8 ((uint16)200) // 8-bit Image dimension
00254 #define DFTAG_IP8 ((uint16)201) // 8-bit Image palette
00255 #define DFTAG_RI8 ((uint16)202) // Raster-8 image
00256 #define DFTAG_CI8 ((uint16)203) // RLE compressed 8-bit image
00257 #define DFTAG_II8 ((uint16)204) // IMCOMP compressed 8-bit image
00258
00259
00260 #define DFTAG_ID ((uint16)300) // Image DimRec
00261 #define DFTAG_LUT ((uint16)301) // Image Palette
00262 #define DFTAG_RI ((uint16)302) // Raster Image
00263 #define DFTAG_CI ((uint16)303) // Compressed Image
00264
00265 #define DFTAG_RIG ((uint16)306) // Raster Image Group
00266 #define DFTAG_LD ((uint16)307) // Palette DimRec
00267 #define DFTAG_MD ((uint16)308) // Matte DimRec
00268 #define DFTAG_MA ((uint16)309) // Matte Data
00269 #define DFTAG_CCN ((uint16)310) // color correction
00270 #define DFTAG_CFM ((uint16)311) // color format
00271 #define DFTAG_AR ((uint16)312) // aspect ratio
00272
00273 #define DFTAG_DRAW ((uint16)400) // Draw these images in sequence
00274 #define DFTAG_RUN ((uint16)401) // run this as a program/script
00275
00276 #define DFTAG_XYP ((uint16)500) // x-y position
00277 #define DFTAG_MTO ((uint16)501) // machine-type override
00278
00279
00280 #define DFTAG_T14 ((uint16)602) // TEK 4014 data
00281 #define DFTAG_T105 ((uint16)603) // TEK 4105 data
00282
00283
00284 #define DFTAG_SDG ((uint16)700) // Scientific Data Group
00285 #define DFTAG_SDD ((uint16)701) // Scientific Data DimRec
00286 #define DFTAG_SD ((uint16)702) // Scientific Data
00287 #define DFTAG_SDS ((uint16)703) // Scales
00288 #define DFTAG_SDL ((uint16)704) // Labels
00289 #define DFTAG_SDU ((uint16)705) // Units
00290 #define DFTAG_SDF ((uint16)706) // Formats
00291 #define DFTAG_SDM ((uint16)707) // Max/Min
00292 #define DFTAG_SDC ((uint16)708) // Coord sys
00293 #define DFTAG_SDT ((uint16)709) // Transpose
00294 #define DFTAG_SDLNK ((uint16)710) // Links related to the dataset
00295 #define DFTAG_NDG ((uint16)720) // Numeric Data Group
00296 #define DFTAG_CAL ((uint16)731) // Calibration information
00297 #define DFTAG_FV ((uint16)732) // Fill Value information
00298 #define DFTAG_BREQ ((uint16)799) // Beginning of required tags
00299 #define DFTAG_EREQ ((uint16)780) // Current end of the range
00300
00301
00302 #define DFTAG_VG ((uint16)1965) // Vgroup
00303 #define DFTAG_VH ((uint16)1962) // Vdata Header
00304 #define DFTAG_VS ((uint16)1963) // Vdata Storage
00305
00306
00307 #define DFTAG_RLE ((uint16)11) // run length encoding
00308 #define DFTAG_IMC ((uint16)12) // IMCOMP compression alias
00309 #define DFTAG_IMCOMP ((uint16)12) // IMCOMP compression
00310 #define DFTAG_JPEG ((uint16)13) // JPEG compression (24-bit data)
00311 #define DFTAG_GREYJPEG ((uint16)14)// JPEG compression (8-bit data)
00312
00313
00314 #define DFIL_PIXEL 0 // Pixel Interlacing
00315 #define DFIL_LINE 1 // Scan Line Interlacing
00316 #define DFIL_PLANE 2 // Scan Plane Interlacing
00317
00318
00319 #define SPECIAL_LINKED 1
00320 #define SPECIAL_EXT 2
00321
00322
00323
00324 #define DF_MAXFNLEN 256
00325
00326
00327
00328
00329
00330
00331
00332
00333 #define HDF_MAGIC_NUM ((uint32) 0x0113030E )
00334
00335
00336 #define PSITAG_VER ((uint16)0x8001) // Version information
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350 #define PSITAG_ROT ((uint16)0x8002) // (x,y) offset, scan directions,
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361 #define PSITAG_HDW ((uint16)0x8003) // Hardware description
00362
00363
00364
00365
00366
00367 #define PSITAG_SRC ((uint16)0x8004) // Data source name
00368
00369
00370
00371
00372
00373 #define PSITAG_SPD ((uint16)0x8005) // Scan speed
00374
00375
00376
00377
00378
00379
00380 #define PSITAG_SET ((uint16)0x8006) // Z servo set point.
00381
00382
00383
00384
00385
00386
00387
00388
00389 #define PSITAG_HD ((uint16)0x8009) // Header block
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402 #define PSITAG_SPC ((uint16)0x800A) // 1-D Spectroscopy data
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416 #define PSITAG_LA ((uint16)0x800B) // Line analysis data
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426 #define PSITAG_RA ((uint16)0x800C) // Region analysis data
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436 typedef struct {
00437 uint16 wTag;
00438 uint16 wRef;
00439 uint32 dwOffset;
00440 uint32 dwLength;
00441 } DATADESC;
00442
00443
00444
00445 #define FILE_HEADER_SIZE 16384
00446
00447
00448 #define HDF_NUM_TAGS 64 // Let's start with 64, which is reasonably
00449
00450 #define HDF_LEN_TID 128 // Custome Tag ID string length.
00451 #define HDF_LEN_UNITS 64 // Unit string length.
00452 #define HDF_LEN_HARDWARE 64 // Hardware string length.
00453 #define HDF_LEN_SOURCE 64 // Data source
00454 #define HDF_LEN_SPEED 64 // Scan speed and unit string.
00455 #define HDF_LEN_SET 64 // Z servo set point and unit string.
00456 #define HDF_LEN_TITLE 256 // File title
00457 #define HDF_LEN_REPLICA 4096 // Text description of each records.
00458 #define HDF_LEN_COMMENTS 2048 // Comments.
00459
00460 #define NT_REF_Z ((uint16)256) // DFTAG_NT ref_no for ZData.
00461 #define NT_REF_X ((uint16)257) // DFTAG_NT ref_no for X-scale.
00462 #define NT_REF_Y ((uint16)258) // DFTAG_NT ref_no for Y-scale.
00463
00464 #define NDG_REF_NUM 2 // NDG group RefNum.
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581 #endif // PSIHDF_H