diff options
| -rw-r--r-- | src/Stitch.cxx | 5 | ||||
| -rw-r--r-- | src/gipfel.cxx | 26 | 
2 files changed, 24 insertions, 7 deletions
| diff --git a/src/Stitch.cxx b/src/Stitch.cxx index f45bda4..d749aff 100644 --- a/src/Stitch.cxx +++ b/src/Stitch.cxx @@ -15,6 +15,7 @@  #include "Stitch.H"  static double pi_d = asin(1.0) * 2.0; +static double deg2rad = pi_d / 180.0;  Stitch::Stitch() {  	for (int i=0; i<MAX_PICS; i++) { @@ -79,6 +80,10 @@ Stitch::set_output(const char *file, OutputImage *img) {  int  Stitch::resample(int w, int h,  	double view_start, double view_end) { + +	view_start = view_start * deg2rad; +	view_end = view_end * deg2rad; +  	double step_view = (view_end - view_start) / w;  	uchar r, g, b;  	int y_off = h / 2; diff --git a/src/gipfel.cxx b/src/gipfel.cxx index cf43af7..a746a2e 100644 --- a/src/gipfel.cxx +++ b/src/gipfel.cxx @@ -52,7 +52,7 @@ Fl_Menu_Bar *mb;  #define STITCH_PREVIEW 1  #define STITCH_JPEG    2  #define STITCH_TIFF    4 -static int stitch(int stitch_w, int stitch_h, int type, const char *path, +static int stitch(int stitch_w, int stitch_h, double from, double to, int type, const char *path,  	int argc, char **argv);  void set_values() { @@ -324,12 +324,13 @@ int main(int argc, char** argv) {  	int err, bflag = 0, dflag = 0, my_argc;  	int stitch_flag = 0, stitch_w = 2000, stitch_h = 500;  	int jpeg_flag = 0, tiff_flag = 0; +	double stitch_from = 0.0, stitch_to = 380.0;  	char *outpath;  	Fl_Scroll *scroll;  	err = 0; -	while ((c = getopt(argc, argv, "?d:v:sw:h:j:t:")) != EOF) { +	while ((c = getopt(argc, argv, ":?d:v:s:w:h:j:t:")) != EOF) {  		switch (c) {    			case '?':  				usage(); @@ -343,6 +344,12 @@ int main(int argc, char** argv) {  				break;  			case 's':  				stitch_flag++; +				if (optarg && strcmp(optarg, ":")) { +					stitch_from = atof(optarg); +					if (strchr(optarg, ',')) { +						stitch_to = atof(strchr(optarg, ',') + 1); +					} +				}  				break;  			case 'j':  				jpeg_flag++; @@ -383,7 +390,9 @@ int main(int argc, char** argv) {  		} else if (tiff_flag) {  			type = STITCH_TIFF;  		} -		stitch(stitch_w, stitch_h, type, outpath, my_argc, my_argv); + +		stitch(stitch_w, stitch_h, stitch_from, stitch_to, +			type, outpath, my_argc, my_argv);  		exit(0);  	} @@ -434,7 +443,10 @@ int main(int argc, char** argv) {  	return Fl::run();  } -static int stitch(int stitch_w, int stitch_h, int type, const char *path, int argc, char **argv) { +static int +stitch(int stitch_w, int stitch_h, double from, double to, +	int type, const char *path, int argc, char **argv) { +  	Fl_Window *win;  	Fl_Scroll *scroll;  	Stitch *st = new Stitch(); @@ -446,7 +458,7 @@ static int stitch(int stitch_w, int stitch_h, int type, const char *path, int ar  	if (type == STITCH_JPEG) {  		st->set_output((OutputImage*) new JPEGOutputImage(path, 90)); -		st->resample(stitch_w, stitch_h, 0.0, 7.0); +		st->resample(stitch_w, stitch_h, from, to);  	} else if (type == STITCH_TIFF) { @@ -462,7 +474,7 @@ static int stitch(int stitch_w, int stitch_h, int type, const char *path, int ar  			st->set_output(argv[i], (OutputImage*) new TIFFOutputImage(buf));  		} -		st->resample(stitch_w, stitch_h, 0.0, 7.0); +		st->resample(stitch_w, stitch_h, from, to);  	} else {  		win = new Fl_Window(0,0, stitch_w, stitch_h); @@ -473,7 +485,7 @@ static int stitch(int stitch_w, int stitch_h, int type, const char *path, int ar  		win->resizable(scroll);  		win->show(0, argv);   		st->set_output((OutputImage*) img); -		st->resample(stitch_w, stitch_h, 0.0, 7.0); +		st->resample(stitch_w, stitch_h, from, to);  		img->redraw();  		Fl::run();  	} | 
