Pretty colors everywhere!
authorAlexander Koenig <alex@lisas.de>
Fri, 28 Feb 2020 23:29:13 +0000 (00:29 +0100)
committerAlexander Koenig <alex@lisas.de>
Fri, 28 Feb 2020 23:29:13 +0000 (00:29 +0100)
src/tX_dialog.cc
src/tX_global.c
src/tX_global.h
src/tX_ui_interface.cc
src/tX_vtt.cc
src/tX_vtt.h
src/tX_vttgui.cc
src/tX_vttgui.h
src/tX_widget.c
src/tX_widget.h

index 99c6603b31c4f441d4f09f180802bbab8265a0f0..ec11ae5f3aa98c1ecce0c5cc7885b3829efe98bd 100644 (file)
@@ -128,6 +128,7 @@ void apply_options(GtkWidget *dialog) {
        }
 
        globals.wav_display_history=(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog, "wav_display_history")))==TRUE);
+       globals.title_bar_alpha=gtk_range_get_value(GTK_RANGE(lookup_widget(dialog, "title_bar_alpha")));
 
        /* Audio Colors */
        
@@ -137,6 +138,7 @@ void apply_options(GtkWidget *dialog) {
        strcpy(globals.wav_display_fg_no_focus, (char *) g_object_get_data(G_OBJECT(lookup_widget(dialog, "wav_display_fg_no_focus")), "Color"));
        strcpy(globals.wav_display_cursor, (char *) g_object_get_data(G_OBJECT(lookup_widget(dialog, "wav_display_cursor")), "Color"));
        strcpy(globals.wav_display_cursor_mute, (char *) g_object_get_data(G_OBJECT(lookup_widget(dialog, "wav_display_cursor_mute")), "Color"));
+       globals.wav_use_vtt_color=(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog, "wav_use_vtt_color")))==TRUE);
 
        /* VU Colors */ 
        strcpy(globals.vu_meter_bg, (char *) g_object_get_data(G_OBJECT(lookup_widget(dialog, "vu_meter_bg")), "Color"));
@@ -159,10 +161,11 @@ void apply_options(GtkWidget *dialog) {
        std::list<vtt_class *>::iterator vtt;
        
        for (vtt=vtt_class::main_list.begin(); vtt!=vtt_class::main_list.end(); vtt++) {
-               gtk_tx_update_colors(GTK_TX((*vtt)->gui.display));
+               gtk_tx_update_colors(GTK_TX((*vtt)->gui.display), (*vtt)->get_color());
                gtk_widget_queue_draw((*vtt)->gui.display);
                gtk_tx_flash_update_colors(GTK_TX_FLASH((*vtt)->gui.flash));
                gtk_widget_queue_draw((*vtt)->gui.flash);
+               update_vtt_css((*vtt), (*vtt)->get_color());
        }
        
        gtk_tx_flash_update_colors(GTK_TX_FLASH(main_flash));
@@ -438,6 +441,7 @@ void init_tx_options(GtkWidget *dialog) {
        }
        
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog, "wav_display_history")), globals.wav_display_history);
+       gtk_range_set_value(GTK_RANGE(lookup_widget(dialog, "title_bar_alpha")), globals.title_bar_alpha);
 
        /* Audio Colors */
        int ctr=0;
@@ -448,6 +452,7 @@ void init_tx_options(GtkWidget *dialog) {
        set_color_button(globals.wav_display_fg_no_focus, "wav_display_fg_no_focus");
        set_color_button(globals.wav_display_cursor, "wav_display_cursor");
        set_color_button(globals.wav_display_cursor_mute, "wav_display_cursor_mute");
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(dialog, "wav_use_vtt_color")), globals.wav_use_vtt_color);
        
        /* VU Colors */
        set_color_button(globals.vu_meter_bg, "vu_meter_bg");
