2 #include <gdk/gdkkeysyms.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;
18 static GtkObject *alpha_adj;
20 static void bc_destroy(GtkWidget *widget, gpointer priv)
22 gtk_widget_destroy(bc_window);
26 static gboolean bc_key_press(GtkWidget *widget, GdkEventKey *event, gpointer priv)
28 switch (event->keyval) {
31 if (event->state & GDK_CONTROL_MASK) {
32 gtk_widget_destroy(widget);
36 ;//printf("%x\n", event->keyval);
42 static void close_event(gpointer *priv)
44 gtk_widget_destroy(bc_window);
48 static void reset_event(gpointer *priv)
50 anything_modified = 1;
52 mark_palette[mark_selected].bright = 0;
53 mark_palette[mark_selected].contrast = 1;
54 mark_palette[mark_selected].alpha = 1;
55 gtk_adjustment_set_value(GTK_ADJUSTMENT(bright_adj), mark_palette[mark_selected].bright * 100);
56 gtk_adjustment_set_value(GTK_ADJUSTMENT(contrast_adj), mark_palette[mark_selected].contrast * 100);
57 gtk_adjustment_set_value(GTK_ADJUSTMENT(alpha_adj), mark_palette[mark_selected].alpha * 100);
58 update_color(mark_selected);
59 draw_image(0, 0, -1, -1); /* alpha may change, so always update */
62 static void apply_event(gpointer *priv)
64 anything_modified = 1;
66 mark_palette[mark_selected].bright = GTK_ADJUSTMENT(bright_adj)->value / 100.0;
67 mark_palette[mark_selected].contrast = GTK_ADJUSTMENT(contrast_adj)->value / 100.0;
68 mark_palette[mark_selected].alpha = GTK_ADJUSTMENT(alpha_adj)->value / 100.0;
69 update_color(mark_selected);
70 draw_image(0, 0, -1, -1); /* alpha may change, so always update */
73 static GtkWidget *xpm_label_box( const gchar *stock_id,
80 /* Create box for image and label */
81 box = gtk_hbox_new (FALSE, 0);
82 gtk_container_set_border_width (GTK_CONTAINER (box), 4);
84 /* Now on to the image stuff */
85 image = gtk_image_new_from_stock(stock_id, -1);
87 /* Create a label for the button */
88 label = gtk_label_new (label_text);
90 /* Pack the image and label into the box */
91 gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 3);
92 gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 3);
94 gtk_widget_show (image);
95 gtk_widget_show (label);
100 void bc_event(gpointer priv)
102 GtkWidget *vbox, *hbox;
104 GtkWidget *root_menu;
106 GtkWidget *menu_item;
107 GtkWidget *bright_label;
108 GtkWidget *bright_scroll;
109 GtkWidget *contrast_label;
110 GtkWidget *contrast_scroll;
111 GtkWidget *alpha_label;
112 GtkWidget *alpha_scroll;
113 GtkWidget *button_apply;
114 GtkWidget *button_reset;
118 gtk_widget_destroy(bc_window);
124 bc_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
125 gtk_window_set_default_size(GTK_WINDOW(bc_window), 500, 0);
126 gtk_window_set_title(GTK_WINDOW(bc_window), "Brightness + Contrast");
127 g_signal_connect(bc_window, "destroy", G_CALLBACK(bc_destroy), bc_window);
128 g_signal_connect(bc_window, "key_press_event", G_CALLBACK(bc_key_press), bc_window);
131 menu_bar = gtk_menu_bar_new();
132 gtk_widget_show(menu_bar);
133 menu = gtk_menu_new();
134 root_menu = gtk_menu_item_new_with_mnemonic("_File");
135 gtk_widget_show(root_menu);
137 menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, NULL);
138 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
139 g_signal_connect_swapped(menu_item, "activate", G_CALLBACK(close_event), bc_window);
140 gtk_widget_show(menu_item);
141 gtk_menu_item_set_submenu(GTK_MENU_ITEM(root_menu), menu);
142 gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), root_menu);
144 /* create scale widgets */
145 bright_label = gtk_label_new("Brightness:");
146 gtk_widget_show(GTK_WIDGET(bright_label));
147 bright_adj = gtk_adjustment_new(mark_palette[mark_selected].bright * 100, -200, 201, 1, 1, 1);
148 bright_scroll = gtk_hscale_new(GTK_ADJUSTMENT(bright_adj));
149 gtk_widget_show(bright_scroll);
150 contrast_label = gtk_label_new("Contrast:");
151 gtk_widget_show(GTK_WIDGET(contrast_label));
152 contrast_adj = gtk_adjustment_new(mark_palette[mark_selected].contrast * 100, -500, 501, 1, 1, 1);
153 contrast_scroll = gtk_hscale_new(GTK_ADJUSTMENT(contrast_adj));
154 gtk_widget_show(contrast_scroll);
155 alpha_label = gtk_label_new("Alpha:");
156 gtk_widget_show(GTK_WIDGET(alpha_label));
157 alpha_adj = gtk_adjustment_new(mark_palette[mark_selected].alpha * 100, 0, 101, 1, 1, 1);
158 alpha_scroll = gtk_hscale_new(GTK_ADJUSTMENT(alpha_adj));
159 gtk_widget_show(alpha_scroll);
162 button_reset = gtk_button_new();
163 g_signal_connect(button_reset, "clicked", G_CALLBACK(reset_event), NULL);
164 box = xpm_label_box (GTK_STOCK_REMOVE, "Reset");
165 gtk_widget_show (box);
166 gtk_container_add (GTK_CONTAINER (button_reset), box);
167 gtk_widget_show(button_reset);
169 button_apply = gtk_button_new();
170 g_signal_connect(button_apply, "clicked", G_CALLBACK(apply_event), NULL);
171 box = xpm_label_box (GTK_STOCK_APPLY, "Apply");
172 gtk_widget_show (box);
173 gtk_container_add (GTK_CONTAINER (button_apply), box);
174 gtk_widget_show(button_apply);
176 hbox = gtk_hbox_new(FALSE, 0);
177 gtk_box_pack_end(GTK_BOX(hbox), button_apply, FALSE, FALSE, 2);
178 gtk_box_pack_end(GTK_BOX(hbox), button_reset, FALSE, FALSE, 2);
179 gtk_widget_show(hbox);
181 /* create vbox (complete window) */
182 vbox = gtk_vbox_new(FALSE, 0);
183 gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 2);
184 gtk_box_pack_start(GTK_BOX(vbox), bright_label, FALSE, FALSE, 2);
185 gtk_box_pack_start(GTK_BOX(vbox), bright_scroll, FALSE, FALSE, 2);
186 gtk_box_pack_start(GTK_BOX(vbox), contrast_label, FALSE, FALSE, 2);
187 gtk_box_pack_start(GTK_BOX(vbox), contrast_scroll, FALSE, FALSE, 2);
188 gtk_box_pack_start(GTK_BOX(vbox), alpha_label, FALSE, FALSE, 2);
189 gtk_box_pack_start(GTK_BOX(vbox), alpha_scroll, FALSE, FALSE, 2);
190 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 20);
191 gtk_widget_show(vbox);
193 gtk_container_add(GTK_CONTAINER(bc_window), vbox);
194 gtk_widget_show(bc_window);
197 void bc_set_current(void)
202 gtk_adjustment_set_value(GTK_ADJUSTMENT(bright_adj), mark_palette[mark_selected].bright * 100);
203 gtk_adjustment_set_value(GTK_ADJUSTMENT(contrast_adj), mark_palette[mark_selected].contrast * 100);
204 gtk_adjustment_set_value(GTK_ADJUSTMENT(alpha_adj), mark_palette[mark_selected].alpha * 100);