GRASS 8 Programmer's Manual
8.5.0(2026)-8d6ceba290
Toggle main menu visibility
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
}
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
G_ftell
off_t G_ftell(FILE *fp)
Get the current file position of the stream.
Definition
gis/seek.c:29
print_head_info
int print_head_info(file_info *head)
Definition
print_info.c:3
cmndln_info
Definition
viz.h:21
cmndln_info::tvalue
float tvalue[127]
Definition
viz.h:23
cmndln_info::nthres
int nthres
Definition
viz.h:22
cmndln_info::litmodel
int litmodel
Definition
viz.h:24
file_info
Definition
viz.h:27
file_info::zdim
int zdim
Definition
viz.h:32
file_info::Lookoff
long Lookoff
Definition
viz.h:41
file_info::xdim
int xdim
Definition
viz.h:32
file_info::ydim
int ydim
Definition
viz.h:32
file_info::dspfoutfp
FILE * dspfoutfp
Definition
viz.h:31
file_info::linefax
cmndln_info linefax
Definition
viz.h:42
file_info::Dataoff
long Dataoff
Definition
viz.h:40
file_info::dspfinfp
FILE * dspfinfp
Definition
viz.h:31
file_info::min
float min
Definition
viz.h:39
file_info::max
float max
Definition
viz.h:39
viz.h
DSPF_ID
#define DSPF_ID
Definition
viz.h:6
dspf
dspf_header.c
Generated on
for GRASS 8 Programmer's Manual by
1.17.0