index 202f7cb237cc7d3923ec2d7d70bb47ca03e41bd5..af66aea6e76ddeecdd722d1448f915c139012d29 100644 (file)
@@ -148,7 +148,10 @@ void set_global_defaults() {
        strcpy(globals.wav_display_fg_no_focus, "#00FF00");
 
        strcpy(globals.wav_display_cursor, "#FF6666");
-       strcpy(globals.wav_display_cursor_mute, "#FFFFFF");     
+       strcpy(globals.wav_display_cursor_mute, "#FFFFFF");
+
+       globals.wav_use_vtt_color = 1;
+       globals.title_bar_alpha = 0.5;
        
        strcpy(globals.vu_meter_bg, "#000000");
        strcpy(globals.vu_meter_loud, "#FF0000");
@@ -248,6 +251,8 @@ int load_globals_xml() {
                        restore_int("restore_midi_connections", globals.restore_midi_connections);
 
                        restore_int("wav_display_history", globals.wav_display_history);
+                       restore_float("title_bar_alpha", globals.title_bar_alpha);
+                       restore_int("wav_use_vtt_color", globals.wav_use_vtt_color);
                        restore_string("wav_display_bg_focus", globals.wav_display_bg_focus);
                        restore_string("wav_display_bg_no_focus", globals.wav_display_bg_no_focus);
                        restore_string("wav_display_fg_focus", globals.wav_display_fg_focus);
@@ -376,6 +381,8 @@ void store_globals() {
                store_int("restore_midi_connections", globals.restore_midi_connections);
 
                store_int("wav_display_history", globals.wav_display_history);
+               store_float("title_bar_alpha", globals.title_bar_alpha);
+               store_int("wav_use_vtt_color", globals.wav_use_vtt_color);
                store_string("wav_display_bg_focus", globals.wav_display_bg_focus);
                store_string("wav_display_bg_no_focus", globals.wav_display_bg_no_focus);
                store_string("wav_display_fg_focus", globals.wav_display_fg_focus);
index 63b0b4b8422d9e63b8c8e0830eab99e98345dd0f..441de552776bb92592d80465ccf210316e4cd873 100644 (file)
@@ -164,8 +164,12 @@ typedef struct {
        int filename_length;
        
        int restore_midi_connections;
-       int wav_display_history;
        
+       double title_bar_alpha;
+       int wav_use_vtt_color;
+
+       int wav_display_history;
+
        char wav_display_bg_focus[8];
        char wav_display_bg_no_focus[8];
        
@@ -174,7 +178,7 @@ typedef struct {
        
        char wav_display_cursor[8];     
        char wav_display_cursor_mute[8];
-       
+
        char vu_meter_bg[8];
        char vu_meter_loud[8];
        char vu_meter_normal[8];
index 02b2f3465950fa2356e767604b374b3f4e8c164b..c00d4ee10b615ba5ee3316eb8b45fa9b83516816 100644 (file)
@@ -201,6 +201,8 @@ create_tx_options (GtkWindow* parent)
   GtkWidget *label46;
   GtkWidget *label47;
   GtkWidget *wav_display_history;
+  GtkWidget *wav_use_vtt_color;
+  GtkWidget *title_bar_alpha;
   GtkWidget *wav_display_bg_focus;
   GtkWidget *wav_display_bg_no_focus;
   GtkWidget *wav_display_fg_focus;
@@ -592,6 +594,17 @@ create_tx_options (GtkWindow* parent)
   gtk_grid_attach (GTK_GRID (grid2), wav_display_history, 1, 9, 1, 1);
   gtk_widget_set_tooltip_text(wav_display_history, "Adds visual history to the turntable cursor or needles.");
 
+  label38 = gtk_label_new("Turntable Titelbar Alpha:");
+  gtk_widget_show (label38);
+  gtk_grid_attach (GTK_GRID (grid2), label38, 0, 10, 1, 1);
+  gtk_widget_set_halign(label38, GTK_ALIGN_START);
+
+  title_bar_alpha = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (gtk_adjustment_new (0.5, 0, 1.0, 0.1, 0.01, 0.01)));
+  gtk_widget_show (title_bar_alpha);
+  gtk_grid_attach (GTK_GRID (grid2), title_bar_alpha, 1, 10, 1, 1);
+  gtk_scale_set_value_pos (GTK_SCALE (title_bar_alpha), GTK_POS_LEFT);
+  gtk_scale_set_digits (GTK_SCALE (title_bar_alpha), 2);
+
   label2 = gtk_label_new ("User Interface");
   gtk_widget_show (label2);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label2);
@@ -662,6 +675,16 @@ create_tx_options (GtkWindow* parent)
   gtk_widget_show (wav_display_cursor_mute);
   gtk_grid_attach (GTK_GRID (grid8), wav_display_cursor_mute, 1, 5, 1, 1);
 
+  label38 = gtk_label_new("Turntable color");
+  gtk_widget_show (label38);
+  gtk_grid_attach (GTK_GRID (grid8), label38, 0, 6, 1, 1);
+  gtk_widget_set_halign(label38, GTK_ALIGN_START);
+
+  wav_use_vtt_color = gtk_check_button_new_with_mnemonic ("Use turntable color for audio signal display");
+  gtk_widget_show (wav_use_vtt_color);
+  gtk_grid_attach (GTK_GRID (grid8), wav_use_vtt_color, 1, 6, 1, 1);
+  gtk_widget_set_tooltip_text(wav_use_vtt_color, "Each turntable can have a seprate color.");
+
   label41 = gtk_label_new ("Audio Colors");
   gtk_widget_show (label41);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), label41);
@@ -981,6 +1004,8 @@ create_tx_options (GtkWindow* parent)
   TX_UI_HOOKUP_OBJECT (tx_options, knob_size, "knob_size");
   TX_UI_HOOKUP_OBJECT (tx_options, override_knob_size, "override_knob_size");
   TX_UI_HOOKUP_OBJECT (tx_options, wav_display_history, "wav_display_history");
+  TX_UI_HOOKUP_OBJECT (tx_options, title_bar_alpha, "title_bar_alpha");
+  TX_UI_HOOKUP_OBJECT (tx_options, wav_use_vtt_color, "wav_use_vtt_color");
 
   return tx_options;
 }
