diff --git a/lib/sp-visualizer-row.c b/lib/sp-visualizer-row.c index c6018884..155b0e59 100644 --- a/lib/sp-visualizer-row.c +++ b/lib/sp-visualizer-row.c @@ -18,7 +18,13 @@ #include "sp-visualizer-row.h" -G_DEFINE_ABSTRACT_TYPE (SpVisualizerRow, sp_visualizer_row, GTK_TYPE_LIST_BOX_ROW) +typedef struct +{ + gint64 begin_time; + gint64 end_time; +} SpVisualizerRowPrivate; + +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (SpVisualizerRow, sp_visualizer_row, GTK_TYPE_LIST_BOX_ROW) static void sp_visualizer_row_class_init (SpVisualizerRowClass *klass) @@ -39,3 +45,44 @@ sp_visualizer_row_set_reader (SpVisualizerRow *self, if (SP_VISUALIZER_ROW_GET_CLASS (self)->set_reader) SP_VISUALIZER_ROW_GET_CLASS (self)->set_reader (self, reader); } + +void +sp_visualizer_row_set_time_range (SpVisualizerRow *self, + gint64 begin_time, + gint64 end_time) +{ + SpVisualizerRowPrivate *priv = sp_visualizer_row_get_instance_private (self); + + g_return_if_fail (SP_IS_VISUALIZER_ROW (self)); + + if (begin_time > end_time) + { + gint64 tmp = begin_time; + begin_time = end_time; + end_time = tmp; + } + + priv->begin_time = begin_time; + priv->end_time = end_time; + + if (SP_VISUALIZER_ROW_GET_CLASS (self)->set_time_range) + SP_VISUALIZER_ROW_GET_CLASS (self)->set_time_range (self, begin_time, end_time); +} + +void +sp_visualizer_row_get_time_range (SpVisualizerRow *self, + gint64 *begin_time, + gint64 *end_time) +{ + SpVisualizerRowPrivate *priv = sp_visualizer_row_get_instance_private (self); + + g_return_if_fail (SP_IS_VISUALIZER_ROW (self)); + g_return_if_fail (begin_time != NULL); + g_return_if_fail (end_time != NULL); + + if (begin_time != NULL) + *begin_time = priv->begin_time; + + if (end_time != NULL) + *end_time = priv->end_time; +} diff --git a/lib/sp-visualizer-row.h b/lib/sp-visualizer-row.h index fb01565c..49c828fc 100644 --- a/lib/sp-visualizer-row.h +++ b/lib/sp-visualizer-row.h @@ -43,6 +43,21 @@ struct _SpVisualizerRowClass void (*set_reader) (SpVisualizerRow *self, SpCaptureReader *reader); + /** + * SpVisualizerRow::set_time_range: + * @self: A #SpVisualizerRow + * @begin_time: the beginning time for the row. + * @end_time: the end time for the row. + * + * This function is used to notify the row that the range the + * row should be displaying has changed. This might happen when + * the user has altered the zoom level, selected a region, in or + * a new capture was loaded. + */ + void (*set_time_range) (SpVisualizerRow *self, + gint64 begin_time, + gint64 end_time); + gpointer _reserved1; gpointer _reserved2; gpointer _reserved3; @@ -61,8 +76,14 @@ struct _SpVisualizerRowClass gpointer _reserved16; }; -void sp_visualizer_row_set_reader (SpVisualizerRow *self, - SpCaptureReader *reader); +void sp_visualizer_row_set_reader (SpVisualizerRow *self, + SpCaptureReader *reader); +void sp_visualizer_row_get_time_range (SpVisualizerRow *self, + gint64 *begin_time, + gint64 *end_time); +void sp_visualizer_row_set_time_range (SpVisualizerRow *self, + gint64 begin_time, + gint64 end_time); G_END_DECLS