void gps_display_data(void)
{
- gchar *buffer, litbuf[16];
- printf("%s()\n", __PRETTY_FUNCTION__);
-
- if (_gps.fix < 2) {
- /* no fix no fun */
- gtk_label_set_label(GTK_LABEL(_text_lat), " --- ");
- gtk_label_set_label(GTK_LABEL(_text_lon), " --- ");
- gtk_label_set_label(GTK_LABEL(_text_speed), " --- ");
- gtk_label_set_label(GTK_LABEL(_text_alt), " --- ");
- gtk_label_set_label(GTK_LABEL(_text_time), " --:--:-- ");
- } else {
- gfloat speed = _gps.speed * UNITS_CONVERT[_units];
-
- /* latitude */
- lat_format(_gps.lat, litbuf);
- gtk_label_set_label(GTK_LABEL(_text_lat), litbuf);
-
- /* longitude */
- lon_format(_gps.lon, litbuf);
- gtk_label_set_label(GTK_LABEL(_text_lon), litbuf);
-
- /* speed */
- switch (_units) {
- case UNITS_MI:
- buffer = g_strdup_printf("Spd: %.1f mph", speed);
- break;
- case UNITS_NM:
- buffer = g_strdup_printf("Spd: %.1f kn", speed);
- break;
- default:
- buffer = g_strdup_printf("Spd: %.1f km/h", speed);
- break;
- }
- gtk_label_set_label(GTK_LABEL(_text_speed), buffer);
- g_free(buffer);
-
- /* altitude */
- switch (_units) {
- case UNITS_MI:
- case UNITS_NM:
- buffer = g_strdup_printf("Alt: %.1f ft",
- _pos.altitude * 3.2808399f);
- break;
- default:
- buffer = g_strdup_printf("Alt: %.1f m", _pos.altitude);
- }
- gtk_label_set_label(GTK_LABEL(_text_alt), buffer);
- g_free(buffer);
+gchar *buffer, litbuf[16];
+printf("%s()\n", __PRETTY_FUNCTION__);
+
+/* local time */
+strftime(litbuf, 15, "%X", localtime(&_pos.time));
+gtk_label_set_label(GTK_LABEL(_text_time), litbuf);
+
+if (_gps.fix < 2) {
+ /* no fix no fun */
+ gtk_label_set_label(GTK_LABEL(_text_lat), " --- ");
+ gtk_label_set_label(GTK_LABEL(_text_lon), " --- ");
+ gtk_label_set_label(GTK_LABEL(_text_speed), " --- ");
+ gtk_label_set_label(GTK_LABEL(_text_alt), " --- ");
+} else {
+ gfloat speed = _gps.speed * UNITS_CONVERT[_units];
+
+ /* latitude */
+ lat_format(_gps.lat, litbuf);
+ gtk_label_set_label(GTK_LABEL(_text_lat), litbuf);
+
+ /* longitude */
+ lon_format(_gps.lon, litbuf);
+ gtk_label_set_label(GTK_LABEL(_text_lon), litbuf);
+
+ /* speed */
+ switch (_units) {
+ case UNITS_MI:
+ buffer = g_strdup_printf("Spd: %.1f mph", speed);
+ break;
+ case UNITS_NM:
+ buffer = g_strdup_printf("Spd: %.1f kn", speed);
+ break;
+ default:
+ buffer = g_strdup_printf("Spd: %.1f km/h", speed);
+ break;
+ }
+ gtk_label_set_label(GTK_LABEL(_text_speed), buffer);
+ g_free(buffer);
- /* local time */
- strftime(litbuf, 15, "%X", localtime(&_pos.time));
- gtk_label_set_label(GTK_LABEL(_text_time), litbuf);
+ /* altitude */
+ switch (_units) {
+ case UNITS_MI:
+ case UNITS_NM:
+ buffer = g_strdup_printf("Alt: %.1f ft",
+ _pos.altitude * 3.2808399f);
+ break;
+ default:
+ buffer = g_strdup_printf("Alt: %.1f m", _pos.altitude);
}
+ gtk_label_set_label(GTK_LABEL(_text_alt), buffer);
+ g_free(buffer);
+}
- /* refresh sat panel */
- gtk_widget_queue_draw_area(GTK_WIDGET(_sat_panel),
- 0, 0,
- _sat_panel->allocation.width,
- _sat_panel->allocation.height);
+/* refresh sat panel */
+gtk_widget_queue_draw_area(GTK_WIDGET(_sat_panel), 0, 0,
+ _sat_panel->allocation.width,
+ _sat_panel->allocation.height);
- /* refresh heading panel */
- gtk_widget_queue_draw_area(GTK_WIDGET(_heading_panel),
- 0, 0,
- _heading_panel->allocation.width,
- _heading_panel->allocation.height);
+/* refresh heading panel */
+gtk_widget_queue_draw_area(GTK_WIDGET(_heading_panel), 0, 0,
+ _heading_panel->allocation.width,
+ _heading_panel->allocation.height);
- vprintf("%s(): return\n", __PRETTY_FUNCTION__);
- return;
+vprintf("%s(): return\n", __PRETTY_FUNCTION__);
+return;
}
-void gps_hide_text(void)
+void
+gps_hide_text(void)
{
- printf("%s()\n", __PRETTY_FUNCTION__);
+printf("%s()\n", __PRETTY_FUNCTION__);
- /* Clear gps data */
- _gps.fix = 1;
- _gps.satinuse = 0;
- _gps.satinview = 0;
+/* Clear gps data */
+_gps.fix = 1;
+_gps.satinuse = 0;
+_gps.satinview = 0;
- if (_gps_info)
- gps_display_data();
+if (_gps_info)
+ gps_display_data();
- vprintf("%s(): return\n", __PRETTY_FUNCTION__);
+vprintf("%s(): return\n", __PRETTY_FUNCTION__);
}
void gps_show_info(void)
{
- printf("%s()\n", __PRETTY_FUNCTION__);
+printf("%s()\n", __PRETTY_FUNCTION__);
- if (_gps_info && _enable_gps)
- gtk_widget_show_all(GTK_WIDGET(_gps_widget));
- else {
- gps_hide_text();
- gtk_widget_hide_all(GTK_WIDGET(_gps_widget));
- }
+if (_gps_info && _enable_gps)
+ gtk_widget_show_all(GTK_WIDGET(_gps_widget));
+else {
+ gps_hide_text();
+ gtk_widget_hide_all(GTK_WIDGET(_gps_widget));
+}
- vprintf("%s(): return\n", __PRETTY_FUNCTION__);
+vprintf("%s(): return\n", __PRETTY_FUNCTION__);
}
static void
draw_sat_info(GtkWidget * widget, guint x0, guint y0,
guint width, guint height, gboolean showsnr)
{
- GdkGC *gc;
- guint step, i, j, snr_height, bymargin, xoffset, yoffset;
- guint x, y, x1, y1;
- gchar *tmp = NULL;
- printf("%s()\n", __PRETTY_FUNCTION__);
-
- xoffset = x0;
- yoffset = y0;
- /* Bootom margin - 12% */
- bymargin = height * 0.88f;
+GdkGC *gc;
+guint step, i, j, snr_height, bymargin, xoffset, yoffset;
+guint x, y, x1, y1;
+gchar *tmp = NULL;
+printf("%s()\n", __PRETTY_FUNCTION__);
+
+xoffset = x0;
+yoffset = y0;
+/* Bootom margin - 12% */
+bymargin = height * 0.88f;
+
+/* Bottom line */
+gdk_draw_line(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ xoffset + 5, yoffset + bymargin,
+ xoffset + width - 10 - 2, yoffset + bymargin);
+gdk_draw_line(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ xoffset + 5, yoffset + bymargin - 1,
+ xoffset + width - 10 - 2, yoffset + bymargin - 1);
+
+if (_gps.satinview > 0) {
+ /* Left margin - 5pix, Right margin - 5pix */
+ step = (width - 10) / _gps.satinview;
- /* Bottom line */
- gdk_draw_line(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- xoffset + 5, yoffset + bymargin,
- xoffset + width - 10 - 2, yoffset + bymargin);
- gdk_draw_line(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- xoffset + 5, yoffset + bymargin - 1,
- xoffset + width - 10 - 2, yoffset + bymargin - 1);
-
- if (_gps.satinview > 0) {
- /* Left margin - 5pix, Right margin - 5pix */
- step = (width - 10) / _gps.satinview;
-
- for (i = 0; i < _gps.satinview; i++) {
- /* Sat used or not */
- gc = _sat_info_gc1;
- for (j = 0; j < _gps.satinuse; j++) {
- if (_gps.satforfix[j] == _gps_sat[i].prn) {
- gc = _sat_info_gc2;
- break;
- }
+ for (i = 0; i < _gps.satinview; i++) {
+ /* Sat used or not */
+ gc = _sat_info_gc1;
+ for (j = 0; j < _gps.satinuse; j++) {
+ if (_gps.satforfix[j] == _gps_sat[i].prn) {
+ gc = _sat_info_gc2;
+ break;
}
+ }
- x = 5 + i * step;
- snr_height = _gps_sat[i].snr * height * 0.78f / 100;
- y = height * 0.1f + (height * 0.78f - snr_height);
-
- /* draw sat rectangle... */
- gdk_draw_rectangle(widget->window,
- gc,
- TRUE,
- xoffset + x,
- yoffset + y, step - 2, snr_height);
-
- if (showsnr && _gps_sat[i].snr > 0) {
- /* ...snr.. */
- tmp = g_strdup_printf("%02d", _gps_sat[i].snr);
- pango_layout_set_text(_sat_info_layout, tmp, 2);
- pango_layout_get_pixel_size(_sat_info_layout,
- &x1, &y1);
- gdk_draw_layout(widget->window,
- widget->style->
- fg_gc[GTK_STATE_NORMAL],
- xoffset + x + ((step - 2) -
- x1) / 2,
- yoffset + y - 15,
- _sat_info_layout);
- g_free(tmp);
- }
+ x = 5 + i * step;
+ snr_height = _gps_sat[i].snr * height * 0.78f / 100;
+ y = height * 0.1f + (height * 0.78f - snr_height);
+
+ /* draw sat rectangle... */
+ gdk_draw_rectangle(widget->window,
+ gc,
+ TRUE,
+ xoffset + x,
+ yoffset + y, step - 2, snr_height);
- /* ...and sat number */
- tmp = g_strdup_printf("%02d", _gps_sat[i].prn);
+ if (showsnr && _gps_sat[i].snr > 0) {
+ /* ...snr.. */
+ tmp = g_strdup_printf("%02d", _gps_sat[i].snr);
pango_layout_set_text(_sat_info_layout, tmp, 2);
- pango_layout_get_pixel_size(_sat_info_layout, &x1, &y1);
+ pango_layout_get_pixel_size(_sat_info_layout,
+ &x1, &y1);
gdk_draw_layout(widget->window,
- widget->style->fg_gc[GTK_STATE_NORMAL],
- xoffset + x + ((step - 2) - x1) / 2,
- yoffset + bymargin + 1,
- _sat_info_layout);
+ widget->style->
+ fg_gc[GTK_STATE_NORMAL],
+ xoffset + x + ((step - 2) -
+ x1) / 2,
+ yoffset + y - 15,
+ _sat_info_layout);
g_free(tmp);
}
+
+ /* ...and sat number */
+ tmp = g_strdup_printf("%02d", _gps_sat[i].prn);
+ pango_layout_set_text(_sat_info_layout, tmp, 2);
+ pango_layout_get_pixel_size(_sat_info_layout, &x1, &y1);
+ gdk_draw_layout(widget->window,
+ widget->style->fg_gc[GTK_STATE_NORMAL],
+ xoffset + x + ((step - 2) - x1) / 2,
+ yoffset + bymargin + 1,
+ _sat_info_layout);
+ g_free(tmp);
}
+}
- vprintf("%s(): return\n", __PRETTY_FUNCTION__);
- return;
+vprintf("%s(): return\n", __PRETTY_FUNCTION__);
+return;
}
gboolean sat_panel_expose(GtkWidget * widget, GdkEventExpose * event)
{
- gchar *tmp = NULL;
- guint x, y;
- printf("%s()\n", __PRETTY_FUNCTION__);
-
- draw_sat_info(widget,
- 0, 0,
- widget->allocation.width,
- widget->allocation.height, FALSE);
-
- /* Sat View/In Use */
- tmp = g_strdup_printf("%d/%d", _gps.satinuse, _gps.satinview);
- pango_layout_set_text(_sat_panel_layout, tmp, -1);
- pango_layout_set_alignment(_sat_panel_layout, PANGO_ALIGN_LEFT);
- gdk_draw_layout(widget->window,
- widget->style->fg_gc[GTK_STATE_NORMAL],
- 20, 2, _sat_panel_layout);
- g_free(tmp);
-
- switch (_gps.fix) {
- case 2:
- case 3:
- tmp = g_strdup_printf("%dD fix", _gps.fix);
- break;
- default:
- tmp = g_strdup_printf("nofix");
- break;
- }
- pango_layout_set_text(_sat_panel_layout, tmp, -1);
- pango_layout_set_alignment(_sat_panel_layout, PANGO_ALIGN_RIGHT);
- pango_layout_get_pixel_size(_sat_panel_layout, &x, &y);
- gdk_draw_layout(widget->window,
- widget->style->fg_gc[GTK_STATE_NORMAL],
- widget->allocation.width - 20 - x, 2,
- _sat_panel_layout);
- g_free(tmp);
+gchar *tmp = NULL;
+guint x, y;
+printf("%s()\n", __PRETTY_FUNCTION__);
+
+draw_sat_info(widget,
+ 0, 0,
+ widget->allocation.width,
+ widget->allocation.height, FALSE);
+
+/* Sat View/In Use */
+tmp = g_strdup_printf("%d/%d", _gps.satinuse, _gps.satinview);
+pango_layout_set_text(_sat_panel_layout, tmp, -1);
+pango_layout_set_alignment(_sat_panel_layout, PANGO_ALIGN_LEFT);
+gdk_draw_layout(widget->window,
+ widget->style->fg_gc[GTK_STATE_NORMAL],
+ 20, 2, _sat_panel_layout);
+g_free(tmp);
+
+switch (_gps.fix) {
+case 2:
+case 3:
+ tmp = g_strdup_printf("%dD fix", _gps.fix);
+break;
+default:
+ tmp = g_strdup_printf("nofix");
+break;
+}
- vprintf("%s(): return\n", __PRETTY_FUNCTION__);
- return TRUE;
+pango_layout_set_text(_sat_panel_layout, tmp, -1);
+pango_layout_set_alignment(_sat_panel_layout, PANGO_ALIGN_RIGHT);
+pango_layout_get_pixel_size(_sat_panel_layout, &x, &y);
+gdk_draw_layout(widget->window,
+ widget->style->fg_gc[GTK_STATE_NORMAL],
+ widget->allocation.width - 20 - x, 2,
+ _sat_panel_layout);
+g_free(tmp);
+
+vprintf("%s(): return\n", __PRETTY_FUNCTION__);
+return TRUE;
}
gboolean heading_panel_expose(GtkWidget * widget, GdkEventExpose * event)
{
- guint size, xoffset, yoffset, i, x, y;
- gint dir;
- gfloat tmp;
- gchar *text;
- printf("%s()\n", __PRETTY_FUNCTION__);
-
- size = MIN(widget->allocation.width, widget->allocation.height);
- if (widget->allocation.width > widget->allocation.height) {
- xoffset =
- (widget->allocation.width - widget->allocation.height) / 2;
- yoffset = 0;
- } else {
- xoffset = 0;
- yoffset =
- (widget->allocation.height - widget->allocation.width) / 2;
+guint size, xoffset, yoffset, i, x, y;
+gint dir;
+gfloat tmp;
+gchar *text;
+printf("%s()\n", __PRETTY_FUNCTION__);
+
+size = MIN(widget->allocation.width, widget->allocation.height);
+if (widget->allocation.width > widget->allocation.height) {
+ xoffset = (widget->allocation.width - widget->allocation.height) / 2;
+ yoffset = 0;
+} else {
+ xoffset = 0;
+ yoffset = (widget->allocation.height - widget->allocation.width) / 2;
+}
+pango_font_description_set_size(_heading_panel_fontdesc,
+ 12 * PANGO_SCALE);
+pango_layout_set_font_description(_heading_panel_layout,
+ _heading_panel_fontdesc);
+pango_layout_set_alignment(_heading_panel_layout, PANGO_ALIGN_CENTER);
+
+text = g_strdup_printf("%3.0f°", _gps.heading);
+pango_layout_set_text(_heading_panel_layout, text, -1);
+pango_layout_get_pixel_size(_heading_panel_layout, &x, &y);
+
+gdk_draw_layout(widget->window,
+ widget->style->fg_gc[GTK_STATE_NORMAL],
+ xoffset + size / 2 - x / 2,
+ yoffset + size - y - 2, _heading_panel_layout);
+g_free(text);
+
+gdk_draw_arc(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ FALSE,
+ xoffset, yoffset + size / 2, size, size, 0, 64 * 180);
+
+/* Simple arrow for heading */
+gdk_draw_line(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ xoffset + size / 2 + 3,
+ yoffset + size - y - 5,
+ xoffset + size / 2, yoffset + size / 2 + 5);
+
+gdk_draw_line(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ xoffset + size / 2 - 3,
+ yoffset + size - y - 5,
+ xoffset + size / 2, yoffset + size / 2 + 5);
+
+gdk_draw_line(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ xoffset + size / 2 - 3,
+ yoffset + size - y - 5,
+ xoffset + size / 2, yoffset + size - y - 8);
+
+gdk_draw_line(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ xoffset + size / 2 + 3,
+ yoffset + size - y - 5,
+ xoffset + size / 2, yoffset + size - y - 8);
+
+gint angle[5] = { -90, -45, 0, 45, 90 };
+gint fsize[5] = { 0, 4, 10, 4, 0 };
+for (i = 0; i < 5; i++) {
+ dir = (gint) (_gps.heading / 45) * 45 + angle[i];
+
+ switch (dir) {
+ case 0:
+ case 360:
+ text = g_strdup("N");
+ break;
+ case 45:
+ case 405:
+ text = g_strdup("NE");
+ break;
+ case 90:
+ text = g_strdup("E");
+ break;
+ case 135:
+ text = g_strdup("SE");
+ break;
+ case 180:
+ text = g_strdup("S");
+ break;
+ case 225:
+ text = g_strdup("SW");
+ break;
+ case 270:
+ case -90:
+ text = g_strdup("W");
+ break;
+ case 315:
+ case -45:
+ text = g_strdup("NW");
+ break;
+ default:
+ text = g_strdup("??");
+ break;
}
- pango_font_description_set_size(_heading_panel_fontdesc,
- 12 * PANGO_SCALE);
- pango_layout_set_font_description(_heading_panel_layout,
- _heading_panel_fontdesc);
- pango_layout_set_alignment(_heading_panel_layout, PANGO_ALIGN_CENTER);
- text = g_strdup_printf("%3.0f°", _gps.heading);
+ tmp = ((dir - _gps.heading) * (1.f / 180.f)) * PI;
+ gdk_draw_line(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ xoffset + size / 2 + ((size / 2 - 5) * sinf(tmp)),
+ yoffset + size - ((size / 2 - 5) * cosf(tmp)),
+ xoffset + size / 2 + ((size / 2 + 5) * sinf(tmp)),
+ yoffset + size - ((size / 2 + 5) * cosf(tmp)));
+
+ x = fsize[i];
+ if (abs((guint) (_gps.heading / 45) * 45 - _gps.heading)
+ > abs((guint) (_gps.heading / 45) * 45 + 45 - _gps.heading)
+ && (i > 0))
+ x = fsize[i - 1];
+
+ pango_font_description_set_size(_heading_panel_fontdesc, (10 + x) * PANGO_SCALE);
+ pango_layout_set_font_description(_heading_panel_layout, _heading_panel_fontdesc);
pango_layout_set_text(_heading_panel_layout, text, -1);
pango_layout_get_pixel_size(_heading_panel_layout, &x, &y);
-
- gdk_draw_layout(widget->window,
- widget->style->fg_gc[GTK_STATE_NORMAL],
- xoffset + size / 2 - x / 2,
- yoffset + size - y - 2, _heading_panel_layout);
+ x = xoffset + size / 2 + ((size / 2 + 15) * sinf(tmp)) - x / 2,
+ y = yoffset + size - ((size / 2 + 15) * cosf(tmp)) - y / 2,
+ gdk_draw_layout(widget->window,
+ widget->style->fg_gc[GTK_STATE_NORMAL],
+ x, y, _heading_panel_layout);
g_free(text);
+}
- gdk_draw_arc(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- FALSE,
- xoffset, yoffset + size / 2, size, size, 0, 64 * 180);
-
- /* Simple arrow for heading */
- gdk_draw_line(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- xoffset + size / 2 + 3,
- yoffset + size - y - 5,
- xoffset + size / 2, yoffset + size / 2 + 5);
-
- gdk_draw_line(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- xoffset + size / 2 - 3,
- yoffset + size - y - 5,
- xoffset + size / 2, yoffset + size / 2 + 5);
-
- gdk_draw_line(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- xoffset + size / 2 - 3,
- yoffset + size - y - 5,
- xoffset + size / 2, yoffset + size - y - 8);
-
- gdk_draw_line(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- xoffset + size / 2 + 3,
- yoffset + size - y - 5,
- xoffset + size / 2, yoffset + size - y - 8);
-
- gint angle[5] = { -90, -45, 0, 45, 90 };
- gint fsize[5] = { 0, 4, 10, 4, 0 };
- for (i = 0; i < 5; i++) {
- dir = (gint) (_gps.heading / 45) * 45 + angle[i];
-
- switch (dir) {
- case 0:
- case 360:
- text = g_strdup("N");
- break;
- case 45:
- case 405:
- text = g_strdup("NE");
- break;
- case 90:
- text = g_strdup("E");
- break;
- case 135:
- text = g_strdup("SE");
- break;
- case 180:
- text = g_strdup("S");
- break;
- case 225:
- text = g_strdup("SW");
- break;
- case 270:
- case -90:
- text = g_strdup("W");
- break;
- case 315:
- case -45:
- text = g_strdup("NW");
- break;
- default:
- text = g_strdup("??");
- break;
- }
-
- tmp = ((dir - _gps.heading) * (1.f / 180.f)) * PI;
- gdk_draw_line(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- xoffset + size / 2 + ((size / 2 - 5) * sinf(tmp)),
- yoffset + size - ((size / 2 - 5) * cosf(tmp)),
- xoffset + size / 2 + ((size / 2 + 5) * sinf(tmp)),
- yoffset + size - ((size / 2 + 5) * cosf(tmp)));
-
- x = fsize[i];
- if (abs((guint) (_gps.heading / 45) * 45 - _gps.heading)
- > abs((guint) (_gps.heading / 45) * 45 + 45 - _gps.heading)
- && (i > 0))
- x = fsize[i - 1];
-
- pango_font_description_set_size(_heading_panel_fontdesc,
- (10 + x) * PANGO_SCALE);
- pango_layout_set_font_description(_heading_panel_layout,
- _heading_panel_fontdesc);
- pango_layout_set_text(_heading_panel_layout, text, -1);
- pango_layout_get_pixel_size(_heading_panel_layout, &x, &y);
- x = xoffset + size / 2 + ((size / 2 + 15) * sinf(tmp)) - x / 2,
- y = yoffset + size - ((size / 2 + 15) * cosf(tmp)) - y / 2,
- gdk_draw_layout(widget->window,
- widget->style->fg_gc[GTK_STATE_NORMAL],
- x, y, _heading_panel_layout);
- g_free(text);
- }
-
- vprintf("%s(): return\n", __PRETTY_FUNCTION__);
- return TRUE;
+vprintf("%s(): return\n", __PRETTY_FUNCTION__);
+return TRUE;
}
static void
draw_sat_details(GtkWidget * widget, guint x0, guint y0,
guint width, guint height)
{
- guint i, j, x, y, size, halfsize, xoffset, yoffset;
- guint x1, y1;
- gfloat tmp;
- GdkColor color;
- GdkGC *gc1, *gc2, *gc3, *gc;
- gchar *buffer = NULL;
- printf("%s()\n", __PRETTY_FUNCTION__);
-
- size = MIN(width, height);
- halfsize = size / 2;
- if (width > height) {
- xoffset = x0 + (width - height - 10) / 2;
- yoffset = y0 + 5;
- } else {
- xoffset = x0 + 5;
- yoffset = y0 + (height - width - 10) / 2;
- }
-
- /* 90 */
- gdk_draw_arc(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- FALSE,
- xoffset + 2, yoffset + 2, size - 4, size - 4, 0, 64 * 360);
-
- /* 60 */
- gdk_draw_arc(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- FALSE,
- xoffset + size / 6, yoffset + size / 6,
- size / 6 * 4, size / 6 * 4, 0, 64 * 360);
-
- /* 30 */
- gdk_draw_arc(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- FALSE,
- xoffset + size / 6 * 2, yoffset + size / 6 * 2,
- size / 6 * 2, size / 6 * 2, 0, 64 * 360);
-
- guint line[12] =
- { 0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330 };
-
- for (i = 0; i < 6; i++) {
- /* line */
- tmp = (line[i] * (1.f / 180.f)) * PI;
- gdk_draw_line(widget->window,
- widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
- xoffset + halfsize + (halfsize - 2) * sinf(tmp),
- yoffset + halfsize - (halfsize - 2) * cosf(tmp),
- xoffset + halfsize - (halfsize - 2) * sinf(tmp),
- yoffset + halfsize + (halfsize - 2) * cosf(tmp));
- }
-
- for (i = 0; i < 12; i++) {
- tmp = (line[i] * (1.f / 180.f)) * PI;
- /* azimuth */
- if (line[i] == 0)
- buffer = g_strdup_printf("N");
- else
- buffer = g_strdup_printf("%d°", line[i]);
- pango_layout_set_text(_sat_details_layout, buffer, -1);
- pango_layout_get_pixel_size(_sat_details_layout, &x, &y);
- gdk_draw_layout(widget->window,
- widget->style->fg_gc[GTK_STATE_NORMAL],
- (xoffset + halfsize +
- (halfsize - size / 12) * sinf(tmp)) - x / 2,
- (yoffset + halfsize -
- (halfsize - size / 12) * cosf(tmp)) - y / 2,
- _sat_details_layout);
- g_free(buffer);
- }
+guint i, j, x, y, size, halfsize, xoffset, yoffset;
+guint x1, y1;
+gfloat tmp;
+GdkColor color;
+GdkGC *gc1, *gc2, *gc3, *gc;
+gchar *buffer = NULL;
+guint line[12] = { 0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330 };
+
+printf("%s()\n", __PRETTY_FUNCTION__);
+
+size = MIN(width, height);
+halfsize = size / 2;
+if (width > height) {
+ xoffset = x0 + (width - height - 10) / 2;
+ yoffset = y0 + 5;
+} else {
+ xoffset = x0 + 5;
+ yoffset = y0 + (height - width - 10) / 2;
+}
- /* elevation 30 */
- tmp = (30 * (1.f / 180.f)) * PI;
- buffer = g_strdup_printf("30°");
- pango_layout_set_text(_sat_details_layout, buffer, -1);
- pango_layout_get_pixel_size(_sat_details_layout, &x, &y);
- gdk_draw_layout(widget->window,
- widget->style->fg_gc[GTK_STATE_NORMAL],
- (xoffset + halfsize + size / 6 * 2 * sinf(tmp)) - x / 2,
- (yoffset + halfsize - size / 6 * 2 * cosf(tmp)) - y / 2,
- _sat_details_layout);
- g_free(buffer);
+/* 90 */
+gdk_draw_arc(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ FALSE,
+ xoffset + 2, yoffset + 2, size - 4, size - 4, 0, 64 * 360);
+
+/* 60 */
+gdk_draw_arc(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ FALSE,
+ xoffset + size / 6, yoffset + size / 6,
+ size / 6 * 4, size / 6 * 4, 0, 64 * 360);
+
+/* 30 */
+gdk_draw_arc(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ FALSE,
+ xoffset + size / 6 * 2, yoffset + size / 6 * 2,
+ size / 6 * 2, size / 6 * 2, 0, 64 * 360);
+
+for (i = 0; i < 6; i++) {
+ /* line */
+ tmp = (line[i] * (1.f / 180.f)) * PI;
+ gdk_draw_line(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
+ xoffset + halfsize + (halfsize - 2) * sinf(tmp),
+ yoffset + halfsize - (halfsize - 2) * cosf(tmp),
+ xoffset + halfsize - (halfsize - 2) * sinf(tmp),
+ yoffset + halfsize + (halfsize - 2) * cosf(tmp));
+}
- /* elevation 60 */
- tmp = (30 * (1.f / 180.f)) * PI;
- buffer = g_strdup_printf("60°");
+for (i = 0; i < 12; i++) {
+ tmp = (line[i] * (1.f / 180.f)) * PI;
+ /* azimuth */
+ if (line[i] == 0)
+ buffer = g_strdup_printf("N");
+ else
+ buffer = g_strdup_printf("%d°", line[i]);
pango_layout_set_text(_sat_details_layout, buffer, -1);
pango_layout_get_pixel_size(_sat_details_layout, &x, &y);
gdk_draw_layout(widget->window,
widget->style->fg_gc[GTK_STATE_NORMAL],
- (xoffset + halfsize + size / 6 * sinf(tmp)) - x / 2,
- (yoffset + halfsize - size / 6 * cosf(tmp)) - y / 2,
+ (xoffset + halfsize +
+ (halfsize - size / 12) * sinf(tmp)) - x / 2,
+ (yoffset + halfsize -
+ (halfsize - size / 12) * cosf(tmp)) - y / 2,
_sat_details_layout);
g_free(buffer);
+}
- color.red = 0;
- color.green = 0;
- color.blue = 0;
- gc1 = gdk_gc_new(widget->window);
- gdk_gc_set_rgb_fg_color(gc1, &color);
-
- color.red = 0;
- color.green = 0;
- color.blue = 0xffff;
- gc2 = gdk_gc_new(widget->window);
- gdk_gc_set_rgb_fg_color(gc2, &color);
-
- color.red = 0xffff;
- color.green = 0xffff;
- color.blue = 0xffff;
- gc3 = gdk_gc_new(widget->window);
- gdk_gc_set_rgb_fg_color(gc3, &color);
-
- for (i = 0; i < _gps.satinview; i++) {
- /* Sat used or not */
- gc = gc1;
- for (j = 0; j < _gps.satinuse; j++) {
- if (_gps.satforfix[j] == _gps_sat[i].prn) {
- gc = gc2;
- break;
- }
+/* elevation 30 */
+tmp = (30 * (1.f / 180.f)) * PI;
+buffer = g_strdup_printf("30°");
+pango_layout_set_text(_sat_details_layout, buffer, -1);
+pango_layout_get_pixel_size(_sat_details_layout, &x, &y);
+gdk_draw_layout(widget->window,
+ widget->style->fg_gc[GTK_STATE_NORMAL],
+ (xoffset + halfsize + size / 6 * 2 * sinf(tmp)) - x / 2,
+ (yoffset + halfsize - size / 6 * 2 * cosf(tmp)) - y / 2,
+ _sat_details_layout);
+g_free(buffer);
+
+/* elevation 60 */
+tmp = (30 * (1.f / 180.f)) * PI;
+buffer = g_strdup_printf("60°");
+pango_layout_set_text(_sat_details_layout, buffer, -1);
+pango_layout_get_pixel_size(_sat_details_layout, &x, &y);
+gdk_draw_layout(widget->window,
+ widget->style->fg_gc[GTK_STATE_NORMAL],
+ (xoffset + halfsize + size / 6 * sinf(tmp)) - x / 2,
+ (yoffset + halfsize - size / 6 * cosf(tmp)) - y / 2,
+ _sat_details_layout);
+g_free(buffer);
+
+color.red = 0;
+color.green = 0;
+color.blue = 0;
+gc1 = gdk_gc_new(widget->window);
+gdk_gc_set_rgb_fg_color(gc1, &color);
+
+color.red = 0;
+color.green = 0;
+color.blue = 0xffff;
+gc2 = gdk_gc_new(widget->window);
+gdk_gc_set_rgb_fg_color(gc2, &color);
+
+color.red = 0xffff;
+color.green = 0xffff;
+color.blue = 0xffff;
+gc3 = gdk_gc_new(widget->window);
+gdk_gc_set_rgb_fg_color(gc3, &color);
+
+for (i = 0; i < _gps.satinview; i++) {
+ /* Sat used or not */
+ gc = gc1;
+ for (j = 0; j < _gps.satinuse; j++) {
+ if (_gps.satforfix[j] == _gps_sat[i].prn) {
+ gc = gc2;
+ break;
}
+ }
- tmp = (_gps_sat[i].azimuth * (1.f / 180.f)) * PI;
- x = xoffset + halfsize
- + (90 - _gps_sat[i].elevation) * halfsize / 90 * sinf(tmp);
- y = yoffset + halfsize
- - (90 - _gps_sat[i].elevation) * halfsize / 90 * cosf(tmp);
+ tmp = (_gps_sat[i].azimuth * (1.f / 180.f)) * PI;
+ x = xoffset + halfsize
+ + (90 - _gps_sat[i].elevation) * halfsize / 90 * sinf(tmp);
+ y = yoffset + halfsize
+ - (90 - _gps_sat[i].elevation) * halfsize / 90 * cosf(tmp);
- gdk_draw_arc(widget->window,
- gc, TRUE, x - 10, y - 10, 20, 20, 0, 64 * 360);
+ gdk_draw_arc(widget->window,
+ gc, TRUE, x - 10, y - 10, 20, 20, 0, 64 * 360);
- buffer = g_strdup_printf("%02d", _gps_sat[i].prn);
- pango_layout_set_text(_sat_details_layout, buffer, -1);
- pango_layout_get_pixel_size(_sat_details_layout, &x1, &y1);
- gdk_draw_layout(widget->window,
- gc3,
- x - x1 / 2, y - y1 / 2, _sat_details_layout);
- g_free(buffer);
- }
- g_object_unref(gc1);
- g_object_unref(gc2);
- g_object_unref(gc3);
+ buffer = g_strdup_printf("%02d", _gps_sat[i].prn);
+ pango_layout_set_text(_sat_details_layout, buffer, -1);
+ pango_layout_get_pixel_size(_sat_details_layout, &x1, &y1);
+ gdk_draw_layout(widget->window,
+ gc3,
+ x - x1 / 2, y - y1 / 2, _sat_details_layout);
+ g_free(buffer);
+}
+g_object_unref(gc1);
+g_object_unref(gc2);
+g_object_unref(gc3);
- vprintf("%s(): return\n", __PRETTY_FUNCTION__);
- return;
+vprintf("%s(): return\n", __PRETTY_FUNCTION__);
+return;
}
static gboolean