2 #include <gdk/gdkkeysyms.h>
9 #include "../src/mark.h"
10 #include "../src/yuv.h"
14 static GtkWidget *level_window = NULL;
15 static GtkObject *black_level_adj;
16 static GtkObject *white_level_adj;
17 static GtkObject *fade_level_adj;
19 static void level_destroy(GtkWidget *widget, gpointer priv)
21 gtk_widget_destroy(level_window);
25 static gboolean level_key_press(GtkWidget *widget, GdkEventKey *event, gpointer priv)
27 switch (event->keyval) {
30 if (event->state & GDK_CONTROL_MASK) {
31 gtk_widget_destroy(widget);
35 ;//printf("%x\n", event->keyval);
41 static void close_event(gpointer *priv)
43 gtk_widget_destroy(level_window);
47 static void reset_event(gpointer *priv)
51 anything_modified = 1;
57 for (i = 0; i < 255; i++)
60 draw_image(0, 0, -1, -1);
63 static void apply_event(gpointer *priv)
67 anything_modified = 1;
69 black_level = GTK_ADJUSTMENT(black_level_adj)->value / 255.0;
70 white_level = GTK_ADJUSTMENT(white_level_adj)->value / 255.0;
71 fade_level = GTK_ADJUSTMENT(fade_level_adj)->value / 100.0;
72 update_color(mark_selected);
73 for (i = 0; i < 255; i++)
76 draw_image(0, 0, -1, -1);
79 static GtkWidget *xpm_label_box( const gchar *stock_id,
86 /* Create box for image and label */
87 box = gtk_hbox_new (FALSE, 0);
88 gtk_container_set_border_width (GTK_CONTAINER (box), 4);
90 /* Now on to the image stuff */
91 image = gtk_image_new_from_stock(stock_id, -1);
93 /* Create a label for the button */
94 label = gtk_label_new (label_text);
96 /* Pack the image and label into the box */
97 gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 3);
98 gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 3);
100 gtk_widget_show (image);
101 gtk_widget_show (label);
106 void level_event(gpointer priv)
108 GtkWidget *vbox, *hbox;
110 GtkWidget *root_menu;
112 GtkWidget *menu_item;
113 GtkWidget *black_level_label;
114 GtkWidget *white_level_label;
115 GtkWidget *fade_level_label;
116 GtkWidget *black_level_scroll;
117 GtkWidget *white_level_scroll;
118 GtkWidget *fade_level_scroll;
119 GtkWidget *button_apply;
120 GtkWidget *button_reset;
124 gtk_widget_destroy(level_window);
130 level_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
131 gtk_window_set_default_size(GTK_WINDOW(level_window), 500, 0);
132 gtk_window_set_title(GTK_WINDOW(level_window), "Black Level");
133 g_signal_connect(level_window, "destroy", G_CALLBACK(level_destroy), level_window);
134 g_signal_connect(level_window, "key_press_event", G_CALLBACK(level_key_press), level_window);
137 menu_bar = gtk_menu_bar_new();
138 gtk_widget_show(menu_bar);
139 menu = gtk_menu_new();
140 root_menu = gtk_menu_item_new_with_mnemonic("_File");
141 gtk_widget_show(root_menu);
143 menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, NULL);
144 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
145 g_signal_connect_swapped(menu_item, "activate", G_CALLBACK(close_event), level_window);
146 gtk_widget_show(menu_item);
147 gtk_menu_item_set_submenu(GTK_MENU_ITEM(root_menu), menu);
148 gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), root_menu);
150 /* create scale widgets */
151 black_level_label = gtk_label_new("Black Level:");
152 gtk_widget_show(GTK_WIDGET(black_level_label));
153 black_level_adj = gtk_adjustment_new(black_level * 255, 0, 256, 1, 1, 1);
154 black_level_scroll = gtk_hscale_new(GTK_ADJUSTMENT(black_level_adj));
155 gtk_widget_show(black_level_scroll);
157 white_level_label = gtk_label_new("White Level:");
158 gtk_widget_show(GTK_WIDGET(white_level_label));
159 white_level_adj = gtk_adjustment_new(white_level * 255, 0, 256, 1, 1, 1);
160 white_level_scroll = gtk_hscale_new(GTK_ADJUSTMENT(white_level_adj));
161 gtk_widget_show(white_level_scroll);
163 fade_level_label = gtk_label_new("Fade Level (%):");
164 gtk_widget_show(GTK_WIDGET(fade_level_label));
165 fade_level_adj = gtk_adjustment_new(fade_level * 100, 0, 101, 1, 1, 1);
166 fade_level_scroll = gtk_hscale_new(GTK_ADJUSTMENT(fade_level_adj));
167 gtk_widget_show(fade_level_scroll);
170 button_reset = gtk_button_new();
171 g_signal_connect(button_reset, "clicked", G_CALLBACK(reset_event), NULL);
172 box = xpm_label_box (GTK_STOCK_REMOVE, "Reset");
173 gtk_widget_show (box);
174 gtk_container_add (GTK_CONTAINER (button_reset), box);
175 gtk_widget_show(button_reset);
177 button_apply = gtk_button_new();
178 g_signal_connect(button_apply, "clicked", G_CALLBACK(apply_event), NULL);
179 box = xpm_label_box (GTK_STOCK_APPLY, "Apply");
180 gtk_widget_show (box);
181 gtk_container_add (GTK_CONTAINER (button_apply), box);
182 gtk_widget_show(button_apply);
184 hbox = gtk_hbox_new(FALSE, 0);
185 gtk_box_pack_end(GTK_BOX(hbox), button_apply, FALSE, FALSE, 2);
186 gtk_box_pack_end(GTK_BOX(hbox), button_reset, FALSE, FALSE, 2);
187 gtk_widget_show(hbox);
189 /* create vbox (complete window) */
190 vbox = gtk_vbox_new(FALSE, 0);
191 gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 2);
192 gtk_box_pack_start(GTK_BOX(vbox), black_level_label, FALSE, FALSE, 2);
193 gtk_box_pack_start(GTK_BOX(vbox), black_level_scroll, FALSE, FALSE, 2);
194 gtk_box_pack_start(GTK_BOX(vbox), white_level_label, FALSE, FALSE, 2);
195 gtk_box_pack_start(GTK_BOX(vbox), white_level_scroll, FALSE, FALSE, 2);
196 gtk_box_pack_start(GTK_BOX(vbox), fade_level_label, FALSE, FALSE, 2);
197 gtk_box_pack_start(GTK_BOX(vbox), fade_level_scroll, FALSE, FALSE, 2);
198 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 20);
199 gtk_widget_show(vbox);
201 gtk_container_add(GTK_CONTAINER(level_window), vbox);
202 gtk_widget_show(level_window);
205 void level_set_current(void)
210 gtk_adjustment_set_value(GTK_ADJUSTMENT(black_level_adj), black_level * 255);
211 gtk_adjustment_set_value(GTK_ADJUSTMENT(white_level_adj), white_level * 255);
212 gtk_adjustment_set_value(GTK_ADJUSTMENT(fade_level_adj), fade_level * 100);