Mercurial > cropper
annotate callbacks.c @ 14:da18f2d4f92f
removed all buttons and stuff from the window; cleaned up
author | meillo@marmaro.de |
---|---|
date | Thu, 04 Mar 2010 18:31:28 +0100 |
parents | 13bc21684b8a |
children | 7dbf3879939a |
rev | line source |
---|---|
0 | 1 #include <gtk/gtk.h> |
7
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
2 #include <gdk-pixbuf/gdk-pixbuf.h> |
13 | 3 #include <gdk/gdkkeysyms.h> |
2
e359bea4c8ac
added code for ratio swap; new names for ratio operations; added main.h; some more
meillo@marmaro.de
parents:
1
diff
changeset
|
4 #include "main.h" |
0 | 5 #include "callbacks.h" |
6 #include "support.h" | |
7 | |
7
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
8 int image_width; |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
9 int image_height; |
10 | 10 float inc = 0.3; |
13 | 11 float zoom = 1.0; |
11 | 12 |
13 | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
14 /* |
11 | 15 void |
16 update_spin_button_ratio(GtkWidget* spinbutton) | |
17 { | |
3 | 18 g_print("ratio change: %f\n", ratio); |
19 on_ratio_w_spinbutton_value_changed(spinbutton, NULL); | |
20 } | |
0 | 21 |
22 | |
11 | 23 void |
24 on_ratio_none_activate(GtkMenuItem* menuitem, gpointer user_data) | |
25 { | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
26 ratio = 1; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
27 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
28 } |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
29 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
30 |
11 | 31 void |
32 on_ratio_square_activate(GtkMenuItem* menuitem, gpointer user_data) | |
33 { | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
34 ratio = 1; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
35 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
36 } |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
37 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
38 |
11 | 39 void |
40 on_ratio_4x3_activate(GtkMenuItem* menuitem, gpointer user_data) | |
41 { | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
42 ratio = 4.0/3.0; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
43 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
44 } |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
45 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
46 |
11 | 47 void |
48 on_ratio_3x2_activate(GtkMenuItem* menuitem, gpointer user_data) | |
49 { | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
50 ratio = 1.5; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
51 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
52 } |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
53 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
54 |
11 | 55 void |
56 on_ratio_custom_activate(GtkMenuItem* menuitem, gpointer user_data) | |
57 { | |
58 ratio = gtk_spin_button_get_value(lookup_widget(cropper_window, "ratio_w_spinbutton")) | |
59 / gtk_spin_button_get_value(lookup_widget(cropper_window, "ratio_h_spinbutton")); | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
60 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
61 } |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
62 */ |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
63 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
64 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
65 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
66 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
67 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
68 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
69 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
70 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
71 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
72 /* |
11 | 73 static void |
74 ratio_optionmenu_changed_cb(GtkOptionMenu* optionmenu, gpointer unser_data) | |
75 { | |
76 int idx = gtk_option_menu_get_history(optionmenu); | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
77 int w = 1, h = 1; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
78 gboolean use_ratio = TRUE; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
79 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
80 switch (idx) { |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
81 case GTH_CROP_RATIO_NONE: |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
82 use_ratio = FALSE; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
83 break; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
84 case GTH_CROP_RATIO_SQUARE: |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
85 w = h = 1; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
86 break; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
87 case GTH_CROP_RATIO_IMAGE: |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
88 w = lookup_widget(cropper_window, "image_width"); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
89 h = lookup_widget(cropper_window, "image_height"); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
90 break; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
91 case GTH_CROP_RATIO_DISPLAY: |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
92 w = lookup_widget(cropper_window, "display_width"); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
93 h = lookup_widget(cropper_window, "display_height"); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
94 break; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
95 case GTH_CROP_RATIO_4_3: |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
96 w = 4; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
97 h = 3; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
98 break; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
99 case GTH_CROP_RATIO_4_6: |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
100 w = 4; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
101 h = 6; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
102 break; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
103 case GTH_CROP_RATIO_CUSTOM: |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
104 default: |
11 | 105 w = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON( |
106 lookup_widget(cropper_window, "ratio_w_spinbutton"))); | |
107 h = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON( | |
108 lookup_widget(cropper_window, "ratio_h_spinbutton"))); | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
109 break; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
110 } |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
111 |
11 | 112 gtk_widget_set_sensitive(lookup_widget(cropper_window, "custom_ratio_box"), |
113 idx == GTH_CROP_RATIO_CUSTOM); | |
114 set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_w_spinbutton"), w); | |
115 set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_h_spinbutton"), h); | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
116 |
11 | 117 gth_image_selector_set_ratio(GTH_IMAGE_SELECTOR(lookup_widget(cropper_window, "crop_image")), |
118 use_ratio, (double) w / h); | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
119 } |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
120 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
121 |
11 | 122 static void |
123 ratio_value_changed_cb(GtkSpinButton* spin, gpointer unser_data) | |
124 { | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
125 int w, h; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
126 |
11 | 127 w = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_w_spinbutton")); |
128 h = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_h_spinbutton")); | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
129 |
11 | 130 gth_image_selector_set_ratio(GTH_IMAGE_SELECTOR( |
131 lookup_widget(cropper_window, "crop_image")), TRUE, (double) w / h); | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
132 } |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
133 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
134 |
11 | 135 static void |
136 ratio_swap_button_cb(GtkButton* button, gpointer unser_data) | |
137 { | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
138 int w, h; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
139 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
140 w = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_w_spinbutton")); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
141 h = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_h_spinbutton")); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
142 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
143 set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_w_spinbutton"), h); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
144 set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_h_spinbutton"), w); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
145 |
11 | 146 gth_image_selector_set_ratio(GTH_IMAGE_SELECTOR(lookup_widget(cropper_window, |
147 "crop_image")), TRUE, (double) h / w); | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
148 } |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
149 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
150 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
151 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
152 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
153 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
154 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
155 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
156 |
11 | 157 void |
158 on_ratio_w_spinbutton_value_changed(GtkSpinButton* spinbutton, gpointer user_data) | |
159 { | |
3 | 160 g_print("spinbutton W - ratio: %f\n", ratio); |
11 | 161 gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_h_spinbutton"), |
162 gtk_spin_button_get_value(spinbutton) / ratio); | |
0 | 163 } |
164 | |
165 | |
11 | 166 void |
167 on_ratio_w_spinbutton_change_value(GtkSpinButton* spinbutton, GtkScrollType scroll, gpointer user_data) | |
168 { | |
0 | 169 } |
170 | |
171 | |
11 | 172 void |
173 on_ratio_h_spinbutton_change_value(GtkSpinButton* spinbutton, GtkScrollType scroll, gpointer user_data) | |
174 { | |
0 | 175 } |
176 | |
177 | |
11 | 178 void |
179 on_ratio_h_spinbutton_value_changed(GtkSpinButton* spinbutton, gpointer user_data) | |
180 { | |
3 | 181 g_print("spinbutton H - ratio: %f\n", ratio); |
11 | 182 gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_w_spinbutton"), |
183 gtk_spin_button_get_value(spinbutton) * ratio); | |
0 | 184 |
185 } | |
186 | |
187 | |
11 | 188 void |
189 on_ratio_swap_button_clicked(GtkButton* button, gpointer user_data) | |
190 { | |
2
e359bea4c8ac
added code for ratio swap; new names for ratio operations; added main.h; some more
meillo@marmaro.de
parents:
1
diff
changeset
|
191 |
3 | 192 ratio = 1.0 / ratio; |
11 | 193 gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_w_spinbutton"), |
194 gtk_spin_button_get_value(lookup_widget(cropper_window, | |
195 "ratio_h_spinbutton"))); | |
3 | 196 gtk_spin_button_update(lookup_widget(cropper_window, "ratio_w_spinbutton")); |
197 | |
2
e359bea4c8ac
added code for ratio swap; new names for ratio operations; added main.h; some more
meillo@marmaro.de
parents:
1
diff
changeset
|
198 } |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
199 */ |
2
e359bea4c8ac
added code for ratio swap; new names for ratio operations; added main.h; some more
meillo@marmaro.de
parents:
1
diff
changeset
|
200 |
e359bea4c8ac
added code for ratio swap; new names for ratio operations; added main.h; some more
meillo@marmaro.de
parents:
1
diff
changeset
|
201 |
13 | 202 void |
203 update_title(char* zoom) | |
204 { | |
205 char title[128]; | |
206 snprintf(title, 128, "cropper (%s) %dx%d+%d+%d", zoom, w, h, x, y); | |
207 gtk_window_set_title(GTK_WINDOW(cropper_window), title); | |
208 } | |
209 | |
2
e359bea4c8ac
added code for ratio swap; new names for ratio operations; added main.h; some more
meillo@marmaro.de
parents:
1
diff
changeset
|
210 |
7
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
211 /* zoom */ |
11 | 212 void |
213 set_zoom() | |
214 { | |
8
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
215 static GdkPixbuf* pixbuf_new; |
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
216 g_object_unref(pixbuf_new); |
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
217 |
13 | 218 pixbuf_new = gdk_pixbuf_scale_simple(image_buffer, image_width*zoom, image_height*zoom, |
219 GDK_INTERP_BILINEAR); | |
8
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
220 gtk_image_set_from_pixbuf((GtkImage*) lookup_widget(cropper_window, "image_area"), pixbuf_new); |
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
221 } |
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
222 |
11 | 223 void |
224 on_zoom_in_button_clicked(GtkObject* object, gpointer user_data) | |
225 { | |
13 | 226 zoom *= 1 + inc; |
8
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
227 set_zoom(); |
7
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
228 } |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
229 |
11 | 230 void |
231 on_zoom_out_button_clicked(GtkObject* object, gpointer user_data) | |
232 { | |
13 | 233 zoom *= 1 - inc; |
8
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
234 set_zoom(); |
7
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
235 } |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
236 |
11 | 237 void |
238 on_zoom_100_button_clicked(GtkObject* object, gpointer user_data) | |
239 { | |
13 | 240 zoom = 1.0; |
8
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
241 set_zoom(); |
7
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
242 } |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
243 |
11 | 244 void |
245 on_zoom_fit_button_clicked(GtkObject* object, gpointer user_data) | |
246 { | |
8
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
247 int w, h; |
13 | 248 float zw, zh; |
8
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
249 GtkWidget* image_a; |
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
250 |
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
251 image_a = (GtkWidget*) lookup_widget(cropper_window, "image_area"); |
11 | 252 gdk_drawable_get_size(image_a->window, &w, &h); |
8
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
253 |
13 | 254 zw = w*1.0 / image_width; |
255 zh = h*1.0 / image_height; | |
256 | |
257 zoom = (zw < zh) ? zw : zh; | |
8
b0824876d379
memory is now freed aswell; added (a crappy) zoom2fit; did some casts to get rid of warnings
meillo@marmaro.de
parents:
7
diff
changeset
|
258 set_zoom(); |
7
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
259 } |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
260 |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
261 |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
262 |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
263 |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
264 |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
265 |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
266 |
11 | 267 void |
14
da18f2d4f92f
removed all buttons and stuff from the window; cleaned up
meillo@marmaro.de
parents:
13
diff
changeset
|
268 crop(void) |
11 | 269 { |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
270 char crop_call[256]; |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
271 |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
272 sprintf(crop_call, "echo \"convert -crop %ix%i+%i+%i %s cropped_%s\"", |
11 | 273 gtk_spin_button_get_value_as_int((GtkSpinButton*) lookup_widget(cropper_window, |
274 "crop_width_spinbutton")), | |
275 gtk_spin_button_get_value_as_int((GtkSpinButton*) lookup_widget(cropper_window, | |
276 "crop_height_spinbutton")), | |
277 gtk_spin_button_get_value_as_int((GtkSpinButton*) lookup_widget(cropper_window, | |
278 "crop_x_spinbutton")), | |
279 gtk_spin_button_get_value_as_int((GtkSpinButton*) lookup_widget(cropper_window, | |
280 "crop_y_spinbutton")), | |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
281 image_filename, |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
282 image_filename |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
283 ); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
284 system(crop_call); |
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
285 gtk_main_quit(); |
0 | 286 } |
287 | |
11 | 288 |
289 void | |
290 on_cropper_window_create(GtkObject* object, gpointer user_data) | |
291 { | |
7
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
292 image_width = gdk_pixbuf_get_width(image_buffer); |
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
293 image_height = gdk_pixbuf_get_height(image_buffer); |
10 | 294 |
295 /* | |
11 | 296 image_buffer = gdk_pixbuf_new_from_file(image_filename, NULL); |
297 image_area = gtk_image_new_from_pixbuf(image_buffer); | |
10 | 298 |
299 int w, h; | |
300 GtkWidget* image_a; | |
301 | |
302 image_a = (GtkWidget*) lookup_widget(cropper_window, "image_area"); | |
11 | 303 gdk_drawable_get_size(image_a->window, &w, &h); |
10 | 304 |
305 image_width = w - 200; | |
306 image_height = h - 150; | |
307 set_zoom(); | |
308 */ | |
7
ec2d11d96fb0
image is now gdk-pixbuff; zoom implemented in a basic way
meillo@marmaro.de
parents:
4
diff
changeset
|
309 } |
4
2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
meillo@marmaro.de
parents:
3
diff
changeset
|
310 |
11 | 311 void |
312 on_cropper_window_destroy(GtkObject* object, gpointer user_data) | |
313 { | |
0 | 314 gtk_main_quit(); |
315 } | |
316 | |
13 | 317 |
318 | |
319 | |
320 gboolean | |
321 on_key_press(GtkWidget* window, GdkEventKey* pKey, gpointer userdata) | |
322 { | |
323 if (pKey->type != GDK_KEY_PRESS) { | |
324 return FALSE; | |
325 } | |
326 switch (pKey->keyval) { | |
14
da18f2d4f92f
removed all buttons and stuff from the window; cleaned up
meillo@marmaro.de
parents:
13
diff
changeset
|
327 case GDK_q: |
da18f2d4f92f
removed all buttons and stuff from the window; cleaned up
meillo@marmaro.de
parents:
13
diff
changeset
|
328 gtk_main_quit(); |
da18f2d4f92f
removed all buttons and stuff from the window; cleaned up
meillo@marmaro.de
parents:
13
diff
changeset
|
329 break; |
da18f2d4f92f
removed all buttons and stuff from the window; cleaned up
meillo@marmaro.de
parents:
13
diff
changeset
|
330 case GDK_Return: |
da18f2d4f92f
removed all buttons and stuff from the window; cleaned up
meillo@marmaro.de
parents:
13
diff
changeset
|
331 crop(); |
da18f2d4f92f
removed all buttons and stuff from the window; cleaned up
meillo@marmaro.de
parents:
13
diff
changeset
|
332 break; |
13 | 333 case GDK_plus: |
334 on_zoom_in_button_clicked(NULL, userdata); | |
335 break; | |
336 case GDK_minus: | |
337 on_zoom_out_button_clicked(NULL, userdata); | |
338 break; | |
339 case GDK_0: | |
340 on_zoom_100_button_clicked(NULL, userdata); | |
341 break; | |
342 case GDK_f: | |
343 on_zoom_fit_button_clicked(NULL, userdata); | |
344 break; | |
345 } | |
346 return TRUE; | |
347 } | |
348 | |
349 |