aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-14 15:19:40 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-06-14 15:19:40 +0200
commita202984cc9fdedb6ced326653b6790890211ae60 (patch)
tree679bc0e667efcc2f60b8048052a74a664e56584d
parent78ab2d265d8fbd2bb4bbfb1533645154e12db2c2 (diff)
downloadexperiment-player-a202984cc9fdedb6ced326653b6790890211ae60.tar.gz
allow enabling/disabling the transcript backdrop area (simplifies main.c)
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-transcript-private.h3
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-transcript.c64
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-transcript.h3
-rw-r--r--src/main.c23
4 files changed, 63 insertions, 30 deletions
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-transcript-private.h b/lib/gtk-experiment-widgets/gtk-experiment-transcript-private.h
index 384566a..7d38c32 100644
--- a/lib/gtk-experiment-widgets/gtk-experiment-transcript-private.h
+++ b/lib/gtk-experiment-widgets/gtk-experiment-transcript-private.h
@@ -44,7 +44,8 @@ typedef struct _GtkExperimentTranscriptFormat {
/** @private */
typedef enum {
- GTK_EXPERIMENT_TRANSCRIPT_REVERSE_MASK = 1 << 0
+ GTK_EXPERIMENT_TRANSCRIPT_REVERSE_MASK = 1 << 0,
+ GTK_EXPERIMENT_TRANSCRIPT_USE_BACKDROP_MASK = 1 << 1
} GtkExperimentTranscriptFlagMask;
/**
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-transcript.c b/lib/gtk-experiment-widgets/gtk-experiment-transcript.c
index e93398d..48b6d6e 100644
--- a/lib/gtk-experiment-widgets/gtk-experiment-transcript.c
+++ b/lib/gtk-experiment-widgets/gtk-experiment-transcript.c
@@ -152,7 +152,8 @@ gtk_experiment_transcript_init(GtkExperimentTranscript *klass)
pango_layout_set_wrap(klass->priv->layer_text_layout, PANGO_WRAP_WORD_CHAR);
pango_layout_set_ellipsize(klass->priv->layer_text_layout, PANGO_ELLIPSIZE_END);
- klass->priv->backdrop.start = klass->priv->backdrop.end = -1;
+ klass->priv->backdrop.start = 0;
+ klass->priv->backdrop.end = 0;
klass->priv->contribs = NULL;
klass->priv->formats = NULL;
@@ -534,8 +535,7 @@ render_backdrop_area(GtkExperimentTranscript *trans, gint64 current_time_px)
GdkColor color;
GdkColor *bg = &widget->style->bg[gtk_widget_get_state(widget)];
- if (trans->priv->backdrop.start < 0 ||
- trans->priv->backdrop.end < 0)
+ if (!gtk_experiment_transcript_get_use_backdrop_area(trans))
return;
if (gtk_experiment_transcript_get_reverse_mode(trans)) {
@@ -892,25 +892,69 @@ gtk_experiment_transcript_load_filename(GtkExperimentTranscript *trans,
}
/**
+ * @brief Enable or disable drawing a backdrop area
+ *
+ * @param trans Widget instance
+ * @param use Whether to enable (\c TRUE) or disable (\c FALSE) the backdrop
+ * area
+ */
+void
+gtk_experiment_transcript_set_use_backdrop_area(GtkExperimentTranscript *trans,
+ gboolean use)
+{
+ trans->priv->flag_mask &= ~GTK_EXPERIMENT_TRANSCRIPT_USE_BACKDROP_MASK;
+ trans->priv->flag_mask |=
+ use ? GTK_EXPERIMENT_TRANSCRIPT_USE_BACKDROP_MASK : 0;
+
+ if (gtk_widget_get_realized(GTK_WIDGET(trans)) &&
+ trans->priv->layer_text != NULL)
+ gtk_experiment_transcript_text_layer_redraw(trans);
+}
+
+/**
+ * @brief Retrieve whether a backdrop area is drawn or not
+ *
+ * @param trans Widget instance
+ * @return \c TRUE if it is, else \c FALSE
+ */
+gboolean
+gtk_experiment_transcript_get_use_backdrop_area(GtkExperimentTranscript *trans)
+{
+ return trans->priv->flag_mask &
+ GTK_EXPERIMENT_TRANSCRIPT_USE_BACKDROP_MASK;
+}
+
+/**
* @brief Configure transcript's backdrop area
*
- * Set or unset a highlighted area of the transcript by specifying start
+ * Set a highlighted area of the transcript by specifying start
* and end timepoints. The highlighted area is drawn with a 16% lighter or
* darker background color than the widgets current background color.
+ * It is ownly drawn when the backdrop area is enabled.
+ *
+ * @sa gtk_experiment_transcript_set_use_backdrop_area
*
* @param trans Widget instance
- * @param start Start time in milliseconds, or negative value (disable backdrop area)
- * @param end End time in milliseconds, or negative value (disable backdrop area)
+ * @param start Start time in milliseconds
+ * @param end End time in milliseconds
*/
void
gtk_experiment_transcript_set_backdrop_area(GtkExperimentTranscript *trans,
gint64 start, gint64 end)
{
- if (start > end)
- start = end = -1;
+ start = MAX(start, 0);
+ end = MAX(end, 0);
+
+ if (start <= end) {
+ trans->priv->backdrop.start = start;
+ trans->priv->backdrop.end = end;
+ } else {
+ trans->priv->backdrop.end = start;
+ trans->priv->backdrop.start = end;
+ }
- trans->priv->backdrop.start = start;
- trans->priv->backdrop.end = end;
+ if (!gtk_experiment_transcript_get_use_backdrop_area(trans))
+ return;
if (gtk_widget_get_realized(GTK_WIDGET(trans)) &&
trans->priv->layer_text != NULL)
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-transcript.h b/lib/gtk-experiment-widgets/gtk-experiment-transcript.h
index 6615fd7..7def2ef 100644
--- a/lib/gtk-experiment-widgets/gtk-experiment-transcript.h
+++ b/lib/gtk-experiment-widgets/gtk-experiment-transcript.h
@@ -112,6 +112,9 @@ gboolean gtk_experiment_transcript_load(GtkExperimentTranscript *trans,
gboolean gtk_experiment_transcript_load_filename(GtkExperimentTranscript *trans,
const gchar *filename);
+void gtk_experiment_transcript_set_use_backdrop_area(GtkExperimentTranscript *trans,
+ gboolean use);
+gboolean gtk_experiment_transcript_get_use_backdrop_area(GtkExperimentTranscript *trans);
void gtk_experiment_transcript_set_backdrop_area(GtkExperimentTranscript *trans,
gint64 start, gint64 end);
diff --git a/src/main.c b/src/main.c
index 16e3f71..4a45237 100644
--- a/src/main.c
+++ b/src/main.c
@@ -207,11 +207,6 @@ navigator_widget_time_selected_cb(GtkWidget *widget, gint64 selected_time,
gtk_vlc_player_seek(GTK_VLC_PLAYER(widget), selected_time);
}
-static struct {
- gint64 start;
- gint64 end;
-} last_activated_section = {-1, -1};
-
/** @private */
void
navigator_widget_section_activated_cb(GtkWidget *widget __attribute__((unused)),
@@ -227,9 +222,6 @@ navigator_widget_section_activated_cb(GtkWidget *widget __attribute__((unused)),
start, end);
gtk_experiment_transcript_set_backdrop_area(transcript_proband,
start, end);
-
- last_activated_section.start = start;
- last_activated_section.end = end;
}
/** @private */
@@ -243,17 +235,10 @@ navigator_widget_generic_focus_event_cb(GtkWidget *widget __attribute__((unused)
GtkExperimentTranscript *transcript_proband =
GTK_EXPERIMENT_TRANSCRIPT(transcript_proband_widget);
- gint64 start = -1, end = -1;
-
- if (event->in) {
- start = last_activated_section.start;
- end = last_activated_section.end;
- }
-
- gtk_experiment_transcript_set_backdrop_area(transcript_wizard,
- start, end);
- gtk_experiment_transcript_set_backdrop_area(transcript_proband,
- start, end);
+ gtk_experiment_transcript_set_use_backdrop_area(transcript_wizard,
+ event->in == TRUE);
+ gtk_experiment_transcript_set_use_backdrop_area(transcript_proband,
+ event->in == TRUE);
return TRUE;
}