diff options
Diffstat (limited to 'lib')
3 files changed, 59 insertions, 11 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); |