FiberBundleHDF5  FiberHDF5 Documentation, Revision 2026
High-Performance Fiber Bundle Data Model for Scientific Visualization
Loading...
Searching...
No Matches
F5image.c
Go to the documentation of this file.
1#include "F5image.h"
2#include "F5defs.h"
3#include "F5X.h"
4#include "F5B.h"
5#include "F5R.h"
6#include "F5F.h"
7#include <string.h>
8
10{
11 This->height = 0;
12 This->width = 0;
13
14 This->time = 0.0;
15 This->viewangle = 0.0;
16
17 This->viewpoint.x =
18 This->viewpoint.y =
19 This->viewpoint.z = 0.0;
20
21 This->origin.x =
22 This->origin.y =
23 This->origin.z = 0.0;
24
25 This->x_direction.x =
26 This->x_direction.y =
27 This->x_direction.z = 0.0;
28
29 This->y_direction.x =
30 This->y_direction.y =
31 This->y_direction.z = 0.0;
32
33 This->directions = NULL;
34
35 This->intensity = NULL;
36 This->transparency = NULL;
37 This->zvalues = NULL;
38
39 This->intensity16 = NULL;
40 This->transparency16 = NULL;
41 This->zvalues16 = NULL;
42
43 This->intensity8 = NULL;
44 This->transparency8 = NULL;
45 This->zvalues8 = NULL;
46
47 This->alpha = NULL;
48
49 This->spectrum = NULL;
50}
51
52
53void saveF5image(F5image*This, const char*filename,
54 const char*vp_txt, const char*scenery)
55{
56char buf[4096];
57hid_t File_id = F5append(filename);
58
59 printf("saveF5image(, %s, %s, %s)\n", filename, vp_txt, scenery);
60
61 if (!vp_txt || !*vp_txt)
62 vp_txt = "StandardView";
63
64 if (File_id<0)
65 {
66 printf("saveF5image(): Cannot open %s\n", filename);
67 return;
68 }
69
70 if (!scenery)
71 {
72 char*s;
73 scenery = strrchr(filename, '/');
74 if (scenery)
75 strcpy(buf, scenery+1);
76 else
77 strcpy(buf, filename);
78 s = strrchr(buf, '.');
79 if (s) *s = 0;
80 scenery = buf;
81 printf("saveF5image(): scenery set to '%s'\n", scenery);
82 }
83/*
84 if (This->intensity)
85 puts("Have image float data");
86 if (This->transparency)
87 puts("Have image transparency data");
88 if (This->alpha)
89 puts("Have image alpha data");
90*/
91 {
92 F5Path*myPath = F5Rcreate_cartesian_nD(File_id, This->time,
93 scenery, /* gridname, */
94 2,
95 vp_txt); /* coordinate_system); */
96
97/*
98 hid_t Slice_hid = F5Bappend_slice(File_id, &This->time);
99 {
100 hid_t Grid_hid = F5Gappend(Slice_hid, scenery, 0) ;
101 hid_t Charts_hid = F5Gappend(Grid_hid, FIBER_HDF5_CHARTS_PER_GRID, 0) ;
102 hid_t VPChart_hid = F5Gappend(Charts_hid, vp_txt, 0) ;
103 hid_t Transf_hid = F5Gappend(VPChart_hid, FIBER_HDF5_DEFAULT_CHART, 0) ;
104 hid_t Top_hid = F5Gappend(Grid_hid, FIBER_HDF5_POINTS, 0) ;
105 hid_t Rep_hid = F5Gappend(Top_hid, vp_txt, 0) ;
106*/
107 hsize_t imgdims[2];
108 imgdims[0] = This->width ;
109 imgdims[1] = This->height;
110
111 { F5_vec3_double_t delta; delta.x = delta.y = delta.z = 1.0;
112
114 F5T_VEC3_DOUBLE, (void*)&(This->origin), &delta);
115 }
116
117 /*
118 //
119 // Storing image metadata information
120 //
121 {
122 hid_t Pos_hid = F5Gappend(Rep_hid, FIBER_HDF5_POSITIONS_STRING, 0) ;
123 hid_t space_hid = H5Screate(H5S_SCALAR);
124 hid_t attr_hid = F5Aappend(Pos_hid, "origin", F5T_VEC3_DOUBLE, space_hid, H5P_DEFAULT);
125 H5Awrite(attr_hid, F5T_VEC3_DOUBLE, (void*)&(This->origin));
126 H5Aclose(attr_hid);
127
128 attr_hid = F5Aappend(Pos_hid, "x", F5T_VEC3_DOUBLE, space_hid, H5P_DEFAULT);
129 H5Awrite(attr_hid, F5T_VEC3_DOUBLE, (void*)&(This->x_direction));
130 H5Aclose(attr_hid);
131
132 attr_hid = F5Aappend(Pos_hid, "y", F5T_VEC3_DOUBLE, space_hid, H5P_DEFAULT);
133 H5Awrite(attr_hid, F5T_VEC3_DOUBLE, (void*)&(This->y_direction));
134 H5Aclose(attr_hid);
135
136 attr_hid = F5Aappend(Transf_hid, "shift", F5T_VEC3_DOUBLE, space_hid, H5P_DEFAULT);
137 H5Awrite(attr_hid, F5T_VEC3_DOUBLE, (void*)&(This->viewpoint));
138 H5Aclose(attr_hid);
139
140 H5Sclose(space_hid);
141 H5Gclose(Pos_hid);
142 }
143 */
144
145 //
146 // Storing image data information
147 //
148 {
149// hid_t img_ds = H5Screate_simple(2, imgdims, NULL);
150 hid_t creator_hid = H5Pcreate(H5P_DATASET_CREATE);
151
152 if (This->directions)
153 {
154 F5Fwrite( myPath, F5_IMAGE_FINAL_VIEW, 2, imgdims, F5T_RGB_REAL, F5T_RGB_REAL, This->directions, creator_hid);
155 // hid_t id = F5Dappend(Rep_hid, F5_IMAGE_FINAL_VIEW, F5T_VEC3_FLOAT, img_ds, creator_hid);
156 // H5Dwrite(id, F5T_VEC3_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, This->directions);
157 // H5Dclose(id);
158 }
159
160 if (This->intensity)
161 {
162 // puts("Saving intensity...");
163 // F5FwriteIMAGE( myPath, F5_IMAGE_RGB_FLOAT_INTENSITY, 2, imgdims, F5T_RGB_REAL, F5T_RGB_REAL, This->intensity, creator_hid);
164 F5Fwrite ( myPath, F5_IMAGE_RGB_FLOAT_INTENSITY, 2, imgdims, F5T_RGB_REAL, F5T_RGB_REAL, This->intensity, creator_hid);
165
166// hid_t id = F5Dappend(Rep_hid, F5_IMAGE_RGB_FLOAT_INTENSITY, F5T_RGB_REAL, img_ds, creator_hid);
167// H5Dwrite(id, F5T_RGB_REAL, H5S_ALL, H5S_ALL, H5P_DEFAULT, This->intensity);
168// H5Dclose(id);
169 }
170
171 if (This->transparency)
172 {
173 F5Fwrite( myPath, F5_IMAGE_RGB_FLOAT_TRANSPARENCY, 2, imgdims, F5T_RGB_REAL, F5T_RGB_REAL, This->transparency, creator_hid);
174
175// hid_t id = F5Dappend(Rep_hid, F5_IMAGE_RGB_FLOAT_TRANSPARENCY, F5T_RGB_REAL, img_ds, creator_hid);
176// H5Dwrite(id, F5T_RGB_REAL, H5S_ALL, H5S_ALL, H5P_DEFAULT, This->transparency);
177// H5Dclose(id);
178 }
179 /*
180 if (This->zvalues)
181 {
182 hid_t id = F5Dappend(Rep_hid, F5_IMAGE_ZBUFFER, H5T_NATIVE_FLOAT, img_ds, creator_hid);
183 H5Dwrite(id, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, This->zvalues);
184 H5Dclose(id);
185 }
186
187 if (This->intensity16)
188 {
189 hid_t id = F5Dappend(Rep_hid, F5_IMAGE_RGB16_INTENSITY, F5T_RGB16, img_ds, creator_hid);
190 H5Dwrite(id, F5T_RGB16, H5S_ALL, H5S_ALL, H5P_DEFAULT, This->intensity16);
191 H5Dclose(id);
192 }
193
194 if (This->transparency16)
195 {
196 hid_t id = F5Dappend(Rep_hid, F5_IMAGE_RGB16_TRANSPARENCY, F5T_RGB16, img_ds, creator_hid);
197 H5Dwrite(id, F5T_RGB16, H5S_ALL, H5S_ALL, H5P_DEFAULT, This->transparency16);
198 H5Dclose(id);
199 }
200
201 if (This->intensity8)
202 {
203 hid_t id = F5Dappend(Rep_hid, F5_IMAGE_RGB8_INTENSITY, F5T_RGB, img_ds, creator_hid);
204 H5Dwrite(id, F5T_RGB, H5S_ALL, H5S_ALL, H5P_DEFAULT, This->intensity8);
205 H5Dclose(id);
206 }
207
208 if (This->transparency8)
209 {
210 hid_t id = F5Dappend(Rep_hid, F5_IMAGE_RGB8_TRANSPARENCY, F5T_RGB, img_ds, creator_hid);
211 H5Dwrite(id, F5T_RGB, H5S_ALL, H5S_ALL, H5P_DEFAULT, This->transparency8);
212 H5Dclose(id);
213 }
214
215 if (This->alpha)
216 {
217 hid_t id = F5Dappend(Rep_hid, F5_IMAGE_ALPHA_CHANNEL, H5T_NATIVE_UCHAR, img_ds, creator_hid);
218 H5Dwrite(id, H5T_NATIVE_UCHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, This->alpha);
219 H5Dclose(id);
220 }
221
222 H5Sclose(img_ds);
223 */
224 H5Pclose(creator_hid);
225 }
226/*
227 H5Gclose(Transf_hid);
228 H5Gclose(VPChart_hid);
229 H5Gclose(Charts_hid);
230 H5Gclose(Rep_hid);
231 H5Gclose(Top_hid);
232 H5Gclose(Grid_hid);
233 }
234
235 H5Gclose( Slice_hid );
236*/
237 F5close( myPath );
238 }
239
240 H5Fclose(File_id);
241}
242
#define F5T_VEC3_DOUBLE
#define FIBER_HDF5_POSITIONS_STRING
Definition F5defs.h:63
void saveF5image(F5image *This, const char *filename, const char *vp_txt, const char *scenery)
Definition F5image.c:53
void initF5image(F5image *This)
Definition F5image.c:9
#define F5_IMAGE_RGB_FLOAT_TRANSPARENCY
Definition F5image.h:53
#define F5_IMAGE_RGB_FLOAT_INTENSITY
Definition F5image.h:52
#define F5_IMAGE_FINAL_VIEW
Definition F5image.h:54
#define F5T_RGB_REAL
Definition F5types.h:42
F5_API int F5Fwrite_linear(F5Path *fpath, const char *fieldname, int rank, hsize_t *dims, hid_t fieldtype, const void *base, const void *delta)
Definition F5F.c:1464
F5ErrorCode F5Fwrite(F5Path *fpath, const char *fieldname, int rank, hsize_t *dims, hid_t fieldtype, hid_t memtype, const void *dataPtr, hid_t property_id)
Definition F5F.c:467
void F5close(F5Path *f)
Definition F5B.c:186
F5Path * F5Rcreate_cartesian_nD(hid_t File_id, double time, const char *gridname, int Dims, const char *coordinate_system)
Definition F5R.c:116
hid_t F5append(const char *filename)
Definition F5X.c:225
F5spectrum_t * spectrum
Definition F5image.h:111
F5_vec3_double_t origin
Definition F5image.h:91
F5_float_t * zvalues
Definition F5image.h:99
F5_rgb16_t * intensity16
Definition F5image.h:101
F5_vec3_double_t y_direction
Definition F5image.h:93
double time
Definition F5image.h:86
F5_rgb16_t * transparency16
Definition F5image.h:102
F5_vec3_float_t * directions
Definition F5image.h:95
F5_rgb_real_t * transparency
Definition F5image.h:98
F5_vec3_double_t viewpoint
Definition F5image.h:89
int width
Definition F5image.h:84
F5_rgb_real_t * intensity
Definition F5image.h:97
F5_vec3_double_t x_direction
Definition F5image.h:92
F5_rgb_t * intensity8
Definition F5image.h:105
unsigned short * zvalues16
Definition F5image.h:103
F5_rgb_t * transparency8
Definition F5image.h:106
unsigned char * alpha
Definition F5image.h:109
unsigned char * zvalues8
Definition F5image.h:107
int height
Definition F5image.h:83
double viewangle
Definition F5image.h:87