Fixing rotating map bug, fixing app not recognized as mobile friendly bug

main
Zwarf 2023-11-13 21:58:40 +01:00
rodzic f0a35b253b
commit aed0356c7c
3 zmienionych plików z 19 dodań i 5 usunięć

Wyświetl plik

@ -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;

Wyświetl plik

@ -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 (width<height)
{
@ -223,7 +230,10 @@ picplanner_draw_layer_snapshot (GtkWidget *widget,
{
PicplannerDrawLayer *self = (PicplannerDrawLayer *)widget;
PicplannerDrawLayerPrivate *priv = picplanner_draw_layer_get_instance_private (self);
ShumateViewport *viewport = shumate_layer_get_viewport (SHUMATE_LAYER(self));
int width, height, min_size, x_offset, y_offset;
double x, y, x_rot, y_rot;
double rot_angle = shumate_viewport_get_rotation (viewport);
cairo_t *cr;
GtkWidget *child;
@ -257,10 +267,11 @@ picplanner_draw_layer_snapshot (GtkWidget *widget,
for (uint i = 0; i < priv->nodes_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));
}

Wyświetl plik

@ -184,3 +184,4 @@ picplanner_marker_set_child (PicplannerMarker *marker,
if (priv->child)
gtk_widget_set_parent (priv->child, GTK_WIDGET (marker));
}