aboutsummaryrefslogtreecommitdiff
path: root/pkg/dataio/import/import.h
blob: 6d80020a62e3a26ef69c78a7e54d633eeb222333 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# IMPORT.H - Data structure definition file for the IMPORT task.

define	SZ_IMPSTRUCT	40		    # size of the import structure
define	SZ_EXPR		(20*SZ_LINE)        # max size of an expression
define  SZ_COMMENT      1024		    # size of a database format comment
define	LEN_UA		20000		    # minimum user header length
define	MAX_OPERANDS	1024

# Input format parameters.
define	IP_INTERLEAVE 	Memi[$1]	    # type of data interleaving
define	IP_HSKIP 	Memi[$1+1]	    # bytes to skip before data
define	IP_TSKIP 	Memi[$1+2]	    # bytes to skip after data
define	IP_BSKIP 	Memi[$1+3]	    # bytes between image bands
define	IP_LSKIP 	Memi[$1+4]	    # bytes to skip at front of line
define	IP_LPAD 	Memi[$1+5]	    # bytes to skip at end of line
define	IP_SWAP 	Memi[$1+6]	    # type of byte swapping
define	IP_NPIXT	Memi[$1+7]	    # number of pixtypes
define	IP_PIXTYPE	Memi[$1+8]	    # pixtype ptr to operands
define  IP_NDIM 	Memi[$1+9]	    # number of input axes
define  IP_AXLEN 	Memi[($1+10)+$2-1]  # input axis dimension

# Output parameters.
define	IP_OUTPUT 	Memi[$1+20]	    # type of output generated
define	IP_OUTTYPE 	Memi[$1+21]	    # output pixel type
define	IP_NBANDS 	Memi[$1+22]	    # no. of outbands expr string
define	IP_OUTBANDS 	Memi[$1+23]	    # outbands expr string (ptr)
define	IP_IMHEADER 	Memi[$1+24]	    # file w/ header info (ptr)
define	IP_VERBOSE 	Memi[$1+25]	    # verbose output flag

define	IP_FORMAT 	Memi[$1+26]	    # format param
define	IP_BLTIN 	Memi[$1+27]	    # format is a 'builtin'
define	IP_FCODE	Memi[$1+28]	    # builtin format code
define	IP_FSYM 	Memi[$1+29]	    # symtab pointer to db record
define	IP_IM 		Memi[$1+30]	    # output image pointer
define	IP_FD 		Memi[$1+31]	    # binary file pointer
define	IP_OFFSET	Memi[$1+32]	    # binary file offset
define	IP_FLIP		Memi[$1+33]	    # output image orientation flag
define	IP_COMPTR	Memi[$1+34]	    # comment block pointer

define	IP_BUFPTR	Memi[$1+35]   	    # array of image buffers (ptr)
define	IP_NPTRS	Memi[$1+36]   	    # number of image buffer
define	IP_SZBUF	Memi[$1+37]   	    # size of image buffer (lines)

define	IP_CMAP		Memi[$1+38]   	    # image colormap (ptr)
define	IP_USE_CMAP	Memi[$1+39]   	    # use the image colormap?

# Useful Macros
define	PTYPE		Memi[IP_PIXTYPE($1)+$2-1]
define	OBANDS		Memi[IP_OUTBANDS($1)+$2-1]
define	COMMENT		Memc[IP_COMPTR($1)]
define	BUFFER		Memi[IP_BUFPTR($1)+$2-1]


#-----------------------------------------------------------------------------

# Outbands structure
define  LEN_OUTBANDS    2
define	OB_EXPR		Memi[$1]		# expression string
define	OB_OP		Memi[$1+1]		# operand struct pointer
define	O_EXPR		Memc[OB_EXPR(OBANDS($1,$2))]
define	O_OP		OB_OP(OBANDS($1,$2))

# Operand structure
define	SZ_TAG		15
define  LEN_OPERAND     6
define  IO_TAG          Memi[$1]                # operand tag name
define  IO_TYPE         Memi[$1+1]              # operand type
define  IO_NBYTES       Memi[$1+2]              # number of bytes
define  IO_NPIX         Memi[$1+3]              # number of pixels
define  IO_DATA         Memi[$1+4]              # line of pixels
define	OP_TAG		Memc[IO_TAG($1)]


# Format type flags
define	IP_NONE		1		# format derived from task params
define	IP_SENSE	2		# format divined from database
define	IP_NAME		3		# format derived from database
define	IP_BUILTIN	4		# format derived from database

# Output type flags
define	IP_IMAGE	5		# generate an output image
define	IP_LIST		6		# list pixels (according to 'outbands')
define	IP_INFO		7		# print info about image format

# Byte swapping flags
define	S_NONE		000B		# swap nothing
define	S_ALL		001B		# swap everything
define	S_I2		002B		# swap short ints
define	S_I4		004B		# swap long ints
define  SWAP_STR        "|no|none|yes|i2|i4|"

# Image flipping flags
define	FLIP_NONE	000B		# don't flip the image
define	FLIP_X		001B		# flip image in X
define	FLIP_Y		002B		# flip image in Y

# Pixtype pixel types
define	PT_BYTE		1		# byte data (no conversion)
define	PT_UINT		2		# unsigned integer
define	PT_INT		3		# signed integer
define	PT_IEEE		4		# ieee floating point
define	PT_NATIVE	5		# native floating point
define	PT_SKIP		6		# skip

# Default task parameters.
define	DEF_SWAP 	S_NONE
define	DEF_INTERLEAVE	0
define	DEF_HSKIP	0
define	DEF_TSKIP	0
define	DEF_BSKIP	0
define	DEF_LSKIP	0
define	DEF_LPAD 	0

# Useful macros.
define	BAND_INTERLEAVED    ((IP_NPIXT($1)==1)&&(IP_INTERLEAVE($1)==0))
define	LINE_INTERLEAVED    ((IP_NPIXT($1)==1)&&(IP_INTERLEAVE($1)>1))
define	PIXEL_INTERLEAVED   ((IP_NPIXT($1)>1)&&(IP_INTERLEAVE(ip)==0))

# NTSC grayscale coefficients.
define  R_COEFF         0.299                   
define  G_COEFF         0.587
define  B_COEFF         0.114

# Colormap definitions.
define  CMAP_SIZE       256     	# Output colormap length
define  CMAP_MAX        255     	# Maximum map value
define  CMAP            Memc[$1+($2*CMAP_SIZE)+$3-1]

define  IP_RED          0
define  IP_GREEN        1
define  IP_BLUE         2