index 5abaa7188ff257375c90e17af1c2d68a5afd3fe2..d8537481b2d2b637d6d18550e61c7f92ed7af56e 100644 (file)
@@ -54,6 +54,7 @@
 
 extern void build_vtt_gui(vtt_class *);
 extern void gui_set_name(vtt_class *vtt, char *newname);
+extern void gui_set_color(vtt_class *vtt, GdkRGBA* rgba);
 extern void gui_set_filename(vtt_class *vtt, char *newname);
 extern void delete_gui(vtt_class *vtt);
 extern void gui_update_display(vtt_class *vtt);
@@ -94,6 +95,19 @@ vtt_class :: vtt_class (int do_create_gui)
        cleanup_required=false;
 
        sprintf (name, "Turntable %i", vtt_amount);
+
+       double rgb[3];
+
+       for (int c=0; c<3; c++) {
+               double r = (double)rand() / RAND_MAX;
+               rgb[c] = 0.7 + r*(0.3);
+       }
+       
+       color.red = rgb[0];
+       color.green = rgb[1];
+       color.blue = rgb[2];
+       color.alpha = 1;
+
        strcpy(filename, "NONE");
        buffer=NULL;
        samples_in_buffer=0;
@@ -199,6 +213,7 @@ vtt_class :: vtt_class (int do_create_gui)
        do_scratch=0;
        speed_last=1;
        speed_real=1;
+
 }
 
 vtt_class :: ~vtt_class()
