#include <gtk/gtk.h>
#include <math.h>
#include <cairo.h>
#include <epoxy/gl.h>
#include <cglm/cglm.h>
#include <shader.h>

void plot_adjust_teta (float value);

double plot_calc_coordinate_x (double a1, double a2);

double plot_calc_coordinate_y (double a1, double a2, double a3);

void plot_line_to (cairo_t *cr, double a1, double a2, double a3);

void plot_move_to (cairo_t *cr, double a1, double a2, double a3);

void plot_vector_to (cairo_t *cr, double a1, double a2, double a3);

double plot_rotate_coordinate (double x, double y, double z, int coordinate_index, float rot, int rot_index);

void plot_circle (cairo_t *cr, double radius, float rot1, float rot2, double render);

void plot_overview (GtkWidget *box);

void plot_overview_gl (GtkWidget *box);

void update_overview (float sun_az_ud, float sun_el_ud, float moon_az_ud, float moon_el_ud, float mw_az_ud, float mw_el_ud);

void course_sun_overview (float *array_az_sun, float *array_el_sun);

void course_moon_overview (float *array_az_moon, float *array_el_moon);

void course_mw_overview (float *array_az_mw, float *array_el_mw);

gboolean on_draw_overview (GtkWidget *widget, cairo_t *cr, gpointer gpoint);

gboolean on_draw_overview_gl (GtkWidget *widget, cairo_t *cr, gpointer gpoint);

void plot_elevation_mw (float *elevations, GtkWidget *box);

gboolean on_draw_elevation_mw (GtkWidget *widget, cairo_t *cr, gpointer gpoint);

void plot_elevation_sun (float *elevations, GtkWidget *box);

gboolean on_draw_elevation_sun (GtkWidget *widget, cairo_t *cr, gpointer gpoint);

void plot_elevation_moon (float *elevations, GtkWidget *box);

gboolean on_draw_elevation_moon (GtkWidget *widget, cairo_t *cr, gpointer gpoint);

