aboutsummaryrefslogtreecommitdiff
path: root/pkg/dataio/export/export.h
blob: 279e437851d7457ae521daffbe975a0a3666e14f (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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# EXPORT.H -- Main include file for the task structure.

# Main task structure.
define	SZ_EXPSTRUCT	40
define	SZ_EXPSTR	(20*SZ_LINE)
define  EX_UNDEFINED    -999
define	MAX_OBEXPR	250
define  MAX_OPERANDS    50


define	EX_FD		Memi[$1]	    # output binary file descriptor
define	EX_HEADER	Memi[$1+1]	    # write an output header?
define	EX_OUTTYPE	Memi[$1+2]	    # outtype parameter value
define	EX_INTERLEAVE	Memi[$1+3]	    # interleave parameter value
define	EX_BSWAP	Memi[$1+4]	    # bswap parameter value
define	EX_VERBOSE	Memi[$1+5]	    # verbose parameter value

define	EX_FORMAT	Memi[$1+6]	    # format parameter code
define	EX_BLTIN	Memi[$1+7]	    # buitlin format code
define	EX_COLOR	Memi[$1+8]	    # does format support color?
define	EX_OROWS	Memi[$1+9]	    # no. rows in output image
define	EX_OCOLS	Memi[$1+10]	    # no. cols in output image

define	EX_IMDIM	Memi[$1+11]	    # input image list dimensionality
define	EX_IMTYPE	Memi[$1+12]	    # input image list type
define	EX_NIMAGES	Memi[$1+13]	    # number of images to convert
define	EX_NCOLS	Memi[$1+14]	    # number of columns in image
define	EX_NLINES	Memi[$1+15]	    # number of lines in image
define	EX_NEXPR	Memi[$1+16]	    # number of outbands expressions
define	EX_NIMOPS	Memi[$1+17]	    # image operand array (ptr)
define	EX_IMOPS	Memi[$1+18]	    # image operand array (ptr)

define	EX_OUTFLAGS	Memi[$1+20]	    # output format flags
define	EX_BFNPTR	Memi[$1+21]	    # binary file name (ptr)
define	EX_HDRPTR	Memi[$1+22]	    # user-defined head file (ptr)
define	EX_OTPTR	Memi[$1+23]	    # output type string (ptr)
define	EX_OBPTR	Memi[$1+24]	    # outbands expression string (ptr)
define	EX_CMPTR	Memi[$1+25]	    # colormap filename (ptr)
define	EX_LUTPTR	Memi[$1+26]	    # LUT filename (ptr)
define	EX_TIMPTR	Memi[$1+27]	    # temp image name (ptr)
define	EX_PSDPI	Memr[P2R($1+28)]    # EPS dpi resolution
define	EX_PSSCALE	Memr[P2R($1+29)]    # EPS scale
define	EX_BRIGHTNESS	Memr[P2R($1+30)]    # display brightness value
define	EX_CONTRAST	Memr[P2R($1+31)]    # display contrast value

define 	EX_CMAP		Memi[$1+32]	    # colormap struct (ptr)
define 	EX_NCOLORS	Memi[$1+33]	    # no. of colors in colormap
define 	EX_LUT		Memi[$1+34]	    # LUT struct (ptr)
define 	EX_NLUTEL	Memi[$1+35]	    # no. of indices in lut
define 	EX_OBANDS	Memi[$1+36]  	    # outbands array (ptr)


# Handy macros.
define	HDRFILE		Memc[EX_HDRPTR($1)]
define	LUTFILE		Memc[EX_LUTPTR($1)]
define	CMAPFILE	Memc[EX_CMPTR($1)]
define	BFNAME		Memc[EX_BFNPTR($1)]
define	TIMNAME		Memc[EX_TIMPTR($1)]
define	OBANDS		Memi[EX_OBANDS($1)+$2-1]
define	IMOP		Memi[EX_IMOPS($1)+$2-1]


# Define the outbands struct.
define	LEN_OUTBANDS	5
define	OB_EXPSTR	Memi[$1]	# expression string (ptr)
define	OB_WIDTH	Memi[$1+1]	# expression width
define	OB_HEIGHT	Memi[$1+2]	# expression height

define	O_EXPR		Memc[OB_EXPSTR(OBANDS($1,$2))]
define	O_WIDTH		OB_WIDTH(OBANDS($1,$2))
define	O_HEIGHT	OB_HEIGHT(OBANDS($1,$2))


# Operand structure.
define  LEN_OPERAND     10
define  IO_IMPTR        Memi[$1]                # image descriptor
define  IO_BAND         Memi[$1+1]              # image band
define  IO_LINE         Memi[$1+2]              # image line

define  IO_TAG          Memi[$1+3]              # operand tag name
define  IO_TYPE         Memi[$1+4]              # operand type
define  IO_NBYTES       Memi[$1+5]              # number of bytes
define  IO_NPIX         Memi[$1+6]              # number of pixels
define  IO_DATA         Memi[$1+7]              # pixel ptr
define  IO_ISIM         Memi[$1+8]              # is data an image ptr?

define  OP_TAG          Memc[IO_TAG($1)]

#-----------------------------------------------------------------------------
# Useful Macro Definitions.

define	bitset		(and($1,$2)==($2))

# Format flags.
define	FMT_RAW		1		# write a generic binary raster
define	FMT_LIST	2		# list pixels values to the screen
define	FMT_BUILTIN	3		# write a builtin format

# OUTPUT FLAGS:
# Byte swapping flags.
define  S_NONE          0000B    	# swap nothing
define  S_ALL           0001B    	# swap everything
define  S_I2            0002B    	# swap short ints
define  S_I4            0004B    	# swap long ints
define  SWAP_STR        "|no|none|yes|i2|i4|"

# Pixel storage flags.
define	PIXEL_STORAGE	0001B		# { {RGB} {RGB} ... {RGB} ... }
define	LINE_STORAGE	0002B		# { {RRRR} {GGG} {BBB} .... {RRR} ... }
define	BAND_STORAGE	0004B		# { {RR..RRR} {GG...GGG} {BB..BBB} }

# Output flags.
define  OF_CMAP        00010B    	# a colormap was defined
define  OF_MKCMAP      00020B    	# compute a colormap
define  OF_BAND        00040B    	# force band storage
define  OF_LINE        00100B    	# force line storage
define  OF_FLIPX       00200B    	# flip image in X
define  OF_FLIPY       00400B    	# flip image in Y
define	OF_IEEE        01000B		# write IEEE floating point

# Header flags.
define  HDR_NONE        1               # no output header
define  HDR_SHORT       2               # write a short header
define  HDR_LONG        3               # write a verbose header
define  HDR_USER        4               # user defined a file

# 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

# EPS output params.
define	EPS_DPI		72		# dpi resolution
define	EPS_SCALE	1.0		# output scale

# Define colormap/grayscale macros and parameters.
define  CMAP_SIZE       256             # Output colormap length
define  CMAP_MAX        255             # Maximum map value
define  CMAP            Memc[$1+($2*CMAP_SIZE)+$3-1]

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

define  EX_RED          0		# color flags
define  EX_GREEN        1
define  EX_BLUE         2

define  SAMPLE_SIZE     10000		# default zscale() sample size
define  CONTRAST        0.25		# default zscale() contrast
define  SAMP_LEN        40		# default zscale() sample length