summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2009-03-24 16:30:05 +0100
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2009-03-24 16:30:05 +0100
commit46a3d8b7197e237c2319021be3ace244233e08a0 (patch)
treefc143f01c170b19c01fcf1b2ce6119ce2b2cb08a
parentefaaa4afd39d20af03ac579e9654b6d92f21b203 (diff)
Backed out changeset e96fa3a4608e
-rw-r--r--src/GipfelWidget.H4
-rw-r--r--src/GipfelWidget.cxx20
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);