@@ -1210,6 +1225,7 @@ void vtt_class :: xy_input(f_prec x_value, f_prec y_value)
 
 int  vtt_class :: save(FILE *rc, gzFile rz, char *indent) {
        char tmp_xml_buffer[4096];
+       char* color_buffer;
        
        int res=0;
 
@@ -1217,6 +1233,10 @@ int  vtt_class :: save(FILE *rc, gzFile rz, char *indent) {
        strcat(indent, "\t");
        
        store_string("name", name);
+       color_buffer = gdk_rgba_to_string(&color);
+       store_string("color", color_buffer);
+       g_free(color_buffer);
+       
        if (buffer) {
                store_string("audiofile", filename);
        } else {
@@ -1339,6 +1359,9 @@ int vtt_class :: load(xmlDocPtr doc, xmlNodePtr node) {
                        elementFound=0;
                        
                        restore_string_ac("name", buffer, set_name(buffer));
+                       restore_string("color", buffer);
+                       gdk_rgba_parse(&color, buffer);
+                       gui_set_color(this, &color);
                        restore_string("audiofile", filename);
                        restore_bool("sync_master", is_sync_master);
                        restore_bool("autotrigger", autotrigger);
index 586edf0e0e27a517e8a137c73a3d4f8f0d0abed4..3cb983aae1bab7eeee97f957482ccad6c311114e 100644 (file)
@@ -86,6 +86,8 @@ class vtt_class
        char name[256]; // Turntable's name
        char filename[PATH_MAX]; // The corresponding audiofile
        
+       GdkRGBA color;
+
        int is_playing;
        bool is_sync_master;
        bool is_sync_client;
@@ -223,6 +225,8 @@ class vtt_class
        void set_name(char *);
        int set_output_buffer_size(int);
 
+       GdkRGBA* get_color() { return &color; };
+
        void set_volume(f_prec);
        void recalc_volume();
        
index 303a8ad19a6c297b0b4dab81dbc1e8dbcecc6f77..19d90c7f5b716ed69da5a5643f2380e632154cd4 100644 (file)
@@ -662,6 +662,34 @@ static gint stereo_fx_button_pressed(GtkWidget *wid, GdkEventButton *event, vtt_
        return TRUE;
 }
 
+
+void update_vtt_css(vtt_class *vtt, GdkRGBA* rgba) {
+       char css[256];
+       GdkRGBA copy;
+       memcpy(&copy, rgba, sizeof(GdkRGBA));
+       copy.alpha = globals.title_bar_alpha;
+       char *color_str = gdk_rgba_to_string(&copy);
+       snprintf(css, sizeof(css), ".%08x { background-color: %s; }", vtt, color_str);
+       g_free(color_str);
+        gtk_css_provider_load_from_data(vtt->gui.css_provider, css, -1, NULL);
+        gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(vtt->gui.css_provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
+
+       gtk_tx_update_colors(GTK_TX(vtt->gui.display), rgba);
+       gtk_widget_queue_draw(vtt->gui.display);
+}
+
+static void gui_color_set(GtkWidget *widget, vtt_class *vtt) {
+       gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(widget), vtt->get_color());
+
+       update_vtt_css(vtt, vtt->get_color());
+}
+
+void gui_set_color(vtt_class *vtt, GdkRGBA* rgba)  {
+       gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(vtt->gui.color_button), rgba);
+       update_vtt_css(vtt, rgba);
+
+}
+
 #define TOOLTIP_LENGTH 2048
 
 void gui_set_name(vtt_class *vtt, char *newname)
@@ -803,9 +831,14 @@ void build_vtt_gui(vtt_class *vtt)
        char nice_name[256];
        
        vtt_gui *g;
-       
+
        g=&vtt->gui;
        vtt->have_gui=1;
+
+       snprintf(g->style_class, sizeof(g->style_class), "%0x", vtt);
+
+       g->css_provider = gtk_css_provider_new();       
+
        g->par_menu=NULL;
        g->ladspa_menu=NULL;
 
@@ -828,6 +861,7 @@ void build_vtt_gui(vtt_class *vtt)
        gtk_widget_show(g->audio_minimize);
 
        g->audio_label=gtk_label_new(vtt->name);
+       gtk_style_context_add_class(gtk_widget_get_style_context(tempbox2), g->style_class); 
        gtk_widget_set_halign(g->audio_label, GTK_ALIGN_START);
        gtk_widget_set_margin_start(g->audio_label, 10);
        gtk_widget_show(g->audio_label);
@@ -835,6 +869,7 @@ void build_vtt_gui(vtt_class *vtt)
 
        nicer_filename(nice_name, vtt->filename);
        g->file = gtk_button_new_with_label(nice_name);
+       gtk_style_context_add_class(gtk_widget_get_style_context(g->file), g->style_class); 
        gtk_widget_show(g->file);
        gui_set_tooltip(g->file, "Click to Load/Edit/Reload a sample for this turntable. To load you can also drag a file and drop it over this button or the sound data display below.");
        gtk_box_pack_start(GTK_BOX(tempbox), g->file, WID_DYN);
@@ -842,12 +877,14 @@ void build_vtt_gui(vtt_class *vtt)
        g->mouse_mapping=gtk_button_new_with_label("Mouse");
        gtk_widget_show(g->mouse_mapping);
        gui_set_tooltip(g->mouse_mapping, "Determines what parameters should be affected on mouse motion in mouse grab mode.");
+       gtk_style_context_add_class(gtk_widget_get_style_context(g->mouse_mapping), g->style_class); 
        gtk_box_pack_start(GTK_BOX(tempbox2), g->mouse_mapping, WID_FIX);
 
 #ifdef USE_ALSA_MIDI_IN
        g->midi_mapping=gtk_button_new_with_label("MIDI");
        gtk_widget_show(g->midi_mapping);
        gui_set_tooltip(g->midi_mapping, "Determines what parameters should be bound to what MIDI events.");
+       gtk_style_context_add_class(gtk_widget_get_style_context(g->midi_mapping), g->style_class); 
        gtk_box_pack_start(GTK_BOX(tempbox2), g->midi_mapping, WID_FIX);
        
        if (!tX_engine::get_instance()->get_midi()->get_is_open()) {
@@ -885,6 +922,7 @@ void build_vtt_gui(vtt_class *vtt)
        gtk_box_pack_start(GTK_BOX(g->control_box), tempbox2, WID_FIX);
 
        g->control_label=gtk_label_new(vtt->name);
+       gtk_style_context_add_class(gtk_widget_get_style_context(tempbox2), g->style_class); 
        gtk_widget_show(g->control_label);
        gtk_box_pack_start(GTK_BOX(tempbox2), g->control_label, WID_DYN);
 
@@ -917,12 +955,24 @@ void build_vtt_gui(vtt_class *vtt)
        tX_panel *p=new tX_panel("Main", g->control_subbox);
        g->main_panel=p;
                        
+       GtkWidget *mainbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
        g->name = gtk_entry_new();
        gtk_entry_set_max_length(GTK_ENTRY(g->name), 256);
        gtk_entry_set_text(GTK_ENTRY(g->name), vtt->name);
        gtk_entry_set_width_chars(GTK_ENTRY(g->name), 10);
        gtk_entry_set_max_width_chars(GTK_ENTRY(g->name), 10);
-       p->add_client_widget(g->name);
+       gtk_container_add_with_properties(GTK_CONTAINER(mainbox), g->name, "expand", TRUE, NULL);
+       g->color_button = gtk_color_button_new();
+       gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(g->color_button), FALSE);
+       gui_set_color(vtt, vtt->get_color());
+       g_signal_connect(G_OBJECT(g->color_button), "color_set", (GCallback) gui_color_set , vtt);              
+       
+       gtk_button_set_relief(GTK_BUTTON(g->color_button), GTK_RELIEF_NONE);
+       gtk_container_add(GTK_CONTAINER(mainbox), g->color_button);
+       gtk_widget_show(g->color_button);
+       gtk_widget_show(g->name);
+
+       p->add_client_widget(mainbox);
        gui_set_tooltip(g->name, "Enter the turntable's name here.");
        //gtk_widget_set_size_request(g->name, 40, -1);
 
@@ -1289,6 +1339,7 @@ void gui_hide_control_panel(vtt_class *vtt, bool hide) {
        if (hide) {
                gtk_widget_hide(vtt->gui.control_box);
                vtt->gui.control_minimized_panel_bar_button=tx_xpm_button_new(MIN_CONTROL, vtt->name, 0, &vtt->gui.control_minimized_panel_bar_label);
+               gtk_style_context_add_class(gtk_widget_get_style_context(vtt->gui.control_minimized_panel_bar_button), vtt->gui.style_class); 
                g_signal_connect(G_OBJECT(vtt->gui.control_minimized_panel_bar_button), "clicked", (GCallback) unminimize_control_panel, vtt);
                gtk_widget_show(vtt->gui.control_minimized_panel_bar_button);
                snprintf(tooltip, TOOLTIP_LENGTH, "Show \"%s\" control panel.", vtt->name);
@@ -1308,6 +1359,7 @@ void gui_hide_audio_panel(vtt_class *vtt, bool hide) {
        if (hide) {
                gtk_widget_hide(vtt->gui.audio_box);
                vtt->gui.audio_minimized_panel_bar_button=tx_xpm_button_new(MIN_AUDIO, vtt->name, 0, &vtt->gui.audio_minimized_panel_bar_label);
+               gtk_style_context_add_class(gtk_widget_get_style_context(vtt->gui.audio_minimized_panel_bar_button), vtt->gui.style_class); 
                g_signal_connect(G_OBJECT(vtt->gui.audio_minimized_panel_bar_button), "clicked", (GCallback) unminimize_audio_panel, vtt);              
                gtk_widget_show(vtt->gui.audio_minimized_panel_bar_button);
                snprintf(tooltip, TOOLTIP_LENGTH, "Show \"%s\" audio panel.", vtt->name);
@@ -1348,6 +1400,8 @@ void delete_gui(vtt_class *vtt)
        if (vtt->gui.file_menu) gtk_widget_destroy(vtt->gui.file_menu);
        if (vtt->gui.mouse_mapping_menu) gtk_widget_destroy(vtt->gui.mouse_mapping_menu);
        if (vtt->gui.ladspa_menu) gtk_widget_destroy(vtt->gui.ladspa_menu);
+
+        gtk_style_context_remove_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(vtt->gui.css_provider));
 }
 
 void cleanup_vtt(vtt_class *vtt)
index 936b777ec9d277fbb3b919017a17a7f29454fd8b..dc9254e5edeb8df978e26ff0a77b2bb6ed2940cf 100644 (file)
@@ -51,6 +51,8 @@ struct vtt_gui
        /* Main */
        tX_panel  *main_panel;
        GtkWidget *name;
+       GtkWidget *color_button;
+       GtkCssProvider *css_provider;
        GtkWidget *show_audio;
        GtkWidget *del;
        GtkWidget *adjust_button;
@@ -114,6 +116,8 @@ struct vtt_gui
        GtkWidget *mouse_mapping_menu_x;
        GtkWidget *mouse_mapping_menu_y;
 
+        char style_class[32];
+
 #ifdef USE_ALSA_MIDI_IN
        GtkWidget *midi_mapping;
 #endif 
@@ -125,6 +129,7 @@ struct vtt_gui
        GtkWidget *control_minimized_panel_bar_label;
 };
 
+extern void update_vtt_css(vtt_class *vtt, GdkRGBA* rgba);
 extern void cleanup_all_vtts();
 extern void update_all_vtts();
 extern void vg_enable_critical_buttons(int enable);
index 23c2b9cb29870eab3d3efeb85b1a8c48536d61f9..71ff5ca08d53cb04b50fee6208954b1af0b194bc 100644 (file)
@@ -106,7 +106,7 @@ static void gtk_tx_class_init(GtkTxClass * gclass) {
 #define COL_CURSOR       4
 #define COL_CURSOR_MUTE  5
 
-void gtk_tx_update_colors(GtkTx *tx) {
+void gtk_tx_update_colors(GtkTx *tx, GdkRGBA *vtt_color) {
        int step;
 
        gdk_rgba_parse(&tx->colors[COL_BG_FOCUS], globals.wav_display_bg_focus);
@@ -114,9 +114,17 @@ void gtk_tx_update_colors(GtkTx *tx) {
        gdk_rgba_parse(&tx->colors[COL_BG_NO_FOCUS], globals.wav_display_bg_no_focus);
        tx->colors[COL_BG_NO_FOCUS].alpha=1.0;
        
-       gdk_rgba_parse(&tx->colors[COL_FG_FOCUS], globals.wav_display_fg_focus);
+       if (globals.wav_use_vtt_color && vtt_color) {
+               memcpy(&tx->colors[COL_FG_FOCUS], vtt_color, sizeof(GdkRGBA));
+       } else {
+               gdk_rgba_parse(&tx->colors[COL_FG_FOCUS], globals.wav_display_fg_focus);
+       }
        tx->colors[COL_FG_FOCUS].alpha=1.0;
-       gdk_rgba_parse(&tx->colors[COL_FG_NO_FOCUS], globals.wav_display_fg_no_focus);
+       if (globals.wav_use_vtt_color && vtt_color) {
+               memcpy(&tx->colors[COL_FG_NO_FOCUS], vtt_color, sizeof(GdkRGBA));
+       } else {
+               gdk_rgba_parse(&tx->colors[COL_FG_NO_FOCUS], globals.wav_display_fg_no_focus);
+       }
        tx->colors[COL_FG_NO_FOCUS].alpha=1.0;
        
        gdk_rgba_parse(&tx->colors[COL_CURSOR], globals.wav_display_cursor);
@@ -133,6 +141,8 @@ void gtk_tx_update_colors(GtkTx *tx) {
                color->blue = tx->colors[COL_CURSOR].blue;
                color->alpha = frac*frac/2;
        }
+       tx->render_buffer_fg = NULL;
+       gtk_tx_prepare(tx);
 }
 
 
@@ -147,7 +157,7 @@ static void gtk_tx_init(GtkTx * tx) {
        memset(tx->colors, 0, sizeof(tx->colors));
        memset(tx->history_colors, 0, sizeof(tx->history_colors));
 
-       gtk_tx_update_colors(tx);
+       gtk_tx_update_colors(tx, NULL);
        
        tx->current_fg=tx->audio_colors_focus;
        tx->current_bg=&tx->colors[COL_BG_NO_FOCUS];
@@ -468,6 +478,7 @@ static void gtk_tx_update_render_buffer(GtkTx *tx) {
        
        if ((tx->render_buffer_display_width != tx->display_width) || 
                        (tx->render_buffer_fg != tx->current_fg)) {
+               
                // need to redraw all samples
                cairo_t *cr = cairo_create(tx->render_buffer_surface_a);
                tx->current_render_buffer_surface = tx->render_buffer_surface_a;
@@ -532,7 +543,7 @@ static gboolean gtk_tx_draw(GtkWidget * widget, cairo_t *cr) {
        g_return_val_if_fail(GTK_IS_TX(widget), FALSE);
 
        tx = GTK_TX(widget);
-       
+
        gdk_cairo_get_clip_rectangle(cr, &area);
        
        cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
index 6ff08785821ee77f24656dd413e12b9199fc58df..d6448f6de9619c8d2e5eac57ff4c508a89470739 100644 (file)
@@ -106,7 +106,7 @@ void gtk_tx_cleanup_pos_display (GtkTx *tx);
 void gtk_tx_update_pos_display (GtkTx *tx, int sample, int mute);
 void gtk_tx_show_focus(GtkTx *tx, int show);
 void gtk_tx_set_zoom(GtkTx *tx, f_prec zoom, int is_playing);
-void gtk_tx_update_colors(GtkTx *tx);
+void gtk_tx_update_colors(GtkTx *tx, GdkRGBA *vtt_color);
 f_prec gtk_tx_get_zoom(GtkTx *tx);
 
 #ifdef __cplusplus