You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
(38) |
Aug
(31) |
Sep
(27) |
Oct
(6) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
|
Feb
(8) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2011 |
Jan
|
Feb
|
Mar
(13) |
Apr
|
May
|
Jun
|
Jul
(6) |
Aug
|
Sep
(1) |
Oct
(1) |
Nov
|
Dec
(3) |
2013 |
Jan
|
Feb
|
Mar
(5) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
(1) |
Nov
(1) |
Dec
|
From: Radu C. <rc...@us...> - 2016-11-19 00:09:18
|
Update of /cvsroot/gcx/gcx/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11081/src Modified Files: initparams.c interface.c params.h reduce.c reduce.h reducegui.c Log Message: add dry run, remove spurious ing ref from ccdr Index: params.h =================================================================== RCS file: /cvsroot/gcx/gcx/src/params.h,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** params.h 7 Mar 2013 20:49:33 -0000 1.21 --- params.h 19 Nov 2016 00:09:15 -0000 1.22 *************** *** 439,446 **** }; ! #define PAR_CHOICE_ALIGN_METHODS { "shift", "full", NULL } enum { PAR_ALIGN_SHIFT_ONLY, ! PAR_ALIGN_FULL }; --- 439,447 ---- }; ! #define PAR_CHOICE_ALIGN_METHODS { "shift", "full", "none", NULL } enum { PAR_ALIGN_SHIFT_ONLY, ! PAR_ALIGN_FULL, ! PAR_ALIGN_NONE, }; Index: reduce.h =================================================================== RCS file: /cvsroot/gcx/gcx/src/reduce.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** reduce.h 1 Oct 2016 20:07:16 -0000 1.8 --- reduce.h 19 Nov 2016 00:09:15 -0000 1.9 *************** *** 40,43 **** --- 40,44 ---- #define IMG_OP_OVERSCAN 0x400000 #define IMG_OP_CENTER_CROP 0x800000 + #define IMG_OP_DRY 0x1000000 //#define IMG_BAYER_MASK 0xf000000 *************** *** 68,71 **** --- 69,73 ---- gpointer multiband; /* multiband dialog (used for adding phot output) */ char * recipe; /* malloced name of recipe file */ + int stop_request; /* a stop of the batch reduce was requested */ }; Index: reduce.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/reduce.c,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** reduce.c 1 Oct 2016 20:07:16 -0000 1.37 --- reduce.c 19 Nov 2016 00:09:15 -0000 1.38 *************** *** 1658,1662 **** if (progress) { ! snprintf(msg, 255, " [%.1f, %.1f]", dx, dy); (* progress)(msg, data); } --- 1658,1662 ---- if (progress) { ! snprintf(msg, 255, " [x:%-6.1f y:%-6.1f]", dx, dy); (* progress)(msg, data); } *************** *** 1667,1671 **** if (progress) { ! snprintf(msg, 255, " [x:%-4.1f y:%-4.1f ds:%-4.1f dt:%-4.1f]", dx, dy, ds, dt); (* progress)(msg, data); --- 1667,1671 ---- if (progress) { ! snprintf(msg, 255, " [x:%-6.1f y:%-6.1f ds:%-4.1f dt:%-4.1f]", dx, dy, ds, dt); (* progress)(msg, data); Index: reducegui.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/reducegui.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** reducegui.c 1 Oct 2016 20:07:16 -0000 1.20 --- reducegui.c 19 Nov 2016 00:09:15 -0000 1.21 *************** *** 87,90 **** --- 87,91 ---- static void imf_update_status_label(GtkTreeModel *list, GtkTreeIter *iter); static void imf_red_browse_cb(GtkWidget *wid, gpointer dialog); + static void ccdred_stop_cb(GtkWidget *wid, gpointer dialog); *************** *** 247,250 **** --- 248,253 ---- G_CALLBACK (close_processing_window), window); + set_named_callback (G_OBJECT (dialog), "stop_button", "clicked", + G_CALLBACK (ccdred_stop_cb)); set_named_callback (G_OBJECT (dialog), "bias_browse", "clicked", G_CALLBACK (imf_red_browse_cb)); *************** *** 443,446 **** --- 446,452 ---- set_named_checkb_val(dialog, "overwrite_checkb", 1); } + if ((ccdr->ops & IMG_OP_DRY)) { + set_named_checkb_val(dialog, "dry_checkb", 1); + } } *************** *** 869,873 **** files = g_slist_next(files); imf->filename = strdup(text); ! image_file_ref(imf); imfl->imlist = g_list_append(imfl->imlist, imf); --- 875,879 ---- files = g_slist_next(files); imf->filename = strdup(text); ! //image_file_ref(imf); imfl->imlist = g_list_append(imfl->imlist, imf); *************** *** 1353,1356 **** --- 1359,1374 ---- } + if (get_named_checkb_val(dialog, "dry_checkb")) { + ccdr->ops |= IMG_OP_DRY; + } else { + ccdr->ops &= ~IMG_OP_DRY; + } + + if (get_named_checkb_val(dialog, "overwrite_checkb")) { + ccdr->ops |= IMG_OP_INPLACE; + } else { + ccdr->ops &= ~IMG_OP_INPLACE; + } + if (get_named_checkb_val(dialog, "stack_checkb")) { ccdr->ops |= IMG_OP_STACK; *************** *** 1376,1379 **** --- 1394,1421 ---- } + static void ccdred_stop_cb(GtkWidget *widget, gpointer dialog) + { + struct ccd_reduce *ccdr; + struct image_file_list *imfl; + + imfl = g_object_get_data(G_OBJECT(dialog), "imfl"); + g_return_if_fail (imfl != NULL); + ccdr = g_object_get_data(G_OBJECT(dialog), "ccdred"); + if (ccdr == NULL) + return; + d1_printf("stop requested\n"); + ccdr->stop_request = 1; + } + + static int stop_poll(struct ccd_reduce *ccdr) + { + while (gtk_events_pending()) + gtk_main_iteration(); + if (ccdr->stop_request == 0) + return 0; + ccdr->stop_request = 0; + return 1; + } + static void ccdred_run_cb(GtkAction *action, gpointer dialog) { *************** *** 1405,1408 **** --- 1447,1452 ---- d3_printf("outf is |%s|\n", outf); + ccdr->stop_request = 0; + menubar = g_object_get_data(G_OBJECT(dialog), "menubar"); gtk_widget_set_sensitive(menubar, 0); *************** *** 1434,1440 **** continue; ret = reduce_frame(imf, ccdr, progress_pr, dialog); if (ret) continue; ! if (ccdr->ops & IMG_OP_INPLACE) { save_image_file(imf, outf, 1, NULL, progress_pr, dialog); imf->flags &= ~(IMG_LOADED); --- 1478,1490 ---- continue; ret = reduce_frame(imf, ccdr, progress_pr, dialog); + if (stop_poll(ccdr)) + goto end; if (ret) continue; ! if (ccdr->ops & IMG_OP_DRY) { ! imf->flags &= ~(IMG_LOADED); ! release_frame(imf->fr); ! imf->fr = NULL; ! } else if (ccdr->ops & IMG_OP_INPLACE) { save_image_file(imf, outf, 1, NULL, progress_pr, dialog); imf->flags &= ~(IMG_LOADED); *************** *** 1454,1457 **** --- 1504,1509 ---- imf->fr = NULL; } + if (stop_poll(ccdr)) + goto end; } update_status_labels(dialog); *************** *** 1484,1487 **** --- 1536,1540 ---- release_frame(fr); end: + update_status_labels(dialog); gtk_widget_set_sensitive(menubar, 1); return; Index: initparams.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/initparams.c,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** initparams.c 7 Mar 2013 20:49:33 -0000 1.31 --- initparams.c 19 Nov 2016 00:09:15 -0000 1.32 *************** *** 1171,1175 **** "Method used for aligning images. Shift will only perform " "translations whereas full will also account for scale and " ! "rotations."); add_par_int(CCDRED_RESAMPLE_METHOD, PAR_CCDRED, 0, "resample_method", "Resampling algorithm", PAR_RESAMPLE_MITCHELL); --- 1171,1175 ---- "Method used for aligning images. Shift will only perform " "translations whereas full will also account for scale and " ! "rotations. None will not align the frame, but only calculate the required shift"); add_par_int(CCDRED_RESAMPLE_METHOD, PAR_CCDRED, 0, "resample_method", "Resampling algorithm", PAR_RESAMPLE_MITCHELL); Index: interface.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/interface.c,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** interface.c 1 Oct 2016 20:07:16 -0000 1.36 --- interface.c 19 Nov 2016 00:09:15 -0000 1.37 *************** *** 2338,2341 **** --- 2338,2342 ---- GtkWidget *log_file_browse; GtkWidget *overwrite_checkb; + GtkWidget *dry_checkb; GtkWidget *frame6; GtkWidget *hbox18; *************** *** 2398,2401 **** --- 2399,2404 ---- GtkWidget *center_crop_spin; + GtkWidget *stop_button; + image_processing = gtk_window_new (GTK_WINDOW_TOPLEVEL); *************** *** 2756,2760 **** gtk_widget_set_tooltip_text (output_file_browse, "Browse"); ! /// frame_log = gtk_frame_new ("Reduction Log File"); g_object_ref (frame_log); --- 2759,2782 ---- gtk_widget_set_tooltip_text (output_file_browse, "Browse"); ! overwrite_checkb = gtk_check_button_new_with_label ("Overwrite"); ! g_object_ref (overwrite_checkb); ! g_object_set_data_full (G_OBJECT (image_processing), "overwrite_checkb", overwrite_checkb, ! (GDestroyNotify) g_object_unref); ! gtk_box_pack_start (GTK_BOX (hbox28), overwrite_checkb, FALSE, FALSE, 0); ! gtk_container_set_border_width (GTK_CONTAINER (overwrite_checkb), 3); ! // gtk_widget_set_sensitive (overwrite_checkb, FALSE); ! gtk_widget_set_tooltip_text (overwrite_checkb, "Save processed frames over the original ones"); ! gtk_widget_show (overwrite_checkb); ! ! stop_button = gtk_button_new_with_label ("STOP"); ! g_object_ref (stop_button); ! g_object_set_data_full (G_OBJECT (image_processing), "stop_button", stop_button, ! (GDestroyNotify) g_object_unref); ! gtk_widget_show (stop_button); ! gtk_table_attach (GTK_TABLE (table25), stop_button, 1, 2, 8, 9, ! (GtkAttachOptions) (GTK_FILL), ! (GtkAttachOptions) (0), 0, 0); ! gtk_widget_set_tooltip_text (stop_button, "Stop Batch Reduction"); ! frame_log = gtk_frame_new ("Reduction Log File"); g_object_ref (frame_log); *************** *** 2789,2801 **** gtk_container_set_border_width (GTK_CONTAINER (log_file_browse), 3); gtk_widget_set_tooltip_text (log_file_browse, "Browse"); ! /// ! overwrite_checkb = gtk_check_button_new_with_label ("Overwrite"); ! g_object_ref (overwrite_checkb); ! g_object_set_data_full (G_OBJECT (image_processing), "overwrite_checkb", overwrite_checkb, (GDestroyNotify) g_object_unref); ! gtk_box_pack_start (GTK_BOX (hbox28), overwrite_checkb, FALSE, FALSE, 0); ! gtk_container_set_border_width (GTK_CONTAINER (overwrite_checkb), 3); ! gtk_widget_set_sensitive (overwrite_checkb, FALSE); ! gtk_widget_set_tooltip_text (overwrite_checkb, "Save processed frames over the original ones"); //Demosaic --- 2811,2826 ---- gtk_container_set_border_width (GTK_CONTAINER (log_file_browse), 3); gtk_widget_set_tooltip_text (log_file_browse, "Browse"); ! ! dry_checkb = gtk_check_button_new_with_label ("Dry Run "); ! g_object_ref (dry_checkb); ! g_object_set_data_full (G_OBJECT (image_processing), "dry_checkb", dry_checkb, (GDestroyNotify) g_object_unref); ! gtk_box_pack_start (GTK_BOX (hbox_log), dry_checkb, FALSE, FALSE, 0); ! gtk_container_set_border_width (GTK_CONTAINER (dry_checkb), 3); ! // gtk_widget_set_sensitive (overwrite_checkb, FALSE); ! gtk_widget_set_tooltip_text (dry_checkb, "Dry run - discard files when not stacking"); ! gtk_widget_show (dry_checkb); ! ! /// //Demosaic *************** *** 3256,3259 **** --- 3281,3286 ---- gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook3), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook3), 1), label80); + gtk_notebook_set_current_page(GTK_NOTEBOOK (notebook3), 1); + return image_processing; } |
From: Radu C. <rc...@us...> - 2016-10-01 20:07:18
|
Update of /cvsroot/gcx/gcx In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv28182 Modified Files: ChangeLog Log Message: reduction log Index: ChangeLog =================================================================== RCS file: /cvsroot/gcx/gcx/ChangeLog,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** ChangeLog 30 Sep 2016 00:06:28 -0000 1.64 --- ChangeLog 1 Oct 2016 20:07:16 -0000 1.65 *************** *** 1,2 **** --- 1,7 ---- + 2016-10-01 rcorlan <rc...@vi...> + + * fix auto-scrolling of reduction log window, add reduction log + file entry. + 2016-09-30 rcorlan <rc...@vi...> |
From: Radu C. <rc...@us...> - 2016-09-30 00:10:13
|
Update of /cvsroot/gcx/gcx In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11543 Modified Files: README Log Message: add some build information to the README Index: README =================================================================== RCS file: /cvsroot/gcx/gcx/README,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** README 17 Nov 2005 20:22:33 -0000 1.2 --- README 30 Sep 2016 00:10:11 -0000 1.3 *************** *** 1,2 **** --- 1,10 ---- + To build from the cvs source: + + apt-get install autoconf autogen intltool + apt-get install libtiff-dev libjpeg-dev + ./autogen.sh + + then proceed as below + ===================================== Building and running gcx |
From: Radu C. <rc...@us...> - 2016-09-30 00:06:30
|
Update of /cvsroot/gcx/gcx In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11375 Modified Files: ChangeLog Log Message: fix segfaults in some ccd reduction cases Index: ChangeLog =================================================================== RCS file: /cvsroot/gcx/gcx/ChangeLog,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -d -r1.63 -r1.64 *** ChangeLog 29 Sep 2016 16:16:24 -0000 1.63 --- ChangeLog 30 Sep 2016 00:06:28 -0000 1.64 *************** *** 1,2 **** --- 1,10 ---- + 2016-09-30 rcorlan <rc...@vi...> + + * force debayer of raw files when alignment is requested in the + ccd reduction. + + * fix allocation problem causing segfaults when jpeg frames are + released. + 2016-09-29 rcorlan <rc...@vi...> |
From: Radu C. <rc...@us...> - 2016-09-29 16:16:27
|
Update of /cvsroot/gcx/gcx In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv19903 Modified Files: ChangeLog configure.ac Log Message: fix configure.am for current versions of automake Index: configure.ac =================================================================== RCS file: /cvsroot/gcx/gcx/configure.ac,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** configure.ac 7 Mar 2013 20:49:33 -0000 1.6 --- configure.ac 29 Sep 2016 16:16:25 -0000 1.7 *************** *** 1,5 **** AC_INIT([gcx], [1.6]) ! AM_INIT_AUTOMAKE([foreign -Wall -Werror]) AC_CONFIG_SRCDIR([src/gcx.c]) --- 1,5 ---- AC_INIT([gcx], [1.6]) ! AM_INIT_AUTOMAKE([foreign -Wall -Werror subdir-objects]) AC_CONFIG_SRCDIR([src/gcx.c]) *************** *** 8,11 **** --- 8,12 ---- AC_PROG_CC + AM_PROG_AR AM_PROG_CC_STDC AC_HEADER_STDC *************** *** 28,31 **** --- 29,35 ---- AC_CHECK_LIB(tiff, TIFFOpen,,AC_MSG_ERROR(Cannot find libtiff)) + AC_CHECK_HEADERS([math.h]) + AC_CHECK_LIB(m, cos,,AC_MSG_ERROR(Cannot find libm)) + AC_CHECK_HEADERS([jpeglib.h]) AC_CHECK_LIB(jpeg, jpeg_CreateDecompress,,AC_MSG_ERROR(Cannot find libjpeg)) Index: ChangeLog =================================================================== RCS file: /cvsroot/gcx/gcx/ChangeLog,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** ChangeLog 7 Mar 2013 21:02:20 -0000 1.62 --- ChangeLog 29 Sep 2016 16:16:24 -0000 1.63 *************** *** 1,2 **** --- 1,6 ---- + 2016-09-29 rcorlan <rc...@vi...> + + * fix configure.ac for current versions of automake. + 2013-03-07 matei conovici <mco...@gm...> * add overscan correction to reduction steps, remove old [xy]_skip |
From: Matei C. <cm...@us...> - 2013-03-13 21:52:45
|
Update of /cvsroot/gcx/gcx/src/ccd In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv1977/src/ccd Modified Files: ccd_frame.c Log Message: Testing, I should do sometimes Index: ccd_frame.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/ccd/ccd_frame.c,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** ccd_frame.c 7 Mar 2013 20:49:33 -0000 1.50 --- ccd_frame.c 13 Mar 2013 21:52:43 -0000 1.51 *************** *** 1080,1085 **** dp1 ++; } - dp += fr->w; - dp1 += fr->w; } } else { --- 1080,1083 ---- *************** *** 1093,1098 **** dp1 ++; } - dp += fr->w; - dp1 += fr->w; } --- 1091,1094 ---- *************** *** 1132,1137 **** dp1 ++; } - dp += fr->w; - dp1 += fr->w; } } --- 1128,1131 ---- *************** *** 1209,1214 **** dp1 ++; } - dp += fr->w; - dp1 += fr->w; } } --- 1203,1206 ---- |
From: Matei C. <cm...@us...> - 2013-03-07 21:02:22
|
Update of /cvsroot/gcx/gcx In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11047 Modified Files: ChangeLog Log Message: Update changelog Index: ChangeLog =================================================================== RCS file: /cvsroot/gcx/gcx/ChangeLog,v retrieving revision 1.61 retrieving revision 1.62 diff -C2 -d -r1.61 -r1.62 *** ChangeLog 3 Dec 2011 21:48:07 -0000 1.61 --- ChangeLog 7 Mar 2013 21:02:20 -0000 1.62 *************** *** 1,2 **** --- 1,12 ---- + 2013-03-07 matei conovici <mco...@gm...> + * add overscan correction to reduction steps, remove old [xy]_skip + * save float FITS on overflow (needs fixing) + * various buffer overruns fixed + * add rotation to alignment (slow at resampling, to be improved) + * UCAC4 catalogue CDS + local query + * remove all internal format conversions, all frames are float + * remove LUT_MODE_DIRECT + * add TIFF and JPEG file read support + 2011-12-03 radu corlan <rc...@vi...> |
From: Matei C. <cm...@us...> - 2013-03-07 20:54:02
|
Update of /cvsroot/gcx/gcx/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv10299 Modified Files: Makefile.am Log Message: Remove skyview.h, not actually used Index: Makefile.am =================================================================== RCS file: /cvsroot/gcx/gcx/src/Makefile.am,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** Makefile.am 7 Mar 2013 20:49:33 -0000 1.29 --- Makefile.am 7 Mar 2013 20:54:00 -0000 1.30 *************** *** 22,26 **** mbandrep.c starfile.c getline.h synth.c psf.c psf.h dsimplex.c dsimplex.h \ basename.c dirname.c libgen.h query.c query.h plate.c \ ! demosaic.c demosaic.h skyview.c skyview.h \ tele_indi.c tele_indi.h camera_indi.c camera_indi.h \ fwheel_indi.c fwheel_indi.h common_indi.c common_indi.h \ --- 22,26 ---- mbandrep.c starfile.c getline.h synth.c psf.c psf.h dsimplex.c dsimplex.h \ basename.c dirname.c libgen.h query.c query.h plate.c \ ! demosaic.c demosaic.h skyview.c \ tele_indi.c tele_indi.h camera_indi.c camera_indi.h \ fwheel_indi.c fwheel_indi.h common_indi.c common_indi.h \ |
Update of /cvsroot/gcx/gcx/src/ccd In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv9885/src/ccd Modified Files: Makefile.am badpix.c ccd.h ccd_frame.c dslr.c sources.c warp.c Added Files: jpeg.c tiff.c Log Message: Merge my modifications to CVS Index: dslr.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/ccd/dslr.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** dslr.c 14 Sep 2009 14:38:43 -0000 1.14 --- dslr.c 7 Mar 2013 20:49:33 -0000 1.15 *************** *** 980,986 **** frame->h = endian_to_host_16(byteorder, mrw->prd->ccd_size_y); - frame->pix_size = 4; - frame->pix_format = PIX_FLOAT; - if (alloc_frame_data(frame)) { err_printf("read_mrw_file: cannot allocate data for frame\n"); --- 980,983 ---- *************** *** 1067,1073 **** strncpy(frame->name, raw->filename, 255); if (endian_to_host_16(byteorder, mrw->prd->ccd_size_x) > endian_to_host_16(byteorder, mrw->prd->img_size_x)) { - frame->x_skip = (endian_to_host_16(byteorder, mrw->prd->ccd_size_x) - endian_to_host_16(byteorder, mrw->prd->img_size_x)) / 2; --- 1064,1070 ---- strncpy(frame->name, raw->filename, 255); + #if 0 if (endian_to_host_16(byteorder, mrw->prd->ccd_size_x) > endian_to_host_16(byteorder, mrw->prd->img_size_x)) { frame->x_skip = (endian_to_host_16(byteorder, mrw->prd->ccd_size_x) - endian_to_host_16(byteorder, mrw->prd->img_size_x)) / 2; *************** *** 1086,1089 **** --- 1083,1087 ---- fits_add_keyword(frame, "CCDSKIP2", strbuf); } + #endif if (raw->date_obs) *************** *** 1437,1443 **** #endif - frame->pix_size = 4; - frame->pix_format = PIX_FLOAT; - /* save color coefficients */ frame->rmeta.wbr = cr2->wb_gain_r; --- 1435,1438 ---- Index: ccd.h =================================================================== RCS file: /cvsroot/gcx/gcx/src/ccd/ccd.h,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** ccd.h 28 Sep 2011 06:05:47 -0000 1.38 --- ccd.h 7 Mar 2013 20:49:33 -0000 1.39 *************** *** 62,74 **** }; - // values describing the geometry of a frame from a ccd chip - struct ccd_geometry { - unsigned w; /* total size of the frame */ - unsigned h; - int x_skip; /* number of pixels skipped at the beginning of each line - * (ref: first active pixel) */ - int y_skip; /* number of lines skipped at the beginning of each frame */ - }; - // structure describing a ccd exposure struct exp_data { --- 62,65 ---- *************** *** 174,179 **** int ref_count; char *filename; // filename of this map, if any - unsigned int x_skip; // from frame geometry when the map was created - unsigned int y_skip; unsigned int bin_x; unsigned int bin_y; --- 165,168 ---- *************** *** 186,213 **** #define FRAME_NAME_SIZE 256 ! /* the big one: struct ccd_frame is the internal representation of a frame or */ ! /* fits file in cx. Every function that operates on images uses a struct ccd_frame */ ! ! /* the frames' data areas are allocated to hold DEFAULT_PIX_SIZE bytes/pixel */ ! /* (usually 4). Functions that process frames in ccd_frame.c and x11ops */ ! /* expect the frames to be float. frame_to_float can be used for the trasnsformation */ ! ! /* pix_size shows the amount of space allocated for the pixels; if smaller ! * pixels are used (e.g. byte/short), pix_size is not affected */ ! ! #define DEFAULT_PIX_SIZE sizeof(float) ! ! // pixel formats ! #define PIX_FLOAT 1 ! #define PIX_BYTE 2 ! #define PIX_SHORT 3 // 16-bit using out native endianess ! #define PIX_16LE 4 // 16-bit little endian ! #define PIX_16BE 5 // 16-bit big endian ! ! #ifndef LITTLE_ENDIAN ! #ifndef BIG_ENDIAN ! #define LITTLE_ENDIAN ! #endif ! #endif struct raw_metadata { --- 175,179 ---- #define FRAME_NAME_SIZE 256 ! #define PIXEL_SIZE sizeof(float) struct raw_metadata { *************** *** 235,250 **** struct ccd_frame { ! int ref_count; ! unsigned loaded; /* how much of the frame's data is loaded (for incremental ! * loads and readout - in bytes */ ! /* how many need this frame. When ref_count is 1, a release_frame */ ! /* deallocates the frame. The frame is created with ref_count=1 */ int w; // width of frame in pixels int h; // height of frame in pixels ! int x_skip; // number of pixels skipped at the beginning of each line ! // (ref: first active pixel) ! int y_skip; // number of lines skipped at the beginning of each frame unsigned magic; // an unique number identifying the frame (science, dark, flatfield etc) struct exp_data exp; struct im_stats stats; --- 201,217 ---- + /* the big one: struct ccd_frame is the internal representation of a frame or */ + /* fits file in gcx. Every function that operates on images uses a struct ccd_frame */ + + /* the frames' data areas are allocated to hold floats */ struct ccd_frame { ! int ref_count; // how many need this frame. When ref_count is 1, a release_frame ! // deallocates the frame. The frame is created with ref_count=1 ! int w; // width of frame in pixels int h; // height of frame in pixels ! unsigned magic; // an unique number identifying the frame (science, dark, flatfield etc) + struct exp_data exp; struct im_stats stats; *************** *** 254,266 **** * normally, it's the amount of data (in bytes) * in the array */ ! int pix_size; // bytes/pixel ! int pix_format; // format pixels are stored in ! void *dat; // the data array FITS_row *var; /* malloced array of all unrecognized header lines */ int nvar; /* number of var[] */ char name[256]; // name of frame ! void *rdat; // rgb image planes ! void *gdat; ! void *bdat; }; --- 221,231 ---- * normally, it's the amount of data (in bytes) * in the array */ ! float *dat; // the data array FITS_row *var; /* malloced array of all unrecognized header lines */ int nvar; /* number of var[] */ char name[256]; // name of frame ! float *rdat; // rgb image planes ! float *gdat; ! float *bdat; }; *************** *** 274,289 **** #define FILE_FRAME 0x0000008 - // bits describing the operations on the frame - - #define FRAME_MATH 0x0000010 // frame resulting from computation between frames - #define FRAME_BADPIX 0x0000020 // frame had had the bad pixels replaced - #define FRAME_BIASC 0x0000040 // bias was substracted from the frame - #define FRAME_FLATC 0x0000080 // frame was flatfield corrected - #define FRAME_STACK 0x0000100 // frame results from a stak op - - #define FRAME_UNCERTAIN 0x1000000 // frame containins uncertain data - /* frame image structure */ - #define FRAME_HAS_CFA 0x0100000 /* frame contains CFA data */ #define FRAME_VALID_RGB 0x0200000 /* rgb data was generated from bayer */ --- 239,243 ---- *************** *** 298,302 **** // bad pixel fixing methods - #define BADPIX_MEDIAN 1 #define BADCOLUMN_AVG 0 --- 252,255 ---- *************** *** 577,580 **** --- 530,535 ---- int sub_frames (struct ccd_frame *fr, struct ccd_frame *fr1); + int overscan_correction(struct ccd_frame *fr, double pedestal, int x, int y, int w, int h); + struct ccd_frame *read_image_file(char *filename, char *ungz, int force_unsigned, *************** *** 596,599 **** --- 551,563 ---- extern int set_color_field(struct ccd_frame *fr); + // from tiff.c + extern int tiff_filename(char *filename); + extern struct ccd_frame *read_tiff_file(char *filename); + + // from jpeg.c + extern int jpeg_filename(char *filename); + extern struct ccd_frame *read_jpeg_file(char *filename); + + // from badpix.c extern int save_bad_pix(struct bad_pix_map *map); *************** *** 676,682 **** --- 640,655 ---- // from warp.c + enum { + PAR_RESAMPLE_NEAREST, + PAR_RESAMPLE_BILINEAR, + PAR_RESAMPLE_BSPLINE, + PAR_RESAMPLE_CATMULL, + PAR_RESAMPLE_MITCHELL + }; + extern int make_shift_ctrans(struct ctrans *ct, double dx, double dy); extern int make_roto_translate(struct ctrans *ct, double dx, double dy, double xs, double ys, double rot); extern int shift_frame(struct ccd_frame *fr, double dx, double dy); + extern int shift_scale_rotate_frame(struct ccd_frame *fr, double dx, double dy, double ds, double dt, int resampling); extern int linear_x_shear(struct ccd_frame *in, struct ccd_frame *out, double a, double c); extern int linear_y_shear(struct ccd_frame *in, struct ccd_frame *out, double b, double c, *************** *** 693,700 **** #endif - - - - - - --- 666,667 ---- Index: sources.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/ccd/sources.c,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** sources.c 28 Sep 2011 06:05:47 -0000 1.21 --- sources.c 7 Mar 2013 20:49:33 -0000 1.22 *************** *** 50,54 **** #define RING_MAX 3000 ! #define MAX_STAR_CANDIDATES 16384 /* max number of candidates before we find the first star */ --- 50,54 ---- #define RING_MAX 3000 ! #define MAX_STAR_CANDIDATES 65536 /* max number of candidates before we find the first star */ *************** *** 102,109 **** dy2 = (iy - yc) * (iy - yc); for (ix = xs; ix < xe; ix++) { - v = get_pixel_luminence(fr, ix, iy); if (((r = (ix - xc) * (ix - xc) + dy2)) < rsq1 || r > rsq2) continue; if (v < min || v > max) { nskipped ++; --- 102,110 ---- dy2 = (iy - yc) * (iy - yc); for (ix = xs; ix < xe; ix++) { if (((r = (ix - xc) * (ix - xc) + dy2)) < rsq1 || r > rsq2) continue; + + v = get_pixel_luminence(fr, ix, iy); if (v < min || v > max) { nskipped ++; *************** *** 611,615 **** // d3_printf("extract_stars: frame size is %dx%d\n", fr->w, fr->h); - // d3_printf("extract_stars: frame pixel format is %d [%d]\n", fr->pix_format, fr->pix_size); minpk = fr->stats.cavg + 2 * sigmas * fr->stats.csigma; --- 612,615 ---- *************** *** 647,653 **** } // check that we have a few connected pixels above the cut ! ring_stats(fr, 1.0*x, 1.0*y, 0, 2, QUAD1|QUAD2|QUAD3|QUAD4, rsn, skycut, HUGE); ! if (rsn->used < NCONN) { // d3_printf("only %d connected pixels found\n", rsn->used); continue; --- 647,653 ---- } // check that we have a few connected pixels above the cut ! ret = ring_stats(fr, 1.0*x, 1.0*y, 0, 2, QUAD1|QUAD2|QUAD3|QUAD4, rsn, skycut, HUGE); ! if (ret < 0 || rsn->used < NCONN) { // d3_printf("only %d connected pixels found\n", rsn->used); continue; Index: Makefile.am =================================================================== RCS file: /cvsroot/gcx/gcx/src/ccd/Makefile.am,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Makefile.am 26 Jul 2011 08:41:54 -0000 1.7 --- Makefile.am 7 Mar 2013 20:49:33 -0000 1.8 *************** *** 10,14 **** edb.c aphot.c worldpos.c sources.c \ warp.c recipy.c errlog.c use_dcraw.c \ ! ccd.h dslr.h CLEANFILES = *~ --- 10,14 ---- edb.c aphot.c worldpos.c sources.c \ warp.c recipy.c errlog.c use_dcraw.c \ ! ccd.h dslr.h tiff.c jpeg.c CLEANFILES = *~ --- NEW FILE: jpeg.c --- /******************************************************************************* Copyright(c) 2013 Matei Conovici. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. The full GNU General Public License is included in this distribution in the file called LICENSE. Contact Information: mco...@gm... *******************************************************************************/ /* jpeg.c -- handle JPEG files */ #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <string.h> #include <setjmp.h> #include "config.h" #include "ccd.h" #ifdef HAVE_LIBJPEG #include <jpeglib.h> int jpeg_filename(char *filename) { char *p; p = strchr(filename, '.'); if (!p) return -1; p++; if (!strcasecmp(p, "jpeg") || !strcasecmp(p, "jpg")) return 0; return -1; } static void err_exit(j_common_ptr cinfo) { longjmp(*(jmp_buf *)cinfo->client_data, 1); } static int scanline_to_frame(struct ccd_frame *fr, JSAMPLE *buf, int row, int ncolors) { float *dp; int color, i; for (color = 0; color < ncolors; color++) { dp = fr->dat; if (ncolors != 1) { switch (color) { case 0: dp = fr->rdat; break; case 1: dp = fr->gdat; break; case 2: dp = fr->bdat; break; default: return 0; } } dp += row * fr->w; for (i = 0; i < fr->w; i++) { *dp++ = (float) *((JSAMPLE *) buf + i * ncolors + color); } } return 0; } struct ccd_frame *read_jpeg_file(char *filename) { FILE *fin; struct ccd_frame *fr = NULL; struct jpeg_decompress_struct cinfo; struct jpeg_error_mgr jerr; int i; JSAMPLE *buf = NULL; jmp_buf errbuf; if ((fin = fopen(filename, "rb")) == NULL) return NULL; cinfo.err = jpeg_std_error(&jerr); /* override exit fn */ cinfo.err->error_exit = err_exit; cinfo.client_data = &errbuf; /* have you seen my axe ? I have some error recovery to do */ if (setjmp(errbuf)) { release_frame(fr); fr = NULL; goto out; } jpeg_create_decompress(&cinfo); jpeg_stdio_src(&cinfo, fin); if (jpeg_read_header(&cinfo, TRUE) != JPEG_HEADER_OK) goto out; jpeg_start_decompress(&cinfo); if (cinfo.output_components != 1 && cinfo.output_components != 3) goto out; fr = new_frame(cinfo.output_width, cinfo.output_height); if (cinfo.output_components == 3) { free(fr->dat); alloc_frame_rgb_data(fr); fr->magic |= FRAME_VALID_RGB; } if ((buf = malloc(cinfo.output_width * cinfo.output_components * sizeof(JSAMPLE))) == NULL) { release_frame(fr); fr = NULL; goto out; } for (i = 0; i < cinfo.output_height; i++) { jpeg_read_scanlines(&cinfo, &buf, 1); scanline_to_frame(fr, buf, i, cinfo.output_components); } out: free(buf); fclose(fin); jpeg_destroy_decompress(&cinfo); return fr; } #endif Index: badpix.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/ccd/badpix.c,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** badpix.c 27 Sep 2009 15:19:48 -0000 1.22 --- badpix.c 7 Mar 2013 20:49:33 -0000 1.23 *************** *** 122,127 **** error: - map->x_skip = fr->x_skip; - map->y_skip = fr->y_skip; map->bin_x = fr->exp.bin_x; map->bin_y = fr->exp.bin_y; --- 122,125 ---- *************** *** 154,159 **** fprintf(fp, "pixels %d\n", map->pixels); - fprintf(fp, "x_skip %d\n", map->x_skip); - fprintf(fp, "y_skip %d\n", map->y_skip); fprintf(fp, "bin_x %d\n", map->bin_x); fprintf(fp, "bin_y %d\n", map->bin_y); --- 152,155 ---- *************** *** 191,200 **** if (ret != 1) goto bad_format; - ret = fscanf(fp, " x_skip %d", &map->x_skip); - if (ret != 1) - goto bad_format; - ret = fscanf(fp, " y_skip %d", &map->y_skip); - if (ret != 1) - goto bad_format; ret = fscanf(fp, " bin_x %d", &map->bin_x); if (ret != 1) --- 187,190 ---- *************** *** 521,531 **** /* regular BW image */ for (i = 0; i < map->pixels; i++) { - if (fr->exp.bin_y != 0 && fr->exp.bin_x != 0) { - frx = map->pix[i].x - fr->x_skip / fr->exp.bin_x; - fry = map->pix[i].y - fr->y_skip / fr->exp.bin_y; - } else { frx = map->pix[i].x; fry = map->pix[i].y; - } if (frx > 1 && frx < fr->w - 2 && fry > 1 && fry < fr->h - 2) { --- 511,516 ---- *************** *** 551,553 **** return 0; } - --- 536,537 ---- Index: ccd_frame.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/ccd/ccd_frame.c,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** ccd_frame.c 3 Dec 2011 21:48:07 -0000 1.49 --- ccd_frame.c 7 Mar 2013 20:49:33 -0000 1.50 *************** *** 23,30 **** /* ccd_frame.c: frame operation functions */ - /* $Revision$ */ - /* $Date$ */ - - /* Many functions here assume we have float frames - this must be fixed */ #define _GNU_SOURCE --- 23,26 ---- *************** [...1166 lines suppressed...] - case PIX_16LE: - op = (float *)fr->dat + all - 1; - ip = fr->dat + all * 2 - 2; - for (i=0; i< all; i++) { - *op-- = (256.0 * (* (unsigned char *) (ip+1)) - + 1.0 * (* (unsigned char *) (ip))); - ip -= 2; - } - fr->pix_format = PIX_FLOAT; - return 0; - #endif /* LITTLE_ENDIAN */ - default: - err_printf("cannot convert unknown format %d to float\n"); - return -1; - } - - } /* get a double field --- 1399,1402 ---- --- NEW FILE: tiff.c --- /******************************************************************************* Copyright(c) 2013 Matei Conovici. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. The full GNU General Public License is included in this distribution in the file called LICENSE. Contact Information: mco...@gm... *******************************************************************************/ /* tiff.c -- handle TIFF files */ #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <string.h> #include "config.h" #include "ccd.h" #ifdef HAVE_LIBTIFF #include <tiffio.h> int tiff_filename(char *filename) { char *p; p = strchr(filename, '.'); if (!p) return -1; p++; if (!strcasecmp(p, "tiff") || !strcasecmp(p, "tif")) return 0; return -1; } static int scanline_separate_to_frame(struct ccd_frame *fr, tdata_t buf, uint32_t row, uint16_t color, uint16_t ncolors, uint16_t fmt, uint16_t bpp) { float *dp = fr->dat; int i; if (ncolors != 1) { switch (color) { case 0: dp = fr->rdat; break; case 1: dp = fr->gdat; break; case 2: dp = fr->bdat; break; default: // ignore alpha return 0; } } dp += row * fr->w; for (i = 0; i < fr->w; i++) { switch (fmt) { case SAMPLEFORMAT_INT: switch (bpp) { case 8: *dp++ = (float) *((int8_t *) buf + i); break; case 16: *dp++ = (float) *((int16_t *) buf + i); break; case 32: *dp++ = (float) *((int32_t *) buf + i); break; default: return -1; } break; case SAMPLEFORMAT_IEEEFP: if (bpp != 32) return -1; *dp++ = *((float *) buf + i); break; case SAMPLEFORMAT_UINT: default: switch (bpp) { case 8: *dp++ = (float) *((uint8_t *) buf + i); break; case 16: *dp++ = (float) *((uint16_t *) buf + i); break; case 32: *dp++ = (float) *((uint32_t *) buf + i); break; default: return -1; } } } return 0; } static int scanline_contig_to_frame(struct ccd_frame *fr, tdata_t buf, uint32_t row, uint16_t ncolors, uint16_t fmt, uint16_t bpp) { float *dp = fr->dat; int i, color; for (color = 0; color < ncolors; color++) { if (ncolors != 1) { switch (color) { case 0: dp = fr->rdat; break; case 1: dp = fr->gdat; break; case 2: dp = fr->bdat; break; default: // ignore alpha return 0; } } dp += row * fr->w; for (i = 0; i < fr->w; i++) { switch (fmt) { case SAMPLEFORMAT_INT: switch (bpp) { case 8: *dp++ = (float) *((int8_t *) buf + i * ncolors + color); break; case 16: *dp++ = (float) *((int16_t *) buf + i * ncolors + color); break; case 32: *dp++ = (float) *((int32_t *) buf + i * ncolors + color); break; default: return -1; } break; case SAMPLEFORMAT_IEEEFP: if (bpp != 32) return -1; *dp++ = *((float *) buf + i * ncolors + color); break; case SAMPLEFORMAT_UINT: default: switch (bpp) { case 8: *dp++ = (float) *((uint8_t *) buf + i * ncolors + color); break; case 16: *dp++ = (float) *((uint16_t *) buf + i * ncolors + color); break; case 32: *dp++ = (float) *((uint32_t *) buf + i * ncolors + color); break; default: return -1; } } } } return 0; } struct ccd_frame *read_tiff_file(char *filename) { struct ccd_frame *fr = NULL; TIFF *tif; uint32_t w, h, row; uint16_t nsamples, config, bpp, fmt, color; tdata_t buf; int ret = 0; if ((tif = TIFFOpen(filename, "r")) == NULL) return NULL; ret += TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w); ret += TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h); ret += TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &nsamples); ret += TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &config); /* we understand only the simplest of TIFF files */ if (ret != 4) goto out; fmt = SAMPLEFORMAT_UINT; TIFFGetField(tif, TIFFTAG_SAMPLEFORMAT, &fmt); bpp = 16; TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, &bpp); if (nsamples != 1 && nsamples != 3 && nsamples != 4) goto out; /* FIXME: should attempt to extract some metadata, like date/time, EXIF data, etc */ fr = new_frame(w, h); if (nsamples != 1) { free(fr->dat); alloc_frame_rgb_data(fr); fr->magic |= FRAME_VALID_RGB; } buf = _TIFFmalloc(TIFFScanlineSize(tif)); if (config == PLANARCONFIG_CONTIG) { /* packed RGB(A) */ for (row = 0; row < h; row++) { if (TIFFReadScanline(tif, buf, row, 0) != 1) goto out_err; if (scanline_contig_to_frame(fr, buf, row, nsamples, fmt, bpp)) goto out_err; } } else if (config == PLANARCONFIG_SEPARATE) { /* separate planes */ for (color = 0; color < nsamples; color++) { for (row = 0; row < h; row++) { if (TIFFReadScanline(tif, buf, row, color) != 1) goto out_err; if (scanline_separate_to_frame(fr, buf, row, color, nsamples, fmt, bpp)) goto out_err; } } } else goto out_err; _TIFFfree(buf); out: TIFFClose(tif); return fr; out_err: _TIFFfree(buf); TIFFClose(tif); release_frame(fr); return NULL; } #endif Index: warp.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/ccd/warp.c,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** warp.c 19 Aug 2009 18:40:19 -0000 1.23 --- warp.c 7 Mar 2013 20:49:33 -0000 1.24 *************** *** 274,278 **** dpi = get_color_plane(fr, plane_iter); dpo = get_color_plane(new, plane_iter); ! memcpy(dpo, dpi, all * fr->pix_size); } fr->stats.statsok = 0; --- 274,278 ---- dpi = get_color_plane(fr, plane_iter); dpo = get_color_plane(new, plane_iter); ! memcpy(dpo, dpi, all * PIXEL_SIZE); } fr->stats.statsok = 0; *************** *** 330,334 **** } - /* // compute the coordinate transform static void do_ctrans(struct ctrans *ct, double u, double v, double *x, double *y) --- 330,333 ---- *************** *** 360,364 **** } } ! */ // do linear shear transform in the x direction // x = c ( u - a * v ) --- 359,363 ---- } } ! // do linear shear transform in the x direction // x = c ( u - a * v ) *************** *** 665,668 **** --- 664,935 ---- } + + /* + static void coord_transform(double dx, double dy, double ds, double dt, double x, double y, double *xx, double *yy) + { + *xx = dx + (x * ds - dx) * cos(dt) + (y * ds - dy) * sin(dt); + *yy = dy - (x * ds - dx) * sin(dt) + (y * ds - dy) * cos(dt); + } + */ + + #if 0 + ct->u0 = dx; + ct->v0 = dy; + sa = sin(-rot); + ca = cos(-rot); + ct->a[1][0] = 1.0 / xs * ca; + ct->a[0][1] = - 1.0 / xs * sa; + ct->b[0][1] = 1.0 / ys * ca; + ct->b[1][0] = 1.0 / ys * sa; + return 0; + #endif + + struct cmatrix { + double d[3][3]; + double i[3][3]; + }; + + void make_cmatrix(struct cmatrix *mat, double dx, double dy, double ds, double dt) + { + int i, j; + double st, ct; + double det; + + st = sin(dt); + ct = cos(dt); + + for (i = 0; i < 3; i++) + for (j = 0; j < 3; j++) + mat->d[i][j] = (i == j) ? 1.0 : 0.0; + + mat->d[0][2] = dx; + mat->d[1][2] = dy; + + mat->d[0][0] = ct * ds; + mat->d[0][1] = - st * ds; + mat->d[1][0] = st * ds; + mat->d[1][1] = ct * ds; + + det = mat->d[0][0] * mat->d[1][1] - mat->d[0][1] * mat->d[1][0]; + if (fabs(det) < 10e-30) { + err_printf("singular matrix\n"); + return; + } + + mat->i[0][0] = 1.0 / det * mat->d[1][1]; + mat->i[0][1] = - 1.0 / det * mat->d[0][1]; + mat->i[0][2] = 1.0 / det * (mat->d[0][1] * mat->d[1][2] - mat->d[0][2] * mat->d[1][1]); + + mat->i[1][0] = - 1.0 / det * mat->d[1][0]; + mat->i[1][1] = 1.0 / det * mat->d[0][0]; + mat->i[1][2] = 1.0 / det * (mat->d[0][2] * mat->d[1][0] - mat->d[0][0] * mat->d[1][2]); + + mat->i[2][0] = 0.0; + mat->i[2][1] = 0.0; + mat->i[2][2] = 1.0 / det * (mat->d[0][0] * mat->d[1][1] - mat->d[0][1] * mat->d[1][0]); + + } + + void do_cmatrix_d(struct cmatrix *mat, double u, double v, double *x, double *y) + { + *x = mat->d[0][0] * u + mat->d[0][1] * v + mat->d[0][2]; + *y = mat->d[1][0] * u + mat->d[1][1] * v + mat->d[1][2]; + } + + static inline void do_cmatrix_i(struct cmatrix *mat, double u, double v, double *x, double *y) + { + *x = mat->i[0][0] * u + mat->i[0][1] * v + mat->i[0][2]; + *y = mat->i[1][0] * u + mat->i[1][1] * v + mat->i[1][2]; + } + + + static inline double cubic_weight(double x, double a, double b) + { + double v = fabs(x); + double q = 0.0; + + if (v < 1) { + q = (-6*a - 9*b + 12) * v * v *v + + (6*a + 12*b - 18) * v * v - + 2*b + 6; + } else if (v < 2) { + q = (-6*a - b) * v * v * v + + (30*a + 6*b) * v * v + + (-48*a - 12*b) * v + + 24*a + 8*b; + } + + return 1.0 / 6.0 * q; + } + + static inline double interpolate_pixel_cubic(float *data, int w, int h, double x, double y, double a, double b) + { + int x0, y0; + double p, q; + int i, j, u, v; + + if (x < 3 || x >= w - 3 || y < 3 || y >= h - 3) + return 0.0; + + x0 = (int) floor(x); + y0 = (int) floor(y); + + // n = extent of kernel + // q = 0 + // for j = 0 ... 2n-1 do // iterate over 2n line + // let v <- vj = |y0| + j - n + 1 + // let p <- 0 + // for i = 0 ... 2n-1 do // iterate over 2n cols + // let u <- ui = |x0| + i - n +1 + // let p <- p + I(u,v) * w(x0-u) + // done + // let q = q + p * w(y0-v) + // done + + q = 0.0; + for (j = 0; j < 4; j++) { + p = 0.0; + v = y0 + j - 1; + for (i = 0; i < 4; i++) { + u = x0 + i - 1; + p += data[v * w + u] * cubic_weight(x - (double) u, a, b); + } + + q += p * cubic_weight(y - (double) v, a, b); + } + + + return q; + } + + int shift_scale_rotate_frame(struct ccd_frame *fr, double dx, double dy, double ds, double dt, int resampling) + { + struct cmatrix cm; + int i, j; + int xx, yy; + double x, y; + double a = 0.0, b = 0.0, c, d; + int cubic = 1; + int index = 0; + float *ddat = NULL, *sdat = NULL; + int plane_iter; + + make_cmatrix(&cm, dx, dy, ds, dt); + + struct ccd_frame *nfr = new_frame_fr(fr, fr->w, fr->h); + + switch (resampling) { + + case PAR_RESAMPLE_NEAREST: + for (i = 0; i < nfr->h; i++) { + for (j = 0; j < nfr->w; j++) { + do_cmatrix_i(&cm, j, i, &x, &y); + + yy = (int) floor(y + 0.5); + xx = (int) floor(x + 0.5); + + if (yy >= 0 && yy < fr->h && xx >= 0 && xx < fr->w) { + plane_iter = 0; + while ((plane_iter = color_plane_iter(fr, plane_iter))) { + sdat = get_color_plane(fr, plane_iter); + ddat = get_color_plane(nfr, plane_iter); + + ddat[index] = sdat[yy*fr->w + xx]; + } + index++; + + } else { + index++; + } + } + } + cubic = 0; + break; + + case PAR_RESAMPLE_BILINEAR: + for (i = 0; i < nfr->h; i++) { + for (j = 0; j < nfr->w; j++) { + do_cmatrix_i(&cm, j, i, &x, &y); + + if (x < 1 || x > fr->w - 1 || y < 1 || y > fr->h - 1) + index++; + else { + a = x - floor(x); + b = 1 - a; + c = y - floor(y); + d = 1 - c; + + int xx = (int) floor(x); + int yy = (int) floor(y); + + plane_iter = 0; + while ((plane_iter = color_plane_iter(fr, plane_iter))) { + sdat = get_color_plane(fr, plane_iter); + ddat = get_color_plane(nfr, plane_iter); + + + ddat[index] = b * d * sdat[yy * fr->w + xx] + + a * d * sdat[yy * fr->w + xx + 1] + + b * c * sdat[(yy + 1) * fr->w + xx] + + a * c * sdat[(yy + 1) * fr->w + xx + 1]; + } + index++; + } + } + } + cubic = 0; + break; + + case PAR_RESAMPLE_BSPLINE: /* Cubic B-spline */ + a = 1.0; b = 0.0; + break; + + case PAR_RESAMPLE_CATMULL: /* Catmull-Rom */ + a = 0.0; b = 0.5; + break; + + case PAR_RESAMPLE_MITCHELL: /* Mitchell-Netravali */ + a = 1/3.0; b = 1/3.0; + break; + + default: + return -1; + } + + if (cubic) { + for (i = 0; i < nfr->h; i++) { + for (j = 0; j < nfr->w; j++) { + do_cmatrix_i(&cm, j, i, &x, &y); + + /* a = 1.0, b = 0.0 -> Cubic B-spline + a = 0.0, b = 0.5 -> Catmull-Rom + a = 1/3.0, b = 1/3.0 -> Mitchell-Netravali + */ + plane_iter = 0; + while ((plane_iter = color_plane_iter(fr, plane_iter))) { + sdat = get_color_plane(fr, plane_iter); + ddat = get_color_plane(nfr, plane_iter); + + ddat[index] = interpolate_pixel_cubic(sdat, fr->w, fr->h, x, y, a, b); + } + index++; + } + } + } + + fr->stats.statsok = 0; + + free(fr->dat); fr->dat = nfr->dat; nfr->dat = NULL; + free(fr->rdat); fr->rdat = nfr->rdat; nfr->rdat = NULL; + free(fr->gdat); fr->gdat = nfr->gdat; nfr->gdat = NULL; + free(fr->bdat); fr->bdat = nfr->bdat; nfr->bdat = NULL; + + release_frame(nfr); + + return 0; + + } + + // create a gaussian filter kernel of given sigma // requires a prealloced table of floats of suitable size (size*size) *************** *** 710,712 **** return 0; } - --- 977,978 ---- |
From: Matei C. <cm...@us...> - 2013-03-07 20:49:35
|
Update of /cvsroot/gcx/gcx In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv9885 Modified Files: configure.ac Log Message: Merge my modifications to CVS Index: configure.ac =================================================================== RCS file: /cvsroot/gcx/gcx/configure.ac,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** configure.ac 3 Dec 2011 21:48:07 -0000 1.5 --- configure.ac 7 Mar 2013 20:49:33 -0000 1.6 *************** *** 1,4 **** ! AC_INIT([gcx], [1.5]) AM_INIT_AUTOMAKE([foreign -Wall -Werror]) --- 1,4 ---- ! AC_INIT([gcx], [1.6]) AM_INIT_AUTOMAKE([foreign -Wall -Werror]) *************** *** 12,15 **** --- 12,16 ---- AC_PROG_RANLIB + PKG_PROG_PKG_CONFIG() AC_CHECK_HEADERS(libgen.h) *************** *** 19,26 **** ! AM_PATH_GTK_2_0(2.20.0, , AC_MSG_ERROR(Cannot find GTK: is pkg-config in path?)) AC_CHECK_HEADERS([zlib.h]) ! AC_CHECK_LIB(z, inflate) AC_CONFIG_FILES([ --- 20,33 ---- ! AM_PATH_GTK_2_0(2.20.0, , AC_MSG_ERROR(Cannot find GTK >= 2.20.0)) ! AC_CHECK_HEADERS([zlib.h]) ! AC_CHECK_LIB(z, inflate,,AC_MSG_ERROR(Cannot find zlib)) + AC_CHECK_HEADERS([tiff.h]) + AC_CHECK_LIB(tiff, TIFFOpen,,AC_MSG_ERROR(Cannot find libtiff)) + + AC_CHECK_HEADERS([jpeglib.h]) + AC_CHECK_LIB(jpeg, jpeg_CreateDecompress,,AC_MSG_ERROR(Cannot find libjpeg)) AC_CONFIG_FILES([ *************** *** 31,33 **** ]) AC_OUTPUT - --- 38,39 ---- |
From: Radu C. <rc...@us...> - 2011-12-03 21:58:02
|
Update of /cvsroot/gcx/gcx In directory vz-cvs-4.sog:/tmp/cvs-serv27759 Modified Files: Makefile.am Log Message: v1.5 release Index: Makefile.am =================================================================== RCS file: /cvsroot/gcx/gcx/Makefile.am,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Makefile.am 3 Dec 2011 21:19:57 -0000 1.16 --- Makefile.am 3 Dec 2011 21:58:00 -0000 1.17 *************** *** 1,10 **** ## Process this file with automake to produce Makefile.in ! SUBDIRS = src EXTRA_DIST = \ README.vizquery \ autogen.sh \ ! gcx.glade CLEANFILES = *~ docs/*~ --- 1,11 ---- ## Process this file with automake to produce Makefile.in ! SUBDIRS = src EXTRA_DIST = \ README.vizquery \ autogen.sh \ ! gcx.glade \ ! docs/* CLEANFILES = *~ docs/*~ |
From: Radu C. <rc...@us...> - 2011-12-03 21:48:09
|
Update of /cvsroot/gcx/gcx/src In directory vz-cvs-4.sog:/tmp/cvs-serv26126/src Modified Files: filegui.c gcx.c helpmsg.c obsdata.c Log Message: -w option, bz2 files, vesion 1.5 Index: helpmsg.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/helpmsg.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** helpmsg.c 28 Sep 2011 06:05:47 -0000 1.9 --- helpmsg.c 3 Dec 2011 21:48:07 -0000 1.10 *************** *** 95,98 **** --- 95,99 ---- " --mag-limit Set a magnitude limit for the output of\n" " import and merge commands.\n" + "-w --wcs-fit Fit wcs of frame and update the fits header\n" "\n" " CCD Reduction Options\n" Index: gcx.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/gcx.c,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** gcx.c 28 Sep 2011 06:05:47 -0000 1.37 --- gcx.c 3 Dec 2011 21:48:07 -0000 1.38 *************** *** 602,605 **** --- 602,606 ---- char starf[1024] = ""; /* star list */ int to_pnm = 0; + int fit_wcs = 0; int run_phot = 0; int convert_recipe = 0; *************** *** 631,635 **** GtkWidget *window; ! char *shortopts = "D:p:hP:V:vo:id:b:f:B:M:A:O:usa:T:S:nG:Nj:FcX:e:"; struct option longopts[] = { {"debug", required_argument, NULL, 'D'}, --- 632,636 ---- GtkWidget *window; ! char *shortopts = "D:p:hP:V:vo:id:b:f:B:M:A:O:usa:T:S:nG:Nj:FcX:e:w"; struct option longopts[] = { {"debug", required_argument, NULL, 'D'}, *************** *** 669,672 **** --- 670,674 ---- {"make-tycho-rcp", required_argument, NULL, ']'}, {"make-cat-rcp", required_argument, NULL, '>'}, + {"wcs-fit", no_argument, NULL, 'w'}, {"rep-to-table", required_argument, NULL, 'T'}, *************** *** 771,774 **** --- 773,780 ---- batch = 1; break; + case 'w': + fit_wcs = 1; + batch = 1; + break; case 'O': strncpy(of, optarg, 1023); *************** *** 1132,1135 **** --- 1138,1180 ---- exit(0); } + if (fit_wcs) { + struct image_channel *channel; + char *fn; + int rtn; + channel = g_object_get_data(G_OBJECT(window), "i_channel"); + if (channel == NULL) { + err_printf("oops - no channel\n"); + if (batch && !interactive) + exit(1); + } + if (match_field_in_window_quiet(window)) + exit(2); + wcs_to_fits_header(channel->fr); + fn = channel->fr->name; + if (file_is_zipped(fn)) { + for (i = strlen(fn); i > 0; i--) + if (fn[i] == '.') { + fn[i] = 0; + break; + } + rtn = write_gz_fits_frame(channel->fr, fn, P_STR(FILE_COMPRESS)); + } else { + rtn = write_fits_frame(channel->fr, fn); + } + + /* + if (outf[0] != 0) { + ret = channel_to_pnm_file(channel, NULL, outf, 0); + } else { + ret = channel_to_pnm_file(channel, NULL, NULL, 0); + } + */ + if (batch && !interactive) { + if (rtn == 0) + exit(0); + else + exit(3); + } + } if (rf[0] != 0) { FILE *output_file = NULL; Index: obsdata.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/obsdata.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** obsdata.c 12 Sep 2009 16:30:54 -0000 1.8 --- obsdata.c 3 Dec 2011 21:48:07 -0000 1.9 *************** *** 362,365 **** --- 362,366 ---- double D; + d3_printf("scan_for_pc\n"); if (fits_get_double(fr, P_STR(FN_CROTA1), &fim->rot) <= 0) fim->rot = 0; *************** *** 391,394 **** --- 392,396 ---- } + D = pc[0][0] * pc[1][1] - pc[1][0] * pc[0][1]; *************** *** 407,411 **** fim->pc[0][1] = pc[0][1]; fim->pc[1][1] = pc[1][1]; ! fim->rot = raddeg(atan2(pc[0][1], pc[0][0])); return 1; --- 409,414 ---- fim->pc[0][1] = pc[0][1]; fim->pc[1][1] = pc[1][1]; ! if (ret) ! fim->rot = raddeg(atan2(pc[0][1], pc[0][0])); return 1; Index: filegui.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/filegui.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** filegui.c 28 Sep 2011 06:05:47 -0000 1.20 --- filegui.c 3 Dec 2011 21:48:07 -0000 1.21 *************** *** 905,908 **** --- 905,911 ---- return 1; } + if ((len > 5) && (strcasecmp(fn + len - 4, ".bz2") == 0)) { + return 1; + } return 0; } |
From: Radu C. <rc...@us...> - 2011-12-03 21:19:59
|
Update of /cvsroot/gcx/gcx/src In directory vz-cvs-4.sog:/tmp/cvs-serv21706/src Modified Files: config.h.in Log Message: removed docs building from makefile.am Index: config.h.in =================================================================== RCS file: /cvsroot/gcx/gcx/src/config.h.in,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** config.h.in 26 Jul 2011 08:41:54 -0000 1.6 --- config.h.in 3 Dec 2011 21:19:57 -0000 1.7 *************** *** 61,67 **** #undef PACKAGE_TARNAME - /* Define to the home page for this package. */ - #undef PACKAGE_URL - /* Define to the version of this package. */ #undef PACKAGE_VERSION --- 61,64 ---- |
From: Matei C. <cm...@us...> - 2011-10-08 06:33:19
|
Update of /cvsroot/gcx/gcx/src In directory vz-cvs-4.sog:/tmp/cvs-serv21683 Modified Files: Makefile.am psf.c Added Files: skyview.c Log Message: Fix bounds check in radial_profile and add missing file --- NEW FILE: skyview.c --- /******************************************************************************* Copyright(c) 2011 Matei Conovici. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. The full GNU General Public License is included in this distribution in the file called LICENSE. Contact Information: mco...@gm... *******************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #include <sys/time.h> #include <string.h> #include <errno.h> #include "gcx.h" #include "params.h" #include "obsdata.h" #include "catalogs.h" #include "sourcesdraw.h" #include "gui.h" #include "wcs.h" #include "demosaic.h" #include "interface.h" static char *skyview_xml = "<interface>" " <requires lib=\"gtk+\" version=\"2.16\"/>" " <!-- interface-naming-policy project-wide -->" " <object class=\"GtkWindow\" id=\"skyview\">" " <property name=\"title\" translatable=\"yes\">Download SkyView Image</property>" " <child>" " <object class=\"GtkVBox\" id=\"vbox1\">" " <property name=\"width_request\">350</property>" " <property name=\"height_request\">230</property>" " <property name=\"visible\">True</property>" " <property name=\"orientation\">vertical</property>" " <child>" " <object class=\"GtkFrame\" id=\"frame1\">" " <property name=\"visible\">True</property>" " <property name=\"border_width\">5</property>" " <property name=\"label_xalign\">0</property>" " <child>" " <object class=\"GtkAlignment\" id=\"alignment1\">" " <property name=\"visible\">True</property>" " <property name=\"top_padding\">5</property>" " <property name=\"bottom_padding\">5</property>" " <property name=\"left_padding\">5</property>" " <property name=\"right_padding\">5</property>" " <child>" " <object class=\"GtkVBox\" id=\"vbox2\">" " <property name=\"visible\">True</property>" " <property name=\"orientation\">vertical</property>" " <property name=\"spacing\">2</property>" " <child>" " <object class=\"GtkLabel\" id=\"label2\">" " <property name=\"visible\">True</property>" " <property name=\"xalign\">0</property>" " <property name=\"xpad\">6</property>" " <property name=\"label\" translatable=\"yes\">Position</property>" " </object>" " <packing>" " <property name=\"expand\">False</property>" " <property name=\"fill\">False</property>" " <property name=\"position\">0</property>" " </packing>" " </child>" " <child>" " <object class=\"GtkEntry\" id=\"skyview_position\">" " <property name=\"visible\">True</property>" " <property name=\"can_focus\">True</property>" " <property name=\"tooltip_text\" translatable=\"yes\">Coordinates or object name (resolved by SIMBAD)</property>" " <property name=\"invisible_char\">●</property>" " </object>" " <packing>" " <property name=\"expand\">False</property>" " <property name=\"fill\">False</property>" " <property name=\"position\">1</property>" " </packing>" " </child>" " <child>" " <object class=\"GtkLabel\" id=\"label3\">" " <property name=\"visible\">True</property>" " <property name=\"xalign\">0</property>" " <property name=\"xpad\">6</property>" " <property name=\"label\" translatable=\"yes\">Survey</property>" " </object>" " <packing>" " <property name=\"expand\">False</property>" " <property name=\"fill\">False</property>" " <property name=\"position\">2</property>" " </packing>" " </child>" " <child>" " <object class=\"GtkComboBox\" id=\"skyview_survey\">" " <property name=\"visible\">True</property>" " <property name=\"model\">skyview_survey_store</property>" " <property name=\"active\">0</property>" " </object>" " <packing>" " <property name=\"expand\">False</property>" " <property name=\"fill\">False</property>" " <property name=\"position\">3</property>" " </packing>" " </child>" " <child>" " <object class=\"GtkLabel\" id=\"label4\">" " <property name=\"visible\">True</property>" " <property name=\"xalign\">0</property>" " <property name=\"xpad\">6</property>" " <property name=\"label\" translatable=\"yes\">Field Size</property>" " </object>" " <packing>" " <property name=\"expand\">False</property>" " <property name=\"fill\">False</property>" " <property name=\"position\">4</property>" " </packing>" " </child>" " <child>" " <object class=\"GtkEntry\" id=\"skyview_fieldsize\">" " <property name=\"width_request\">30</property>" " <property name=\"visible\">True</property>" " <property name=\"can_focus\">True</property>" " <property name=\"tooltip_text\" translatable=\"yes\">Field size in degrees of arc</property>" " <property name=\"invisible_char\">●</property>" " </object>" " <packing>" " <property name=\"expand\">False</property>" " <property name=\"fill\">False</property>" " <property name=\"position\">5</property>" " </packing>" " </child>" " </object>" " </child>" " </object>" " </child>" " <child type=\"label\">" " <object class=\"GtkLabel\" id=\"label1\">" " <property name=\"visible\">True</property>" " <property name=\"xpad\">5</property>" " <property name=\"label\" translatable=\"yes\">Download image from NASA <i>SkyView</i></property>" " <property name=\"use_markup\">True</property>" " </object>" " </child>" " </object>" " <packing>" " <property name=\"padding\">4</property>" " <property name=\"position\">0</property>" " </packing>" " </child>" " <child>" " <object class=\"GtkHButtonBox\" id=\"hbuttonbox1\">" " <property name=\"visible\">True</property>" " <property name=\"border_width\">4</property>" " <property name=\"layout_style\">spread</property>" " <child>" " <object class=\"GtkButton\" id=\"skyview_fetch\">" " <property name=\"label\" translatable=\"yes\">_Fetch</property>" " <property name=\"visible\">True</property>" " <property name=\"can_focus\">True</property>" " <property name=\"receives_default\">True</property>" " <property name=\"use_underline\">True</property>" " </object>" " <packing>" " <property name=\"expand\">False</property>" " <property name=\"fill\">False</property>" " <property name=\"position\">0</property>" " </packing>" " </child>" " <child>" " <object class=\"GtkButton\" id=\"skyview_cancel\">" " <property name=\"label\" translatable=\"yes\">_Cancel</property>" " <property name=\"visible\">True</property>" " <property name=\"can_focus\">True</property>" " <property name=\"receives_default\">True</property>" " <property name=\"use_underline\">True</property>" " </object>" " <packing>" " <property name=\"expand\">False</property>" " <property name=\"fill\">False</property>" " <property name=\"position\">1</property>" " </packing>" " </child>" " </object>" " <packing>" " <property name=\"expand\">False</property>" " <property name=\"fill\">False</property>" " <property name=\"position\">1</property>" " </packing>" " </child>" " </object>" " </child>" " </object>" " <object class=\"GtkListStore\" id=\"skyview_survey_store\">" " <columns>" " <!-- column-name survey_label -->" " <column type=\"gchararray\"/>" " <!-- column-name survey_value -->" " <column type=\"gchararray\"/>" " </columns>" " <data>" " <row>" " <col id=\"0\" translatable=\"yes\">DSS</col>" " <col id=\"1\" translatable=\"yes\">dss</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">DSS1 Blue</col>" " <col id=\"1\" translatable=\"yes\">dss1b</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">DSS1 Red</col>" " <col id=\"1\" translatable=\"yes\">dss1r</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">DSS2 Blue</col>" " <col id=\"1\" translatable=\"yes\">dss2b</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">DSS2 Red</col>" " <col id=\"1\" translatable=\"yes\">dss2r</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">DSS2 IR</col>" " <col id=\"1\" translatable=\"yes\">dss2ir</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">SDSS G</col>" " <col id=\"1\" translatable=\"yes\">sdssg</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">SDSS I</col>" " <col id=\"1\" translatable=\"yes\">sdssi</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">SDSS R</col>" " <col id=\"1\" translatable=\"yes\">sdssr</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">SDSS U</col>" " <col id=\"1\" translatable=\"yes\">sdssu</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">SDSS Z</col>" " <col id=\"1\" translatable=\"yes\">sdssz</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">GALEX Far UV</col>" " <col id=\"1\" translatable=\"yes\">galexfar</col>" " </row>" " <row>" " <col id=\"0\" translatable=\"yes\">GALEX Near UV</col>" " <col id=\"1\" translatable=\"yes\">galexnear</col>" " </row>" " </data>" " </object>" "</interface>"; static void delete_download(GtkWidget *widget, GdkEvent *event, gpointer data) { g_return_if_fail(data != NULL); g_object_set_data(G_OBJECT(data), "download", NULL); } static int logw_print(char *msg, void *data) { GtkWidget *logw = data; GtkWidget *text; GtkToggleButton *stopb; text = g_object_get_data(G_OBJECT(logw), "query_log_text"); g_return_val_if_fail(text != NULL, 0); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW (text), GTK_WRAP_CHAR); gtk_text_buffer_insert_at_cursor(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)), msg, -1); while (gtk_events_pending()) gtk_main_iteration(); stopb = g_object_get_data(G_OBJECT(logw), "query_stop_toggle"); if (gtk_toggle_button_get_active(stopb)) { gtk_toggle_button_set_active(stopb, 0); return 1; } return 0; } static int fetch_skyview_image(GtkWidget *window, const char *position, const char *survey, const char *field) { GtkWidget *logw, *im_window; char *epos, *esurvey, *efield; char cmd[1024]; char *fn = NULL; FILE *vq; fd_set fds; struct timeval tv; int ret; char *p, *line; size_t ll; struct ccd_frame *fr; ll = 256; line = malloc(ll); line[0] = 0; epos = g_uri_escape_string(position, NULL, FALSE); esurvey = g_uri_escape_string(survey, NULL, FALSE); efield = g_uri_escape_string(field, NULL, FALSE); snprintf(cmd, 1024, "%s -q -O - \"%s?Position='%s'" "&survey=%s&Size=%s&Pixels=%d&coordinates=J2000" "&projection=Tan&float=on&scaling=Linear" "&resolver=SIMBAD-NED&Sampler=LI" "&return=filename\"", P_STR(QUERY_WGET), P_STR(QUERY_SKYVIEW_RUNQUERY_URL), epos, esurvey, efield, P_INT(QUERY_SKYVIEW_PIXELS)); g_free(epos); g_free(esurvey); g_free(efield); vq = popen(cmd, "r"); if (vq == NULL) { err_printf("cannot run wget (%s)\n", strerror(errno)); return -1; } /* FIXME: should probably use g_spawn_async here, and refactor query.c to use the same mechanism */ logw = create_query_log_window(); g_object_set_data_full(G_OBJECT(window), "download", logw, (GDestroyNotify)(gtk_widget_destroy)); g_signal_connect (G_OBJECT (logw), "delete_event", G_CALLBACK (delete_download), window); gtk_widget_show(logw); logw_print("Running SkyView query ", logw); do { FD_ZERO(&fds); FD_SET(fileno(vq), &fds); tv.tv_sec = 0; tv.tv_usec = 500000; errno = 0; ret = select(fileno(vq) + 1, &fds, NULL, NULL, &tv); if (ret == 0 || errno || !FD_ISSET(fileno(vq), &fds)) { if (logw_print(".", logw)) break; continue; } ret = getline(&line, &ll, vq); if (ret <= 0) continue; } while (ret >= 0); pclose(vq); logw_print("\n", logw); if ((p = strchr(line, '\n')) != NULL) *p = 0; if (strncasecmp(line, "skv", 3) || strlen(line) > 16) goto err_out; /* destination filename */ snprintf(cmd, 1024, "%s/%s.fits", P_STR(QUERY_SKYVIEW_DIR), line); fn = strdup(cmd); snprintf(cmd, 1024, "Fetching to %s.fits ", line); logw_print(cmd, logw); snprintf(cmd, 1024, "%s -q -O %s %s/%s.fits", P_STR(QUERY_WGET), fn, P_STR(QUERY_SKYVIEW_TEMPSPACE_URL), line); vq = popen(cmd, "r"); if (vq == NULL) { err_printf("cannot run wget (%s)\n", strerror(errno)); goto err_out; } ll = 256; line[0] = 0; do { FD_ZERO(&fds); FD_SET(fileno(vq), &fds); tv.tv_sec = 0; tv.tv_usec = 200000; errno = 0; ret = select(fileno(vq) + 1, &fds, NULL, NULL, &tv); if (ret == 0 || errno || !FD_ISSET(fileno(vq), &fds)) { if (logw_print(".", logw)) break; continue; } /* consume the event, if any */ ret = getline(&line, &ll, vq); if (ret <= 0) continue; } while (ret >= 0); pclose(vq); /* load it in the im_window */ im_window = g_object_get_data (G_OBJECT(window), "im_window"); fr = read_image_file(fn, P_STR(FILE_UNCOMPRESS), P_INT(FILE_UNSIGNED_FITS), default_cfa[P_INT(FILE_DEFAULT_CFA)]); if (fr == NULL) { err_printf_sb2(im_window, "Error opening %s", fn); goto err_out; } rescan_fits_wcs(fr, &fr->fim); rescan_fits_exp(fr, &fr->exp); frame_to_channel(fr, im_window, "i_channel"); release_frame(fr); extern void set_last_open(gpointer object, char *file_class, char *path); set_last_open(im_window, "last_open_fits", strdup(fn)); /* possibly remove the file */ if (!P_INT(QUERY_SKYVIEW_KEEPFILES)) unlink(fn); /* meh */ ret = 0; goto out; err_out: ret = -1; out: g_object_set_data(G_OBJECT(window), "download", NULL); free(line); free(fn); return ret; } static gboolean skyview_close_window (GtkWidget *widget, GdkEvent *event, gpointer im_window) { g_object_set_data (G_OBJECT(im_window), "skyview", NULL); return FALSE; } static void skyview_cancel(GtkWidget *button, gpointer window) { GtkWidget *im_window = g_object_get_data (G_OBJECT(window), "im_window"); if (im_window) g_object_set_data (G_OBJECT(im_window), "skyview", NULL); gtk_widget_destroy (window); } static void skyview_fetch(GtkWidget *button, gpointer window) { GtkWidget *wpos = GTK_WIDGET(g_object_get_data(G_OBJECT(window), "skyview_position")), *wcombo = GTK_WIDGET(g_object_get_data(G_OBJECT(window), "skyview_survey")), *wfield = GTK_WIDGET(g_object_get_data(G_OBJECT(window), "skyview_fieldsize")); GtkTreeModel *model; GtkTreeIter iter; const char *pos, *field, *survey; GValue val = { 0 }; pos = gtk_entry_get_text (GTK_ENTRY(wpos)); field = gtk_entry_get_text (GTK_ENTRY(wfield)); model = gtk_combo_box_get_model (GTK_COMBO_BOX(wcombo)); if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(wcombo), &iter)) return; gtk_tree_model_get_value(model, &iter, 1, &val); survey = g_value_get_string(&val); if (!fetch_skyview_image(window, pos, survey, field)) { skyview_cancel(button, window); } g_value_unset (&val); } static GtkWidget *create_skyview(gpointer window) { GtkBuilder *builder; GtkWidget *skyview; static char *widgets[] = { "skyview_position", "skyview_fieldsize", "skyview_survey", "skyview_survey_store", "skyview_fetch", "skyview_cancel", NULL }; int i; GError *err = NULL; builder = gtk_builder_new (); gtk_builder_add_from_string (builder, skyview_xml, strlen(skyview_xml), &err); skyview = GTK_WIDGET (gtk_builder_get_object (builder, "skyview")); for (i = 0; widgets[i]; i++) { GObject *o = gtk_builder_get_object (builder, widgets[i]); g_object_set_data (G_OBJECT(skyview), widgets[i], o); } GtkComboBox *combo = GTK_COMBO_BOX (g_object_get_data (G_OBJECT(skyview), "skyview_survey")); GtkCellRenderer * cell = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start( GTK_CELL_LAYOUT( combo ), cell, TRUE ); gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT( combo ), cell, "text", 0, NULL ); g_object_unref (builder); g_object_set_data (G_OBJECT(window), "skyview", skyview); g_object_set_data (G_OBJECT(skyview), "im_window", window); g_signal_connect(G_OBJECT(skyview), "delete-event", G_CALLBACK(skyview_close_window), window); g_signal_connect(G_OBJECT(g_object_get_data(G_OBJECT(skyview), "skyview_fetch")), "clicked", G_CALLBACK(skyview_fetch), skyview); g_signal_connect(G_OBJECT(g_object_get_data(G_OBJECT(skyview), "skyview_cancel")), "clicked", G_CALLBACK(skyview_cancel), skyview); /* fill in defaults */ struct wcs *wcs = g_object_get_data(G_OBJECT(window), "wcs_of_window"); if (wcs) { static char buf[64]; snprintf(buf, 64, "%.5f, %.5f", wcs->xref, wcs->yref); gtk_entry_set_text (GTK_ENTRY(g_object_get_data(G_OBJECT(skyview), "skyview_position")), buf); } gtk_entry_set_text (GTK_ENTRY(g_object_get_data(G_OBJECT(skyview), "skyview_fieldsize")), "1.5"); return skyview; } void act_download_skyview(GtkAction *action, gpointer window) { GtkWidget *dialog; dialog = g_object_get_data (G_OBJECT(window), "skyview"); if (dialog == NULL) { dialog = create_skyview(window); gtk_widget_show_all (dialog); } else { gtk_widget_show (dialog); gdk_window_raise (dialog->window); } } Index: Makefile.am =================================================================== RCS file: /cvsroot/gcx/gcx/src/Makefile.am,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** Makefile.am 28 Sep 2011 06:05:47 -0000 1.27 --- Makefile.am 8 Oct 2011 06:33:17 -0000 1.28 *************** *** 22,26 **** mbandrep.c starfile.c getline.h synth.c psf.c psf.h dsimplex.c dsimplex.h \ basename.c dirname.c libgen.h query.c query.h plate.c \ ! demosaic.c demosaic.h skyview.c skyview.h \ tele_indi.c tele_indi.h camera_indi.c camera_indi.h \ fwheel_indi.c fwheel_indi.h common_indi.c common_indi.h \ --- 22,26 ---- mbandrep.c starfile.c getline.h synth.c psf.c psf.h dsimplex.c dsimplex.h \ basename.c dirname.c libgen.h query.c query.h plate.c \ ! demosaic.c demosaic.h skyview.c \ tele_indi.c tele_indi.h camera_indi.c camera_indi.h \ fwheel_indi.c fwheel_indi.h common_indi.c common_indi.h \ Index: psf.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/psf.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** psf.c 28 Sep 2011 06:05:47 -0000 1.17 --- psf.c 8 Oct 2011 06:33:17 -0000 1.18 *************** *** 515,520 **** // ye = ys + ri; g_return_val_if_fail(ri < fr->w, 0); ! for (iy = 0; iy < ri && ys + iy < fr->w; iy++) { ! for (ix = 0; ix < ri && xs + ix < fr->h; ix++) { double dist; dist = sqrt(sqr(ix + xs - x) + sqr(iy + ys - y)); --- 515,520 ---- // ye = ys + ri; g_return_val_if_fail(ri < fr->w, 0); ! for (iy = 0; iy < ri && ys + iy < fr->h; iy++) { ! for (ix = 0; ix < ri && xs + ix < fr->w; ix++) { double dist; dist = sqrt(sqr(ix + xs - x) + sqr(iy + ys - y)); |
From: Matei C. <cm...@us...> - 2011-09-28 06:05:49
|
Update of /cvsroot/gcx/gcx/src/gsc In directory vz-cvs-4.sog:/tmp/cvs-serv17796/src/gsc Modified Files: embgsc.c Log Message: * gtk_notebook workaround for gtk 2.20 * add command line option to extract stars * allow more FITS header blocks (for those HST images :-) * fix some FITS issues * fix bad memory allocations for color images * add image download from NASA SkyView * use per-color averages when flat-fielding CFA images instead of cavg * fix callback argument to INDI_callback * fix some copy/paste errors * allow negative temperature setpoints for the camera * fix multiple exposures in camera control * release captured frames, eventually * allow sub-second exposure times (for bias frames) * fix buffer overrun in tycho2 * fix buffer overflow/memory corruption in ring_stats Index: embgsc.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/gsc/embgsc.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** embgsc.c 12 Dec 2005 02:42:08 -0000 1.2 --- embgsc.c 28 Sep 2011 06:05:47 -0000 1.3 *************** *** 387,391 **** char *ptr; int centers; char line[256], *s, region[256], path[256]; ! int sum,k,i,stat=0,id; INT size,x1,x2,z1=0,z2,xx1,xx2,zz1,zz2; INT alpha,hscale=1,hscad2=1,xr1=0,xr2=0; --- 387,391 ---- char *ptr; int centers; char line[256], *s, region[256], path[256]; ! int k,i,stat=0,id; INT size,x1,x2,z1=0,z2,xx1,xx2,zz1,zz2; INT alpha,hscale=1,hscad2=1,xr1=0,xr2=0; *************** *** 434,438 **** line[0] = '\0'; - sum = 0; da0 = ra; --- 434,437 ---- |
From: Riccardo S. <unr...@em...> - 2011-07-26 21:01:53
|
On Mon, Jul 25, 2011 at 11:48:44PM +0300, Radu Corlan wrote: > I'm in a very sorry state: with the sf password change last year, i > can't log to the project anymore - can't even commit to cvs. hope > someone else has permissions to make file releases.... There is some kind of password reset procedure? Do you think that you could give those rights to Matei? Perhaps dropping a mail to sourceforge staff is enough... Riccardo |
From: Matei C. <cm...@pr...> - 2011-07-26 09:31:12
|
> I don't seem to have the rights to do file releases. IAE, I've commited the changes (typo fixes were already there?) and bumped the version to 1.4. To make a dist, configure && make && make dist Matei |
From: Matei C. <cm...@us...> - 2011-07-26 08:52:04
|
Update of /cvsroot/gcx/gcx In directory vz-cvs-4.sog:/tmp/cvs-serv17932 Modified Files: configure.ac Log Message: Bump version to 1.4 Index: configure.ac =================================================================== RCS file: /cvsroot/gcx/gcx/configure.ac,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** configure.ac 26 Jul 2011 08:41:53 -0000 1.2 --- configure.ac 26 Jul 2011 08:52:02 -0000 1.3 *************** *** 1,4 **** ! AC_INIT([gcx], [1.3]) AM_INIT_AUTOMAKE([foreign -Wall -Werror]) --- 1,4 ---- ! AC_INIT([gcx], [1.4]) AM_INIT_AUTOMAKE([foreign -Wall -Werror]) |
From: Matei C. <cm...@us...> - 2011-07-26 08:41:56
|
Update of /cvsroot/gcx/gcx/docs In directory vz-cvs-4.sog:/tmp/cvs-serv15789/docs Modified Files: Makefile.am Log Message: Makefile tweaks, explicit dependency on zlib (thanks Riccardo), some GTK API updates which I apparently never commited. Index: Makefile.am =================================================================== RCS file: /cvsroot/gcx/gcx/docs/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Makefile.am 28 Feb 2010 04:06:24 -0000 1.2 --- Makefile.am 26 Jul 2011 08:41:54 -0000 1.3 *************** *** 1,11 **** PICTS = aucyg-res-std.gpl aucyg-wres-std.gpl v-res-mag-zponly.gpl v-se-color.gpl \ v-se-color-zponly.gpl zp-am-1.gpl zp-am-2.gpl zp-t-1.gpl zp-t-2.gpl ! EPSPICT = $(PICTS:.gpl=.eps) ! PDFPICT = $(PICTS:.gpl=.pdf) ! EXTRA_DIST = Makefile.in gcx.ltx gpl2eps.gp $(PICTS) \ html gcx.pdf gcx.dvi gcx.1 --- 1,15 ---- + # The pre-compiled documentation is included in the dist, so you don't + # need latex et. all installed to build it. + PICTS = aucyg-res-std.gpl aucyg-wres-std.gpl v-res-mag-zponly.gpl v-se-color.gpl \ v-se-color-zponly.gpl zp-am-1.gpl zp-am-2.gpl zp-t-1.gpl zp-t-2.gpl ! BASEPICTS = $(PICTS:.gpl=) ! EPS_PICTS = $(PICTS:.gpl=.eps) ! PDF_PICTS = $(PICTS:.gpl=.pdf) ! EXTRA_DIST = gcx.ltx gpl2eps.gp $(PICTS) \ html gcx.pdf gcx.dvi gcx.1 *************** *** 13,58 **** doc_DATA = gcx.pdf gcx.dvi ! htmldir = $(docdir)/html ! all-local: gcx.pdf gcx.dvi gcx.html install-data-hook: ! $(MKDIR_P) $(htmldir) ! $(INSTALL_DATA) html/* $(htmldir) ! .gpl.eps: ! gnuplot gpl2eps.gp $^ > $@ ! .gpl.pdf: ! gnuplot gpl2eps.gp $^ | epstopdf -f > $@ ! pictures: $(EPSPICT) $(PDFPICT) ! touch pictures - options: ../src/gcx - ../src/gcx --options-doc >options.ltx - echo '\begin{verbatim}' >cmdline.txt - ../src/gcx --help 2>>cmdline.txt - echo '\end{verbatim}' >>cmdline.txt - echo '\begin{verbatim}' >repconv.txt - ../src/gcx --help-rep-conv >>repconv.txt - echo '\end{verbatim}' >>repconv.txt - touch options ! gcx.pdf: gcx.ltx options pictures ! pdflatex gcx.ltx ! gcx.dvi: gcx.ltx options pictures ! latex gcx.ltx ! gcx.html: gcx.ltx options pictures ! latex2html --split=3 --dir html --mkdir gcx.ltx ! touch gcx.html ! clean: ! rm -f *~ *.aux *.toc *.log *.eps *.dvi *.pdf ! rm -f gcx.html options pictures ! rm -rf html ! distclean: clean --- 17,75 ---- doc_DATA = gcx.pdf gcx.dvi ! OPTFILES = options.ltx cmdline.txt repconv.txt ! # slow and safe ! .NOTPARALLEL: ! ! all-local: gcx.dvi gcx.pdf html/index.html + # use html from build-dir (e.g. distcheck alternate dir compilation) + # if available, or fallback to srcdir install-data-hook: ! $(mkinstalldirs) $(DESTDIR)$(docdir)/html ! if test -d html; then \ ! $(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html ; \ ! else \ ! $(INSTALL_DATA) $(srcdir)/html/* $(DESTDIR)$(docdir)/html ; \ ! fi ! uninstall-hook: ! ( cd $(DESTDIR)$(docdir) && rm -rf html ) ! define do_extras ! ../src/gcx --options-doc > options.ltx ! -echo '\begin{verbatim}' > cmdline.txt ! ../src/gcx --help 2>> cmdline.txt ! -echo '\end{verbatim}' >> cmdline.txt ! -echo '\begin{verbatim}' > repconv.txt ! ../src/gcx --help-rep-conv >> repconv.txt ! -echo '\end{verbatim}' >> repconv.txt ! for f in $(BASEPICTS); do \ ! gnuplot $(srcdir)/gpl2eps.gp $$f.gpl > $$f.eps ; \ ! epstopdf $$f.eps > $$f.pdf ; \ ! done ! endef ! gcx.dvi: gcx.ltx ! $(do_extras) ! while ( latex $(srcdir)/gcx.ltx ; \ ! grep -q "Rerun to get cross-references right" gcx.log ) do true ; \ ! done ! # do these after the .dvi, so we have options, pictures, .aux and .toc ! gcx.pdf: gcx.ltx gcx.dvi ! pdflatex $(srcdir)/gcx.ltx ! html/index.html: gcx.ltx gcx.dvi ! latex2html --split=3 --dir html --mkdir $(srcdir)/gcx.ltx ! clean-local: ! rm -f *~ *.aux *.toc *.log $(OPTFILES) $(EPS_PICTS) $(PDF_PICTS) ! distclean-local: clean-local ! ! realclean: ! rm -rf gcx.dvi gcx.pdf html |
From: Radu C. <rad...@vi...> - 2011-07-25 21:49:29
|
> Also, as Matei fixed the issue reported in: > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=609079 > (and I'm also attaching a patch fixing minor typos in messages), would you > be so kind to release a new version of gcx with those two bugs (and typos) > fixed? > (even if would be faster for me to release a new debian package with all > those fixes, I prefer if you release a new version, so other people using > gcx from sources will also receive the patches) I'm in a very sorry state: with the sf password change last year, i can't log to the project anymore - can't even commit to cvs. hope someone else has permissions to make file releases.... radu > > regards, > Riccardo > --- gcx-1.3/configure.ac 2010-03-13 23:38:06.000000000 +0100 > +++ gcx-1.3.zlib/configure.ac 2011-07-23 23:41:55.000000000 +0200 > @@ -17,6 +17,8 @@ > > > AM_PATH_GTK_2_0(2.4.0, , AC_MSG_ERROR(Cannot find GTK: is pkg-config in path?)) > +AC_CHECK_HEADERS([zlib.h]) > +AC_CHECK_LIB(z, inflate) > > AC_CONFIG_FILES([ > makedeb > diff -u gcx-1.3/src/cameragui.c gcx-1.3.zlib/src/cameragui.c > --- gcx-1.3/src/cameragui.c 2009-10-08 13:18:53.000000000 +0200 > +++ gcx-1.3.zlib/src/cameragui.c 2011-07-24 00:03:31.000000000 +0200 > @@ -797,7 +797,7 @@ > if (!ret) { > status_message(data, "Synchronised"); > } else { > - err_printf("Failed to syncronize\n"); > + err_printf("Failed to synchronize\n"); > } > } > > diff -u gcx-1.3/src/helpmsg.c gcx-1.3.zlib/src/helpmsg.c > --- gcx-1.3/src/helpmsg.c 2009-06-28 22:03:28.000000000 +0200 > +++ gcx-1.3.zlib/src/helpmsg.c 2011-07-24 00:02:21.000000000 +0200 > @@ -121,7 +121,7 @@ > "-c, --demosaic Enable demosaicing using the method set in\n" > " the parameters file; If no color-field array\n" > " is specified by the input file, the default\n" > -" specified in the paramters file is used\n" > +" specified in the parameters file is used\n" > > "\n When any of the CCD reduction options is set and the -i flag\n" > " is not specified, the reduction operations are run in batch mode\n" > Common subdirectories: gcx-1.3/src/libindiclient and gcx-1.3.zlib/src/libindiclient > diff -u gcx-1.3/src/tele_indi.c gcx-1.3.zlib/src/tele_indi.c > --- gcx-1.3/src/tele_indi.c 2009-09-16 18:42:55.000000000 +0200 > +++ gcx-1.3.zlib/src/tele_indi.c 2011-07-24 00:03:03.000000000 +0200 > @@ -164,7 +164,7 @@ > elem = indi_prop_set_switch(tele->speed_prop, "Guide", TRUE); > break; > default: > - err_printf("Unkown speed: %d\n", type); > + err_printf("Unknown speed: %d\n", type); > return; > } > if (! elem) { > ------------------------------------------------------------------------------ > Storage Efficiency Calculator > This modeling tool is based on patent-pending intellectual property that > has been used successfully in hundreds of IBM storage optimization engage- > ments, worldwide. Store less, Store more with what you own, Move data to > the right place. Try It Now! http://www.accelacomm.com/jaw/sfnl/114/51427378/ > _______________________________________________ > Gcx-discussion mailing list > Gcx...@li... > https://lists.sourceforge.net/lists/listinfo/gcx-discussion |
From: Riccardo S. <unr...@em...> - 2011-07-23 22:44:29
|
tags 615719 patch tags 609079 fixed-upstream thanks Hello Radu and Matei, I was looking about the following debian bug report: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=615719 http://wiki.debian.org/ToolChain/DSOLinking As described in the wiki page above, the linker now doesn't try to guess what libraries could be needed but uses only those passed on the command line. As the indi part of gcx uses zlib but doesn't link explicitely to it, this causes a failure to build the sources on all "recent" debian systems. I've written the attached patch to fix the issue (adding zlib to configure checks). If you like it, would you import in the cvs. Also, as Matei fixed the issue reported in: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=609079 (and I'm also attaching a patch fixing minor typos in messages), would you be so kind to release a new version of gcx with those two bugs (and typos) fixed? (even if would be faster for me to release a new debian package with all those fixes, I prefer if you release a new version, so other people using gcx from sources will also receive the patches) regards, Riccardo |
From: Matei C. <cm...@us...> - 2011-03-27 17:13:03
|
Update of /cvsroot/gcx/gcx/src/ccd In directory vz-cvs-2.sog:/tmp/cvs-serv13767/src/ccd Modified Files: Makefile.am Log Message: Automake hacks, fix reduce dialog Index: Makefile.am =================================================================== RCS file: /cvsroot/gcx/gcx/src/ccd/Makefile.am,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Makefile.am 24 Feb 2010 17:28:15 -0000 1.6 --- Makefile.am 27 Mar 2011 17:13:00 -0000 1.7 *************** *** 1,5 **** ## Process this file with automake to produce Makefile.in ! INCLUDES = \ @GTK_CFLAGS@ AM_CFLAGS = -Wall --- 1,5 ---- ## Process this file with automake to produce Makefile.in ! AM_CPPFLAGS = \ @GTK_CFLAGS@ AM_CFLAGS = -Wall |
From: Matei C. <cm...@us...> - 2011-03-27 17:13:02
|
Update of /cvsroot/gcx/gcx/docs In directory vz-cvs-2.sog:/tmp/cvs-serv13767/docs Modified Files: Makefile.am Log Message: Automake hacks, fix reduce dialog Index: Makefile.am =================================================================== RCS file: /cvsroot/gcx/gcx/docs/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Makefile.am 28 Feb 2010 04:06:24 -0000 1.2 --- Makefile.am 27 Mar 2011 17:13:00 -0000 1.3 *************** *** 1,11 **** PICTS = aucyg-res-std.gpl aucyg-wres-std.gpl v-res-mag-zponly.gpl v-se-color.gpl \ v-se-color-zponly.gpl zp-am-1.gpl zp-am-2.gpl zp-t-1.gpl zp-t-2.gpl ! EPSPICT = $(PICTS:.gpl=.eps) ! PDFPICT = $(PICTS:.gpl=.pdf) ! EXTRA_DIST = Makefile.in gcx.ltx gpl2eps.gp $(PICTS) \ html gcx.pdf gcx.dvi gcx.1 --- 1,15 ---- + # The pre-compiled documentation is included in the dist, so you don't + # need latex et. all installed to build it. + PICTS = aucyg-res-std.gpl aucyg-wres-std.gpl v-res-mag-zponly.gpl v-se-color.gpl \ v-se-color-zponly.gpl zp-am-1.gpl zp-am-2.gpl zp-t-1.gpl zp-t-2.gpl ! BASEPICTS = $(PICTS:.gpl=) ! EPS_PICTS = $(PICTS:.gpl=.eps) ! PDF_PICTS = $(PICTS:.gpl=.pdf) ! EXTRA_DIST = gcx.ltx gpl2eps.gp $(PICTS) \ html gcx.pdf gcx.dvi gcx.1 *************** *** 13,58 **** doc_DATA = gcx.pdf gcx.dvi ! htmldir = $(docdir)/html ! all-local: gcx.pdf gcx.dvi gcx.html install-data-hook: ! $(MKDIR_P) $(htmldir) ! $(INSTALL_DATA) html/* $(htmldir) ! .gpl.eps: ! gnuplot gpl2eps.gp $^ > $@ ! .gpl.pdf: ! gnuplot gpl2eps.gp $^ | epstopdf -f > $@ ! pictures: $(EPSPICT) $(PDFPICT) ! touch pictures - options: ../src/gcx - ../src/gcx --options-doc >options.ltx - echo '\begin{verbatim}' >cmdline.txt - ../src/gcx --help 2>>cmdline.txt - echo '\end{verbatim}' >>cmdline.txt - echo '\begin{verbatim}' >repconv.txt - ../src/gcx --help-rep-conv >>repconv.txt - echo '\end{verbatim}' >>repconv.txt - touch options ! gcx.pdf: gcx.ltx options pictures ! pdflatex gcx.ltx ! gcx.dvi: gcx.ltx options pictures ! latex gcx.ltx ! gcx.html: gcx.ltx options pictures ! latex2html --split=3 --dir html --mkdir gcx.ltx ! touch gcx.html ! clean: ! rm -f *~ *.aux *.toc *.log *.eps *.dvi *.pdf ! rm -f gcx.html options pictures ! rm -rf html ! distclean: clean --- 17,75 ---- doc_DATA = gcx.pdf gcx.dvi ! OPTFILES = options.ltx cmdline.txt repconv.txt ! # slow and safe ! .NOTPARALLEL: ! ! all-local: gcx.dvi gcx.pdf html/index.html + # use html from build-dir (e.g. distcheck alternate dir compilation) + # if available, or fallback to srcdir install-data-hook: ! $(mkinstalldirs) $(DESTDIR)$(docdir)/html ! if test -d html; then \ ! $(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html ; \ ! else \ ! $(INSTALL_DATA) $(srcdir)/html/* $(DESTDIR)$(docdir)/html ; \ ! fi ! uninstall-hook: ! ( cd $(DESTDIR)$(docdir) && rm -rf html ) ! define do_extras ! ../src/gcx --options-doc > options.ltx ! -echo '\begin{verbatim}' > cmdline.txt ! ../src/gcx --help 2>> cmdline.txt ! -echo '\end{verbatim}' >> cmdline.txt ! -echo '\begin{verbatim}' > repconv.txt ! ../src/gcx --help-rep-conv >> repconv.txt ! -echo '\end{verbatim}' >> repconv.txt ! for f in $(BASEPICTS); do \ ! gnuplot $(srcdir)/gpl2eps.gp $$f.gpl > $$f.eps ; \ ! epstopdf $$f.eps > $$f.pdf ; \ ! done ! endef ! gcx.dvi: gcx.ltx ! $(do_extras) ! while ( latex $(srcdir)/gcx.ltx ; \ ! grep -q "Rerun to get cross-references right" gcx.log ) do true ; \ ! done ! # do these after the .dvi, so we have options, pictures, .aux and .toc ! gcx.pdf: gcx.ltx gcx.dvi ! pdflatex $(srcdir)/gcx.ltx ! html/index.html: gcx.ltx gcx.dvi ! latex2html --split=3 --dir html --mkdir $(srcdir)/gcx.ltx ! clean-local: ! rm -f *~ *.aux *.toc *.log $(OPTFILES) $(EPS_PICTS) $(PDF_PICTS) ! distclean-local: clean-local ! ! realclean: ! rm -rf gcx.dvi gcx.pdf html |
From: Matei C. <cm...@us...> - 2011-03-22 09:22:21
|
Update of /cvsroot/gcx/gcx/src In directory vz-cvs-2.sog:/tmp/cvs-serv22193/src Modified Files: gui.c gui.h mbandgui.c query.c query.h Log Message: Add UCAC3 query and fix frame/star list selection in mbandgui Index: query.h =================================================================== RCS file: /cvsroot/gcx/gcx/src/query.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** query.h 20 Mar 2011 02:41:58 -0000 1.5 --- query.h 22 Mar 2011 09:22:18 -0000 1.6 *************** *** 10,17 **** QUERY_GSC_ACT, QUERY_TYCHO2, QUERY_CATALOGS, }; ! #define CAT_QUERY_NAMES {"ucac2", "gsc2", "usnob", "gsc-act", "tycho2", NULL} extern char *query_catalog_names[]; --- 10,18 ---- QUERY_GSC_ACT, QUERY_TYCHO2, + QUERY_UCAC3, QUERY_CATALOGS, }; ! #define CAT_QUERY_NAMES {"ucac2", "gsc2", "usnob", "gsc-act", "tycho2", "ucac3", NULL} extern char *query_catalog_names[]; Index: query.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/query.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** query.c 21 Mar 2011 02:01:38 -0000 1.13 --- query.c 22 Mar 2011 09:22:18 -0000 1.14 *************** *** 57,65 **** QTABLE_USNOB, QTABLE_GSC_ACT, QTABLES, }; char *table_names[] = {"I_289_out", "I_294_ucac2bss", "I_271_out", "I_284_out", ! "I_255_out"}; static int detabify(char *line, int cols[], int n) --- 57,66 ---- QTABLE_USNOB, QTABLE_GSC_ACT, + QTABLE_UCAC3, QTABLES, }; char *table_names[] = {"I_289_out", "I_294_ucac2bss", "I_271_out", "I_284_out", ! "I_255_out", "I_315_out"}; static int detabify(char *line, int cols[], int n) *************** *** 264,267 **** --- 265,363 ---- } + static struct cat_star * parse_cat_line_ucac3(char *line) + { + struct cat_star * cats; + int cols[32]; + int nc; + double u, v, w, x; + double uc, m, j, k; + char *endp; + int ret = 0; + + nc = detabify(line, cols, 32); + + d4_printf("[ucac3-%d]%s\n", nc, line); + + if (nc < 12) + return NULL; + + u = strtod(line+cols[1], &endp); + if (line+cols[1] == endp) + return NULL; + v = strtod(line+cols[2], &endp); + if (line+cols[2] == endp) + return NULL; + + cats = cat_star_new(); + snprintf(cats->name, CAT_STAR_NAME_SZ, "ucac3%s", line+cols[0]); + cats->ra = u; + cats->dec = v; + cats->equinox = 2000.0; + cats->flags = CAT_STAR_TYPE_SREF; + + /* + #Column 3UC (a10) UCAC3 designation (1) [ucd=meta.id;meta.main] + #Column RAJ2000 (F11.7) Right ascension (degrees), ICRS, Ep=J2000 [ucd=pos.eq.ra;meta.main] + #Column DEJ2000 (F11.7) Declination (degrees), ICRS, Ep=J2000 [ucd=pos.eq.dec;meta.main] + #Column ePos (I4) Error of position at Epoch=J2000 (9) [ucd=stat.error;pos] + #Column f.mag (F6.3) ? UCAC fit model magnitude (579-642nm) (2) [ucd=phot.mag;em.opt] + #Column ot (I2) [-2,3] UCAC object classification flag (4) [ucd=src.class.starGalaxy] + #Column db (I1) [0,7] double star flag (5) [ucd=meta.code] + #Column pmRA (F8.1) ? Proper motion in RA(*cos(Dec)) \ifnum\Vphase>3{\fg{gray40}(in gray if catflg indicates less than 2 good matches)}\fi [ucd=pos.pm;pos.eq.ra] + #Column pmDE (F8.1) ? Proper motion in Dec \ifnum\Vphase>3{\fg{gray40}(in gray if catflg indicates less than 2 good matches)}\fi [ucd=pos.pm;pos.eq.dec] + #Column Jmag (F6.3) ? J magnitude (1.2um) from 2MASS \ifnum\Vphase>3{\fg{gray40}(in gray if upper limit)}\fi [ucd=phot.mag;em.IR.J] + #Column Kmag (F6.3) ? K magnitude (2.2um) from 2MASS \ifnum\Vphase>3{\fg{gray40}(in gray if upper limit)}\fi [ucd=phot.mag;em.IR.K] + #Column catflg (a10) matching flags for 10 catalogues (12) [ucd=meta.code] + + */ + + u = strtod(line+cols[3], &endp); + if (u > 0) { + cats->perr = u / 1000; // is epos in mas ? + } else { + cats->perr = BIG_ERR; + } + + uc = strtod(line+cols[4], &endp); + cats->mag = uc; + + /* what is "p=..." ? */ + m = strtod(line+cols[5], &endp); + asprintf(&cats->comments, "ucac3_class=%.0f", m); + + j = strtod(line+cols[9], &endp); + k = strtod(line+cols[10], &endp); + cats->smags = NULL; + + if (j > 0.0 && k > 0.0) { + if (uc == 0) + ret = asprintf(&cats->smags, "j=%.3f k=%.3f", j, k); + else + ret = asprintf(&cats->smags, "uc=%.3f j=%.3f k=%.3f", uc, j, k); + } + + w = strtod(line+cols[7], &endp); + if (line+cols[7] == endp) + return cats; + x = strtod(line+cols[8], &endp); + if (line+cols[8] == endp) + return cats; + + cats->flags |= CAT_ASTROMET; + + cats->astro = calloc(1, sizeof(struct cats_astro)); + g_return_val_if_fail(cats->astro != NULL, cats); + + cats->astro->epoch = 2000.0; + cats->astro->ra_err = 0; // cats->perr instead ?! + cats->astro->dec_err = 0; + cats->astro->ra_pm = w; + cats->astro->dec_pm = x; + cats->astro->flags = ASTRO_HAS_PM; + + cats->astro->catalog = strdup("ucac3"); + return cats; + } + static struct cat_star * parse_cat_line_gsc2(char *line) { *************** *** 519,522 **** --- 615,620 ---- { switch(tnum) { + case QTABLE_UCAC3: + return parse_cat_line_ucac3(line); case QTABLE_UCAC2: return parse_cat_line_ucac2_main(line); *************** *** 854,857 **** --- 952,960 ---- } + void act_stars_add_cds_ucac3 (GtkAction *action, gpointer window) + { + cds_query (window, QUERY_UCAC3); + } + void act_stars_add_cds_gsc2 (GtkAction *action, gpointer window) { Index: gui.h =================================================================== RCS file: /cvsroot/gcx/gcx/src/gui.h,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** gui.h 20 Mar 2011 02:41:58 -0000 1.19 --- gui.h 22 Mar 2011 09:22:18 -0000 1.20 *************** *** 266,269 **** --- 266,270 ---- extern void act_stars_add_cds_gsc_act (GtkAction *action, gpointer window); extern void act_stars_add_cds_ucac2 (GtkAction *action, gpointer window); + extern void act_stars_add_cds_ucac3 (GtkAction *action, gpointer window); extern void act_stars_add_cds_gsc2 (GtkAction *action, gpointer window); extern void act_stars_add_cds_usnob (GtkAction *action, gpointer window); Index: mbandgui.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/mbandgui.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** mbandgui.c 20 Mar 2011 02:41:58 -0000 1.14 --- mbandgui.c 22 Mar 2011 09:22:18 -0000 1.15 *************** *** 781,809 **** } ! ! void ofr_bpress_cb(GtkTreeView *ofr_list, GdkEventButton *event, gpointer data) { - int x, y; struct o_frame *ofr; GtkTreeModel *ofr_store; GtkTreePath *path; GtkTreeIter iter; ! g_return_if_fail(event->window == gtk_tree_view_get_bin_window(ofr_list)); ! ! x = floor(event->x); ! y = floor(event->y); ! ! if (gtk_tree_view_get_path_at_pos(ofr_list, x, y, &path, NULL, NULL, NULL)) { ! ! ofr_store = gtk_tree_view_get_model(ofr_list); ! if (gtk_tree_model_get_iter(ofr_store, &iter, path)) { gtk_tree_model_get(ofr_store, &iter, 0, &ofr, -1); g_return_if_fail(ofr != NULL); ! mb_rebuild_sob_list(data, ofr->sol); ! } } } --- 781,806 ---- } ! /* rebuild star list in stars tab based on the first frame in the current selection */ ! static void ofr_selection_cb(GtkWidget *selection, gpointer dialog) { struct o_frame *ofr; GtkTreeModel *ofr_store; GtkTreePath *path; GtkTreeIter iter; + GList *list; ! list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION(selection), &ofr_store); + if (list != NULL) { + path = list->data; + gtk_tree_model_get_iter (ofr_store, &iter, path); gtk_tree_model_get(ofr_store, &iter, 0, &ofr, -1); g_return_if_fail(ofr != NULL); ! mb_rebuild_sob_list (dialog, ofr->sol); } + + g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL); + g_list_free (list); } *************** *** 817,820 **** --- 814,818 ---- int i; GtkTreeViewColumn *column; + GtkTreeSelection *selection; ofr_list = g_object_get_data(G_OBJECT(dialog), "ofr_list"); *************** *** 845,853 **** ofr_list, (GDestroyNotify) gtk_widget_destroy); ! gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(ofr_list)), ! GTK_SELECTION_MULTIPLE); ! g_signal_connect(G_OBJECT(ofr_list), "button-press-event", ! G_CALLBACK(ofr_bpress_cb), dialog); gtk_widget_show(ofr_list); --- 843,851 ---- ofr_list, (GDestroyNotify) gtk_widget_destroy); ! selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(ofr_list)); ! gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); ! g_signal_connect (G_OBJECT(selection), "changed", ! G_CALLBACK(ofr_selection_cb), dialog); gtk_widget_show(ofr_list); Index: gui.c =================================================================== RCS file: /cvsroot/gcx/gcx/src/gui.c,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** gui.c 20 Mar 2011 02:41:58 -0000 1.30 --- gui.c 22 Mar 2011 09:22:18 -0000 1.31 *************** *** 505,508 **** --- 505,509 ---- { "catalogs-add-gsc-act", NULL, "Download GSC-_ACT stars from CDS", NULL, NULL, G_CALLBACK (act_stars_add_cds_gsc_act) }, { "catalogs-add-ucac2", NULL, "Download _UCAC-2 stars from CDS", NULL, NULL, G_CALLBACK (act_stars_add_cds_ucac2) }, + { "catalogs-add-ucac3", NULL, "Download UCAC-_3 stars from CDS", NULL, NULL, G_CALLBACK (act_stars_add_cds_ucac3) }, { "catalogs-add-gsc2", NULL, "Download G_SC-2 stars from CDS", NULL, NULL, G_CALLBACK (act_stars_add_cds_gsc2) }, { "catalogs-add-usnob", NULL, "Download USNO-_B stars from CDS", NULL, NULL, G_CALLBACK (act_stars_add_cds_usnob) }, *************** *** 645,648 **** --- 646,650 ---- " <menuitem name='catalogs-add-gsc-act' action='catalogs-add-gsc-act'/>" " <menuitem name='catalogs-add-ucac2' action='catalogs-add-ucac2'/>" + " <menuitem name='catalogs-add-ucac3' action='catalogs-add-ucac3'/>" " <menuitem name='catalogs-add-gsc2' action='catalogs-add-gsc2'/>" " <menuitem name='catalogs-add-usnob' action='catalogs-add-usnob'/>" |
From: Matei C. <cm...@us...> - 2011-03-22 09:22:20
|
Update of /cvsroot/gcx/gcx In directory vz-cvs-2.sog:/tmp/cvs-serv22193 Modified Files: ChangeLog Log Message: Add UCAC3 query and fix frame/star list selection in mbandgui Index: ChangeLog =================================================================== RCS file: /cvsroot/gcx/gcx/ChangeLog,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** ChangeLog 20 Mar 2011 02:41:57 -0000 1.58 --- ChangeLog 22 Mar 2011 09:22:18 -0000 1.59 *************** *** 1,4 **** --- 1,12 ---- 2011-03-20 matei conovici <mco...@gm...> + * fixed frame selection/star list in mbandgui + * added UCAC3 CDS query; UCAC3 has full-sky coverage (unlike + UCAC2) but has some annoying issues like fake double stars (less + than 1 arcsec apart) and about 1 million stars in UCAC2 are + missing. Seems to produce good astrometry, though. + + 2011-03-20 matei conovici <mco...@gm...> + * the big change is I've turned -DGDK_DISABLED_DEPRECATED -DGTK_DISABLE_DEPRECATED on by default. Hey, at least it compiles :-) *************** *** 10,14 **** e9ac2ec Finished adding back the main menus b99f9ac Moved this into source, not needed any more ! 17ffc6c Not there yet. Main app menubar needs Processing and Catalogs back (gui.c). 4223dcd Show correct r magnitude for USNO-B stars 8bf7a2c Update sourcesdraw.c to use cairo instead of low level gdk functions --- 18,22 ---- e9ac2ec Finished adding back the main menus b99f9ac Moved this into source, not needed any more ! 17ffc6c Not there yet. Main app menubar needs Processing and Catalogs back (gui.c). 4223dcd Show correct r magnitude for USNO-B stars 8bf7a2c Update sourcesdraw.c to use cairo instead of low level gdk functions *************** *** 30,38 **** * removed deprecated GtkList usage for the image_processing dialog and restored image navigation functionality which was broken ! * changed from gtk_object_* to g_object_* * remaining deprecated stuff: GtkCombo, GtkList, GtkItemFactory 2009-11-15 riccardo <unr...@em...> ! * typos in source code --- 38,46 ---- * removed deprecated GtkList usage for the image_processing dialog and restored image navigation functionality which was broken ! * changed from gtk_object_* to g_object_* * remaining deprecated stuff: GtkCombo, GtkList, GtkItemFactory 2009-11-15 riccardo <unr...@em...> ! * typos in source code *************** *** 49,53 **** * INDI client code was reworked to support multiple toolkits and projects * INDI client code has several new features (parameter storing, logging) ! * INDI client got a slight facelift in how features are displayed 2009-08-02 geoffrey hausheer <gc...@ph...> --- 57,61 ---- * INDI client code was reworked to support multiple toolkits and projects * INDI client code has several new features (parameter storing, logging) ! * INDI client got a slight facelift in how features are displayed 2009-08-02 geoffrey hausheer <gc...@ph...> |