00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <muse.h>
00023 #include <string.h>
00024
00025
00062
00063
00066 #define PRINT_USAGE(rc) \
00067 fprintf(stderr, "Usage: %s [ -d datavalue ] [ -q dqvalue] [ -s statvalue ] " \
00068 "IMAGE_IN IMAGE_OUT\n", argv[0]); \
00069 cpl_end(); return (rc);
00070
00071 int main(int argc, char **argv)
00072 {
00073 cpl_init(CPL_INIT_DEFAULT);
00074 muse_processing_recipeinfo(NULL);
00075
00076 if (argc <= 2) {
00077
00078 PRINT_USAGE(1);
00079 }
00080
00081 char *iname = NULL,
00082 *oname = NULL;
00083 float datavalue = 1.,
00084 statvalue = 0.;
00085
00086 cpl_size dqvalue = -1;
00087
00088
00089 int i;
00090 for (i = 1; i < argc; i++) {
00091 if (strncmp(argv[i], "-d", 3) == 0) {
00092
00093 i++;
00094 if (i < argc) {
00095 datavalue = atof(argv[i]);
00096 } else {
00097 PRINT_USAGE(2);
00098 }
00099 } else if (strncmp(argv[i], "-q", 3) == 0) {
00100
00101 i++;
00102 if (i < argc) {
00103 dqvalue = atoi(argv[i]);
00104 if (dqvalue < 0 || dqvalue > UINT_MAX) {
00105 PRINT_USAGE(4);
00106 }
00107 } else {
00108 PRINT_USAGE(3);
00109 }
00110 } else if (strncmp(argv[i], "-s", 3) == 0) {
00111
00112 i++;
00113 if (i < argc) {
00114 statvalue = atof(argv[i]);
00115 if (statvalue < 0) {
00116 PRINT_USAGE(6);
00117 }
00118 } else {
00119 PRINT_USAGE(5);
00120 }
00121 } else if (strncmp(argv[i], "-", 1) == 0) {
00122 PRINT_USAGE(9);
00123 } else {
00124 if (iname && oname) {
00125 break;
00126 }
00127 if (!iname) {
00128 iname = argv[i] ;
00129 } else {
00130 oname = argv[i] ;
00131 }
00132 }
00133 }
00134
00135 muse_image *image = muse_image_load(iname);
00136 if (!image) {
00137 PRINT_USAGE(10);
00138 }
00139 printf("Loaded \"%s\".\n", iname);
00140
00141
00142 cpl_error_code rc = CPL_ERROR_NONE;
00143 cpl_size nx = cpl_image_get_size_x(image->data),
00144 ny = cpl_image_get_size_y(image->data);
00145 rc = cpl_image_fill_window(image->data, 1, 1, nx, ny, datavalue);
00146 printf("Filled DATA image with %g (rc = %d)\n", datavalue, rc);
00147 rc = cpl_image_fill_window(image->stat, 1, 1, nx, ny, statvalue);
00148 printf("Filled STAT image with %g (rc = %d)\n", statvalue, rc);
00149 if (dqvalue >= 0) {
00150 rc = cpl_image_fill_window(image->dq, 1, 1, nx, ny, dqvalue);
00151 printf("Filled DQ image with %u (rc = %d)\n", (unsigned int)dqvalue, rc);
00152 }
00153 if (!cpl_propertylist_has(image->header, "BUNIT")) {
00154 cpl_propertylist_append_string(image->header, "BUNIT", "count");
00155 }
00156 rc = muse_image_save(image, oname);
00157
00158 if (rc != CPL_ERROR_NONE) {
00159 fprintf(stderr, "Some error occurred while saving to \"%s\" "
00160 "(rc = %d, %s)\n", oname, rc, cpl_error_get_message());
00161 rc = 20;
00162 } else {
00163 printf("Saved to \"%s\".\n", oname);
00164 }
00165 muse_image_delete(image);
00166 cpl_end();
00167 return rc;
00168 }
00169