diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2009-03-24 16:30:05 +0100 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2009-03-24 16:30:05 +0100 |
commit | 46a3d8b7197e237c2319021be3ace244233e08a0 (patch) | |
tree | fc143f01c170b19c01fcf1b2ce6119ce2b2cb08a /src | |
parent | efaaa4afd39d20af03ac579e9654b6d92f21b203 (diff) |
Backed out changeset e96fa3a4608e
Diffstat (limited to 'src')
-rw-r--r-- | src/GipfelWidget.H | 4 | ||||
-rw-r--r-- | src/GipfelWidget.cxx | 20 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/GipfelWidget.H b/src/GipfelWidget.H index 532d395..3158a11 100644 --- a/src/GipfelWidget.H +++ b/src/GipfelWidget.H @@ -8,6 +8,7 @@ #define GipfelWidget_H #include <FL/Fl_Group.H> +#include <FL/Fl_Menu_Button.H> #include "Panorama.H" #include "ImageMetaData.H" @@ -18,6 +19,7 @@ class GipfelWidget : public Fl_Group { Hills *track_points; Hills *known_hills; Panorama *pan; + Fl_Menu_Button *mb; char *img_file; double track_width; int have_gipfel_info; @@ -45,6 +47,8 @@ class GipfelWidget : public Fl_Group { static int get_pixel(Fl_Image *img, int x, int y, int *r, int *g, int *b); + static void center_cb(Fl_Widget *o, void *f); + public: typedef enum { NEAREST = 0, diff --git a/src/GipfelWidget.cxx b/src/GipfelWidget.cxx index aa66a6e..0f94f9f 100644 --- a/src/GipfelWidget.cxx +++ b/src/GipfelWidget.cxx @@ -18,6 +18,7 @@ #include <algorithm> #include <FL/Fl.H> +#include <FL/Fl_Menu_Item.H> #include <FL/Fl_Shared_Image.H> #include <FL/Fl_JPEG_Image.H> #include <FL/Fl_Preferences.H> @@ -38,6 +39,7 @@ GipfelWidget::GipfelWidget(int X,int Y,int W, int H): Fl_Group(X, Y, W, H) { pan = new Panorama(); cur_mountain = NULL; focused_mountain = NULL; + mb = NULL; known_hills = new Hills(); img_file = NULL; track_width = 200.0; @@ -73,6 +75,11 @@ GipfelWidget::load_image(char *file) { h(img->h()); w(img->w()); + mb = new Fl_Menu_Button(x(),y(),w()+x(),h()+y(),"&popup"); + mb->type(Fl_Menu_Button::POPUP3); + mb->box(FL_NO_BOX); + mb->add("Center Peak", 0, (Fl_Callback*) center_cb, this); + // try to retrieve gipfel data from JPEG meta data md->load_image(file); set_view_long(md->longitude()); @@ -510,6 +517,19 @@ GipfelWidget::get_focal_length_35mm() { return pan->get_scale() * 35.0 / (double) img->w(); } +void +GipfelWidget::center_cb(Fl_Widget *o, void *f) { + GipfelWidget *g = (GipfelWidget*) f; + + Hill *m = choose_hill(g->pan->get_close_mountains(), "Center Peak"); + if (m) { + g->set_center_angle(m->alph / deg2rad); + + if (!g->known_hills->contains(m)) + g->known_hills->add(m); + } +} + void GipfelWidget::set_height_dist_ratio(double r) { pan->set_height_dist_ratio(r); |