Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <gtk/gtk.h>
- #include <math.h>
- #include <cairo.h>
- #include <stdio.h>
- int fd;
- int acclX, acclY, acclZ;
- int gyroX, gyroY, gyroZ;
- double acclX_scaled, acclY_scaled, acclZ_scaled;
- double gyroX_scaled, gyroY_scaled, gyroZ_scaled;
- GtkLabel *levelValue;
- guint width, height;
- GtkStyleContext *context;
- GtkWidget *window, *rotationCircle;
- GtkButton *buttonClose;
- GtkBuilder *builder;
- cairo_t *cr;
- double DegreesToRadians( int degrees );
- gdouble rotation = 0;
- void closeMainWindow (GtkButton* button, gpointer user_data)
- {
- gtk_main_quit();
- }
- double DegreesToRadians( int degrees )
- {
- return((double)((double)degrees * ( M_PI/180 )));
- }
- gboolean drawCircle (GtkWidget *widget, cairo_t *cr, gpointer data)
- {
- int radius;
- context = gtk_widget_get_style_context (rotationCircle);
- width = gtk_widget_get_allocated_width (rotationCircle);
- height = gtk_widget_get_allocated_height (rotationCircle);
- cairo_set_source_rgba (cr, 0, 0, 0, 0.3);
- cairo_set_line_width (cr, 5);
- if (width < height)
- {
- radius = width/2 - 4;
- }
- else
- {
- radius = height/2 - 4;
- }
- cairo_arc (cr, width / 2, height / 2, radius, 0, 2 * M_PI);
- cairo_stroke_preserve(cr);
- cairo_set_source_rgba (cr, 255, 255, 255, 0.6);
- cairo_fill (cr);
- cairo_rotate(cr, rotation);
- cairo_set_source_rgba (cr, 1, 0.2, 0.2, 0.6);
- cairo_set_line_width (cr, 6.0);
- cairo_line_to (cr, width / 2 - radius, height / 2);
- cairo_line_to (cr, width / 2 + radius, height / 2);
- cairo_stroke (cr);
- return FALSE;
- }
- gboolean updateRotation(GtkWidget *widget)
- {
- rotation += DegreesToRadians(1);
- gtk_widget_queue_draw(widget);
- return TRUE;
- }
- gboolean updateLevel(GtkWidget *widget)
- {
- gchar tmpbuf[100];
- sprintf(tmpbuf , "%.2d",rand());
- gtk_label_set_text (GTK_LABEL(levelValue), tmpbuf);
- return TRUE;
- }
- int main(int argc, char *argv[])
- {
- gtk_init (&argc, &argv);
- builder = gtk_builder_new ();
- gtk_builder_add_from_file (builder, "Main.glade", NULL);
- window = GTK_WIDGET(gtk_builder_get_object (builder, "mainWindow"));
- buttonClose = GTK_BUTTON(gtk_builder_get_object (builder, "buttonClose"));
- levelValue = GTK_LABEL(gtk_builder_get_object (builder, "levelValue"));
- rotationCircle = GTK_WIDGET(gtk_builder_get_object (builder, "draw"));
- gtk_builder_connect_signals (builder, NULL);
- gtk_window_maximize (GTK_WINDOW(window));
- g_timeout_add(1000, (GSourceFunc) updateRotation, rotationCircle);
- g_timeout_add(500, (GSourceFunc) updateLevel, NULL);
- gtk_widget_show (window);
- gtk_main ();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement