kopia lustrzana https://gitlab.com/Zwarf/picplanner
Fixing rotating map bug, fixing app not recognized as mobile friendly bug
rodzic
f0a35b253b
commit
aed0356c7c
|
@ -6,4 +6,5 @@ Icon=de.zwarf.picplanner
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
Categories=Graphics;GTK;Photography
|
Categories=Graphics;GTK;Photography;
|
||||||
|
X-Purism-FormFactor=Workstation;Mobile;
|
|
@ -56,6 +56,7 @@ update_marker_visibility (PicplannerDrawLayer *layer,
|
||||||
ShumateMapSource *map_source;
|
ShumateMapSource *map_source;
|
||||||
gboolean within_viewport;
|
gboolean within_viewport;
|
||||||
double x, y, min_size, x_offset, y_offset, x_marker_offset, y_marker_offset;
|
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 marker_width, marker_height;
|
||||||
int width, height;
|
int width, height;
|
||||||
|
|
||||||
|
@ -66,13 +67,19 @@ update_marker_visibility (PicplannerDrawLayer *layer,
|
||||||
if (!map_source)
|
if (!map_source)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
x = picplanner_marker_get_x (marker);
|
x_orig = picplanner_marker_get_x (marker);
|
||||||
y = picplanner_marker_get_y (marker);
|
y_orig = picplanner_marker_get_y (marker);
|
||||||
x_marker_offset = picplanner_marker_get_x_offset (marker);
|
x_marker_offset = picplanner_marker_get_x_offset (marker);
|
||||||
y_marker_offset = picplanner_marker_get_y_offset (marker);
|
y_marker_offset = picplanner_marker_get_y_offset (marker);
|
||||||
|
|
||||||
width = gtk_widget_get_width (GTK_WIDGET (layer));
|
width = gtk_widget_get_width (GTK_WIDGET (layer));
|
||||||
height = gtk_widget_get_height (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)
|
if (width<height)
|
||||||
{
|
{
|
||||||
|
@ -223,7 +230,10 @@ picplanner_draw_layer_snapshot (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
PicplannerDrawLayer *self = (PicplannerDrawLayer *)widget;
|
PicplannerDrawLayer *self = (PicplannerDrawLayer *)widget;
|
||||||
PicplannerDrawLayerPrivate *priv = picplanner_draw_layer_get_instance_private (self);
|
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;
|
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;
|
cairo_t *cr;
|
||||||
GtkWidget *child;
|
GtkWidget *child;
|
||||||
|
|
||||||
|
@ -257,10 +267,11 @@ picplanner_draw_layer_snapshot (GtkWidget *widget,
|
||||||
|
|
||||||
for (uint i = 0; i < priv->nodes_len; i++)
|
for (uint i = 0; i < priv->nodes_len; i++)
|
||||||
{
|
{
|
||||||
double x, y;
|
|
||||||
x = priv->nodes_coordinates[i*2]*min_size+x_offset;
|
x = priv->nodes_coordinates[i*2]*min_size+x_offset;
|
||||||
y = priv->nodes_coordinates[i*2+1]*min_size+y_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)
|
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);
|
gtk_widget_insert_before (GTK_WIDGET(marker), GTK_WIDGET (layer), NULL);
|
||||||
update_marker_visibility (layer, marker);
|
update_marker_visibility (layer, marker);
|
||||||
|
gtk_widget_queue_draw (GTK_WIDGET (layer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -184,3 +184,4 @@ picplanner_marker_set_child (PicplannerMarker *marker,
|
||||||
if (priv->child)
|
if (priv->child)
|
||||||
gtk_widget_set_parent (priv->child, GTK_WIDGET (marker));
|
gtk_widget_set_parent (priv->child, GTK_WIDGET (marker));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue