From 3c9dd8c793215e4e8c087524d4cc745e81c4b40b Mon Sep 17 00:00:00 2001 From: punkrockguy318 Date: Wed, 24 Feb 2010 05:36:49 +0000 Subject: [PATCH] SDL: verbose when loading custom palette GTK: added color/tint/hue options in video dialog --- src/drivers/sdl/config.cpp | 1 + src/drivers/sdl/gui.cpp | 82 +++++++++++++++++++++++++++++++++++++- 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/src/drivers/sdl/config.cpp b/src/drivers/sdl/config.cpp index 59fdc5f0..c08a6b29 100644 --- a/src/drivers/sdl/config.cpp +++ b/src/drivers/sdl/config.cpp @@ -32,6 +32,7 @@ static void LoadCPalette(const std::string &file) { + printf("Loading custom palette from file...\n"); uint8 tmpp[192]; FILE *fp; diff --git a/src/drivers/sdl/gui.cpp b/src/drivers/sdl/gui.cpp index 8af98770..c9d917f5 100644 --- a/src/drivers/sdl/gui.cpp +++ b/src/drivers/sdl/gui.cpp @@ -10,6 +10,7 @@ #include "../../driver.h" #include "../../version.h" #include "../../movie.h" +#include "../../palette.h" #include "../common/configSys.h" @@ -186,7 +187,42 @@ void setScaler(GtkWidget* w, gpointer p) g_config->setOption("SDL.SpecialFilter", x); g_config->save(); } - +int setColor(GtkWidget* w, gpointer p) +{ + int v = gtk_range_get_value(GTK_RANGE(w)); + g_config->setOption("SDL.Color", v); + g_config->save(); + int t, h; + g_config->getOption("SDL.Tint", &t); + g_config->getOption("SDL.Hue", &h); + FCEUI_SetNTSCTH(v, t, h); + + return 0; +} +int setTint(GtkWidget* w, gpointer p) +{ + int v = gtk_range_get_value(GTK_RANGE(w)); + g_config->setOption("SDL.Tint", v); + g_config->save(); + int c, h; + g_config->getOption("SDL.Color", &c); + g_config->getOption("SDL.Hue", &h); + FCEUI_SetNTSCTH(c, v, h); + + return 0; +} +int setHue(GtkWidget* w, gpointer p) +{ + int v = gtk_range_get_value(GTK_RANGE(w)); + g_config->setOption("SDL.Hue", v); + g_config->save(); + int c, t; + g_config->getOption("SDL.Tint", &t); + g_config->getOption("SDL.Color", &c); + FCEUI_SetNTSCTH(c, t, v); + + return 0; +} void openVideoConfig() { @@ -199,10 +235,18 @@ void openVideoConfig() GtkWidget* glChk; GtkWidget* palChk; GtkWidget* ppuChk; + GtkWidget* slidersFrame; + GtkWidget* slidersVbox; + GtkWidget* colorFrame; + GtkWidget* colorHscale; + GtkWidget* tintFrame; + GtkWidget* tintHscale; + GtkWidget* hueFrame; + GtkWidget* hueHscale; win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(win), "Video Prefernces"); - gtk_widget_set_size_request(win, 250, 250); + //gtk_widget_set_size_request(win, 250, 250); vbox = gtk_vbox_new(FALSE, 5); @@ -261,12 +305,46 @@ void openVideoConfig() else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ppuChk), 0); + // color / tint / hue sliders + slidersFrame = gtk_frame_new("Video controls"); + slidersVbox = gtk_vbox_new(TRUE, 5); + colorFrame = gtk_frame_new("Color"); + colorHscale = gtk_hscale_new_with_range(0, 128, 1); + gtk_container_add(GTK_CONTAINER(colorFrame), colorHscale); + tintFrame = gtk_frame_new("Tint"); + tintHscale = gtk_hscale_new_with_range(0, 128, 1); + gtk_container_add(GTK_CONTAINER(tintFrame), tintHscale); + hueFrame = gtk_frame_new("Hue"); + hueHscale = gtk_hscale_new_with_range(0, 128, 1); + gtk_container_add(GTK_CONTAINER(hueFrame), hueHscale); + + // disabled for now until I can figure out how to get these options to even work + // custom palette? + g_signal_connect(colorHscale, "button-release-event", G_CALLBACK(setColor), NULL); + g_signal_connect(tintHscale, "button-release-event", G_CALLBACK(setTint), NULL); + g_signal_connect(hueHscale, "button-release-event", G_CALLBACK(setHue), NULL); + + // sync with config + int c, h, t; + g_config->getOption("SDL.Color", &c); + g_config->getOption("SDL.Hue", &h); + g_config->getOption("SDL.Tint", &t); + gtk_range_set_value(GTK_RANGE(colorHscale), c); + gtk_range_set_value(GTK_RANGE(hueHscale), h); + gtk_range_set_value(GTK_RANGE(tintHscale), t); + + gtk_container_add(GTK_CONTAINER(slidersFrame), slidersVbox); + gtk_box_pack_start(GTK_BOX(slidersVbox), colorFrame, FALSE, TRUE, 5); + gtk_box_pack_start(GTK_BOX(slidersVbox), tintFrame, FALSE, TRUE, 5); + gtk_box_pack_start(GTK_BOX(slidersVbox), hueFrame, FALSE, TRUE, 5); + gtk_box_pack_start(GTK_BOX(vbox), lbl, FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), glChk, FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), palChk, FALSE, FALSE,5); gtk_box_pack_start(GTK_BOX(vbox), ppuChk, FALSE, FALSE, 5); + gtk_box_pack_start(GTK_BOX(vbox), slidersFrame, FALSE, TRUE, 5); gtk_container_add(GTK_CONTAINER(win), vbox);