GRASS 8 Programmer's Manual
8.6.0dev(2026)-1d1e47ad9d
Loading...
Searching...
No Matches
dspf_header.c
Go to the documentation of this file.
1
#include <
string.h
>
2
#include <
grass/gis.h
>
3
#include "
viz.h
"
4
5
/*================= DOCUMENT RETURN VALUES! =================*/
6
7
int
dfwrite_header
(
file_info
*
headp
)
8
{
9
int
isize
,
flsize
;
10
cmndln_info
*
linep
;
11
FILE
*fp;
12
long
Where_dataoff
;
13
14
linep
= &(
headp
->linefax);
15
fp =
headp
->dspfoutfp;
16
17
isize
=
sizeof
(
int
);
18
flsize
=
sizeof
(
float
);
19
/* print the header code on first line of file */
20
if
(!
fwrite
(
DSPF_ID
,
strlen
(
DSPF_ID
), 1, fp))
21
return
(-1);
22
/* the dimensions of the data */
23
if
(1 !=
fwrite
(&
headp
->xdim,
isize
, 1, fp))
24
return
(-1);
25
if
(1 !=
fwrite
(&
headp
->ydim,
isize
, 1, fp))
26
return
(-1);
27
if
(1 !=
fwrite
(&
headp
->zdim,
isize
, 1, fp))
28
return
(-1);
29
30
/* print out code for min and max values */
31
if
(1 !=
fwrite
(&
headp
->min,
flsize
, 1, fp))
32
return
(-1);
33
if
(1 !=
fwrite
(&
headp
->max,
flsize
, 1, fp))
34
return
(-1);
35
36
/* the litmodel stored for each polygon */
37
if
(1 !=
fwrite
(&
linep
->litmodel,
isize
, 1, fp))
38
return
(-1);
39
40
/* write the total number of thresholds to be searched for */
41
if
(1 !=
fwrite
(&
linep
->nthres,
isize
, 1, fp))
42
return
(-1);
43
/* write the array of thresholds out */
44
if
((
fwrite
(
linep
->tvalue,
flsize
,
linep
->nthres, fp)) !=
45
(
size_t
)
linep
->nthres) {
46
fprintf
(
stderr
,
"ERROR: fwrite in dspf_header.c\n"
);
47
return
(-1);
48
}
49
50
/* write the offset to the lookup table */
51
/* the first time this number is set to 0 */
52
/*this information will be overwritten after dspf is done */
53
/* G_ftell keeps track of where this information is to be placed */
54
headp
->Lookoff = 0;
55
if
(1 !=
fwrite
(&
headp
->Lookoff,
sizeof
(
long
), 1, fp))
56
return
(-1);
57
58
/* code to determine the length of the binary file header */
59
/* Dataoff = length of the header */
60
/*Dataoff = strlen (DSPF_ID) + 7*isize + 5*flsize + linep->nthres*flsize; */
61
Where_dataoff
=
G_ftell
(fp);
62
headp
->Dataoff = 0;
63
if
(1 !=
fwrite
(&
headp
->Dataoff,
sizeof
(
long
), 1, fp))
64
return
(-1);
65
66
/* End of header, now go back and fill in what we can */
67
headp
->Dataoff =
G_ftell
(fp);
68
G_fseek
(fp,
Where_dataoff
, 0);
69
if
(1 !=
fwrite
(&
headp
->Dataoff,
sizeof
(
long
), 1, fp))
70
return
(-1);
71
72
G_fseek
(fp,
headp
->Dataoff, 0);
/* and return to begin writing data */
73
74
/* will still have to come back once more to fill in Lookup offset */
75
76
return
(0);
77
}
78
79
/**************************** dfread_header **********************************/
80
81
/**************************** dfread_header **********************************/
82
83
/**************************** dfread_header **********************************/
84
85
int
dfread_header
(
file_info
*
headp
)
86
{
87
int
isize
,
flsize
;
88
FILE
*fp;
89
cmndln_info
*
linep
;
90
char
buf[80];
91
int
len;
92
93
fp =
headp
->dspfinfp;
94
95
len =
strlen
(
DSPF_ID
);
96
G_fseek
(fp, 0L, 0);
/* rewind file */
97
/*read in header information and store in File_info struct */
98
99
if
(!
fread
(buf, 1, len, fp))
100
return
(-1);
101
buf[len] = 0;
102
if
(
strncmp
(
DSPF_ID
, buf, len)) {
103
if
(!
strncmp
(
"dspf003.01"
, buf, len))
104
return
(
dfread_header_old
(
headp
, fp));
105
106
fprintf
(
stderr
,
"Error: header mismatch '%s' - '%s'\n"
,
DSPF_ID
, buf);
107
return
(-1);
108
}
109
linep
= &(
headp
->linefax);
110
isize
=
sizeof
(
int
);
111
flsize
=
sizeof
(
float
);
112
113
if
(!
fread
(&
headp
->xdim,
isize
, 1, fp))
114
return
(-1);
115
if
(!
fread
(&
headp
->ydim,
isize
, 1, fp))
116
return
(-1);
117
if
(!
fread
(&
headp
->zdim,
isize
, 1, fp))
118
return
(-1);
119
if
(!
fread
(&
headp
->min,
flsize
, 1, fp))
120
return
(-1);
121
if
(!
fread
(&
headp
->max,
flsize
, 1, fp))
122
return
(-1);
123
if
(!
fread
(&
linep
->litmodel,
isize
, 1, fp))
124
return
(-1);
125
if
(!
fread
(&
linep
->nthres,
isize
, 1, fp))
126
return
(-1);
127
if
(!
fread
(
linep
->tvalue,
flsize
,
linep
->nthres, fp))
128
return
(-1);
129
if
(!
fread
(&
headp
->Lookoff,
isize
, 1, fp))
130
return
(-1);
131
if
(!
fread
(&
headp
->Dataoff,
isize
, 1, fp))
132
return
(-1);
133
134
print_head_info
(
headp
);
135
136
return
(1);
137
}
138
139
int
dfread_header_old
(
file_info
*
headp
,
FILE
*fp)
140
{
141
int
isize
,
flsize
;
142
cmndln_info
*
linep
;
143
float
tmp;
144
145
linep
= &(
headp
->linefax);
146
isize
=
sizeof
(
int
);
147
flsize
=
sizeof
(
float
);
148
149
if
(!
fread
(&
headp
->xdim,
isize
, 1, fp))
150
return
(-1);
151
if
(!
fread
(&
headp
->ydim,
isize
, 1, fp))
152
return
(-1);
153
if
(!
fread
(&
headp
->zdim,
isize
, 1, fp))
154
return
(-1);
155
if
(!
fread
(&tmp,
flsize
, 1, fp))
156
return
(-1);
157
if
(!
fread
(&tmp,
flsize
, 1, fp))
158
return
(-1);
159
if
(!
fread
(&tmp,
flsize
, 1, fp))
160
return
(-1);
161
if
(!
fread
(&
headp
->min,
flsize
, 1, fp))
162
return
(-1);
163
if
(!
fread
(&
headp
->max,
flsize
, 1, fp))
164
return
(-1);
165
if
(!
fread
(&
linep
->litmodel,
isize
, 1, fp))
166
return
(-1);
167
if
(!
fread
(&
linep
->nthres,
isize
, 1, fp))
168
return
(-1);
169
if
(!
fread
(
linep
->tvalue,
flsize
,
linep
->nthres, fp))
170
return
(-1);
171
if
(!
fread
(&
headp
->Lookoff,
isize
, 1, fp))
172
return
(-1);
173
if
(!
fread
(&
headp
->Dataoff,
isize
, 1, fp))
174
return
(-1);
175
176
print_head_info
(
headp
);
177
178
return
(1);
179
}
AMI_STREAM
Definition
ami_stream.h:153
G_fseek
void G_fseek(FILE *, off_t, int)
Change the file position of the stream.
Definition
gis/seek.c:50
G_ftell
off_t G_ftell(FILE *)
Get the current file position of the stream.
Definition
gis/seek.c:29
dfwrite_header
int dfwrite_header(file_info *headp)
Definition
dspf_header.c:7
dfread_header_old
int dfread_header_old(file_info *headp, FILE *fp)
Definition
dspf_header.c:139
dfread_header
int dfread_header(file_info *headp)
Definition
dspf_header.c:85
gis.h
print_head_info
int print_head_info(file_info *head)
Definition
print_info.c:3
string.h
cmndln_info
Definition
viz.h:21
file_info
Definition
viz.h:27
viz.h
DSPF_ID
#define DSPF_ID
Definition
viz.h:6
lib
dspf
dspf_header.c
Generated on Fri Apr 3 2026 06:59:52 for GRASS 8 Programmer's Manual by
1.9.8