[Gpredict-svn] SF.net SVN: gpredict:[266] trunk/src
Real time satellite tracking and orbit prediction
Status: Beta
Brought to you by:
csete
|
From: <cs...@us...> - 2009-04-13 10:53:39
|
Revision: 266
http://gpredict.svn.sourceforge.net/gpredict/?rev=266&view=rev
Author: csete
Date: 2009-04-13 10:53:28 +0000 (Mon, 13 Apr 2009)
Log Message:
-----------
Fixed indent.
Modified Paths:
--------------
trunk/src/gtk-sky-glance.c
trunk/src/gtk-sky-glance.h
trunk/src/predict-tools.c
trunk/src/predict-tools.h
Modified: trunk/src/gtk-sky-glance.c
===================================================================
--- trunk/src/gtk-sky-glance.c 2009-04-13 10:38:53 UTC (rev 265)
+++ trunk/src/gtk-sky-glance.c 2009-04-13 10:53:28 UTC (rev 266)
@@ -67,25 +67,25 @@
static void gtk_sky_glance_init (GtkSkyGlance *skg);
static void gtk_sky_glance_destroy (GtkObject *object);
static void size_allocate_cb (GtkWidget *widget,
- GtkAllocation *allocation,
- gpointer data);
+ GtkAllocation *allocation,
+ gpointer data);
static gboolean on_motion_notify (GooCanvasItem *item,
- GooCanvasItem *target,
- GdkEventMotion *event,
- gpointer data);
+ GooCanvasItem *target,
+ GdkEventMotion *event,
+ gpointer data);
static void on_item_created (GooCanvas *canvas,
- GooCanvasItem *item,
- GooCanvasItemModel *model,
- gpointer data);
+ GooCanvasItem *item,
+ GooCanvasItemModel *model,
+ gpointer data);
static void on_canvas_realized (GtkWidget *canvas, gpointer data);
static gboolean on_button_press (GooCanvasItem *item,
- GooCanvasItem *target,
- GdkEventButton *event,
- gpointer data);
+ GooCanvasItem *target,
+ GdkEventButton *event,
+ gpointer data);
static gboolean on_button_release (GooCanvasItem *item,
- GooCanvasItem *target,
- GdkEventButton *event,
- gpointer data);
+ GooCanvasItem *target,
+ GdkEventButton *event,
+ gpointer data);
static GooCanvasItemModel* create_canvas_model (GtkSkyGlance *skg);
@@ -103,67 +103,67 @@
GtkType
gtk_sky_glance_get_type ()
{
- static GType gtk_sky_glance_type = 0;
+ static GType gtk_sky_glance_type = 0;
- if (!gtk_sky_glance_type) {
- static const GTypeInfo gtk_sky_glance_info = {
- sizeof (GtkSkyGlanceClass),
- NULL, /* base init */
- NULL, /* base finalise */
- (GClassInitFunc) gtk_sky_glance_class_init,
- NULL, /* class finalise */
- NULL, /* class data */
- sizeof (GtkSkyGlance),
- 1, /* n_preallocs */
- (GInstanceInitFunc) gtk_sky_glance_init,
- };
+ if (!gtk_sky_glance_type) {
+ static const GTypeInfo gtk_sky_glance_info = {
+ sizeof (GtkSkyGlanceClass),
+ NULL, /* base init */
+ NULL, /* base finalise */
+ (GClassInitFunc) gtk_sky_glance_class_init,
+ NULL, /* class finalise */
+ NULL, /* class data */
+ sizeof (GtkSkyGlance),
+ 1, /* n_preallocs */
+ (GInstanceInitFunc) gtk_sky_glance_init,
+ };
- gtk_sky_glance_type = g_type_register_static (GTK_TYPE_VBOX,
- "GtkSkyGlance",
- >k_sky_glance_info,
- 0);
- }
+ gtk_sky_glance_type = g_type_register_static (GTK_TYPE_VBOX,
+ "GtkSkyGlance",
+ >k_sky_glance_info,
+ 0);
+ }
- return gtk_sky_glance_type;
+ return gtk_sky_glance_type;
}
static void
gtk_sky_glance_class_init (GtkSkyGlanceClass *class)
{
- GObjectClass *gobject_class;
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkContainerClass *container_class;
+ GObjectClass *gobject_class;
+ GtkObjectClass *object_class;
+ GtkWidgetClass *widget_class;
+ GtkContainerClass *container_class;
- gobject_class = G_OBJECT_CLASS (class);
- object_class = (GtkObjectClass*) class;
- widget_class = (GtkWidgetClass*) class;
- container_class = (GtkContainerClass*) class;
+ gobject_class = G_OBJECT_CLASS (class);
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+ container_class = (GtkContainerClass*) class;
- parent_class = g_type_class_peek_parent (class);
+ parent_class = g_type_class_peek_parent (class);
- object_class->destroy = gtk_sky_glance_destroy;
- //widget_class->size_allocate = gtk_sky_glance_size_allocate;
+ object_class->destroy = gtk_sky_glance_destroy;
+ //widget_class->size_allocate = gtk_sky_glance_size_allocate;
}
static void
gtk_sky_glance_init (GtkSkyGlance *skg)
{
- skg->sats = NULL;
- skg->qth = NULL;
- skg->passes = NULL;
- skg->satlab = NULL;
- skg->x0 = 0;
- skg->y0 = 0;
- skg->w = 0;
- skg->h = 0;
- skg->pps = 0;
- skg->numsat = 0;
- skg->satcnt = 0;
- skg->ts = 0.0;
- skg->te = 0.0;
+ skg->sats = NULL;
+ skg->qth = NULL;
+ skg->passes = NULL;
+ skg->satlab = NULL;
+ skg->x0 = 0;
+ skg->y0 = 0;
+ skg->w = 0;
+ skg->h = 0;
+ skg->pps = 0;
+ skg->numsat = 0;
+ skg->satcnt = 0;
+ skg->ts = 0.0;
+ skg->te = 0.0;
}
@@ -173,46 +173,46 @@
static void
gtk_sky_glance_destroy (GtkObject *object)
{
- sky_pass_t *skypass;
- guint i, n;
+ sky_pass_t *skypass;
+ guint i, n;
- /* free passes */
- /* FIXME: TBC whether this is enough */
- if (GTK_SKY_GLANCE (object)->passes != NULL) {
+ /* free passes */
+ /* FIXME: TBC whether this is enough */
+ if (GTK_SKY_GLANCE (object)->passes != NULL) {
- n = g_slist_length (GTK_SKY_GLANCE (object)->passes);
- for (i = 0; i < n; i++) {
- skypass = (sky_pass_t *) g_slist_nth_data (GTK_SKY_GLANCE (object)->passes, i);
- free_pass (skypass->pass);
- g_free (skypass);
- }
+ n = g_slist_length (GTK_SKY_GLANCE (object)->passes);
+ for (i = 0; i < n; i++) {
+ skypass = (sky_pass_t *) g_slist_nth_data (GTK_SKY_GLANCE (object)->passes, i);
+ free_pass (skypass->pass);
+ g_free (skypass);
+ }
- g_slist_free (GTK_SKY_GLANCE (object)->passes);
- GTK_SKY_GLANCE (object)->passes = NULL;
- }
+ g_slist_free (GTK_SKY_GLANCE (object)->passes);
+ GTK_SKY_GLANCE (object)->passes = NULL;
+ }
- /* for the rest we only need to free the GSList because the
- canvas items will be freed when removed from canvas.
- */
- if (GTK_SKY_GLANCE (object)->satlab != NULL) {
- g_slist_free (GTK_SKY_GLANCE (object)->satlab);
- GTK_SKY_GLANCE (object)->satlab = NULL;
- }
- if (GTK_SKY_GLANCE (object)->majors != NULL) {
- g_slist_free (GTK_SKY_GLANCE (object)->majors);
- GTK_SKY_GLANCE (object)->majors = NULL;
- }
- if (GTK_SKY_GLANCE (object)->minors != NULL) {
- g_slist_free (GTK_SKY_GLANCE (object)->minors);
- GTK_SKY_GLANCE (object)->minors = NULL;
- }
- if (GTK_SKY_GLANCE (object)->labels != NULL) {
- g_slist_free (GTK_SKY_GLANCE (object)->labels);
- GTK_SKY_GLANCE (object)->labels = NULL;
- }
+ /* for the rest we only need to free the GSList because the
+ canvas items will be freed when removed from canvas.
+ */
+ if (GTK_SKY_GLANCE (object)->satlab != NULL) {
+ g_slist_free (GTK_SKY_GLANCE (object)->satlab);
+ GTK_SKY_GLANCE (object)->satlab = NULL;
+ }
+ if (GTK_SKY_GLANCE (object)->majors != NULL) {
+ g_slist_free (GTK_SKY_GLANCE (object)->majors);
+ GTK_SKY_GLANCE (object)->majors = NULL;
+ }
+ if (GTK_SKY_GLANCE (object)->minors != NULL) {
+ g_slist_free (GTK_SKY_GLANCE (object)->minors);
+ GTK_SKY_GLANCE (object)->minors = NULL;
+ }
+ if (GTK_SKY_GLANCE (object)->labels != NULL) {
+ g_slist_free (GTK_SKY_GLANCE (object)->labels);
+ GTK_SKY_GLANCE (object)->labels = NULL;
+ }
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
@@ -225,20 +225,20 @@
GtkWidget*
gtk_sky_glance_new (GHashTable *sats, qth_t *qth, gdouble ts)
{
- GtkWidget *skg;
- GooCanvasItemModel *root;
- GdkColor bg_color = {0, 0xFFFF, 0xFFFF, 0xFFFF};
+ GtkWidget *skg;
+ GooCanvasItemModel *root;
+ GdkColor bg_color = {0, 0xFFFF, 0xFFFF, 0xFFFF};
- skg = g_object_new (GTK_TYPE_SKY_GLANCE, NULL);
+ skg = g_object_new (GTK_TYPE_SKY_GLANCE, NULL);
- /* FIXME? */
- GTK_SKY_GLANCE (skg)->sats = sats;
- GTK_SKY_GLANCE (skg)->qth = qth;
+ /* FIXME? */
+ GTK_SKY_GLANCE (skg)->sats = sats;
+ GTK_SKY_GLANCE (skg)->qth = qth;
- /* get settings */
- GTK_SKY_GLANCE (skg)->numsat = g_hash_table_size (sats);
-
+ /* get settings */
+ GTK_SKY_GLANCE (skg)->numsat = g_hash_table_size (sats);
+
/* if ts = 0 use current time */
if (ts > 0.0) {
GTK_SKY_GLANCE (skg)->ts = ts;
@@ -246,159 +246,159 @@
else {
GTK_SKY_GLANCE (skg)->ts = get_current_daynum ();
}
-
- GTK_SKY_GLANCE (skg)->te = GTK_SKY_GLANCE (skg)->ts +
- sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME)*(1.0/24.0);
- /* calculate preferred sizes */
- GTK_SKY_GLANCE (skg)->w = SKG_DEFAULT_WIDTH;
- GTK_SKY_GLANCE (skg)->h = GTK_SKY_GLANCE (skg)->numsat * SKG_PIX_PER_SAT +
- (GTK_SKY_GLANCE (skg)->numsat + 1) * SKG_MARGIN;
- GTK_SKY_GLANCE (skg)->pps = SKG_PIX_PER_SAT;
+ GTK_SKY_GLANCE (skg)->te = GTK_SKY_GLANCE (skg)->ts +
+ sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME)*(1.0/24.0);
- /* create the canvas */
- GTK_SKY_GLANCE (skg)->canvas = goo_canvas_new ();
- gtk_widget_modify_base (GTK_SKY_GLANCE (skg)->canvas, GTK_STATE_NORMAL, &bg_color);
- gtk_widget_set_size_request (GTK_SKY_GLANCE (skg)->canvas,
- GTK_SKY_GLANCE (skg)->w,
- GTK_SKY_GLANCE (skg)->h + SKG_FOOTER);
- goo_canvas_set_bounds (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), 0, 0,
- GTK_SKY_GLANCE (skg)->w,
- GTK_SKY_GLANCE (skg)->h + SKG_FOOTER);
+ /* calculate preferred sizes */
+ GTK_SKY_GLANCE (skg)->w = SKG_DEFAULT_WIDTH;
+ GTK_SKY_GLANCE (skg)->h = GTK_SKY_GLANCE (skg)->numsat * SKG_PIX_PER_SAT +
+ (GTK_SKY_GLANCE (skg)->numsat + 1) * SKG_MARGIN;
+ GTK_SKY_GLANCE (skg)->pps = SKG_PIX_PER_SAT;
- /* connect size-request signal */
- g_signal_connect (GTK_SKY_GLANCE (skg)->canvas, "size-allocate",
- G_CALLBACK (size_allocate_cb), skg);
- g_signal_connect (GTK_SKY_GLANCE (skg)->canvas, "item_created",
- (GtkSignalFunc) on_item_created, skg);
- g_signal_connect_after (GTK_SKY_GLANCE (skg)->canvas, "realize",
- (GtkSignalFunc) on_canvas_realized, skg);
+ /* create the canvas */
+ GTK_SKY_GLANCE (skg)->canvas = goo_canvas_new ();
+ gtk_widget_modify_base (GTK_SKY_GLANCE (skg)->canvas, GTK_STATE_NORMAL, &bg_color);
+ gtk_widget_set_size_request (GTK_SKY_GLANCE (skg)->canvas,
+ GTK_SKY_GLANCE (skg)->w,
+ GTK_SKY_GLANCE (skg)->h + SKG_FOOTER);
+ goo_canvas_set_bounds (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), 0, 0,
+ GTK_SKY_GLANCE (skg)->w,
+ GTK_SKY_GLANCE (skg)->h + SKG_FOOTER);
- gtk_widget_show (GTK_SKY_GLANCE (skg)->canvas);
+ /* connect size-request signal */
+ g_signal_connect (GTK_SKY_GLANCE (skg)->canvas, "size-allocate",
+ G_CALLBACK (size_allocate_cb), skg);
+ g_signal_connect (GTK_SKY_GLANCE (skg)->canvas, "item_created",
+ (GtkSignalFunc) on_item_created, skg);
+ g_signal_connect_after (GTK_SKY_GLANCE (skg)->canvas, "realize",
+ (GtkSignalFunc) on_canvas_realized, skg);
+ gtk_widget_show (GTK_SKY_GLANCE (skg)->canvas);
- /* Create the canvas model */
- root = create_canvas_model (GTK_SKY_GLANCE (skg));
- goo_canvas_set_root_item_model (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), root);
- g_object_unref (root);
+ /* Create the canvas model */
+ root = create_canvas_model (GTK_SKY_GLANCE (skg));
+ goo_canvas_set_root_item_model (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), root);
- /* add satellite passes */
- g_hash_table_foreach (GTK_SKY_GLANCE (skg)->sats, create_sat, skg);
+ g_object_unref (root);
- gtk_container_add (GTK_CONTAINER (skg), GTK_SKY_GLANCE (skg)->canvas);
+ /* add satellite passes */
+ g_hash_table_foreach (GTK_SKY_GLANCE (skg)->sats, create_sat, skg);
- return skg;
+ gtk_container_add (GTK_CONTAINER (skg), GTK_SKY_GLANCE (skg)->canvas);
+
+ return skg;
}
static GooCanvasItemModel *
create_canvas_model (GtkSkyGlance *skg)
{
- GooCanvasItemModel *root;
- GooCanvasItemModel *hrt,*hrl,*hrm;
- guint i,n;
- gdouble th,tm;
- time_t tt;
- gdouble xh,xm;
- gchar buff[3];
+ GooCanvasItemModel *root;
+ GooCanvasItemModel *hrt,*hrl,*hrm;
+ guint i,n;
+ gdouble th,tm;
+ time_t tt;
+ gdouble xh,xm;
+ gchar buff[3];
- root = goo_canvas_group_model_new (NULL, NULL);
+ root = goo_canvas_group_model_new (NULL, NULL);
- /* cursor tracking line */
- skg->cursor = goo_canvas_polyline_model_new_line (root,
- skg->x0, skg->y0, skg->x0, skg->h,
- "stroke-color-rgba", 0x000000AF,
- "line-width", 0.5,
- NULL);
+ /* cursor tracking line */
+ skg->cursor = goo_canvas_polyline_model_new_line (root,
+ skg->x0, skg->y0, skg->x0, skg->h,
+ "stroke-color-rgba", 0x000000AF,
+ "line-width", 0.5,
+ NULL);
- /* time label */
- skg->timel = goo_canvas_text_model_new (root, "--:--", skg->x0 + 5, skg->y0, -1, GTK_ANCHOR_NW,
- "font", "Sans 8",
- "fill-color-rgba", 0x000000AF,
- NULL);
+ /* time label */
+ skg->timel = goo_canvas_text_model_new (root, "--:--", skg->x0 + 5, skg->y0, -1, GTK_ANCHOR_NW,
+ "font", "Sans 8",
+ "fill-color-rgba", 0x000000AF,
+ NULL);
- /* footer */
- skg->footer = goo_canvas_rect_model_new (root,
- skg->x0, skg->h,
- skg->w, SKG_FOOTER,
- "fill-color-rgba", 0x00003FFF,
- "stroke-color-rgba", 0xFFFFFFFF,
- NULL);
+ /* footer */
+ skg->footer = goo_canvas_rect_model_new (root,
+ skg->x0, skg->h,
+ skg->w, SKG_FOOTER,
+ "fill-color-rgba", 0x00003FFF,
+ "stroke-color-rgba", 0xFFFFFFFF,
+ NULL);
- /* time ticks and labels */
- if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME))
- skg->axisl = goo_canvas_text_model_new (root, _("TIME"),
- skg->w / 2, skg->h + SKG_FOOTER - 5,
- -1, GTK_ANCHOR_S,
- "font", "Sans 9",
- "fill-color-rgba", 0xFFFFFFFF,
- NULL);
- else
- skg->axisl = goo_canvas_text_model_new (root, _("UTC"),
- skg->w / 2, skg->h + SKG_FOOTER - 5,
- -1, GTK_ANCHOR_S,
- "font", "Sans 9",
- "fill-color-rgba", 0xFFFFFFFF,
- NULL);
+ /* time ticks and labels */
+ if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME))
+ skg->axisl = goo_canvas_text_model_new (root, _("TIME"),
+ skg->w / 2, skg->h + SKG_FOOTER - 5,
+ -1, GTK_ANCHOR_S,
+ "font", "Sans 9",
+ "fill-color-rgba", 0xFFFFFFFF,
+ NULL);
+ else
+ skg->axisl = goo_canvas_text_model_new (root, _("UTC"),
+ skg->w / 2, skg->h + SKG_FOOTER - 5,
+ -1, GTK_ANCHOR_S,
+ "font", "Sans 9",
+ "fill-color-rgba", 0xFFFFFFFF,
+ NULL);
- /* get the first hour and first 30 min slot */
- th = ceil (skg->ts * 24.0) / 24.0;
+ /* get the first hour and first 30 min slot */
+ th = ceil (skg->ts * 24.0) / 24.0;
- /* workaround for bug 1839140 (first hour incorrexct) */
- th += 0.00069;
-
- /* the first 30 min tick can be either before
- or after the first hour tick
- */
- if ((th - skg->ts) > 0.0208333) {
- tm = th - 0.0208333;
- }
- else {
- tm = th + 0.0208333;
- }
+ /* workaround for bug 1839140 (first hour incorrexct) */
+ th += 0.00069;
- /* the number of steps equals the number of hours */
- n = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME);
- for (i = 0; i < n; i++) {
+ /* the first 30 min tick can be either before
+ or after the first hour tick
+ */
+ if ((th - skg->ts) > 0.0208333) {
+ tm = th - 0.0208333;
+ }
+ else {
+ tm = th + 0.0208333;
+ }
- /* hour tick */
- xh = t2x (skg, th);
- hrt = goo_canvas_polyline_model_new_line (root, xh, skg->h, xh, skg->h + 10,
- "stroke-color-rgba", 0xFFFFFFFF,
- NULL);
+ /* the number of steps equals the number of hours */
+ n = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME);
+ for (i = 0; i < n; i++) {
- /* hour tick label */
- tt = (th - 2440587.5)*86400.0;
- if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME))
- strftime (buff, 3, "%H", localtime (&tt));
- else
- strftime (buff, 3, "%H", gmtime (&tt));
-
- buff[2] = '\0';
- hrl = goo_canvas_text_model_new (root, buff, xh, skg->h + 12,
- -1, GTK_ANCHOR_N,
- "font", "Sans 8",
- "fill-color-rgba", 0xFFFFFFFF,
- NULL);
+ /* hour tick */
+ xh = t2x (skg, th);
+ hrt = goo_canvas_polyline_model_new_line (root, xh, skg->h, xh, skg->h + 10,
+ "stroke-color-rgba", 0xFFFFFFFF,
+ NULL);
- /* 30 min tick */
- xm = t2x (skg, tm);
- hrm = goo_canvas_polyline_model_new_line (root, xm, skg->h, xm, skg->h + 5,
- "stroke-color-rgba", 0xFFFFFFFF,
- NULL);
+ /* hour tick label */
+ tt = (th - 2440587.5)*86400.0;
+ if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME))
+ strftime (buff, 3, "%H", localtime (&tt));
+ else
+ strftime (buff, 3, "%H", gmtime (&tt));
+
+ buff[2] = '\0';
+ hrl = goo_canvas_text_model_new (root, buff, xh, skg->h + 12,
+ -1, GTK_ANCHOR_N,
+ "font", "Sans 8",
+ "fill-color-rgba", 0xFFFFFFFF,
+ NULL);
- /* store canvas items */
- skg->majors = g_slist_append (skg->majors, hrt);
- skg->labels = g_slist_append (skg->labels, hrl);
- skg->minors = g_slist_append (skg->minors, hrm);
+ /* 30 min tick */
+ xm = t2x (skg, tm);
+ hrm = goo_canvas_polyline_model_new_line (root, xm, skg->h, xm, skg->h + 5,
+ "stroke-color-rgba", 0xFFFFFFFF,
+ NULL);
- th += 0.0416667;
- tm += 0.0416667;
- }
+ /* store canvas items */
+ skg->majors = g_slist_append (skg->majors, hrt);
+ skg->labels = g_slist_append (skg->labels, hrl);
+ skg->minors = g_slist_append (skg->minors, hrm);
- return root;
+ th += 0.0416667;
+ tm += 0.0416667;
+ }
+
+ return root;
}
@@ -413,154 +413,154 @@
static void
size_allocate_cb (GtkWidget *widget, GtkAllocation *allocation, gpointer data)
{
- GtkSkyGlance *skg;
- GooCanvasPoints *pts;
- GooCanvasItem *obj;
- gint i,j,n;
- guint curcat;
- gdouble th,tm;
- gdouble xh,xm;
- sky_pass_t *skp;
- gdouble x,y,w,h;
+ GtkSkyGlance *skg;
+ GooCanvasPoints *pts;
+ GooCanvasItem *obj;
+ gint i,j,n;
+ guint curcat;
+ gdouble th,tm;
+ gdouble xh,xm;
+ sky_pass_t *skp;
+ gdouble x,y,w,h;
- if (GTK_WIDGET_REALIZED (widget)) {
+ if (GTK_WIDGET_REALIZED (widget)) {
- /* get graph dimensions */
- skg = GTK_SKY_GLANCE (data);
+ /* get graph dimensions */
+ skg = GTK_SKY_GLANCE (data);
- skg->w = allocation->width;
- skg->h = allocation->height - SKG_FOOTER;
- skg->x0 = 0;
- skg->y0 = 0;
+ skg->w = allocation->width;
+ skg->h = allocation->height - SKG_FOOTER;
+ skg->x0 = 0;
+ skg->y0 = 0;
- skg->pps = (skg->h - SKG_MARGIN) / skg->numsat - SKG_MARGIN;
+ skg->pps = (skg->h - SKG_MARGIN) / skg->numsat - SKG_MARGIN;
goo_canvas_set_bounds (GOO_CANVAS (GTK_SKY_GLANCE (skg)->canvas), 0, 0,
allocation->width, allocation->height);
- /* update cursor tracking line */
- pts = goo_canvas_points_new (2);
- pts->coords[0] = skg->x0;
- pts->coords[1] = skg->y0;
- pts->coords[2] = skg->x0;
- pts->coords[3] = skg->h;
- g_object_set (skg->cursor, "points", pts, NULL);
- goo_canvas_points_unref (pts);
+ /* update cursor tracking line */
+ pts = goo_canvas_points_new (2);
+ pts->coords[0] = skg->x0;
+ pts->coords[1] = skg->y0;
+ pts->coords[2] = skg->x0;
+ pts->coords[3] = skg->h;
+ g_object_set (skg->cursor, "points", pts, NULL);
+ goo_canvas_points_unref (pts);
- /* time label */
- g_object_set (skg->timel,
- "x", (gdouble) skg->x0 + 5,
- NULL);
+ /* time label */
+ g_object_set (skg->timel,
+ "x", (gdouble) skg->x0 + 5,
+ NULL);
-
- /* update footer */
- g_object_set (skg->footer,
- "x", (gdouble) skg->x0,
- "y", (gdouble) skg->h,
- "width", (gdouble) skg->w,
- "height", (gdouble) SKG_FOOTER,
- NULL);
+
+ /* update footer */
+ g_object_set (skg->footer,
+ "x", (gdouble) skg->x0,
+ "y", (gdouble) skg->h,
+ "width", (gdouble) skg->w,
+ "height", (gdouble) SKG_FOOTER,
+ NULL);
- g_object_set (skg->axisl,
- "x", (gdouble) (skg->w / 2),
- "y", (gdouble) (skg->h + SKG_FOOTER - 5),
- NULL);
+ g_object_set (skg->axisl,
+ "x", (gdouble) (skg->w / 2),
+ "y", (gdouble) (skg->h + SKG_FOOTER - 5),
+ NULL);
- /* get the first hour and first 30 min slot */
- th = ceil (skg->ts * 24.0) / 24.0;
+ /* get the first hour and first 30 min slot */
+ th = ceil (skg->ts * 24.0) / 24.0;
- /* workaround for bug 1839140 (first hour incorrexct) */
- th += 0.00069;
-
- if ((th - skg->ts) > 0.0208333) {
- tm = th - 0.0208333;
- }
- else {
- tm = th + 0.0208333;
- }
+ /* workaround for bug 1839140 (first hour incorrexct) */
+ th += 0.00069;
+
+ if ((th - skg->ts) > 0.0208333) {
+ tm = th - 0.0208333;
+ }
+ else {
+ tm = th + 0.0208333;
+ }
- /* the number of steps equals the number of hours */
- n = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME);
- for (i = 0; i < n; i++) {
- xh = t2x (skg, th);
+ /* the number of steps equals the number of hours */
+ n = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME);
+ for (i = 0; i < n; i++) {
+ xh = t2x (skg, th);
- pts = goo_canvas_points_new (2);
- pts->coords[0] = xh;
- pts->coords[1] = skg->h;
- pts->coords[2] = xh;
- pts->coords[3] = skg->h + 10;
+ pts = goo_canvas_points_new (2);
+ pts->coords[0] = xh;
+ pts->coords[1] = skg->h;
+ pts->coords[2] = xh;
+ pts->coords[3] = skg->h + 10;
- obj = g_slist_nth_data (skg->majors, i);
- g_object_set (obj, "points", pts, NULL);
+ obj = g_slist_nth_data (skg->majors, i);
+ g_object_set (obj, "points", pts, NULL);
- goo_canvas_points_unref (pts);
+ goo_canvas_points_unref (pts);
- obj = g_slist_nth_data (skg->labels, i);
- g_object_set (obj,
- "x", (gdouble) xh,
- "y", (gdouble) (skg->h + 12),
- NULL);
+ obj = g_slist_nth_data (skg->labels, i);
+ g_object_set (obj,
+ "x", (gdouble) xh,
+ "y", (gdouble) (skg->h + 12),
+ NULL);
- /* 30 min tick */
- xm = t2x (skg, tm);
+ /* 30 min tick */
+ xm = t2x (skg, tm);
- pts = goo_canvas_points_new (2);
- pts->coords[0] = xm;
- pts->coords[1] = skg->h;
- pts->coords[2] = xm;
- pts->coords[3] = skg->h + 5;
+ pts = goo_canvas_points_new (2);
+ pts->coords[0] = xm;
+ pts->coords[1] = skg->h;
+ pts->coords[2] = xm;
+ pts->coords[3] = skg->h + 5;
- obj = g_slist_nth_data (skg->minors, i);
- g_object_set (obj, "points", pts, NULL);
+ obj = g_slist_nth_data (skg->minors, i);
+ g_object_set (obj, "points", pts, NULL);
- goo_canvas_points_unref (pts);
+ goo_canvas_points_unref (pts);
- th += 0.04167;
- tm += 0.04167;
- }
+ th += 0.04167;
+ tm += 0.04167;
+ }
- /* update pass items */
- n = g_slist_length (skg->passes);
- j = -1;
- curcat = 0;
- y = 10.0;
- h = 10.0;
- for (i = 0; i < n; i++) {
+ /* update pass items */
+ n = g_slist_length (skg->passes);
+ j = -1;
+ curcat = 0;
+ y = 10.0;
+ h = 10.0;
+ for (i = 0; i < n; i++) {
- /* get pass */
- skp = (sky_pass_t *) g_slist_nth_data (skg->passes, i);
+ /* get pass */
+ skp = (sky_pass_t *) g_slist_nth_data (skg->passes, i);
- x = t2x (skg, skp->pass->aos);
- w = t2x (skg, skp->pass->los) - x;
+ x = t2x (skg, skp->pass->aos);
+ w = t2x (skg, skp->pass->los) - x;
- /* new satellite? */
- if (skp->catnum != curcat) {
- j++;
- curcat = skp->catnum;
- y = j * (skg->pps + SKG_MARGIN) + SKG_MARGIN;
- h = skg->pps;
+ /* new satellite? */
+ if (skp->catnum != curcat) {
+ j++;
+ curcat = skp->catnum;
+ y = j * (skg->pps + SKG_MARGIN) + SKG_MARGIN;
+ h = skg->pps;
- /* update label */
- obj = g_slist_nth_data (skg->satlab, j);
- if (x > (skg->x0 + 100))
- g_object_set (obj, "x", x-5, "y", y+h/2.0,
- "anchor", GTK_ANCHOR_E, NULL);
- else
- g_object_set (obj, "x", x+w+5, "y", y+h/2.0,
- "anchor", GTK_ANCHOR_W, NULL);
- }
+ /* update label */
+ obj = g_slist_nth_data (skg->satlab, j);
+ if (x > (skg->x0 + 100))
+ g_object_set (obj, "x", x-5, "y", y+h/2.0,
+ "anchor", GTK_ANCHOR_E, NULL);
+ else
+ g_object_set (obj, "x", x+w+5, "y", y+h/2.0,
+ "anchor", GTK_ANCHOR_W, NULL);
+ }
- g_object_set (skp->box,
- "x", x,
- "y", y,
- "width", w,
- "height", h,
- NULL);
- }
+ g_object_set (skp->box,
+ "x", x,
+ "y", y,
+ "width", w,
+ "height", h,
+ NULL);
+ }
- }
+ }
}
@@ -574,11 +574,11 @@
static void
on_canvas_realized (GtkWidget *canvas, gpointer data)
{
- GtkAllocation aloc;
+ GtkAllocation aloc;
- aloc.width = canvas->allocation.width;
- aloc.height = canvas->allocation.height;
- size_allocate_cb (canvas, &aloc, data);
+ aloc.width = canvas->allocation.width;
+ aloc.height = canvas->allocation.height;
+ size_allocate_cb (canvas, &aloc, data);
}
@@ -586,59 +586,59 @@
/** \brief Manage mouse motion events. */
static gboolean
on_motion_notify (GooCanvasItem *item,
- GooCanvasItem *target,
- GdkEventMotion *event,
- gpointer data)
+ GooCanvasItem *target,
+ GdkEventMotion *event,
+ gpointer data)
{
- GtkSkyGlance *skg = GTK_SKY_GLANCE (data);
- GooCanvasPoints *pts;
- gdouble t;
- time_t tt;
- gchar buff[6];
+ GtkSkyGlance *skg = GTK_SKY_GLANCE (data);
+ GooCanvasPoints *pts;
+ gdouble t;
+ time_t tt;
+ gchar buff[6];
- /* update cursor tracking line and time label */
- pts = goo_canvas_points_new (2);
- pts->coords[0] = event->x;
- pts->coords[1] = skg->y0;
- pts->coords[2] = event->x;
- pts->coords[3] = skg->h;
- g_object_set (skg->cursor, "points", pts, NULL);
- goo_canvas_points_unref (pts);
+ /* update cursor tracking line and time label */
+ pts = goo_canvas_points_new (2);
+ pts->coords[0] = event->x;
+ pts->coords[1] = skg->y0;
+ pts->coords[2] = event->x;
+ pts->coords[3] = skg->h;
+ g_object_set (skg->cursor, "points", pts, NULL);
+ goo_canvas_points_unref (pts);
- /* get time corresponding to x */
- t = x2t (skg, event->x);
+ /* get time corresponding to x */
+ t = x2t (skg, event->x);
- /* convert julian date to struct tm */
- tt = (t - 2440587.5)*86400.;
+ /* convert julian date to struct tm */
+ tt = (t - 2440587.5)*86400.;
- /* format either local time or UTC depending on check box */
- if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME))
- strftime (buff, 6, "%H:%M", localtime (&tt));
- else
- strftime (buff, 6, "%H:%M", gmtime (&tt));
+ /* format either local time or UTC depending on check box */
+ if (sat_cfg_get_bool (SAT_CFG_BOOL_USE_LOCAL_TIME))
+ strftime (buff, 6, "%H:%M", localtime (&tt));
+ else
+ strftime (buff, 6, "%H:%M", gmtime (&tt));
- buff[5] = '\0';
-
- /* in order to avoid label clipping close to the edges of
- the chart, the label is placed left/right of the cursor
- tracking line depending on which half we are in.
- */
- if (event->x > (skg->w / 2)) {
- g_object_set (skg->timel,
- "text", buff,
- "x", (gdouble) event->x - 5,
- "anchor", GTK_ANCHOR_NE,
- NULL);
- }
- else {
- g_object_set (skg->timel,
- "text", buff,
- "x", (gdouble) event->x + 5,
- "anchor", GTK_ANCHOR_NW,
- NULL);
- }
+ buff[5] = '\0';
- return TRUE;
+ /* in order to avoid label clipping close to the edges of
+ the chart, the label is placed left/right of the cursor
+ tracking line depending on which half we are in.
+ */
+ if (event->x > (skg->w / 2)) {
+ g_object_set (skg->timel,
+ "text", buff,
+ "x", (gdouble) event->x - 5,
+ "anchor", GTK_ANCHOR_NE,
+ NULL);
+ }
+ else {
+ g_object_set (skg->timel,
+ "text", buff,
+ "x", (gdouble) event->x + 5,
+ "anchor", GTK_ANCHOR_NW,
+ NULL);
+ }
+
+ return TRUE;
}
@@ -653,22 +653,22 @@
*/
static void
on_item_created (GooCanvas *canvas,
- GooCanvasItem *item,
- GooCanvasItemModel *model,
- gpointer data)
+ GooCanvasItem *item,
+ GooCanvasItemModel *model,
+ gpointer data)
{
- if (!goo_canvas_item_model_get_parent (model)) {
- /* root item / canvas */
- g_signal_connect (item, "motion_notify_event",
- (GtkSignalFunc) on_motion_notify, data);
- }
+ if (!goo_canvas_item_model_get_parent (model)) {
+ /* root item / canvas */
+ g_signal_connect (item, "motion_notify_event",
+ (GtkSignalFunc) on_motion_notify, data);
+ }
- else if (!g_object_get_data (G_OBJECT (item), "skip-signal-connection")) {
- g_signal_connect (item, "button_press_event",
- (GtkSignalFunc) on_button_press, data);
- g_signal_connect (item, "button_release_event",
- (GtkSignalFunc) on_button_release, data);
- }
+ else if (!g_object_get_data (G_OBJECT (item), "skip-signal-connection")) {
+ g_signal_connect (item, "button_press_event",
+ (GtkSignalFunc) on_button_press, data);
+ g_signal_connect (item, "button_release_event",
+ (GtkSignalFunc) on_button_release, data);
+ }
}
@@ -680,24 +680,24 @@
*/
static gboolean
on_button_press (GooCanvasItem *item,
- GooCanvasItem *target,
- GdkEventButton *event,
- gpointer data)
+ GooCanvasItem *target,
+ GdkEventButton *event,
+ gpointer data)
{
/* GooCanvasItemModel *model = goo_canvas_item_get_model (item); */
/* GtkSkyGlance *skg = GTK_SKY_GLANCE (data); */
- switch (event->button) {
+ switch (event->button) {
- /* pop-up menu */
- case 3:
+ /* pop-up menu */
+ case 3:
- break;
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
@@ -714,26 +714,26 @@
*/
static gboolean
on_button_release (GooCanvasItem *item,
- GooCanvasItem *target,
- GdkEventButton *event,
- gpointer data)
+ GooCanvasItem *target,
+ GdkEventButton *event,
+ gpointer data)
{
/* GooCanvasItemModel *model = goo_canvas_item_get_model (item); */
/* GtkSkyGlance *skg = GTK_SKY_GLANCE (data); */
- switch (event->button) {
+ switch (event->button) {
- /* Select / de-select satellite */
- case 1:
+ /* Select / de-select satellite */
+ case 1:
- break;
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
-
- return TRUE;
+
+ return TRUE;
}
@@ -747,11 +747,11 @@
*/
static gdouble t2x (GtkSkyGlance *skg, gdouble t)
{
- gdouble frac;
+ gdouble frac;
- frac = (t - skg->ts) / (skg->te - skg->ts);
+ frac = (t - skg->ts) / (skg->te - skg->ts);
- return (skg->x0 + frac * skg->w);
+ return (skg->x0 + frac * skg->w);
}
@@ -766,77 +766,77 @@
*/
static gdouble x2t (GtkSkyGlance *skg, gdouble x)
{
- gdouble frac;
+ gdouble frac;
- frac = (x - skg->x0) / skg->w;
+ frac = (x - skg->x0) / skg->w;
- return (skg->ts + frac * (skg->te - skg->ts));
+ return (skg->ts + frac * (skg->te - skg->ts));
}
/* fetch the basic colour and add alpha channel */
static void get_colours (guint i, guint *bcol, guint *fcol)
{
- guint tmp;
+ guint tmp;
- /* ensure that we are within 1..10 */
- i = i % 10;
+ /* ensure that we are within 1..10 */
+ i = i % 10;
- switch (i) {
+ switch (i) {
- case 0:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01);
- break;
+ case 0:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01);
+ break;
- case 1:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_02);
- break;
+ case 1:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_02);
+ break;
- case 2:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_03);
- break;
+ case 2:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_03);
+ break;
- case 3:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_04);
- break;
+ case 3:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_04);
+ break;
- case 4:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_05);
- break;
+ case 4:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_05);
+ break;
- case 5:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_06);
- break;
+ case 5:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_06);
+ break;
- case 6:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_07);
- break;
+ case 6:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_07);
+ break;
- case 7:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_08);
- break;
+ case 7:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_08);
+ break;
- case 8:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_09);
- break;
+ case 8:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_09);
+ break;
- case 9:
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_10);
- break;
+ case 9:
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_10);
+ break;
- default:
- sat_log_log (SAT_LOG_LEVEL_BUG,
- _("%s:%d: Colour index out of valid range (%d)"),
- __FILE__, __LINE__, i);
- tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01);
- break;
- }
+ default:
+ sat_log_log (SAT_LOG_LEVEL_BUG,
+ _("%s:%d: Colour index out of valid range (%d)"),
+ __FILE__, __LINE__, i);
+ tmp = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01);
+ break;
+ }
- /* border colour is solid with no tranparency */
- *bcol = (tmp * 0x100) | 0xFF;
+ /* border colour is solid with no tranparency */
+ *bcol = (tmp * 0x100) | 0xFF;
- /* fill colour is slightly transparent */
- *fcol = (tmp * 0x100) | 0xF0;
+ /* fill colour is slightly transparent */
+ *fcol = (tmp * 0x100) | 0xF0;
}
@@ -852,79 +852,79 @@
static void
create_sat (gpointer key, gpointer value, gpointer data)
{
- sat_t *sat = SAT(value);
- GtkSkyGlance *skg = GTK_SKY_GLANCE(data);
- GSList *passes = NULL;
- gdouble maxdt;
- guint i,n;
- pass_t *tmppass = NULL;
- sky_pass_t *skypass;
- guint bcol,fcol; /* colours */
- GooCanvasItemModel *root;
- GooCanvasItemModel *lab;
+ sat_t *sat = SAT(value);
+ GtkSkyGlance *skg = GTK_SKY_GLANCE(data);
+ GSList *passes = NULL;
+ gdouble maxdt;
+ guint i,n;
+ pass_t *tmppass = NULL;
+ sky_pass_t *skypass;
+ guint bcol,fcol; /* colours */
+ GooCanvasItemModel *root;
+ GooCanvasItemModel *lab;
- /* FIXME:
- Include current pass if sat is up now
- */
+ /* FIXME:
+ Include current pass if sat is up now
+ */
- /* check that we didn't exceed 10 sats */
-/* if (++skg->satcnt > 10) { */
-/* return; */
-/* } */
+ /* check that we didn't exceed 10 sats */
+ /* if (++skg->satcnt > 10) { */
+ /* return; */
+ /* } */
- /* get canvas root */
- root = goo_canvas_get_root_item_model (GOO_CANVAS (skg->canvas));
+ /* get canvas root */
+ root = goo_canvas_get_root_item_model (GOO_CANVAS (skg->canvas));
- get_colours (skg->satcnt++, &bcol, &fcol);
+ get_colours (skg->satcnt++, &bcol, &fcol);
- maxdt = skg->te - skg->ts;
+ maxdt = skg->te - skg->ts;
- /* get passes for satellite */
- passes = get_passes (sat, skg->qth, skg->ts, maxdt, 10);
- n = g_slist_length (passes);
- sat_log_log (SAT_LOG_LEVEL_DEBUG,
- _("%s:%d: %s has %d passes within %.4f days\n"),
- __FILE__, __LINE__, sat->tle.sat_name, n, maxdt);
+ /* get passes for satellite */
+ passes = get_passes (sat, skg->qth, skg->ts, maxdt, 10);
+ n = g_slist_length (passes);
+ sat_log_log (SAT_LOG_LEVEL_DEBUG,
+ _("%s:%d: %s has %d passes within %.4f days\n"),
+ __FILE__, __LINE__, sat->tle.sat_name, n, maxdt);
- /* add sky_pass_t items to skg->passes */
- if (passes != NULL) {
+ /* add sky_pass_t items to skg->passes */
+ if (passes != NULL) {
- /* add pass items */
- for (i = 0; i < n; i++) {
-
- skypass = g_try_new (sky_pass_t, 1);
+ /* add pass items */
+ for (i = 0; i < n; i++) {
+
+ skypass = g_try_new (sky_pass_t, 1);
- if (skypass != NULL) {
+ if (skypass != NULL) {
- /* create pass structure items */
- skypass->catnum = sat->tle.catnr;
- tmppass = (pass_t *) g_slist_nth_data (passes, i);
- skypass->pass = copy_pass (tmppass);
- skypass->box = goo_canvas_rect_model_new (root, 10, 10, 20, 20, /* dummy coordinates */
- "stroke-color-rgba", bcol,
- "fill-color-rgba", fcol,
- NULL);
-
- /* store pass data */
- skg->passes = g_slist_append (skg->passes, skypass);
- }
- else {
- sat_log_log (SAT_LOG_LEVEL_ERROR,
- _("%s:%d: Could not allocate memory for pass object"),
- __FILE__, __LINE__);
- }
+ /* create pass structure items */
+ skypass->catnum = sat->tle.catnr;
+ tmppass = (pass_t *) g_slist_nth_data (passes, i);
+ skypass->pass = copy_pass (tmppass);
+ skypass->box = goo_canvas_rect_model_new (root, 10, 10, 20, 20, /* dummy coordinates */
+ "stroke-color-rgba", bcol,
+ "fill-color-rgba", fcol,
+ NULL);
+
+ /* store pass data */
+ skg->passes = g_slist_append (skg->passes, skypass);
+ }
+ else {
+ sat_log_log (SAT_LOG_LEVEL_ERROR,
+ _("%s:%d: Could not allocate memory for pass object"),
+ __FILE__, __LINE__);
+ }
- }
+ }
- free_passes (passes);
+ free_passes (passes);
- /* add satellite label */
- lab = goo_canvas_text_model_new (root, sat->tle.sat_name,
- 5, 0, -1, GTK_ANCHOR_W,
- "font", "Sans 8",
- "fill-color-rgba", bcol,
- NULL);
- skg->satlab = g_slist_append (skg->satlab, lab);
- }
+ /* add satellite label */
+ lab = goo_canvas_text_model_new (root, sat->tle.sat_name,
+ 5, 0, -1, GTK_ANCHOR_W,
+ "font", "Sans 8",
+ "fill-color-rgba", bcol,
+ NULL);
+ skg->satlab = g_slist_append (skg->satlab, lab);
+ }
}
Modified: trunk/src/gtk-sky-glance.h
===================================================================
--- trunk/src/gtk-sky-glance.h 2009-04-13 10:38:53 UTC (rev 265)
+++ trunk/src/gtk-sky-glance.h 2009-04-13 10:53:28 UTC (rev 266)
@@ -56,9 +56,9 @@
/** \brief Satellite object on graph. */
typedef struct {
- guint catnum; /*!< Catalogue number of satellite */
- pass_t *pass; /*!< Details of the corresponding pass. */
- GooCanvasItemModel *box; /*!< Canvas item showing the pass */
+ guint catnum; /*!< Catalogue number of satellite */
+ pass_t *pass; /*!< Details of the corresponding pass. */
+ GooCanvasItemModel *box; /*!< Canvas item showing the pass */
} sky_pass_t;
@@ -68,48 +68,48 @@
struct _GtkSkyGlance
{
- GtkVBox vbox;
+ GtkVBox vbox;
- GtkWidget *canvas; /*!< The canvas widget */
+ GtkWidget *canvas; /*!< The canvas widget */
- GHashTable *sats; /*!< Copy of satellites. */
- qth_t *qth; /*!< Pointer to current location. */
+ GHashTable *sats; /*!< Copy of satellites. */
+ qth_t *qth; /*!< Pointer to current location. */
- GSList *passes; /*!< Canvas items representing each pass.
- Each element in the list is of type sky_pass_t.
- */
- GSList *satlab; /*!< Canvas items showing satellite names. */
+ GSList *passes; /*!< Canvas items representing each pass.
+ Each element in the list is of type sky_pass_t.
+ */
+ GSList *satlab; /*!< Canvas items showing satellite names. */
- guint x0; /*!< X0 */
- guint y0; /*!< Y0 */
- guint w; /*!< width of the plot */
- guint h; /*!< height of the plot */
- guint pps; /*!< pixels per satellite */
+ guint x0; /*!< X0 */
+ guint y0; /*!< Y0 */
+ guint w; /*!< width of the plot */
+ guint h; /*!< height of the plot */
+ guint pps; /*!< pixels per satellite */
- guint numsat; /*!< Number of satellites */
- guint satcnt; /*!< Counter to keep track of how many satellites we have
- plotted so far when creating the boxes.
- This is needed to ensure that we do not plot more
- than 10 satellites and to know which colour to fetch
- from sat-cfg.
- */
- gdouble ts,te; /*!< Start and end times (Julian date) */
+ guint numsat; /*!< Number of satellites */
+ guint satcnt; /*!< Counter to keep track of how many satellites we have
+ plotted so far when creating the boxes.
+ This is needed to ensure that we do not plot more
+ than 10 satellites and to know which colour to fetch
+ from sat-cfg.
+ */
+ gdouble ts,te; /*!< Start and end times (Julian date) */
- GSList *majors; /*!< Major ticks for every hour */
- GSList *minors; /*!< Minor ticks for every 30 min */
- GSList *labels; /*!< Tick labels for every hour */
-
- GooCanvasItemModel *footer; /*!< Footer area with time ticks and labels */
- GooCanvasItemModel *axisl; /*!< Axis label */
- GooCanvasItemModel *cursor; /*!< Vertical line tracking the cursor */
- GooCanvasItemModel *timel; /*!< Label showing time under cursor */
+ GSList *majors; /*!< Major ticks for every hour */
+ GSList *minors; /*!< Minor ticks for every 30 min */
+ GSList *labels; /*!< Tick labels for every hour */
+ GooCanvasItemModel *footer; /*!< Footer area with time ticks and labels */
+ GooCanvasItemModel *axisl; /*!< Axis label */
+ GooCanvasItemModel *cursor; /*!< Vertical line tracking the cursor */
+ GooCanvasItemModel *timel; /*!< Label showing time under cursor */
+
};
struct _GtkSkyGlanceClass
{
- GtkVBoxClass parent_class;
+ GtkVBoxClass parent_class;
};
Modified: trunk/src/predict-tools.c
===================================================================
--- trunk/src/predict-tools.c 2009-04-13 10:38:53 UTC (rev 265)
+++ trunk/src/predict-tools.c 2009-04-13 10:53:28 UTC (rev 266)
@@ -51,58 +51,58 @@
void
predict_calc (sat_t *sat, qth_t *qth, gdouble t)
{
- obs_set_t obs_set;
- geodetic_t sat_geodetic;
- geodetic_t obs_geodetic;
- double age;
+ obs_set_t obs_set;
+ geodetic_t sat_geodetic;
+ geodetic_t obs_geodetic;
+ double age;
- obs_geodetic.lon = qth->lon * de2ra;
- obs_geodetic.lat = qth->lat * de2ra;
- obs_geodetic.alt = qth->alt / 1000.0;
- obs_geodetic.theta = 0;
+ obs_geodetic.lon = qth->lon * de2ra;
+ obs_geodetic.lat = qth->lat * de2ra;
+ obs_geodetic.alt = qth->alt / 1000.0;
+ obs_geodetic.theta = 0;
- sat->jul_utc = t;
- sat->tsince = (sat->jul_utc - sat->jul_epoch) * xmnpda;
+ sat->jul_utc = t;
+ sat->tsince = (sat->jul_utc - sat->jul_epoch) * xmnpda;
- /* call the norad routines according to the deep-space flag */
- if (sat->flags & DEEP_SPACE_EPHEM_FLAG)
- SDP4 (sat, sat->tsince);
- else
- SGP4 (sat, sat->tsince);
+ /* call the norad routines according to the deep-space flag */
+ if (sat->flags & DEEP_SPACE_EPHEM_FLAG)
+ SDP4 (sat, sat->tsince);
+ else
+ SGP4 (sat, sat->tsince);
- Convert_Sat_State (&sat->pos, &sat->vel);
+ Convert_Sat_State (&sat->pos, &sat->vel);
- /* get the velocity of the satellite */
- Magnitude (&sat->vel);
- sat->velo = sat->vel.w;
- Calculate_Obs (sat->jul_utc, &sat->pos, &sat->vel, &obs_geodetic, &obs_set);
- Calculate_LatLonAlt (sat->jul_utc, &sat->pos, &sat_geodetic);
+ /* get the velocity of the satellite */
+ Magnitude (&sat->vel);
+ sat->velo = sat->vel.w;
+ Calculate_Obs (sat->jul_utc, &sat->pos, &sat->vel, &obs_geodetic, &obs_set);
+ Calculate_LatLonAlt (sat->jul_utc, &sat->pos, &sat_geodetic);
- while (sat_geodetic.lon < -pi)
- sat_geodetic.lon += twopi;
-
- while (sat_geodetic.lon > (pi))
- sat_geodetic.lon -= twopi;
+ while (sat_geodetic.lon < -pi)
+ sat_geodetic.lon += twopi;
- sat->az = Degrees (obs_set.az);
- sat->el = Degrees (obs_set.el);
- sat->range = obs_set.range;
- sat->range_rate = obs_set.range_rate;
- sat->ssplat = Degrees (sat_geodetic.lat);
- sat->ssplon = Degrees (sat_geodetic.lon);
- sat->alt = sat_geodetic.alt;
- sat->ma = Degrees (sat->phase);
- sat->ma *= 256.0/360.0;
- sat->phase = Degrees (sat->phase);
+ while (sat_geodetic.lon > (pi))
+ sat_geodetic.lon -= twopi;
- /* same formulas, but the one from predict is nicer */
- //sat->footprint = 2.0 * xkmper * acos (xkmper/sat->pos.w);
- sat->footprint = 12756.33 * acos (xkmper / (xkmper+sat->alt));
- age = sat->jul_utc - sat->jul_epoch;
- sat->orbit = (long) floor((sat->tle.xno * xmnpda/twopi +
- age * sat->tle.bstar * ae) * age +
- sat->tle.xmo/twopi) + sat->tle.revnum - 1;
+ sat->az = Degrees (obs_set.az);
+ sat->el = Degrees (obs_set.el);
+ sat->range = obs_set.range;
+ sat->range_rate = obs_set.range_rate;
+ sat->ssplat = Degrees (sat_geodetic.lat);
+ sat->ssplon = Degrees (sat_geodetic.lon);
+ sat->alt = sat_geodetic.alt;
+ sat->ma = Degrees (sat->phase);
+ sat->ma *= 256.0/360.0;
+ sat->phase = Degrees (sat->phase);
+
+ /* same formulas, but the one from predict is nicer */
+ //sat->footprint = 2.0 * xkmper * acos (xkmper/sat->pos.w);
+ sat->footprint = 12756.33 * acos (xkmper / (xkmper+sat->alt));
+ age = sat->jul_utc - sat->jul_epoch;
+ sat->orbit = (long) floor((sat->tle.xno * xmnpda/twopi +
+ age * sat->tle.bstar * ae) * age +
+ sat->tle.xmo/twopi) + sat->tle.revnum - 1;
}
@@ -125,84 +125,84 @@
gdouble
find_aos (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt)
{
- gdouble t = start;
- gdouble aostime = 0.0;
+ gdouble t = start;
+ gdouble aostime = 0.0;
- /* make sure current sat values are
- in sync with the time
- */
- predict_calc (sat, qth, start);
+ /* make sure current sat values are
+ in sync with the time
+ */
+ predict_calc (sat, qth, start);
- /* check whether satellite has aos */
- if ((sat->otype == ORBIT_TYPE_GEO) ||
- (sat->otype == ORBIT_TYPE_DECAYED) ||
- !has_aos (sat, qth)) {
+ /* check whether satellite has aos */
+ if ((sat->otype == ORBIT_TYPE_GEO) ||
+ (sat->otype == ORBIT_TYPE_DECAYED) ||
+ !has_aos (sat, qth)) {
- return 0.0;
+ return 0.0;
- }
+ }
- if (sat->el > 0.0)
- t = find_los (sat, qth, start, maxdt) + 0.014; // +20 min
+ if (sat->el > 0.0)
+ t = find_los (sat, qth, start, maxdt) + 0.014; // +20 min
- /* invalid time (potentially returned by find_los) */
- if (t < 0.1)
- return 0.0;
+ /* invalid time (potentially returned by find_los) */
+ if (t < 0.1)
+ return 0.0;
- /* update satellite data */
- predict_calc (sat, qth, t);
+ /* update satellite data */
+ predict_calc (sat, qth, t);
- /* use upper time limit */
- if (maxdt > 0.0) {
+ /* use upper time limit */
+ if (maxdt > 0.0) {
- /* coarse time steps */
- while ((sat->el < -1.0) && (t <= (start + maxdt))) {
- t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0);
- predict_calc (sat, qth, t);
- }
+ /* coarse time steps */
+ while ((sat->el < -1.0) && (t <= (start + maxdt))) {
+ t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0);
+ predict_calc (sat, qth, t);
+ }
- /* fine steps */
- while ((aostime == 0.0) && (t <= (start + maxdt))) {
+ /* fine steps */
+ while ((aostime == 0.0) && (t <= (start + maxdt))) {
- if (fabs (sat->el) < 0.005) {
- aostime = t;
- }
- else {
- t -= sat->el * sqrt (sat->alt) / 530000.0;
- predict_calc (sat, qth, t);
- }
+ if (fabs (sat->el) < 0.005) {
+ aostime = t;
+ }
+ else {
+ t -= sat->el * sqrt (sat->alt) / 530000.0;
+ predict_calc (sat, qth, t);
+ }
- }
+ }
- }
- /* don't use upper time limit */
- else {
+ }
+ /* don't use upper time limit */
+ else {
- /* coarse time steps */
- while (sat->el < -1.0) {
+ /* coarse time steps */
+ while (sat->el < -1.0) {
- t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0);
- predict_calc (sat, qth, t);
- }
+ t -= 0.00035 * (sat->el * ((sat->alt / 8400.0) + 0.46) - 2.0);
+ predict_calc (sat, qth, t);
+ }
- /* fine steps */
- while (aostime == 0.0) {
+ /* fine steps */
+ while (aostime == 0.0) {
- if (fabs (sat->el) < 0.005) {
- aostime = t;
- }
- else {
- t -= sat->el * sqrt (sat->alt) / 530000.0;
- predict_calc (sat, qth, t);
- }
+ if (fabs (sat->el) < 0.005) {
+ aostime = t;
+ }
+ else {
+ t -= sat->el * sqrt (sat->alt) / 530000.0;
+ predict_calc (sat, qth, t);
+ }
- }
- }
+ }
+ }
- return aostime;
+ return aostime;
}
@@ -227,75 +227,75 @@
gdouble
find_los (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt)
{
- gdouble t = start;
- gdouble lostime = 0.0;
+ gdouble t = start;
+ gdouble lostime = 0.0;
-
- predict_calc (sat, qth, start);
- /* check whether satellite has aos */
- if ((sat->otype == ORBIT_TYPE_GEO) ||
- (sat->otype == ORBIT_TYPE_DECAYED) ||
- !has_aos (sat, qth)) {
+ predict_calc (sat, qth, start);
- return 0.0;
+ /* check whether satellite has aos */
+ if ((sat->otype == ORBIT_TYPE_GEO) ||
+ (sat->otype == ORBIT_TYPE_DECAYED) ||
+ !has_aos (sat, qth)) {
- }
+ return 0.0;
+ }
- if (sat->el < 0.0)
- t = find_aos (sat, qth, start, maxdt) + 0.001; // +1.5 min
- /* invalid time (potentially returned by find_aos) */
- if (t < 0.01)
- return 0.0;
+ if (sat->el < 0.0)
+ t = find_aos (sat, qth, start, maxdt) + 0.001; // +1.5 min
- /* update satellite data */
- predict_calc (sat, qth, t);
+ /* invalid time (potentially returned by find_aos) */
+ if (t < 0.01)
+ return 0.0;
+ /* update satellite data */
+ predict_calc (sat, qth, t);
- /* use upper time limit */
- if (maxdt > 0.0) {
- /* coarse steps */
- while ((sat->el >= 1.0) && (t <= (start + maxdt))) {
- t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0;
- predict_calc (sat, qth, t);
- }
+ /* use upper time limit */
+ if (maxdt > 0.0) {
- /* fine steps */
- while ((lostime == 0.0) && (t <= (start + maxdt))) {
-
- t += sat->el * sqrt(sat->alt)/502500.0;
- predict_calc (sat, qth, t);
-
- if (fabs(sat->el) < 0.005)
- lostime = t;
- }
- }
+ /* coarse steps */
+ while ((sat->el >= 1.0) && (t <= (start + maxdt))) {
+ t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0;
+ predict_calc (sat, qth, t);
+ }
- /* don't use upper limit */
- else {
+ /* fine steps */
+ while ((lostime == 0.0) && (t <= (start + maxdt))) {
+
+ t += sat->el * sqrt(sat->alt)/502500.0;
+ predict_calc (sat, qth, t);
+
+ if (fabs(sat->el) < 0.005)
+ lostime = t;
+ }
+ }
- /* coarse steps */
- while (sat->el >= 1.0) {
- t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0;
- predict_calc (sat, qth, t);
- }
+ /* don't use upper limit */
+ else {
- /* fine steps */
- while (lostime == 0.0) {
-
- t += sat->el * sqrt(sat->alt)/502500.0;
- predict_calc (sat, qth, t);
-
- if (fabs(sat->el) < 0.005)
- lostime = t;
- }
- }
-
+ /* coarse steps */
+ while (sat->el >= 1.0) {
+ t += cos((sat->el - 1.0) * de2ra) * sqrt(sat->alt) / 25000.0;
+ predict_calc (sat, qth, t);
+ }
- return lostime;
+ /* fine steps */
+ while (lostime == 0.0) {
+
+ t += sat->el * sqrt(sat->alt)/502500.0;
+ predict_calc (sat, qth, t);
+
+ if (fabs(sat->el) < 0.005)
+ lostime = t;
+ }
+ }
+
+
+ return lostime;
}
@@ -311,29 +311,29 @@
gdouble
find_prev_aos (sat_t *sat, qth_t *qth, gdouble start)
{
- gdouble aostime = start;
+ gdouble aostime = start;
- /* make sure current sat values are
- in sync with the time
- */
- predict_calc (sat, qth, start);
+ /* make sure current sat values are
+ in sync with the time
+ */
+ predict_calc (sat, qth, start);
- /* check whether satellite has aos */
- if ((sat->otype == ORBIT_TYPE_GEO) ||
- (sat->otype == ORBIT_TYPE_DECAYED) ||
- !has_aos (sat, qth)) {
+ /* check whether satellite has aos */
+ if ((sat->otype == ORBIT_TYPE_GEO) ||
+ (sat->otype == ORBIT_TYPE_DECAYED) ||
+ !has_aos (sat, qth)) {
- return 0.0;
+ return 0.0;
- }
+ }
- while (sat->el >= 0.0) {
- aostime -= 0.0005; // 0.75 min
- predict_calc (sat, qth, aostime);
- }
+ while (sat->el >= 0.0) {
+ aostime -= 0.0005; // 0.75 min
+ predict_calc (sat, qth, aostime);
+ }
- return aostime;
+ return aostime;
}
/** \brief Predict the next pass.
@@ -355,14 +355,14 @@
pass_t *
get_next_pass (sat_t *sat, qth_t *qth, gdouble maxdt)
{
- gdouble now;
+ gdouble now;
- /* get the current time and call
- the get_pass function */
- now = get_current_daynum ();
+ /* get the current time and call
+ the get_pass function */
+ now = get_current_daynum ();
- return get_pass (sat, qth, now, maxdt);
+ return get_pass (sat, qth, now, maxdt);
}
@@ -385,14 +385,14 @@
GSList *
get_next_passes (sat_t *sat, qth_t *qth, gdouble maxdt, guint num)
{
- gdouble now;
+ gdouble now;
- /* get the current time and call
- the get_pass function */
- now = get_current_daynum ();
+ /* get the current time and call
+ the get_pass function */
+ now = get_current_daynum ();
- return get_passes (sat, qth, now, maxdt, num);
+ return get_passes (sat, qth, now, maxdt, num);
}
@@ -420,165 +420,165 @@
pass_t *
get_pass (sat_t *sat, qth_t *qth, gdouble start, gdouble maxdt)
{
- gdouble aos = 0.0; /* time of AOS */
- gdouble tca = 0.0; /* time of TCA */
- gdouble los = 0.0; /* time of LOS */
- gdouble dt = 0.0; /* time diff */
- gdouble step = 0.0; /* time step */
- gdouble t0 = start;
- gdouble t; /* current time counter */
- gdouble tres = 0.0; /* required time resolution */
- gdouble max_el = 0.0; /* maximum elevation */
- pass_t *pass = NULL;
- pass_detail_t *detail = NULL;
- gboolean done = FALSE;
- guint iter = 0; /* number of iterations */
+ gdouble aos = 0.0; /* time of AOS */
+ gdouble tca = 0.0; /* time of TCA */
+ gdouble los = 0.0; /* time of LOS */
+ gdouble dt = 0.0; /* time diff */
+ gdouble step = 0.0; /* time step */
+ gdou...
[truncated message content] |