61 inline int min(
int t1,
int t2)
63 return (t1 < t2 ? t1 : t2);
88 int32 junk1, junk2, junk3, junk4[2];
89 if (GRgetiminfo(
_ri_id, junk0, &junk1, &junk2, &junk3, junk4, &
_nattrs)
93 GRgetlutinfo(GRgetlutid(
_ri_id, 0), &junk1, &junk2, &junk3,
131 if ((
_file_id = Hopen((
char *) filename, DFACC_RDONLY, 0)) < 0)
171 int32
index = GRnametoindex(
_gr_id, (
char *) name);
242 if (interlace_mode == MFGR_INTERLACE_PIXEL ||
243 interlace_mode == MFGR_INTERLACE_COMPONENT ||
244 interlace_mode == MFGR_INTERLACE_LINE)
268 vector < int >stride,
bool reduce_rank)
271 if (start.size() != edge.size() || edge.size() != stride.size() ||
275 if (start.size() == 3) {
277 start.erase(start.begin());
278 edge.erase(edge.begin());
279 stride.erase(stride.begin());
282 for (
int i = 0; i < 2; ++i) {
291 _slab.start[1 - i] = start[i];
292 _slab.edge[1 - i] = edge[i];
293 _slab.stride[1 - i] = stride[i];
305 hr.
palettes = vector < hdf_palette > ();
306 hr.
attrs = vector < hdf_attr > ();
321 (
_ri_id, name, &ncomp, &data_type, &il, dim_sizes, &nattrs) < 0)
325 hr.
dims[0] = dim_sizes[0];
326 hr.
dims[1] = dim_sizes[1];
341 nelts =
_slab.edge[0] *
_slab.edge[1] * ncomp;
343 int imagesize = nelts * DFKNTsize(data_type);
344 image =
new char[imagesize];
350 cerr <<
"ncomp: " << ncomp <<
" imagesize: " << imagesize <<
352 cerr <<
"_slab.start = " <<
_slab.start[0] <<
"," <<
_slab.
366 zero[0] = zero[1] = 0;
367 nelts = dim_sizes[0] * dim_sizes[1] * ncomp;
369 int imagesize = nelts * DFKNTsize(data_type);
370 image =
new char[imagesize];
376 cerr <<
"dim_sizes[0] = " << dim_sizes[0] <<
" dim_sizes[1] = "
377 << dim_sizes[1] << endl;
379 if (GRreadimage(
_ri_id, zero, 0, dim_sizes, image) < 0) {
426 int32 number_type, count;
427 if (GRattrinfo(
id,
_attr_index, name, &number_type, &count) < 0)
431 data =
new char[count * DFKNTsize(number_type)];
441 if (number_type == DFNT_CHAR)
442 count = (int32)
min((
int) count, (int) strlen((
char *) data));
480 int32 ncomp = 0, number_type = 0, num_entries = 0, junk0;
481 if (GRgetlutinfo(pal_id, &ncomp, &number_type, &junk0, &num_entries) <
491 if (number_type == DFNT_UCHAR8)
492 number_type = DFNT_UINT8;
494 int32 count = ncomp * num_entries;
495 if (number_type != 0) {
497 pal_data =
new char[count * DFKNTsize(number_type)];
501 GRreqlutil(pal_id, MFGR_INTERLACE_PIXEL);
502 if (GRreadlut(pal_id, pal_data) < 0) {
540 for (
int i = 0; i < int (
palettes.size()) && ok; i++)
virtual bool eos(void) const
virtual bool eo_pal(void) const
virtual int index(void) const
virtual void seek_ref(int ref)
void import(int32 nt, void *data, int nelts)
bool has_palette(void) const
virtual void open(const char *filename=0)
hdfistream_gri & operator>>(hdf_gri &hr)
void setslab(vector< int >start, vector< int >edge, vector< int >stride, bool reduce_rank=false)
virtual void rewind(void)
vector< hdf_palette > palettes
virtual bool bos(void) const
virtual void seek(int index=0)
virtual void seek_next(void)
struct hdfistream_gri::@5 _slab
hdfistream_gri(const string filename="")
void setinterlace(int32 interlace_mode)
virtual bool eo_attr(void) const