2 #include <gdk/gdkkeysyms.h>
8 #include "brightcontrast.h"
9 #include "../src/mark.h"
13 #define min(x,y) ((x < y) ? x : y)
15 static GtkWidget *bc_window = NULL;
16 static GtkObject *bright_adj;
17 static GtkObject *contrast_adj;
19 static void bc_destroy(GtkWidget *widget, gpointer priv)
21 gtk_widget_destroy(bc_window);
25 static gboolean bc_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(bc_window);
47 static void reset_event(gpointer *priv)
49 anything_modified = 1;
51 mark_palette[mark_selected].bright = 0;
52 mark_palette[mark_selected].contrast = 1;
53 gtk_adjustment_set_value(GTK_ADJUSTMENT(bright_adj), mark_palette[mark_selected].bright * 100);
54 gtk_adjustment_set_value(GTK_ADJUSTMENT(contrast_adj), mark_palette[mark_selected].contrast * 100);
55 update_color(mark_selected);
57 draw_image(0, 0, -1, -1);
60 static void apply_event(gpointer *priv)
62 anything_modified = 1;
64 mark_palette[mark_selected].bright = GTK_ADJUSTMENT(bright_adj)->value / 100.0;
65 mark_palette[mark_selected].contrast = GTK_ADJUSTMENT(contrast_adj)->value / 100.0;
66 update_color(mark_selected);
68 draw_image(0, 0, -1, -1);
71 static GtkWidget *xpm_label_box( const gchar *stock_id,
78 /* Create box for image and label */
79 box = gtk_hbox_new (FALSE, 0);
80 gtk_container_set_border_width (GTK_CONTAINER (box), 4);
82 /* Now on to the image stuff */
83 image = gtk_image_new_from_stock(stock_id, -1);
85 /* Create a label for the button */
86 label = gtk_label_new (label_text);
88 /* Pack the image and label into the box */
89 gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 3);
90 gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 3);
92 gtk_widget_show (image);
93 gtk_widget_show (label);
98 void bc_event(gpointer priv)
100 GtkWidget *vbox, *hbox;
102 GtkWidget *root_menu;
104 GtkWidget *menu_item;
105 GtkWidget *bright_label;
106 GtkWidget *bright_scroll;
107 GtkWidget *contrast_label;
108 GtkWidget *contrast_scroll;
109 GtkWidget *button_apply;
110 GtkWidget *button_reset;
114 gtk_widget_destroy(bc_window);
120 bc_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
121 gtk_window_set_default_size(GTK_WINDOW(bc_window), 500, 0);
122 gtk_window_set_title(GTK_WINDOW(bc_window), "Brightness + Contrast");
123 g_signal_connect(bc_window, "destroy", G_CALLBACK(bc_destroy), bc_window);
124 g_signal_connect(bc_window, "key_press_event", G_CALLBACK(bc_key_press), bc_window);
127 menu_bar = gtk_menu_bar_new();
128 gtk_widget_show(menu_bar);
129 menu = gtk_menu_new();
130 root_menu = gtk_menu_item_new_with_mnemonic("_File");
131 gtk_widget_show(root_menu);
133 menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, NULL);
134 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
135 g_signal_connect_swapped(menu_item, "activate", G_CALLBACK(close_event), bc_window);
136 gtk_widget_show(menu_item);
137 gtk_menu_item_set_submenu(GTK_MENU_ITEM(root_menu), menu);
138 gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), root_menu);
140 /* create scale widgets */
141 bright_label = gtk_label_new("Brightness:");
142 gtk_widget_show(GTK_WIDGET(bright_label));
143 bright_adj = gtk_adjustment_new(mark_palette[mark_selected].bright * 100, -200, 201, 1, 1, 1);
144 bright_scroll = gtk_hscale_new(GTK_ADJUSTMENT(bright_adj));
145 gtk_widget_show(bright_scroll);
146 contrast_label = gtk_label_new("Contrast:");
147 gtk_widget_show(GTK_WIDGET(contrast_label));
148 contrast_adj = gtk_adjustment_new(mark_palette[mark_selected].contrast * 100, -500, 501, 1, 1, 1);
149 contrast_scroll = gtk_hscale_new(GTK_ADJUSTMENT(contrast_adj));
150 gtk_widget_show(contrast_scroll);
153 button_reset = gtk_button_new();
154 g_signal_connect(button_reset, "clicked", G_CALLBACK(reset_event), NULL);
155 box = xpm_label_box (GTK_STOCK_REMOVE, "Reset");
156 gtk_widget_show (box);
157 gtk_container_add (GTK_CONTAINER (button_reset), box);
158 gtk_widget_show(button_reset);
160 button_apply = gtk_button_new();
161 g_signal_connect(button_apply, "clicked", G_CALLBACK(apply_event), NULL);
162 box = xpm_label_box (GTK_STOCK_APPLY, "Apply");
163 gtk_widget_show (box);
164 gtk_container_add (GTK_CONTAINER (button_apply), box);
165 gtk_widget_show(button_apply);
167 hbox = gtk_hbox_new(FALSE, 0);
168 gtk_box_pack_end(GTK_BOX(hbox), button_apply, FALSE, FALSE, 2);
169 gtk_box_pack_end(GTK_BOX(hbox), button_reset, FALSE, FALSE, 2);
170 gtk_widget_show(hbox);
172 /* create vbox (complete window) */
173 vbox = gtk_vbox_new(FALSE, 0);
174 gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 2);
175 gtk_box_pack_start(GTK_BOX(vbox), bright_label, FALSE, FALSE, 2);
176 gtk_box_pack_start(GTK_BOX(vbox), bright_scroll, FALSE, FALSE, 2);
177 gtk_box_pack_start(GTK_BOX(vbox), contrast_label, FALSE, FALSE, 2);
178 gtk_box_pack_start(GTK_BOX(vbox), contrast_scroll, FALSE, FALSE, 2);
179 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 20);
180 gtk_widget_show(vbox);
182 gtk_container_add(GTK_CONTAINER(bc_window), vbox);
183 gtk_widget_show(bc_window);
186 void bc_set_current(void)
191 gtk_adjustment_set_value(GTK_ADJUSTMENT(bright_adj), mark_palette[mark_selected].bright * 100);
192 gtk_adjustment_set_value(GTK_ADJUSTMENT(contrast_adj), mark_palette[mark_selected].contrast * 100);