25 |
/* OSD_DIAMETER */ |
/* OSD_DIAMETER */ |
26 |
/* OSD_X, OSD_Y */ |
/* OSD_X, OSD_Y */ |
27 |
|
|
28 |
#ifndef OSD_SCALE_FONT_SIZE |
#define OSD_CROSSHAIR |
|
#define OSD_SCALE_FONT_SIZE 12 |
|
|
#endif |
|
|
#define OSD_SCALE_W (10*OSD_SCALE_FONT_SIZE) |
|
|
#define OSD_SCALE_H (5*OSD_SCALE_FONT_SIZE/2) |
|
29 |
|
|
30 |
#ifndef USE_CAIRO |
#ifndef USE_CAIRO |
31 |
#error "OSD control display lacks a non-cairo implementation!" |
#error "OSD control display lacks a non-cairo implementation!" |
46 |
int scale_zoom; |
int scale_zoom; |
47 |
#endif |
#endif |
48 |
|
|
49 |
|
#ifdef OSD_CROSSHAIR |
50 |
|
cairo_surface_t *crosshair; |
51 |
|
#endif |
52 |
|
|
53 |
#ifdef OSD_SOURCE_SEL |
#ifdef OSD_SOURCE_SEL |
54 |
/* values to handle the "source" menu */ |
/* values to handle the "source" menu */ |
55 |
cairo_surface_t *map_source; |
cairo_surface_t *map_source; |
729 |
cairo_line_to (cr, x + Z_RIGHT + Z_LEN, y + Z_MID); |
cairo_line_to (cr, x + Z_RIGHT + Z_LEN, y + Z_MID); |
730 |
} |
} |
731 |
|
|
732 |
|
#ifdef OSD_CROSSHAIR |
733 |
|
|
734 |
|
#ifndef OSD_CROSSHAIR_RADIUS |
735 |
|
#define OSD_CROSSHAIR_RADIUS 20 |
736 |
|
#endif |
737 |
|
|
738 |
|
#define OSD_CROSSHAIR_W (OSD_CROSSHAIR_RADIUS*2) |
739 |
|
#define OSD_CROSSHAIR_H (OSD_CROSSHAIR_RADIUS*2) |
740 |
|
|
741 |
|
static void |
742 |
|
osd_render_crosshair(osm_gps_map_osd_t *osd) |
743 |
|
{ |
744 |
|
osd_priv_t *priv = (osd_priv_t*)osd->priv; |
745 |
|
|
746 |
|
/* first fill with transparency */ |
747 |
|
cairo_t *cr = cairo_create(priv->crosshair); |
748 |
|
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); |
749 |
|
// cairo_set_source_rgba(cr, 1.0, 0.0, 0.0, 0.0); |
750 |
|
cairo_set_source_rgba(cr, 1.0, 0.0, 0.0, 0.2); |
751 |
|
cairo_paint(cr); |
752 |
|
cairo_set_operator(cr, CAIRO_OPERATOR_OVER); |
753 |
|
|
754 |
|
cairo_destroy(cr); |
755 |
|
} |
756 |
|
#endif |
757 |
|
|
758 |
|
#ifdef OSD_SCALE |
759 |
|
|
760 |
|
#ifndef OSD_SCALE_FONT_SIZE |
761 |
|
#define OSD_SCALE_FONT_SIZE 12 |
762 |
|
#endif |
763 |
|
#define OSD_SCALE_W (10*OSD_SCALE_FONT_SIZE) |
764 |
|
#define OSD_SCALE_H (5*OSD_SCALE_FONT_SIZE/2) |
765 |
|
|
766 |
/* various parameters used to create the scale */ |
/* various parameters used to create the scale */ |
767 |
#define OSD_SCALE_H2 (OSD_SCALE_H/2) |
#define OSD_SCALE_H2 (OSD_SCALE_H/2) |
768 |
#define OSD_SCALE_TICK (2*OSD_SCALE_FONT_SIZE/3) |
#define OSD_SCALE_TICK (2*OSD_SCALE_FONT_SIZE/3) |
897 |
|
|
898 |
cairo_destroy(cr); |
cairo_destroy(cr); |
899 |
} |
} |
900 |
|
#endif |
901 |
|
|
902 |
static void |
static void |
903 |
osd_render(osm_gps_map_osd_t *osd) |
osd_render(osm_gps_map_osd_t *osd) |
990 |
#ifdef OSD_SCALE |
#ifdef OSD_SCALE |
991 |
osd_render_scale(osd); |
osd_render_scale(osd); |
992 |
#endif |
#endif |
993 |
|
|
994 |
|
#ifdef OSD_CROSSHAIR |
995 |
|
osd_render_crosshair(osd); |
996 |
|
#endif |
997 |
} |
} |
998 |
|
|
999 |
static void |
static void |
1022 |
priv->scale_zoom = -1; |
priv->scale_zoom = -1; |
1023 |
#endif |
#endif |
1024 |
|
|
1025 |
|
#ifdef OSD_CROSSHAIR |
1026 |
|
priv->crosshair = |
1027 |
|
cairo_image_surface_create(CAIRO_FORMAT_ARGB32, |
1028 |
|
OSD_CROSSHAIR_W, OSD_CROSSHAIR_H); |
1029 |
|
#endif |
1030 |
|
|
1031 |
/* ... and render it */ |
/* ... and render it */ |
1032 |
osd_render(osd); |
osd_render(osd); |
1033 |
} |
} |
1077 |
cairo_paint(cr); |
cairo_paint(cr); |
1078 |
#endif |
#endif |
1079 |
|
|
1080 |
|
#ifdef OSD_CROSSHAIR |
1081 |
|
x = (osd->widget->allocation.width - OSD_CROSSHAIR_W)/2; |
1082 |
|
y = (osd->widget->allocation.height - OSD_CROSSHAIR_H)/2; |
1083 |
|
|
1084 |
|
cairo_set_source_surface(cr, priv->crosshair, x, y); |
1085 |
|
cairo_paint(cr); |
1086 |
|
#endif |
1087 |
|
|
1088 |
cairo_destroy(cr); |
cairo_destroy(cr); |
1089 |
} |
} |
1090 |
|
|
1109 |
cairo_surface_destroy(priv->scale); |
cairo_surface_destroy(priv->scale); |
1110 |
#endif |
#endif |
1111 |
|
|
1112 |
|
#ifdef OSD_CROSSHAIR |
1113 |
|
if (priv->crosshair) |
1114 |
|
cairo_surface_destroy(priv->crosshair); |
1115 |
|
#endif |
1116 |
|
|
1117 |
g_free(priv); |
g_free(priv); |
1118 |
} |
} |
1119 |
|
|