From 81fb14fac86fe1a6da657a61dd9410e3b595dcf9 Mon Sep 17 00:00:00 2001 From: Liam Girdwood Date: Sun, 22 Jun 2008 11:28:36 +0100 Subject: [PATCH] core: legend - updated fov and magnitude. --- src/objects/star.c | 21 +++++++++++---------- src/sky/legend.c | 33 +++++++++++++++++++++++++++++---- src/sky/legend.h | 6 ++++-- src/sky/sky.c | 4 +++- 4 files changed, 47 insertions(+), 17 deletions(-) diff --git a/src/objects/star.c b/src/objects/star.c index c5f7627..1868772 100644 --- a/src/objects/star.c +++ b/src/objects/star.c @@ -19,6 +19,7 @@ #define _GNU_SOURCE /* for NAN */ +#include #include #include #include @@ -45,14 +46,14 @@ struct star_render_size { }; static const struct star_render_size star_sizes[RENDER_MAG_BANDS] = { - {31, 1.0}, - {28, 1.0}, - {25, 1.0}, - {22, 1.0}, - {19, 1.0}, - {16, 1.0}, - {13, 1.0}, - {10, 1.0}, + {30, 1.0}, + {27, 1.0}, + {24, 1.0}, + {21, 1.0}, + {18, 1.0}, + {15, 1.0}, + {12, 1.0}, + {9, 1.0}, {7, 1.0}, {4, 1.0}, {2, 1.0}, @@ -318,11 +319,11 @@ static gint render_pixmap(gint spi, gint mag) surface_size); if (cache.surface[spi][mag] == NULL) - return -1;//ENOMEM; + return -ENOMEM; cache.cr[spi][mag] = cairo_create(cache.surface[spi][mag]); if (cache.cr[spi][mag] == NULL) - return -1;//ENOMEM; + return -ENOMEM; cache.offset[spi][mag] = centre; cache.object_size[spi][mag] = radius * 2.0; diff --git a/src/sky/legend.c b/src/sky/legend.c index 9af9812..7ed416c 100644 --- a/src/sky/legend.c +++ b/src/sky/legend.c @@ -58,6 +58,7 @@ static void legend_init (GtkLegend *gtk_legend) Legend *legend; legend = NOVA_LEGEND_GET_PRIVATE(gtk_legend); + legend->fov = 180.0; } static void render_pointer_position(Legend *legend, cairo_t *cr) @@ -96,7 +97,27 @@ static void render_pointer_position(Legend *legend, cairo_t *cr) cairo_show_text(cr, text); } -static void legend_draw (GtkWidget *legend_widget, cairo_t *cr) +static void render_legend_magnitude(Legend *legend, cairo_t *cr) +{ + gchar text[32]; + + cairo_move_to(cr, 150.0, 15.0); + cairo_show_text(cr, "Min Mag:"); + cairo_move_to(cr, 150.0, 30.0); + cairo_show_text(cr, "Max Mag:"); + + sprintf(text, "%2.0f", legend->bright_mag); + + cairo_move_to(cr, 230.0, 15.0); + cairo_show_text(cr, text); + + sprintf(text, "%2.0f", legend->faint_mag); + + cairo_move_to(cr, 230.0, 30.0); + cairo_show_text(cr, text); +} + +static void legend_draw(GtkWidget *legend_widget, cairo_t *cr) { Legend *legend; @@ -109,10 +130,11 @@ static void legend_draw (GtkWidget *legend_widget, cairo_t *cr) cairo_stroke(cr); render_pointer_position(legend, cr); + render_legend_magnitude(legend, cr); cairo_restore(cr); } -static gboolean legend_expose (GtkWidget *legend_widget, +static gboolean legend_expose(GtkWidget *legend_widget, GdkEventExpose *event) { cairo_t *cr; @@ -170,7 +192,7 @@ GtkWidget *legend_new (void) return g_object_new(NOVA_TYPE_LEGEND, NULL); } -void legend_update_pointer(GtkLegend *gtk_legend, gdouble ra, gdouble dec) +void legend_update_pointer(GtkWidget *gtk_legend, gdouble ra, gdouble dec) { Legend *legend; @@ -180,12 +202,15 @@ void legend_update_pointer(GtkLegend *gtk_legend, gdouble ra, gdouble dec) gtk_widget_queue_draw(gtk_legend); } -void legend_update_fov(GtkLegend *gtk_legend, gdouble fov) +void legend_update_fov(GtkWidget *gtk_legend, gdouble fov, gdouble faint_mag, + gdouble bright_mag) { Legend *legend; legend = NOVA_LEGEND_GET_PRIVATE(gtk_legend); legend->fov = fov; + legend->bright_mag = bright_mag; + legend->faint_mag = faint_mag; gtk_widget_queue_draw(gtk_legend); } diff --git a/src/sky/legend.h b/src/sky/legend.h index 6f13e37..21121ac 100644 --- a/src/sky/legend.h +++ b/src/sky/legend.h @@ -56,11 +56,13 @@ GtkWidget *legend_new(void); typedef struct _Legend { struct ln_equ_posn pointer_pos; gdouble fov; + gdouble bright_mag, faint_mag; } Legend; -void legend_update_pointer(GtkLegend *gtk_legend, gdouble ra, gdouble dec); -void legend_update_fov(GtkLegend *gtk_legend, gdouble fov); +void legend_update_pointer(GtkWidget *gtk_legend, gdouble ra, gdouble dec); +void legend_update_fov(GtkWidget *gtk_legend, gdouble fov, gdouble faint_mag, + gdouble bright_mag); G_END_DECLS diff --git a/src/sky/sky.c b/src/sky/sky.c index d632044..3aa30d5 100644 --- a/src/sky/sky.c +++ b/src/sky/sky.c @@ -31,6 +31,7 @@ #include "star.h" #include "tile.h" #include "db.h" +#include "legend.h" #define NOVA_SKY_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), NOVA_TYPE_SKY, Sky)) @@ -133,7 +134,8 @@ static void sky_zoom (Sky *sky, gfloat zoom) { sky->projection.fov *= zoom; projection_check_bounds(&sky->projection); - legend_update_fov(sky->legend_widget, sky->projection.fov); + legend_update_fov(sky->legend_widget, sky->projection.fov, + sky->projection.clip_mag_faint, sky->projection.clip_mag_bright); } static gboolean sky_key_press_event(GtkWidget *widget, GdkEventKey *event, -- 2.11.4.GIT