diff --git a/data/de.zwarf.picplanner.desktop.in b/data/de.zwarf.picplanner.desktop.in index 638b87d..77de6ff 100644 --- a/data/de.zwarf.picplanner.desktop.in +++ b/data/de.zwarf.picplanner.desktop.in @@ -6,4 +6,5 @@ Icon=de.zwarf.picplanner Terminal=false Type=Application StartupNotify=true -Categories=Graphics;GTK;Photography +Categories=Graphics;GTK;Photography; +X-Purism-FormFactor=Workstation;Mobile; \ No newline at end of file diff --git a/src/map/draw-layer.c b/src/map/draw-layer.c index 63be730..e79fd79 100644 --- a/src/map/draw-layer.c +++ b/src/map/draw-layer.c @@ -56,6 +56,7 @@ update_marker_visibility (PicplannerDrawLayer *layer, ShumateMapSource *map_source; gboolean within_viewport; double x, y, min_size, x_offset, y_offset, x_marker_offset, y_marker_offset; + double x_orig, y_orig, rot_angle; int marker_width, marker_height; int width, height; @@ -66,13 +67,19 @@ update_marker_visibility (PicplannerDrawLayer *layer, if (!map_source) return; - x = picplanner_marker_get_x (marker); - y = picplanner_marker_get_y (marker); + x_orig = picplanner_marker_get_x (marker); + y_orig = picplanner_marker_get_y (marker); x_marker_offset = picplanner_marker_get_x_offset (marker); y_marker_offset = picplanner_marker_get_y_offset (marker); width = gtk_widget_get_width (GTK_WIDGET (layer)); height = gtk_widget_get_height (GTK_WIDGET (layer)); + rot_angle = shumate_viewport_get_rotation (viewport); + + x = cos(rot_angle)*(x_orig-1./2.) - sin(rot_angle)*(y_orig-1./2.) + 1./2.; + y = sin(rot_angle)*(x_orig-1./2.) + cos(rot_angle)*(y_orig-1./2.) + 1./2.; + picplanner_marker_set_location (marker, x, y, x_marker_offset, y_marker_offset); + //g_print("x_new %f, y_new %f\n",picplanner_marker_get_x (PICPLANNER_MARKER (child)), picplanner_marker_get_y (PICPLANNER_MARKER (child)));" if (widthnodes_len; i++) { - double x, y; x = priv->nodes_coordinates[i*2]*min_size+x_offset; y = priv->nodes_coordinates[i*2+1]*min_size+y_offset; - cairo_line_to (cr, x, y); + x_rot = cos(rot_angle)*(x-width/2) - sin(rot_angle)*(y-height/2) + width/2; + y_rot = sin(rot_angle)*(x-width/2) + cos(rot_angle)*(y-height/2) + height/2; + cairo_line_to (cr, x_rot, y_rot); } if (priv->stroke) @@ -329,6 +340,7 @@ picplanner_draw_layer_add_marker (PicplannerDrawLayer *layer, gtk_widget_insert_before (GTK_WIDGET(marker), GTK_WIDGET (layer), NULL); update_marker_visibility (layer, marker); + gtk_widget_queue_draw (GTK_WIDGET (layer)); } diff --git a/src/map/marker.c b/src/map/marker.c index 885463b..5a581d2 100644 --- a/src/map/marker.c +++ b/src/map/marker.c @@ -184,3 +184,4 @@ picplanner_marker_set_child (PicplannerMarker *marker, if (priv->child) gtk_widget_set_parent (priv->child, GTK_WIDGET (marker)); } +