1 /* Panorama_Tools - Generate, Edit and Convert Panoramic Images 2 Copyright (C) 1998,1999 - Helmut Dersch der@fh-furtwangen.de 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 2, or (at your option) 7 any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this software; see the file COPYING. If not, a copy 16 can be downloaded from http://www.gnu.org/licenses/gpl.html, or 17 obtained by writing to the Free Software Foundation, Inc., 18 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ 19 20 /*------------------------------------------------------------*/ 21 22 #ifndef SYS_X11_H 23 #define SYS_X11_H 24 25 #include <libgimp/gimp.h> 26 #include <gtk/gtk.h> 27 28 29 #include "filter.h" 30 31 #define ENTRY_WIDTH 30 32 33 34 struct wdata 35 { 36 GtkWidget *widg; 37 gpointer data; 38 }; 39 40 typedef struct wdata wdata; 41 42 extern int ptools_isOK; 43 44 void pt_widget_destroy (GtkWidget *widget); 45 void pt_main_destroy (GtkWidget *widget); 46 47 void DispPrg (GtkWidget *widget, gpointer data); 48 void SetLumOpt (GtkWidget *widget, gpointer data); 49 void SetCPrefs (GtkWidget *widget, gpointer data); 50 void SetRadOpt (GtkWidget *widget, gpointer data); 51 void SetHorOpt (GtkWidget *widget, gpointer data); 52 void SetVerOpt (GtkWidget *widget, gpointer data); 53 void SetScOpt (GtkWidget *widget, gpointer data); 54 void SetShOpt (GtkWidget *widget, gpointer data); 55 void SetAdPrefs (GtkWidget *widget, gpointer data); 56 void SetCrOpt (GtkWidget *widget, gpointer data); 57 void SetPerspPrefs (GtkWidget *widget, gpointer data); 58 void SetRem (GtkWidget *widget, gpointer data); 59 void SetSiz (GtkWidget *widget, gpointer data); 60 void SetIntp (GtkWidget *widget, gpointer data); 61 void InfoPrg (GtkWidget *widget, gpointer data); 62 void SetCutOpt (GtkWidget *widget, gpointer data); 63 void SetPanOpt (GtkWidget *widget, gpointer data); 64 void SetFrPrefs (GtkWidget *widget, gpointer data); 65 66 67 void ptool_load_callback (GtkWidget *widget, gpointer data); 68 void ptool_save_callback (GtkWidget *widget, gpointer data); 69 70 void pt_set_size_source (GtkWidget *widget, gpointer data); 71 void pt_load_corr (GtkWidget *widget, gpointer data); 72 void pt_save_corr (GtkWidget *widget, gpointer data); 73 void pt_set_file (GtkWidget *widget, gpointer data); 74 void pt_find_file (GtkWidget *widget, gpointer data); 75 76 77 #define CheckButton( kRes, isChecked ) \ 78 gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON (dp[kRes]), isChecked ); \ 79 isBool[kRes] = ( (isChecked) ? 1 : 2 ); 80 81 #define SetText( kRes, string, var ) \ 82 sprintf( numString, string, var); \ 83 gtk_entry_set_text(GTK_ENTRY(dp[kRes]), numString); 84 85 #define SetLbl( kRes, string) \ 86 gtk_label_set(GTK_LABEL(dp[kRes]), string); 87 88 89 #define GetText( kRes, string, varaddr ) \ 90 sscanf( gtk_entry_get_text(GTK_ENTRY(dp[kRes])), string, varaddr); 91 92 93 #define MAKE_TABLE( hor, ver ) \ 94 table = gtk_table_new(hor, ver, FALSE); \ 95 gtk_container_border_width(GTK_CONTAINER(table), 10); \ 96 gtk_container_add(GTK_CONTAINER(frame), table); \ 97 gtk_widget_show(table); \ 98 99 100 #define MAKE_TEXT_WID( kRes , left, right, top, bottom ) \ 101 dp[kRes] = gtk_entry_new( ); \ 102 gtk_widget_set_usize( dp[kRes], ENTRY_WIDTH, 0); \ 103 gtk_table_attach(GTK_TABLE(table), dp[kRes],left, right, top, bottom, \ 104 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 105 gtk_widget_show(dp[kRes]); 106 107 #define MAKE_FTEXT_WID( kRes , left, right, top, bottom ) \ 108 dp[kRes] = gtk_entry_new( ); \ 109 gtk_widget_set_usize( dp[kRes], ENTRY_WIDTH, 0); \ 110 gtk_table_attach(GTK_TABLE(ftable), dp[kRes],left, right, top, bottom, \ 111 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 112 gtk_widget_show(dp[kRes]); 113 114 115 116 #define MAKE_LABEL_WID( kRes , left, right, top, bottom ) \ 117 dp[kRes] = gtk_label_new(""); \ 118 gtk_table_attach(GTK_TABLE(table),dp[kRes],left, right, top, bottom, \ 119 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 120 gtk_widget_show(dp[kRes]); 121 122 #define MAKE_TEXTLABEL( text , table, left, right, top, bottom ) \ 123 label = gtk_label_new(text); \ 124 gtk_table_attach(GTK_TABLE(table),label,left, right, top, bottom, \ 125 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 126 gtk_widget_show(label); 127 128 129 130 #define MAKE_CHECK_BOX( kRes, label, left, right, top, bottom ) \ 131 dp[kRes] = gtk_check_button_new_with_label ( label ); \ 132 gtk_table_attach(GTK_TABLE(table),dp[kRes],left, right, top, bottom, \ 133 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 134 gtk_widget_show(dp[kRes]); 135 136 #define MAKE_FCHECK_BOX( kRes, label, left, right, top, bottom ) \ 137 dp[kRes] = gtk_check_button_new_with_label ( label ); \ 138 gtk_table_attach(GTK_TABLE(ftable),dp[kRes],left, right, top, bottom, \ 139 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 140 gtk_widget_show(dp[kRes]); 141 142 #define MAKE_RADIO_BUTTON( kRes, label ) \ 143 dp[kRes] = gtk_radio_button_new_with_label( group, label ); \ 144 gtk_box_pack_start (GTK_BOX (box), dp[kRes], TRUE, TRUE, 0); \ 145 group = gtk_radio_button_group (GTK_RADIO_BUTTON (dp[kRes])); \ 146 gtk_widget_show (dp[kRes]); 147 148 #define INSERT_BUTTON( left, right, top, bottom ) \ 149 gtk_table_attach(GTK_TABLE(table), button, left, right, top, bottom, \ 150 GTK_FILL | GTK_EXPAND, GTK_FILL, 1, 1); 151 152 #define INSERT_FBUTTON( left, right, top, bottom ) \ 153 gtk_table_attach(GTK_TABLE(ftable), button, left, right, top, bottom, \ 154 GTK_FILL | GTK_EXPAND, GTK_FILL, 1, 1); 155 156 157 158 #define NUMRES 30 159 160 161 #define GenCallBack( VarType, DlgRes, Title, SetControl,SText, \ 162 GText, DlgAction, WinFunc) \ 163 void WinFunc (GtkWidget *widget, gpointer data) \ 164 { \ 165 static GtkWidget *dlg; \ 166 GtkWidget *table, *button, *frame, *box, *label; \ 167 GSList *group = NULL; \ 168 static int isBool[ NUMRES ]; \ 169 int i; \ 170 static GtkWidget* dp[ NUMRES ]; \ 171 static VarType localPrefs, *thePrefs; \ 172 char numString[32]; \ 173 static int isMain; \ 174 \ 175 if( data != NULL ) \ 176 { \ 177 isMain = ( widget == NULL ); \ 178 thePrefs = (VarType*)data; \ 179 memcpy( &localPrefs, thePrefs, sizeof( VarType )); \ 180 for(i=0; i<NUMRES; i++) isBool[i] = FALSE; \ 181 \ 182 \ 183 dlg = gtk_dialog_new(); \ 184 gtk_window_set_title(GTK_WINDOW(dlg), Title); \ 185 gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE); \ 186 gtk_signal_connect_object(GTK_OBJECT(dlg), "destroy", \ 187 (GtkSignalFunc) (isMain ? pt_main_destroy : pt_widget_destroy), \ 188 GTK_OBJECT (dlg) ); \ 189 \ 190 frame = gtk_frame_new("Parameter Settings"); \ 191 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 192 gtk_container_border_width(GTK_CONTAINER(frame), 10); \ 193 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), frame, TRUE, TRUE, 0);\ 194 \ 195 button = gtk_button_new_with_label ("OK"); \ 196 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); \ 197 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 198 (GtkSignalFunc) WinFunc, \ 199 NULL ); \ 200 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), \ 201 button, TRUE, TRUE, 0); \ 202 gtk_widget_grab_default (button); \ 203 gtk_widget_show (button); \ 204 \ 205 button = gtk_button_new_with_label ("Cancel"); \ 206 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); \ 207 gtk_signal_connect_object (GTK_OBJECT (button), "clicked", \ 208 (GtkSignalFunc) (isMain ? pt_main_destroy : pt_widget_destroy), \ 209 GTK_OBJECT (dlg) ); \ 210 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), \ 211 button, TRUE, TRUE, 0); \ 212 gtk_widget_show (button); \ 213 gtk_widget_show(frame); \ 214 \ 215 DlgRes \ 216 SText \ 217 SetControl \ 218 \ 219 gtk_widget_show(dlg); \ 220 } \ 221 else \ 222 { \ 223 GText \ 224 \ 225 for(i=0; i < NUMRES; i++) \ 226 { \ 227 if( isBool[i] == 1 ) \ 228 { \ 229 switch(i) \ 230 DlgAction \ 231 } \ 232 } \ 233 for(i=0; i < NUMRES; i++) \ 234 { \ 235 if( isBool[i] && (GTK_TOGGLE_BUTTON (dp[i])->active) ) \ 236 { \ 237 switch(i) \ 238 DlgAction \ 239 } \ 240 } \ 241 memcpy( thePrefs, &localPrefs, sizeof( VarType) ); \ 242 ptools_isOK =TRUE; \ 243 if(isMain) gtk_main_quit(); \ 244 else gtk_widget_destroy( dlg ); \ 245 } \ 246 247 248 249 250 251 #define GenDialog( VarType, DlgRes, Title, SetControl,SText, \ 252 GText, DlgAction, WinFunc) \ 253 gchar **argv; \ 254 gint argc; \ 255 \ 256 argc = 1; \ 257 argv = g_new(gchar *, 1); \ 258 argv[0] = g_strdup("dummy"); \ 259 \ 260 gtk_init(&argc, &argv); \ 261 gtk_rc_parse(gimp_gtkrc()); \ 262 \ 263 WinFunc( NULL, (gpointer) thePrefs ); \ 264 \ 265 gtk_main(); \ 266 gdk_flush(); \ 267 return ptools_isOK; \ 268 } \ 269 GenCallBack( VarType, DlgRes, Title, SetControl,SText, \ 270 GText, DlgAction, WinFunc) \ 271 272 273 274 //-------------------------- Dialog Resources----------------------------------------- 275 276 //-------------------------- Dialogs for remap ------------------------------------------- 277 278 #define kSetRemapPrefs_InRect 0 279 #define kSetRemapPrefs_InPano 1 280 #define kSetRemapPrefs_InErect 2 281 #define kSetRemapPrefs_InSphereCenter 3 282 #define kSetRemapPrefs_InSphereTop 4 283 #define kSetRemapPrefs_OutRect 5 284 #define kSetRemapPrefs_OutPano 6 285 #define kSetRemapPrefs_OutErect 7 286 #define kSetRemapPrefs_OutSphereCenter 8 287 #define kSetRemapPrefs_OutSphereTop 9 288 #define kSetRemapPrefs_Hfov 10 289 #define kSetRemapPrefs_Vfov 11 290 #define kSetRemapPrefs_InMirror 12 291 #define kSetRemapPrefs_OutMirror 13 292 #define kSetRemapPrefs_SetPrefs 14 293 #define kSetRemapPrefs_dlg \ 294 { \ 295 MAKE_TABLE(8, 4) \ 296 \ 297 MAKE_TEXTLABEL("HFoV:", table, 0, 1, 7, 8); \ 298 MAKE_TEXTLABEL("VFoV:", table, 2, 3, 7, 8); \ 299 frame = gtk_frame_new("From:"); \ 300 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 301 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 302 gtk_table_attach(GTK_TABLE(table), frame, 0, 2, 1, 7, \ 303 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 304 box = gtk_vbox_new(FALSE, 6); \ 305 gtk_container_border_width(GTK_CONTAINER(box), 5); \ 306 gtk_container_add(GTK_CONTAINER(frame), box); \ 307 gtk_widget_show (box); \ 308 gtk_widget_show (frame); \ 309 group = NULL; \ 310 MAKE_RADIO_BUTTON( kSetRemapPrefs_InRect, "Normal" ) \ 311 MAKE_RADIO_BUTTON( kSetRemapPrefs_InPano, "QTVR" ) \ 312 MAKE_RADIO_BUTTON( kSetRemapPrefs_InErect, "PSphere" ) \ 313 MAKE_RADIO_BUTTON( kSetRemapPrefs_InSphereTop, "Fisheye hor." ) \ 314 MAKE_RADIO_BUTTON( kSetRemapPrefs_InSphereCenter,"Fisheye vert.") \ 315 MAKE_RADIO_BUTTON( kSetRemapPrefs_InMirror, "Convex Mirror") \ 316 \ 317 frame = gtk_frame_new("To:"); \ 318 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 319 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 320 gtk_table_attach(GTK_TABLE(table), frame, 2, 4, 1, 7, \ 321 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 322 box = gtk_vbox_new(FALSE, 6); \ 323 gtk_container_border_width(GTK_CONTAINER(box), 5); \ 324 gtk_container_add(GTK_CONTAINER(frame), box); \ 325 gtk_widget_show (box); \ 326 gtk_widget_show (frame); \ 327 group = NULL; \ 328 MAKE_RADIO_BUTTON( kSetRemapPrefs_OutRect, "Normal" ) \ 329 MAKE_RADIO_BUTTON( kSetRemapPrefs_OutPano, "QTVR" ) \ 330 MAKE_RADIO_BUTTON( kSetRemapPrefs_OutErect, "PSphere" ) \ 331 MAKE_RADIO_BUTTON( kSetRemapPrefs_OutSphereTop, "Fisheye hor." ) \ 332 MAKE_RADIO_BUTTON( kSetRemapPrefs_OutSphereCenter,"Fisheye vert.") \ 333 MAKE_RADIO_BUTTON( kSetRemapPrefs_OutMirror, "Convex Mirror") \ 334 \ 335 MAKE_TEXT_WID( kSetRemapPrefs_Hfov , 1, 2, 7, 8 ); \ 336 MAKE_TEXT_WID( kSetRemapPrefs_Vfov , 3, 4, 7, 8 ); \ 337 button = gtk_button_new_with_label ("Prefs"); \ 338 INSERT_BUTTON( 3, 4, 0, 1 ); \ 339 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 340 (GtkSignalFunc) SetSiz, \ 341 (gpointer) gsPrPtr); \ 342 gtk_widget_show(button); \ 343 \ 344 } 345 346 347 348 //-------------------------- Dialogs for perspective ------------------------------------------- 349 350 #define kSetPerspectivePrefs_InRect 0 351 #define kSetPerspectivePrefs_InSphere 1 352 #define kSetPerspectivePrefs_Degree 2 353 #define kSetPerspectivePrefs_Points 3 354 #define kSetPerspectivePrefs_Keep 4 355 #define kSetPerspectivePrefs_X 5 356 #define kSetPerspectivePrefs_Y 6 357 #define kSetPerspectivePrefs_Gamma 7 358 #define kSetPerspectivePrefs_Hfov 8 359 #define kSetPerspectivePrefs_Width 9 360 #define kSetPerspectivePrefs_Height 10 361 #define kSetPerspectivePrefs_SetPrefs 11 362 #define kSetPerspectivePrefs_dlg \ 363 { \ 364 MAKE_TABLE(6, 4) \ 365 \ 366 MAKE_TEXTLABEL("Format:", table, 0, 1, 0, 1); \ 367 MAKE_TEXTLABEL("Turn to:", table, 0, 1, 1, 2); \ 368 MAKE_TEXTLABEL("Horizontal:", table, 1, 2, 1, 2); \ 369 MAKE_TEXTLABEL("Vertical:", table, 1, 2, 2, 3); \ 370 MAKE_TEXTLABEL("Rotate:", table, 0, 1, 3, 4); \ 371 MAKE_TEXTLABEL("Size:", table, 0, 1, 4, 5); \ 372 MAKE_TEXTLABEL("HFoV:", table, 2, 3, 3, 4); \ 373 MAKE_TEXTLABEL("Width:", table, 2, 3, 4, 5); \ 374 MAKE_TEXTLABEL("Height:", table, 2, 3, 5, 6); \ 375 \ 376 box = gtk_hbox_new(FALSE, 2); \ 377 gtk_container_border_width(GTK_CONTAINER(box), 5); \ 378 gtk_table_attach(GTK_TABLE(table), box, 1, 3, 0, 1, \ 379 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 380 gtk_widget_show (box); \ 381 group = NULL; \ 382 MAKE_RADIO_BUTTON( kSetPerspectivePrefs_InSphere, "Fisheye" ) \ 383 MAKE_RADIO_BUTTON( kSetPerspectivePrefs_InRect, "Rectilinear" ) \ 384 \ 385 MAKE_TEXT_WID( kSetPerspectivePrefs_X , 2, 3, 1, 2 ); \ 386 MAKE_TEXT_WID( kSetPerspectivePrefs_Y , 2, 3, 2, 3 ); \ 387 MAKE_TEXT_WID( kSetPerspectivePrefs_Gamma , 1, 2, 3, 4 ); \ 388 MAKE_TEXT_WID( kSetPerspectivePrefs_Hfov , 3, 4, 3, 4 ); \ 389 MAKE_TEXT_WID( kSetPerspectivePrefs_Width, 3, 4, 4, 5 ); \ 390 MAKE_TEXT_WID( kSetPerspectivePrefs_Height , 3, 4, 5, 6 ); \ 391 box = gtk_vbox_new(FALSE, 2); \ 392 gtk_container_border_width(GTK_CONTAINER(box), 5); \ 393 gtk_table_attach(GTK_TABLE(table), box, 3, 4, 1, 3, \ 394 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 395 gtk_widget_show (box); \ 396 group = NULL; \ 397 MAKE_RADIO_BUTTON( kSetPerspectivePrefs_Points, "Pixels" ) \ 398 MAKE_RADIO_BUTTON( kSetPerspectivePrefs_Degree, "Degrees" ) \ 399 \ 400 button = gtk_button_new_with_label ("Prefs"); \ 401 INSERT_BUTTON( 3, 4, 0, 1 ) \ 402 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 403 (GtkSignalFunc) SetSiz, \ 404 (gpointer) gsPrPtr); \ 405 gtk_widget_show(button); \ 406 \ 407 button = gtk_button_new_with_label ("Source"); \ 408 INSERT_BUTTON( 1, 2, 4, 5) \ 409 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 410 (GtkSignalFunc) pt_set_size_source, \ 411 (gpointer) dp ); \ 412 gtk_widget_show(button); \ 413 } 414 415 // ------------------------- Dialogs for correct ------------------------------------------------ 416 417 #define kSetCorrectPrefs_Save 0 418 #define kSetCorrectPrefs_Load 1 419 #define kSetCorrectPrefs_Radial 2 420 #define kSetCorrectPrefs_RadialOption 3 421 #define kSetCorrectPrefs_Horizontal 4 422 #define kSetCorrectPrefs_HorizontalOption 5 423 #define kSetCorrectPrefs_Vertical 6 424 #define kSetCorrectPrefs_VerticalOption 7 425 #define kSetCorrectPrefs_Shear 8 426 #define kSetCorrectPrefs_ShearOption 9 427 #define kSetCorrectPrefs_Scale 10 428 #define kSetCorrectPrefs_ScaleOption 11 429 #define kSetCorrectPrefs_Lum 12 430 #define kSetCorrectPrefs_LumOpt 13 431 #define kSetCorrectPrefs_SetPrefs 14 432 #define kSetCorrectPrefs_CutFrame 15 433 #define kSetCorrectPrefs_CutOpt 16 434 #define kSetCorrectPrefs_Fourier 17 435 #define kSetCorrectPrefs_FourierOpt 18 436 #define kSetCorrectPrefs_dlg \ 437 { \ 438 button = gtk_button_new_with_label ("Load"); \ 439 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); \ 440 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 441 (GtkSignalFunc) ptool_load_callback, \ 442 (gpointer) &localPrefs ); \ 443 gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dlg)->action_area), \ 444 button, TRUE, TRUE, 0); \ 445 gtk_widget_show (button); \ 446 button = gtk_button_new_with_label ("Save"); \ 447 GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); \ 448 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 449 (GtkSignalFunc) ptool_save_callback, \ 450 (gpointer) &localPrefs ); \ 451 gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dlg)->action_area), \ 452 button, TRUE, TRUE, 0); \ 453 gtk_widget_show (button); \ 454 MAKE_TABLE(8, 3); \ 455 \ 456 MAKE_CHECK_BOX( kSetCorrectPrefs_Radial, "Radial", 0, 1, 0, 1 ) \ 457 MAKE_CHECK_BOX( kSetCorrectPrefs_Vertical, "Vertical Shift", 0, 1, 1, 2 ) \ 458 MAKE_CHECK_BOX( kSetCorrectPrefs_Horizontal,"Horizontal Shift", 0, 1, 2, 3 ) \ 459 MAKE_CHECK_BOX( kSetCorrectPrefs_Shear, "Shear", 0, 1, 3, 4 ) \ 460 MAKE_CHECK_BOX( kSetCorrectPrefs_Scale, "Scale", 0, 1, 4, 5 ) \ 461 MAKE_CHECK_BOX( kSetCorrectPrefs_Lum, "Radial Luminance", 0, 1, 5, 6 ) \ 462 MAKE_CHECK_BOX( kSetCorrectPrefs_CutFrame, "Cut Frame", 0, 1, 6, 7 ) \ 463 MAKE_CHECK_BOX( kSetCorrectPrefs_Fourier, "Fourier Filter", 0, 1, 7, 8 ) \ 464 \ 465 button = gtk_button_new_with_label ("Options"); \ 466 INSERT_BUTTON( 1, 2, 0, 1) \ 467 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 468 (GtkSignalFunc) SetRadOpt, \ 469 (gpointer) &localPrefs); \ 470 gtk_widget_show(button); \ 471 \ 472 button = gtk_button_new_with_label ("Options"); \ 473 INSERT_BUTTON( 1, 2, 1, 2) \ 474 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 475 (GtkSignalFunc) SetVerOpt, \ 476 (gpointer) &localPrefs); \ 477 gtk_widget_show(button); \ 478 \ 479 button = gtk_button_new_with_label ("Options"); \ 480 INSERT_BUTTON( 1, 2, 2, 3) \ 481 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 482 (GtkSignalFunc) SetHorOpt, \ 483 (gpointer) &localPrefs); \ 484 gtk_widget_show(button); \ 485 \ 486 button = gtk_button_new_with_label ("Options"); \ 487 INSERT_BUTTON( 1, 2, 3, 4) \ 488 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 489 (GtkSignalFunc) SetShOpt, \ 490 (gpointer) &localPrefs); \ 491 gtk_widget_show(button); \ 492 \ 493 button = gtk_button_new_with_label ("Options"); \ 494 INSERT_BUTTON( 1, 2, 4, 5) \ 495 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 496 (GtkSignalFunc) SetScOpt, \ 497 (gpointer) &localPrefs); \ 498 gtk_widget_show(button); \ 499 \ 500 button = gtk_button_new_with_label ("Options"); \ 501 INSERT_BUTTON( 1, 2, 5, 6) \ 502 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 503 (GtkSignalFunc) SetLumOpt, \ 504 (gpointer) &localPrefs); \ 505 gtk_widget_show(button); \ 506 \ 507 button = gtk_button_new_with_label ("Options"); \ 508 INSERT_BUTTON( 1, 2, 6, 7) \ 509 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 510 (GtkSignalFunc) SetCutOpt, \ 511 (gpointer) &localPrefs); \ 512 gtk_widget_show(button); \ 513 \ 514 button = gtk_button_new_with_label ("Options"); \ 515 INSERT_BUTTON( 1, 2, 7, 8) \ 516 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 517 (GtkSignalFunc) SetFrPrefs, \ 518 (gpointer) &localPrefs); \ 519 gtk_widget_show(button); \ 520 \ 521 \ 522 button = gtk_button_new_with_label ("Prefs"); \ 523 INSERT_BUTTON( 2, 3, 0, 1) \ 524 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 525 (GtkSignalFunc) SetSiz, \ 526 (gpointer) gsPrPtr); \ 527 gtk_widget_show(button); \ 528 } 529 530 531 #define kSetLumOptions_Red 0 532 #define kSetLumOptions_Green 1 533 #define kSetLumOptions_Blue 2 534 #define kSetLumOptions_dlg \ 535 { \ 536 MAKE_TABLE(3, 2); \ 537 \ 538 MAKE_TEXTLABEL("Red:", table, 0, 1, 0, 1); \ 539 MAKE_TEXTLABEL("Green:", table, 0, 1, 1, 2); \ 540 MAKE_TEXTLABEL("Blue:", table, 0, 1, 2, 3); \ 541 \ 542 \ 543 MAKE_TEXT_WID( kSetLumOptions_Red , 1, 2, 0, 1 ); \ 544 MAKE_TEXT_WID( kSetLumOptions_Green , 1, 2, 1, 2 ); \ 545 MAKE_TEXT_WID( kSetLumOptions_Blue , 1, 2, 2, 3 ); \ 546 } 547 548 #define kSetRadialOptions_Slit 0 549 #define kSetRadialOptions_Red0 1 550 #define kSetRadialOptions_Red1 2 551 #define kSetRadialOptions_Red2 3 552 #define kSetRadialOptions_Red3 4 553 #define kSetRadialOptions_Green0 5 554 #define kSetRadialOptions_Green1 6 555 #define kSetRadialOptions_Green2 7 556 #define kSetRadialOptions_Green3 8 557 #define kSetRadialOptions_Blue0 9 558 #define kSetRadialOptions_Blue1 10 559 #define kSetRadialOptions_Blue2 11 560 #define kSetRadialOptions_Blue3 12 561 #define kSetRadialOptions_dlg \ 562 { \ 563 MAKE_TABLE(5, 5); \ 564 \ 565 MAKE_TEXTLABEL("Red:", table, 0, 1, 1, 2); \ 566 MAKE_TEXTLABEL("Green:", table, 0, 1, 2, 3); \ 567 MAKE_TEXTLABEL("Blue:", table, 0, 1, 3, 4); \ 568 MAKE_TEXTLABEL("a * r^4 +", table, 1, 2, 0, 1); \ 569 MAKE_TEXTLABEL("b * r^3 +", table, 2, 3, 0, 1); \ 570 MAKE_TEXTLABEL("c * r^2 +", table, 3, 4, 0, 1); \ 571 MAKE_TEXTLABEL("d * r", table, 4, 5, 0, 1); \ 572 \ 573 \ 574 MAKE_TEXT_WID( kSetRadialOptions_Red0 , 4, 5, 1, 2 ); \ 575 MAKE_TEXT_WID( kSetRadialOptions_Red1 , 3, 4, 1, 2 ); \ 576 MAKE_TEXT_WID( kSetRadialOptions_Red2 , 2, 3, 1, 2 ); \ 577 MAKE_TEXT_WID( kSetRadialOptions_Red3 , 1, 2, 1, 2 ); \ 578 MAKE_TEXT_WID( kSetRadialOptions_Green0 , 4, 5, 2, 3 ); \ 579 MAKE_TEXT_WID( kSetRadialOptions_Green1 , 3, 4, 2, 3 ); \ 580 MAKE_TEXT_WID( kSetRadialOptions_Green2 , 2, 3, 2, 3 ); \ 581 MAKE_TEXT_WID( kSetRadialOptions_Green3 , 1, 2, 2, 3 ); \ 582 MAKE_TEXT_WID( kSetRadialOptions_Blue0 , 4, 5, 3, 4 ); \ 583 MAKE_TEXT_WID( kSetRadialOptions_Blue1 , 3, 4, 3, 4 ); \ 584 MAKE_TEXT_WID( kSetRadialOptions_Blue2 , 2, 3, 3, 4 ); \ 585 MAKE_TEXT_WID( kSetRadialOptions_Blue3 , 1, 2, 3, 4 ); \ 586 \ 587 MAKE_CHECK_BOX( kSetRadialOptions_Slit,"Scanning Slit", 0, 2, 4, 5) \ 588 } 589 590 591 #define kSetHorizontalOptions_Red 0 592 #define kSetHorizontalOptions_Green 1 593 #define kSetHorizontalOptions_Blue 2 594 #define kSetLumOptions_RedText 3 595 #define kSetLumOptions_GreenText 4 596 #define kSetLumOptions_BlueText 5 597 #define kSetHorizontalOptions_dlg \ 598 { \ 599 MAKE_TABLE(3, 2); \ 600 \ 601 MAKE_LABEL_WID( kSetLumOptions_RedText , 0, 1, 0, 1); \ 602 MAKE_LABEL_WID( kSetLumOptions_GreenText , 0, 1, 1, 2); \ 603 MAKE_LABEL_WID( kSetLumOptions_BlueText , 0, 1, 2, 3); \ 604 \ 605 MAKE_TEXT_WID( kSetHorizontalOptions_Red , 1, 2, 0, 1 ); \ 606 MAKE_TEXT_WID( kSetHorizontalOptions_Green , 1, 2, 1, 2 ); \ 607 MAKE_TEXT_WID( kSetHorizontalOptions_Blue, 1, 2, 2, 3 ); \ 608 } 609 610 611 612 #define kSetShearOptions_vname 0 613 #define kSetShearOptions_vvar 1 614 #define kSetShearOptions_hname 2 615 #define kSetShearOptions_hvar 3 616 #define kSetShearOptions_dlg \ 617 { \ 618 MAKE_TABLE(2, 2); \ 619 \ 620 MAKE_LABEL_WID( kSetShearOptions_vname , 0, 1, 0, 1); \ 621 MAKE_LABEL_WID( kSetShearOptions_hname , 0, 1, 1, 2); \ 622 \ 623 MAKE_TEXT_WID( kSetShearOptions_vvar , 1, 2, 0, 1 ); \ 624 MAKE_TEXT_WID( kSetShearOptions_hvar , 1, 2, 1, 2 ); \ 625 } 626 627 //------------------- Dialogs for Adjust -------------------------- 628 629 630 #define kSetAdjustPrefs_Insert 0 631 #define kSetAdjustPrefs_Extract 1 632 #define kSetAdjustPrefs_SetCtrlPts 2 633 #define kSetAdjustPrefs_RunOptimizer 3 634 #define kSetAdjustPrefs_Options 4 635 #define kSetAdjustPrefs_Script 5 636 #define kSetAdjustPrefs_FindScript 6 637 #define kSetAdjustPrefs_SetOpt 7 638 #define kSetAdjustPrefs_SetPrefs 8 639 #define kSetAdjustPrefs_dlg \ 640 { \ 641 MAKE_TABLE(5, 4); \ 642 \ 643 frame = gtk_frame_new("Action:"); \ 644 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 645 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 646 gtk_table_attach(GTK_TABLE(table), frame, 0, 2, 1, 5, \ 647 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 648 box = gtk_vbox_new(FALSE, 4); \ 649 gtk_container_border_width(GTK_CONTAINER(box), 5); \ 650 gtk_container_add(GTK_CONTAINER(frame), box); \ 651 gtk_widget_show (box); \ 652 gtk_widget_show (frame); \ 653 group = NULL; \ 654 MAKE_RADIO_BUTTON( kSetAdjustPrefs_Insert, "Insert into Panorama" ) \ 655 MAKE_RADIO_BUTTON( kSetAdjustPrefs_Extract, "Extract from Panorama" ) \ 656 MAKE_RADIO_BUTTON( kSetAdjustPrefs_SetCtrlPts, "Read Marked Controlpoints" ) \ 657 MAKE_RADIO_BUTTON( kSetAdjustPrefs_RunOptimizer, "Run Position Optimizer" ) \ 658 \ 659 frame = gtk_frame_new("Parameters:"); \ 660 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 661 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 662 gtk_table_attach(GTK_TABLE(table), frame, 2, 3, 1, 3, \ 663 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 664 gtk_widget_show (frame); \ 665 { \ 666 GtkWidget *ftable; \ 667 ftable = gtk_table_new(2, 2, FALSE); \ 668 gtk_container_border_width(GTK_CONTAINER(ftable), 2); \ 669 gtk_container_add(GTK_CONTAINER(frame), ftable); \ 670 gtk_widget_show(ftable); \ 671 box = gtk_vbox_new(FALSE, 2); \ 672 gtk_container_border_width(GTK_CONTAINER(box), 2); \ 673 gtk_table_attach(GTK_TABLE(ftable), box, 0, 1, 0, 2, \ 674 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 675 gtk_widget_show (box); \ 676 group = NULL; \ 677 MAKE_RADIO_BUTTON( kSetAdjustPrefs_Options, "Use Options") \ 678 MAKE_RADIO_BUTTON( kSetAdjustPrefs_Script, "Use Script" ) \ 679 \ 680 \ 681 button = gtk_button_new_with_label ("Set"); \ 682 INSERT_FBUTTON( 1, 2, 0, 1) \ 683 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 684 (GtkSignalFunc) SetCrOpt, \ 685 (gpointer) &localPrefs ); \ 686 gtk_widget_show(button); \ 687 \ 688 button = gtk_button_new_with_label ("Browse"); \ 689 INSERT_FBUTTON( 1, 2, 1, 2) \ 690 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 691 (GtkSignalFunc) pt_find_file, \ 692 (gpointer) &(localPrefs.scriptFile) ); \ 693 gtk_widget_show(button); \ 694 } \ 695 button = gtk_button_new_with_label ("Prefs"); \ 696 INSERT_BUTTON( 4, 5, 0, 1) \ 697 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 698 (GtkSignalFunc) SetSiz, \ 699 (gpointer) gsPrPtr); \ 700 gtk_widget_show(button); \ 701 } 702 703 704 705 #if 0 706 MAKE_TEXTLABEL("Panning:", table, 3, 4, 13, 14); \ 707 button = gtk_button_new_with_label ("Set"); \ 708 gtk_table_attach(GTK_TABLE(table), button, 3, 4, 14, 15, \ 709 GTK_FILL | GTK_EXPAND, GTK_FILL, 5, 5); \ 710 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 711 (GtkSignalFunc) pt_set_pan_opt, \ 712 NULL); \ 713 gtk_widget_show(button); \ 714 715 #endif 716 717 718 #define kSetCreateOptions_ImR 0 719 #define kSetCreateOptions_ImP 1 720 #define kSetCreateOptions_ImFf 2 721 #define kSetCreateOptions_ImFc 3 722 #define kSetCreateOptions_ImHfov 4 723 #define kSetCreateOptions_ImW 5 724 #define kSetCreateOptions_ImH 6 725 #define kSetCreateOptions_Correct 7 726 #define kSetCreateOptions_PRe 8 727 #define kSetCreateOptions_PPa 9 728 #define kSetCreateOptions_PSp 10 729 #define kSetCreateOptions_PCu 11 730 #define kSetCreateOptions_PHfov 12 731 #define kSetCreateOptions_PWi 13 732 #define kSetCreateOptions_PHe 14 733 #define kSetCreateOptions_PSave 15 734 #define kSetCreateOptions_TY 16 735 #define kSetCreateOptions_TP 17 736 #define kSetCreateOptions_TR 18 737 #define kSetCreateOptions_SLoad 19 738 #define kSetCreateOptions_SPaste 20 739 #define kSetCreateOptions_SBlend 21 740 #define kSetCreateOptions_SF 22 741 #define kSetCreateOptions_SIm 23 742 #define kSetCreateOptions_SBuf 24 743 #define kSetCreateOptions_Sboth 25 744 #define kSetCreateOptions_Snone 26 745 #define kSetCreateOptions_Pan 27 746 #define kSetCreateOptions_dlg \ 747 { \ 748 MAKE_TABLE(2, 2); \ 749 \ 750 { \ 751 GtkWidget *ftable; \ 752 frame = gtk_frame_new("Image:"); \ 753 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 754 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 755 gtk_table_attach(GTK_TABLE(table), frame, 0, 1, 0, 1, \ 756 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 757 gtk_widget_show (frame); \ 758 ftable = gtk_table_new(4, 3, FALSE); \ 759 gtk_container_border_width(GTK_CONTAINER(ftable), 2); \ 760 gtk_container_add(GTK_CONTAINER(frame), ftable); \ 761 gtk_widget_show(ftable); \ 762 frame = gtk_frame_new("Format:"); \ 763 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 764 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 765 gtk_table_attach(GTK_TABLE(ftable), frame, 2, 3, 0, 4, \ 766 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 767 box = gtk_vbox_new(FALSE, 4); \ 768 gtk_container_border_width(GTK_CONTAINER(box), 2); \ 769 gtk_container_add(GTK_CONTAINER(frame), box); \ 770 gtk_widget_show (box); \ 771 gtk_widget_show (frame); \ 772 group = NULL; \ 773 MAKE_RADIO_BUTTON( kSetCreateOptions_ImR, "Rectilinear") \ 774 MAKE_RADIO_BUTTON( kSetCreateOptions_ImP, "Panoramic") \ 775 MAKE_RADIO_BUTTON( kSetCreateOptions_ImFf, "Fisheye fullfr.") \ 776 MAKE_RADIO_BUTTON( kSetCreateOptions_ImFc, "Fisheye circ.") \ 777 MAKE_TEXTLABEL("HFoV:", ftable, 0, 1, 0, 1); \ 778 MAKE_TEXTLABEL("Width:", ftable, 0, 1, 1, 2); \ 779 MAKE_TEXTLABEL("Height:", ftable, 0, 1, 2, 3); \ 780 button = gtk_button_new_with_label ("Correct"); \ 781 INSERT_FBUTTON( 1, 2, 3, 4) \ 782 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 783 (GtkSignalFunc) SetCPrefs, \ 784 (gpointer) &localPrefs.im.cP); \ 785 gtk_widget_show(button); \ 786 MAKE_FTEXT_WID( kSetCreateOptions_ImHfov , 1, 2, 0, 1 ); \ 787 MAKE_FTEXT_WID( kSetCreateOptions_ImW , 1, 2, 1, 2 ); \ 788 MAKE_FTEXT_WID( kSetCreateOptions_ImH , 1, 2, 2, 3 ); \ 789 } \ 790 { \ 791 GtkWidget *ftable; \ 792 frame = gtk_frame_new("Panorama:"); \ 793 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 794 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 795 gtk_table_attach(GTK_TABLE(table), frame, 0, 1, 1, 2, \ 796 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 797 gtk_widget_show (frame); \ 798 ftable = gtk_table_new(4, 3, FALSE); \ 799 gtk_container_border_width(GTK_CONTAINER(ftable), 2); \ 800 gtk_container_add(GTK_CONTAINER(frame), ftable); \ 801 gtk_widget_show(ftable); \ 802 frame = gtk_frame_new("Format:"); \ 803 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 804 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 805 gtk_table_attach(GTK_TABLE(ftable), frame, 2, 3, 0, 3, \ 806 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 807 box = gtk_vbox_new(FALSE, 3); \ 808 gtk_container_border_width(GTK_CONTAINER(box), 2); \ 809 gtk_container_add(GTK_CONTAINER(frame), box); \ 810 gtk_widget_show (box); \ 811 gtk_widget_show (frame); \ 812 group = NULL; \ 813 MAKE_RADIO_BUTTON( kSetCreateOptions_PRe, "Rectilinear") \ 814 MAKE_RADIO_BUTTON( kSetCreateOptions_PPa, "QTVR-Panorama") \ 815 MAKE_RADIO_BUTTON( kSetCreateOptions_PSp, "PSphere") \ 816 MAKE_FCHECK_BOX(kSetCreateOptions_PSave, "Save to Buffer", 0, 2, 3, 4 ) \ 817 MAKE_TEXTLABEL("HFoV:", ftable, 0, 1, 0, 1); \ 818 MAKE_TEXTLABEL("Width:", ftable, 0, 1, 1, 2); \ 819 MAKE_TEXTLABEL("Height:", ftable, 0, 1, 2, 3); \ 820 MAKE_FTEXT_WID( kSetCreateOptions_PHfov , 1, 2, 0, 1 ); \ 821 MAKE_FTEXT_WID( kSetCreateOptions_PWi , 1, 2, 1, 2 ); \ 822 MAKE_FTEXT_WID( kSetCreateOptions_PHe , 1, 2, 2, 3 ); \ 823 } \ 824 { \ 825 GtkWidget *ftable; \ 826 frame = gtk_frame_new("Position:"); \ 827 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 828 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 829 gtk_table_attach(GTK_TABLE(table), frame, 1, 2, 0, 1, \ 830 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 831 gtk_widget_show (frame); \ 832 ftable = gtk_table_new(3, 2, FALSE); \ 833 gtk_container_border_width(GTK_CONTAINER(ftable), 2); \ 834 gtk_container_add(GTK_CONTAINER(frame), ftable); \ 835 gtk_widget_show(ftable); \ 836 MAKE_TEXTLABEL("Yaw: -180...+180", ftable, 0, 1, 0, 1); \ 837 MAKE_TEXTLABEL("Pitch: -90...+90", ftable, 0, 1, 1, 2); \ 838 MAKE_TEXTLABEL("Roll:", ftable, 0, 1, 2, 3); \ 839 MAKE_FTEXT_WID( kSetCreateOptions_TY , 1, 2, 0, 1 ); \ 840 MAKE_FTEXT_WID( kSetCreateOptions_TP , 1, 2, 1, 2 ); \ 841 MAKE_FTEXT_WID( kSetCreateOptions_TR , 1, 2, 2, 3 ); \ 842 } \ 843 { \ 844 GtkWidget *ftable; \ 845 frame = gtk_frame_new("Stitching:"); \ 846 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 847 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 848 gtk_table_attach(GTK_TABLE(table), frame, 1, 2, 1, 2, \ 849 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 850 gtk_widget_show (frame); \ 851 ftable = gtk_table_new(4, 4, FALSE); \ 852 gtk_container_border_width(GTK_CONTAINER(ftable), 2); \ 853 gtk_container_add(GTK_CONTAINER(frame), ftable); \ 854 gtk_widget_show(ftable); \ 855 MAKE_FCHECK_BOX(kSetCreateOptions_SLoad, "Load Buffer and ", 0, 2, 0, 1 ) \ 856 box = gtk_vbox_new(FALSE, 2); \ 857 gtk_container_border_width(GTK_CONTAINER(box), 2); \ 858 gtk_table_attach(GTK_TABLE(ftable), box, 0, 2, 1, 3, \ 859 GTK_FILL | GTK_EXPAND, GTK_FILL, 5, 0); \ 860 gtk_widget_show (box); \ 861 group = NULL; \ 862 MAKE_RADIO_BUTTON(kSetCreateOptions_SBlend, "blend or") \ 863 MAKE_RADIO_BUTTON(kSetCreateOptions_SPaste, "paste") \ 864 MAKE_TEXTLABEL("Feather:", ftable, 0, 1, 3, 4); \ 865 MAKE_FTEXT_WID( kSetCreateOptions_SF , 1, 2, 3, 4 ); \ 866 frame = gtk_frame_new("Color Adjustment:"); \ 867 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); \ 868 gtk_container_border_width(GTK_CONTAINER(frame), 2); \ 869 gtk_table_attach(GTK_TABLE(ftable), frame, 2, 4, 0, 4, \ 870 GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); \ 871 box = gtk_vbox_new(FALSE, 4); \ 872 gtk_container_border_width(GTK_CONTAINER(box), 2); \ 873 gtk_container_add(GTK_CONTAINER(frame), box); \ 874 gtk_widget_show (box); \ 875 gtk_widget_show (frame); \ 876 group = NULL; \ 877 MAKE_RADIO_BUTTON(kSetCreateOptions_SIm, "Image") \ 878 MAKE_RADIO_BUTTON(kSetCreateOptions_SBuf, "Buffer") \ 879 MAKE_RADIO_BUTTON(kSetCreateOptions_Sboth, "Both") \ 880 MAKE_RADIO_BUTTON(kSetCreateOptions_Snone, "None") \ 881 } \ 882 } 883 884 //-------------------- Interpolator Selection ------------------------------ 885 886 #define kSetIntpPrefs_Poly 0 887 #define kSetIntpPrefs_Sp36 1 888 #define kSetIntpPrefs_Sp64 2 889 #define kSetIntpPrefs_Sinc256 3 890 #define kSetIntpPrefs_AAHammering 4 891 #define kSetIntpPrefs_AAGaussian 5 892 #define kSetIntpPrefs_AAQuadratic 6 893 #define kSetIntpPrefs_AAMitchell 7 894 #define kSetIntpPrefs_AALauczos2 8 895 #define kSetIntpPrefs_AALauczos3 9 896 #define kSetIntpPrefs_FastTNorm 10 897 #define kSetIntpPrefs_FastTMed 11 898 #define kSetIntpPrefs_FastTFast 12 899 #define kSetIntpPrefs_Gamma 13 900 #define kSetIntpPrefs_SetIntp \ 901 MAKE_TABLE(3, 6); \ 902 \ 903 MAKE_TEXTLABEL("<- Faster", table, 2, 3, 1, 2); \ 904 MAKE_TEXTLABEL("Better ->", table, 2, 3, 2, 3); \ 905 \ 906 box = gtk_vbox_new(FALSE, 4); \ 907 gtk_container_border_width(GTK_CONTAINER(box), 5); \ 908 gtk_table_attach(GTK_TABLE(table), box, 0, 2, 0, 4, \ 909 GTK_FILL | GTK_EXPAND, GTK_FILL, 5, 0); \ 910 gtk_widget_show (box); \ 911 group = NULL; \ 912 MAKE_RADIO_BUTTON( kSetIntpPrefs_Poly, _("Polynomial 16 pixels")) \ 913 MAKE_RADIO_BUTTON( kSetIntpPrefs_Sp36, _("Spline 36 pixels")) \ 914 MAKE_RADIO_BUTTON( kSetIntpPrefs_Sp64, _("Spline 64 pixels")) \ 915 MAKE_RADIO_BUTTON( kSetIntpPrefs_Sinc256, _("Sinc 256 pixels")) \ 916 MAKE_RADIO_BUTTON( kSetIntpPrefs_AAHammering, _("Hammering 1.0")) \ 917 MAKE_RADIO_BUTTON( kSetIntpPrefs_AAGaussian, _("Gaussian 1.2")) \ 918 MAKE_RADIO_BUTTON( kSetIntpPrefs_AAQuadratic, _("Quadratic 1.5")) \ 919 MAKE_RADIO_BUTTON( kSetIntpPrefs_AAMitchell, _("Mitchell 2.0")) \ 920 MAKE_RADIO_BUTTON( kSetIntpPrefs_AALauczos2, _("Lauczos2 2.0")) \ 921 MAKE_RADIO_BUTTON( kSetIntpPrefs_AALauczos3, _("Lauczos3 3.0")) \ 922 \ 923 MAKE_BFRAME(table, _("Interpolation speed:"), 0, 2, 4, 5, 3); \ 924 MAKE_RADIO_BUTTON( kSetIntpPrefs_FastTNorm, _("Normal") ) \ 925 MAKE_RADIO_BUTTON( kSetIntpPrefs_FastTMed, _("Medium") ) \ 926 MAKE_RADIO_BUTTON( kSetIntpPrefs_FastTFast, _("Fast") ) \ 927 \ 928 MAKE_TEXTLABEL(_("Gamma:"), table, 0, 1, 5, 6); \ 929 MAKE_TEXT_WID( kSetIntpPrefs_Gamma , 1, 2, 5, 6 ); 930 931 932 933 #define kSetSizePrefs_Crop 0 934 #define kSetSizePrefs_SFile 1 935 #define kSetSizePrefs_SetInt 2 936 #define kSetSizePrefs_dlg \ 937 MAKE_TABLE(3, 3); \ 938 \ 939 MAKE_TEXTLABEL("If source and result size differ:", table, 0, 2, 0, 1); \ 940 \ 941 box = gtk_vbox_new(FALSE, 2); \ 942 gtk_container_border_width(GTK_CONTAINER(box), 5); \ 943 gtk_table_attach(GTK_TABLE(table), box, 0, 2, 1, 3, \ 944 GTK_FILL | GTK_EXPAND, GTK_FILL,0, 0); \ 945 gtk_widget_show (box); \ 946 group = NULL; \ 947 MAKE_RADIO_BUTTON( kSetSizePrefs_Crop, "Display cropped/framed image") \ 948 MAKE_RADIO_BUTTON( kSetSizePrefs_SFile, "Resize image") \ 949 \ 950 button = gtk_button_new_with_label ("More"); \ 951 INSERT_BUTTON( 2, 3, 0, 1) \ 952 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 953 (GtkSignalFunc) SetIntp, \ 954 (gpointer) &localPrefs); \ 955 gtk_widget_show(button); \ 956 957 958 #define kSetFourierOptions_PSDname 0 959 #define kSetFourierOptions_findPSD 1 960 #define kSetFourierOptions_addBlur 2 961 #define kSetFourierOptions_remBlur 3 962 #define kSetFourierOptions_internal 4 963 #define kSetFourierOptions_custom 5 964 #define kSetFourierOptions_findNFF 6 965 #define kSetFourierOptions_filterfactor 7 966 #define kSetFourierOptions_fourier_frame 8 967 #define kSetFourierOptions_dlg \ 968 MAKE_TABLE(4,7); \ 969 MAKE_TEXTLABEL("Point Spread Image:", table, 0, 2, 0, 1); \ 970 button = gtk_button_new_with_label ("Browse"); \ 971 INSERT_BUTTON( 3, 4, 0, 1) \ 972 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 973 (GtkSignalFunc) pt_find_file, \ 974 (gpointer) &(localPrefs.psf) ); \ 975 gtk_widget_show(button); \ 976 \ 977 MAKE_TEXTLABEL("Mode:", table, 0, 1, 2, 3); \ 978 box = gtk_vbox_new(FALSE, 2); \ 979 gtk_container_border_width(GTK_CONTAINER(box), 5); \ 980 gtk_table_attach(GTK_TABLE(table), box, 1, 3, 2, 4, \ 981 GTK_FILL | GTK_EXPAND, GTK_FILL, 5, 0); \ 982 gtk_widget_show (box); \ 983 group = NULL; \ 984 MAKE_RADIO_BUTTON( kSetFourierOptions_addBlur, "Add Blur") \ 985 MAKE_RADIO_BUTTON( kSetFourierOptions_remBlur, "Remove Blur") \ 986 MAKE_TEXTLABEL("Noise Reduction", table, 0, 1, 4, 5); \ 987 box = gtk_vbox_new(FALSE, 2); \ 988 gtk_container_border_width(GTK_CONTAINER(box), 5); \ 989 gtk_table_attach(GTK_TABLE(table), box, 1, 3, 4, 6, \ 990 GTK_FILL | GTK_EXPAND, GTK_FILL, 5, 0); \ 991 gtk_widget_show (box); \ 992 group = NULL; \ 993 MAKE_RADIO_BUTTON( kSetFourierOptions_internal, "Internal") \ 994 MAKE_RADIO_BUTTON( kSetFourierOptions_custom, "External") \ 995 button = gtk_button_new_with_label ("Browse"); \ 996 INSERT_BUTTON( 3, 4, 5, 6) \ 997 gtk_signal_connect (GTK_OBJECT (button), "clicked", \ 998 (GtkSignalFunc) pt_find_file, \ 999 (gpointer) &(localPrefs.nff) ); \ 1000 gtk_widget_show(button); \ 1001 MAKE_TEXTLABEL("Filter Factor:", table, 0, 1, 6, 7); \ 1002 MAKE_TEXT_WID( kSetFourierOptions_filterfactor , 1, 2, 6, 7 ); \ 1003 MAKE_TEXTLABEL("Frame", table, 2, 3, 6, 7); \ 1004 MAKE_TEXT_WID( kSetFourierOptions_fourier_frame , 3, 4, 6, 7 ); \ 1005 \ 1006 1007 1008 1009 1010 1011 #endif 1012