summaryrefslogtreecommitdiffstats
path: root/src/readers/ufo-hdf5-reader.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/readers/ufo-hdf5-reader.c')
-rw-r--r--src/readers/ufo-hdf5-reader.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/readers/ufo-hdf5-reader.c b/src/readers/ufo-hdf5-reader.c
index 039e520..e7c94df 100644
--- a/src/readers/ufo-hdf5-reader.c
+++ b/src/readers/ufo-hdf5-reader.c
@@ -116,18 +116,20 @@ ufo_hdf5_reader_data_available (UfoReader *reader)
return priv->current < priv->dims[0];
}
-static void
+static gsize
ufo_hdf5_reader_read (UfoReader *reader,
UfoBuffer *buffer,
UfoRequisition *requisition,
guint roi_y,
guint roi_height,
- guint roi_step)
+ guint roi_step,
+ guint image_step)
{
UfoHdf5ReaderPrivate *priv;
gpointer data;
hid_t dst_dataspace_id;
hsize_t dst_dims[2];
+ gsize num_read = 0;
priv = UFO_HDF5_READER_GET_PRIVATE (reader);
data = ufo_buffer_get_host_array (buffer, NULL);
@@ -143,12 +145,16 @@ ufo_hdf5_reader_read (UfoReader *reader,
H5Dread (priv->dataset_id, H5T_NATIVE_FLOAT, dst_dataspace_id, priv->src_dataspace_id, H5P_DEFAULT, data);
H5Sclose (dst_dataspace_id);
- priv->current++;
+ num_read = MIN (image_step, priv->dims[0] - priv->current);
+ priv->current += num_read;
+
+ return num_read;
}
static gboolean
ufo_hdf5_reader_get_meta (UfoReader *reader,
UfoRequisition *requisition,
+ gsize *num_images,
UfoBufferDepth *bitdepth,
GError **error)
{
@@ -159,6 +165,7 @@ ufo_hdf5_reader_get_meta (UfoReader *reader,
requisition->n_dims = 2;
requisition->dims[0] = priv->dims[2];
requisition->dims[1] = priv->dims[1];
+ *num_images = priv->dims[0];
*bitdepth = UFO_BUFFER_DEPTH_32F;
return TRUE;
}