static void georef_layer_set_image ( VikGeorefLayer *vgl, const gchar *image );
static gboolean georef_layer_dialog ( VikGeorefLayer **vgl, gpointer vp, GtkWindow *w );
static void georef_layer_load_image ( VikGeorefLayer *vgl );
+
+/* tools */
+static gpointer georef_layer_move_create ( VikWindow *vw, VikViewport *vvp);
static gboolean georef_layer_move_release ( VikGeorefLayer *vgl, GdkEventButton *event, VikViewport *vvp );
static gboolean georef_layer_move_press ( VikGeorefLayer *vgl, GdkEventButton *event, VikViewport *vvp );
+static gpointer georef_layer_zoom_create ( VikWindow *vw, VikViewport *vvp);
static gboolean georef_layer_zoom_press ( VikGeorefLayer *vgl, GdkEventButton *event, VikViewport *vvp );
static VikToolInterface georef_tools[] = {
- { "Georef Move Map", (VikToolInterfaceFunc) georef_layer_move_press, (VikToolInterfaceFunc) georef_layer_move_release },
- { "Georef Zoom Tool", (VikToolInterfaceFunc) georef_layer_zoom_press, NULL },
+ { "Georef Move Map", (VikToolConstructorFunc) georef_layer_move_create, NULL, NULL, NULL,
+ (VikToolMouseFunc) georef_layer_move_press, NULL, (VikToolMouseFunc) georef_layer_move_release },
+
+ { "Georef Zoom Tool", (VikToolConstructorFunc) georef_layer_zoom_create, NULL, NULL, NULL,
+ (VikToolMouseFunc) georef_layer_zoom_press, NULL, NULL },
};
VikLayerInterface vik_georef_layer_interface = {
NULL,
0,
+ VIK_MENU_ITEM_ALL,
+
(VikLayerFuncCreate) georef_layer_create,
(VikLayerFuncRealize) NULL,
(VikLayerFuncPostRead) georef_layer_load_image,
(VikLayerFuncDraw) georef_layer_draw,
(VikLayerFuncChangeCoordMode) NULL,
+ (VikLayerFuncSetMenuItemsSelection) NULL,
+ (VikLayerFuncGetMenuItemsSelection) NULL,
+
(VikLayerFuncAddMenuItems) georef_layer_add_menu_items,
(VikLayerFuncSublayerAddMenuItems) NULL,
(VikLayerFuncReadFileData) NULL,
(VikLayerFuncWriteFileData) NULL,
+ (VikLayerFuncDeleteItem) NULL,
(VikLayerFuncCopyItem) NULL,
(VikLayerFuncPasteItem) NULL,
(VikLayerFuncFreeCopiedItem) NULL,
GTK_RESPONSE_REJECT,
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
- 0 );
+ NULL );
GtkWidget *table, *wfp_hbox, *wfp_label, *wfp_button, *ce_label, *ce_spin, *cn_label, *cn_spin, *xlabel, *xspin, *ylabel, *yspin, *imagelabel, *imageentry;
GtkWidget *pass_along[4];
gtk_widget_show ( item );
}
+
+static gpointer georef_layer_move_create ( VikWindow *vw, VikViewport *vvp)
+{
+ return vvp;
+}
+
static gboolean georef_layer_move_release ( VikGeorefLayer *vgl, GdkEventButton *event, VikViewport *vvp )
{
+ if (!vgl || vgl->vl.type != VIK_LAYER_GEOREF)
+ return FALSE;
+
if ( vgl->click_x != -1 )
{
vgl->corner.easting += (event->x - vgl->click_x) * vik_viewport_get_xmpp (vvp);
return FALSE; /* I didn't move anything on this layer! */
}
+static gpointer georef_layer_zoom_create ( VikWindow *vw, VikViewport *vvp)
+{
+ return vvp;
+}
+
static gboolean georef_layer_zoom_press ( VikGeorefLayer *vgl, GdkEventButton *event, VikViewport *vvp )
{
+ if (!vgl || vgl->vl.type != VIK_LAYER_GEOREF)
+ return FALSE;
if ( event->button == 1 )
{
if ( vgl->mpp_easting < (VIK_VIEWPORT_MAX_ZOOM / 1.05) && vgl->mpp_northing < (VIK_VIEWPORT_MAX_ZOOM / 1.05) )
static gboolean georef_layer_move_press ( VikGeorefLayer *vgl, GdkEventButton *event, VikViewport *vvp )
{
+ if (!vgl || vgl->vl.type != VIK_LAYER_GEOREF)
+ return FALSE;
vgl->click_x = event->x;
vgl->click_y = event->y;
return TRUE;