diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-06-14 15:19:40 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-06-14 15:19:40 +0200 |
commit | a202984cc9fdedb6ced326653b6790890211ae60 (patch) | |
tree | 679bc0e667efcc2f60b8048052a74a664e56584d | |
parent | 78ab2d265d8fbd2bb4bbfb1533645154e12db2c2 (diff) | |
download | gtk-vlc-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.h | 3 | ||||
-rw-r--r-- | lib/gtk-experiment-widgets/gtk-experiment-transcript.c | 64 | ||||
-rw-r--r-- | lib/gtk-experiment-widgets/gtk-experiment-transcript.h | 3 | ||||
-rw-r--r-- | src/main.c | 23 |
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); @@ -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; } |