From 5011afaa935530ef65e92efe1a4d3d97fb9f53fd Mon Sep 17 00:00:00 2001 From: EricDWertz Date: Wed, 22 Jun 2016 10:37:40 -0400 Subject: [PATCH] EricDock first commit... testing styled windows --- .eric_window.h.swp | Bin 0 -> 16384 bytes .main.c.swp | Bin 0 -> 12288 bytes Makefile | 2 + eric_window.h | 123 +++++++++++++++++++++++++++++++++++++++++++++ ericwindow-test | Bin 0 -> 13584 bytes main.c | 13 +++++ 6 files changed, 138 insertions(+) create mode 100644 .eric_window.h.swp create mode 100644 .main.c.swp create mode 100644 Makefile create mode 100644 eric_window.h create mode 100755 ericwindow-test create mode 100644 main.c diff --git a/.eric_window.h.swp b/.eric_window.h.swp new file mode 100644 index 0000000000000000000000000000000000000000..01c892b10c1d365e4de068fe256434d07e58d64e GIT binary patch literal 16384 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 V%9(k|Ii)G73Q9 +#include +#include + +#include +#include + +/* + * TODO: add text color + */ + +typedef struct +{ + GtkWidget* window; + GdkRGBA background_color; + GdkRGBA background_color_old; + GdkRGBA background_color_new; + double background_change_percentage; +} eric_window; + +static void gdk_color_lerp( GdkRGBA* c1, GdkRGBA* c2, double s, GdkRGBA* out ) +{ + out->red = c1->red + ( c2->red - c1->red ) * s; + out->green = c1->green + ( c2->green - c1->green ) * s; + out->blue = c1->blue + ( c2->blue - c1->blue ) * s; + out->alpha = c1->alpha + ( c2->alpha - c1->alpha ) * s; +} + +static gboolean eric_window_animation_timer( eric_window* w ) +{ + w->background_change_percentage += 0.05; + gdk_color_lerp( &w->background_color_old, &w->background_color_new, + w->background_change_percentage, &w->background_color); + gtk_widget_queue_draw( w->window ); + + if( w->background_change_percentage >= 1.0 ) return FALSE; + + return TRUE; +} + +static gboolean eric_window_draw( GtkWidget* widget, cairo_t* cr, eric_window* w ) +{ + cairo_set_operator(cr,CAIRO_OPERATOR_SOURCE); + w->background_color.alpha = 0.75; + gdk_cairo_set_source_rgba( cr, &w->background_color ); + cairo_paint( cr ); + + return FALSE; +} + + +static void eric_window_screen_changed( GtkWidget *widget, GdkScreen *old_screen, gpointer userdata ) +{ + GdkVisual *visual; + + GdkScreen* screen=gtk_widget_get_screen(widget); + if(!screen) return; + + visual = gdk_screen_get_rgba_visual(screen); + if(visual==NULL) visual=gdk_screen_get_system_visual(screen); + + gtk_widget_set_visual(widget,visual); +} + +void eric_window_gsettings_value_changed( GSettings *settings, const gchar *key, eric_window* w ) +{ + if( strcmp( key, "primary-color" ) == 0 ) + { + w->background_color_old = w->background_color; + gdk_rgba_parse( &w->background_color_new, g_settings_get_string( settings, "primary-color" ) ); + + w->background_change_percentage = 0.0; + g_timeout_add( 32, (gpointer)eric_window_animation_timer, w ); + } +} + +eric_window* eric_window_create( int width, int height, char* title ) +{ + eric_window* w = malloc( sizeof( eric_window ) ); + + if( title == NULL ) + title = "eric window"; + + w->window = gtk_window_new( GTK_WINDOW_TOPLEVEL ); + gtk_window_set_title( GTK_WINDOW( w->window ), title ); + gtk_window_resize( GTK_WINDOW( w->window ), width, height ); + gtk_widget_add_events( w->window, GDK_STRUCTURE_MASK ); + + gtk_widget_set_app_paintable( w->window, TRUE ); + + g_signal_connect( G_OBJECT( w->window ), "draw", G_CALLBACK(eric_window_draw), &w ); + g_signal_connect( G_OBJECT( w->window ), "screen-changed", G_CALLBACK(eric_window_screen_changed), &w ); + g_signal_connect( G_OBJECT( w->window ), "delete-event", gtk_main_quit, NULL ); + + eric_window_screen_changed( w->window, NULL, NULL ); + + /* GSettings Stuff */ + GSettings* gsettings; + GSettingsSchema* gsettings_schema; + + gsettings_schema = g_settings_schema_source_lookup( g_settings_schema_source_get_default(), + "org.gnome.desktop.background", + TRUE ); + if( gsettings_schema ) + { + g_settings_schema_unref (gsettings_schema); + gsettings_schema = NULL; + gsettings = g_settings_new ( "org.gnome.desktop.background" ); + } + + g_signal_connect_data( gsettings, "changed", G_CALLBACK( eric_window_gsettings_value_changed ), NULL, 0, 0 ); + gdk_rgba_parse( &w->background_color, g_settings_get_string( gsettings, "primary-color" ) ); + printf( "COLOR: %s\n", g_settings_get_string( gsettings, "primary-color" ) ); + + return w; +} diff --git a/ericwindow-test b/ericwindow-test new file mode 100755 index 0000000000000000000000000000000000000000..183d176144ae986dd94fafa57e8104ca453db829 GIT binary patch literal 13584 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 literal 0 HcmV?d00001 diff --git a/main.c b/main.c new file mode 100644 index 0000000..2aad11f --- /dev/null +++ b/main.c @@ -0,0 +1,13 @@ +#include "eric_window.h" + +int main( int argc, char* argv[] ) +{ + gtk_init( &argc, &argv ); + + eric_window* w = eric_window_create( 640, 480, "Test Eric Window So Kawaii" ); + + gtk_widget_show_all( w->window ); + gtk_main(); + + return 0; +} -- 2.49.0