From 2de9b135cfb353b9aba0145959874d553b550a41 Mon Sep 17 00:00:00 2001 From: tanya Date: Fri, 30 Apr 2010 15:39:48 +0300 Subject: [PATCH] continued restructuring --- applet/src/Makefile.am | 3 +- applet/src/livewp-common.h | 24 +- applet/src/livewp-home-widget.c | 596 +-------------------------------------- applet/src/livewp-home-widget.h | 4 +- 4 files changed, 16 insertions(+), 611 deletions(-) diff --git a/applet/src/Makefile.am b/applet/src/Makefile.am index 0f50a2d..14fa9b1 100644 --- a/applet/src/Makefile.am +++ b/applet/src/Makefile.am @@ -24,7 +24,8 @@ liblivewp_home_widget_la_SOURCES = livewp-home-widget.c livewp-home-widget.h \ livewp-settings.c livewp-settings.h livewp-common.h \ livewp-config.c livewp-config.h \ livewp-dbus.c livewp-dbus.h \ - livewp-actor.c livewp-actor.h + livewp-actor.c livewp-actor.h \ + livewp-scene.c livewp-scene.h liblivewp_home_widget_la_LIBADD = $(EXAMPLE_LIBS) $(OSSO_LIBS) AM_CFLAGS = -Wall $(EXAMPLE_CFLAGS) $(OSSO_CFLAGS) diff --git a/applet/src/livewp-common.h b/applet/src/livewp-common.h index 9b7fee3..c23a440 100644 --- a/applet/src/livewp-common.h +++ b/applet/src/livewp-common.h @@ -22,8 +22,8 @@ * 02110-1301 USA */ /*******************************************************************************/ -#ifndef _weather_common_h -#define _weather_common_h 1 +#ifndef _livewp_common_h +#define _livewp_common_h 1 #ifdef HAVE_CONFIG_H #include #endif @@ -52,6 +52,15 @@ enum { SHORT_TIMER_TYPE, LONG_TIMER_TYPE }; #define TRAM_LEVEL 20 typedef struct _Scene Scene; +struct _Scene +{ + GSList * actors; + gint daytime; + gint timer_type; + gint wind_orientation; // +/- 1 + double wind_angle; // [-1 .. 1] + guint seed; /* init value for random */ +}; typedef struct _AWallpaperPlugin AWallpaperPlugin; typedef struct _AWallpaperPluginClass AWallpaperPluginClass; typedef struct _Animation_WallpaperPrivate Animation_WallpaperPrivate; @@ -69,9 +78,9 @@ struct _Animation_WallpaperPrivate DBusConnection *dbus_conn; DBusConnection *dbus_conn_session; osso_context_t *osso; - Scene *scene; gint xapplet; gint yapplet; + Scene *scene; }; struct _AWallpaperPlugin @@ -87,15 +96,6 @@ struct _AWallpaperPluginClass }; -struct _Scene -{ - GSList * actors; - gint daytime; - gint timer_type; - gint wind_orientation; // +/- 1 - double wind_angle; // [-1 .. 1] - guint seed; /* init value for random */ -}; #define LIVEWP_SIGNAL_INTERFACE "org.maemo.livewp" #define LIVEWP_SIGNAL_PATH "/org/maemo/livewp" #define LIVEWP_SIGNAL_RELOAD_CONFIG_INTERFACE "org.maemo.livewp.reload_config" diff --git a/applet/src/livewp-home-widget.c b/applet/src/livewp-home-widget.c index 38f2522..d7412bb 100644 --- a/applet/src/livewp-home-widget.c +++ b/applet/src/livewp-home-widget.c @@ -26,6 +26,7 @@ #include "livewp-home-widget.h" #include #include "livewp-rules.h" +#include "livewp-scene.h" #include #include @@ -245,601 +246,6 @@ change_hildon_actor(Actor *actor, AWallpaperPlugin *desktop_plugin) } -static void -destroy_scene(AWallpaperPlugin *desktop_plugin) -{ - GSList * tmp = desktop_plugin->priv->scene->actors; - while (tmp != NULL){ - destroy_actor(tmp->data); - tmp = g_slist_next(tmp); - } - g_slist_free(tmp); - -} - -void -reload_scene(AWallpaperPlugin *desktop_plugin) -{ - fprintf(stderr,"Reload scene %s\n", desktop_plugin->priv->theme); - destroy_scene(desktop_plugin); - if (!strcmp(desktop_plugin->priv->theme,"Modern")) - init_scene(desktop_plugin); - else if (!strcmp(desktop_plugin->priv->theme,"Berlin")) - init_scene1(desktop_plugin); - else if (!strcmp(desktop_plugin->priv->theme,"Matrix")) - init_scene2(desktop_plugin); -} - -static void -init_scene2(AWallpaperPlugin *desktop_plugin) -{ - Actor *actor; - Scene *scene; - GPtrArray *child; - gint now = time(NULL); - gint y1, y2; - - if (desktop_plugin->priv->rich_animation){ - y1 = -480; - y2 = -480-480; - }else { - y1 = 0; - y2 = -480; - } - - fprintf(stderr, "init scene2 \n"); - scene = g_new0(Scene, 1); - //scene.daytime = get_daytime(); - scene->actors = NULL; - desktop_plugin->priv->scene = scene; - - actor = init_object(desktop_plugin, "background", "bg.png", - 0, 0, 5, 800, 480, - TRUE, TRUE, 100, 255, - NULL, NULL, NULL); - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "symbols", "symbols.png", - 0, 0, 10, 800, 480, - TRUE, TRUE, 100, 255, - NULL, NULL, NULL); - scene->actors = g_slist_append(scene->actors, actor); - - child = g_ptr_array_sized_new(4); - actor = init_object(desktop_plugin, "layer1", "layer1_2.png", - 0, y1, 6, 800, 960, - TRUE, TRUE, 100, 255, - NULL, NULL, NULL); - //actor->time_start_animation = now; - //actor->duration_animation = G_MAXINT; - scene->actors = g_slist_append(scene->actors, actor); - g_ptr_array_add(child, actor); - - actor = init_object(desktop_plugin, "layer1", "layer1_1.png", - 0, y2, 7, 800, 960, - TRUE, TRUE, 100, 255, - NULL, NULL, NULL); - //actor->time_start_animation = now; - //actor->duration_animation = G_MAXINT; - scene->actors = g_slist_append(scene->actors, actor); - g_ptr_array_add(child, actor); - - actor = init_object(desktop_plugin, "layer2", "layer2_2.png", - 0, y1, 8, 800, 960, - TRUE, TRUE, 100, 255, - NULL, NULL, NULL); - //actor->time_start_animation = now; - //actor->duration_animation = G_MAXINT; - scene->actors = g_slist_append(scene->actors, actor); - g_ptr_array_add(child, actor); - - actor = init_object(desktop_plugin, "layer2", "layer2_1.png", - 0, y2, 9, 800, 960, - TRUE, TRUE, 100, 255, - NULL, NULL, NULL); - //actor->time_start_animation = now; - //actor->duration_animation = G_MAXINT; - scene->actors = g_slist_append(scene->actors, actor); - g_ptr_array_add(child, actor); - - actor = init_object(desktop_plugin, "layers", "", - 0, y2, 9, 800, 960, - FALSE, FALSE, 100, 255, - (gpointer)&change_layer, NULL, child); - actor->time_start_animation = now; - actor->duration_animation = G_MAXINT; - scene->actors = g_slist_append(scene->actors, actor); - - run_long_timeout(desktop_plugin); - -} - -/* Init Modern Scene */ -static void -init_scene(AWallpaperPlugin *desktop_plugin) -{ - Actor *actor; - Scene *scene; - gint now = time(NULL); - gint i; - gint winds[13][2]; - - //fprintf(stderr, "init scene \n"); - scene = g_new0(Scene, 1); - scene->daytime = get_daytime(); - scene->actors = NULL; - scene->wind_orientation = -1; - scene->wind_angle = 0.3; - /* init value for random */ - scene->seed = time(NULL); - desktop_plugin->priv->scene = scene; - - actor = init_object(desktop_plugin, "sky", "sky0.png", - 0, 0, 5, 800, 480, - TRUE , TRUE, 100, 255, - (gpointer)&change_static_actor, NULL, NULL); - change_static_actor(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "sun", "sun.png", - 0, 0, 6, 88, 88, - FALSE, FALSE, 100, 255, - (gpointer)&change_sun, NULL, NULL); - actor->time_start_animation = now; - actor->duration_animation = G_MAXINT; - change_sun(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - //actor = init_object(desktop_plugin, "dot", "dot1.png", 0, 0, 11, 50, 50, - // TRUE, 100, 255, NULL, NULL); - //scene.actors = g_slist_append(scene.actors, actor); - - actor = init_object(desktop_plugin, "cloud1", "cloud1.png", - 0, fast_rnd(300)-97, 7, 150, 97, - FALSE, FALSE, 100, 255, - (gpointer)&change_cloud, NULL, NULL); - actor->time_start_animation = now + fast_rnd(20); - actor->duration_animation = 3*60; - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "cloud2", "cloud2.png", - 0, fast_rnd(300)-75, 7, 188, 75, - FALSE, FALSE, 100, 255, - (gpointer)&change_cloud, NULL, NULL); - actor->time_start_animation = now + fast_rnd(40)+10; - actor->duration_animation = 3*60; - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "cloud4", "cloud4.png", - 0, fast_rnd(300)-75, 7, 150, 75, - FALSE, FALSE, 100, 255, - (gpointer)&change_cloud, NULL, NULL); - actor->time_start_animation = now + fast_rnd(60) + 20; - actor->duration_animation = 5*60; - scene->actors = g_slist_append(scene->actors, actor); - - - actor = init_object(desktop_plugin, "town", "town0.png", - 0, 0, 8, 800, 480, - TRUE, TRUE, 100, 255, - (gpointer)&change_static_actor, NULL, NULL); - change_static_actor(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "stend", "stend0.png", - 482, 146, 9, 300, 305, - TRUE, TRUE, 100, 255, - (gpointer)&change_static_actor, NULL, NULL); - change_static_actor(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "tram", "tram.png", - -300, 225, 10, 350, 210, - FALSE, FALSE, 100, 255, - (gpointer)&change_tram, NULL, NULL); - actor->time_start_animation = time(NULL) + fast_rnd(10); - actor->duration_animation = 60; - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "border", "border0.png", - 0, 480-79, 11, 800, 79, - TRUE, TRUE, 100, 255, - (gpointer)&change_static_actor_with_corner, NULL, NULL); - change_static_actor_with_corner(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "moon", "moon1.png", - 400, 20, 6, 60, 60, - FALSE, FALSE, 100, 255, - (gpointer)&change_moon, NULL, NULL); - change_moon(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "wind", "", - 0, 0, 5, 0, 0, - FALSE, FALSE, 100, 255, - (gpointer)&change_wind, NULL, NULL); - change_wind(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - /* windows in 4-th house */ - - winds[0][0] = 482; - winds[0][1] = 180; - - winds[1][0] = 495; - winds[1][1] = 179; - - winds[2][0] = 482; - winds[2][1] = 191; - - winds[3][0] = 495; - winds[3][1] = 190; - - winds[4][0] = 482; - winds[4][1] = 201; - - winds[5][0] = 495; - winds[5][1] = 210; - - winds[6][0] = 482; - winds[6][1] = 222; - - winds[7][0] = 495; - winds[7][1] = 221; - - winds[8][0] = 459; - winds[8][1] = 203; - - winds[9][0] = 495; - winds[9][1] = 241; - - winds[10][0] = 495; - winds[10][1] = 252; - - winds[11][0] = 482; - winds[11][1] = 273; - - winds[12][0] = 495; - winds[12][1] = 303; - for (i=0; i<13; i++){ - actor = init_object(desktop_plugin, "window1", "window1.png", - winds[i][0], winds[i][1], 8, 8, 10, - FALSE, FALSE, 100, 255, - (gpointer)&change_window1, NULL, NULL); - //change_window1(actor, desktop_plugin); - actor->time_start_animation = now + fast_rnd(30); - scene->actors = g_slist_append(scene->actors, actor); - - } - - /* windows in 1-th house */ - - winds[0][0] = 86; - winds[0][1] = 321; - - winds[1][0] = 86; - winds[1][1] = 363; - - winds[2][0] = 86; - winds[2][1] = 385; - - winds[3][0] = 86; - winds[3][1] = 286; - - winds[4][0] = 94; - winds[4][1] = 232; - - winds[5][0] = 94; - winds[5][1] = 243; - - winds[6][0] = 94; - winds[6][1] = 265; - - winds[7][0] = 94; - winds[7][1] = 331; - for (i=0; i<8; i++){ - actor = init_object(desktop_plugin, "window2", "window2.png", - winds[i][0], winds[i][1], 8, 8, 10, - FALSE, FALSE, 100, 255, - (gpointer)&change_window1, NULL, NULL); - //change_window1(actor, desktop_plugin); - actor->time_start_animation = now + fast_rnd(30); - scene->actors = g_slist_append(scene->actors, actor); - - } - - /* windows in 3-th house */ - - winds[0][0] = 251; - winds[0][1] = 162; - - winds[1][0] = 251; - winds[1][1] = 196; - - winds[2][0] = 251; - winds[2][1] = 278; - - winds[3][0] = 251; - winds[3][1] = 289; - - winds[4][0] = 313; - winds[4][1] = 173; - - winds[5][0] = 322; - winds[5][1] = 160; - - winds[6][0] = 303; - winds[6][1] = 217; - - winds[7][0] = 322; - winds[7][1] = 224; - - winds[8][0] = 323; - winds[8][1] = 217; - - winds[9][0] = 322; - winds[9][1] = 288; - - for (i=0; i<10; i++){ - actor = init_object(desktop_plugin, "window3", "window3.png", - winds[i][0], winds[i][1], 8, 8, 10, - FALSE, FALSE, 100, 255, - (gpointer)&change_window1, NULL, NULL); - //change_window1(actor, desktop_plugin); - actor->time_start_animation = now + fast_rnd(30); - scene->actors = g_slist_append(scene->actors, actor); - - } - - /* windows in 5-th house */ - - winds[0][0] = 610; - winds[0][1] = 224; - - winds[1][0] = 602; - winds[1][1] = 245; - - winds[2][0] = 602; - winds[2][1] = 264; - - winds[3][0] = 610; - winds[3][1] = 301; - - winds[4][0] = 610; - winds[4][1] = 320; - - winds[5][0] = 593; - winds[5][1] = 352; - - winds[6][0] = 610; - winds[6][1] = 368; - - for (i=0; i<7; i++){ - actor = init_object(desktop_plugin, "window4", "window4.png", - winds[i][0], winds[i][1], 8, 8, 10, - FALSE, FALSE, 100, 255, - (gpointer)&change_window1, NULL, NULL); - //change_window1(actor, desktop_plugin); - actor->time_start_animation = now + fast_rnd(30); - scene->actors = g_slist_append(scene->actors, actor); - - } - - /* windows in 6-th house */ - - winds[0][0] = 717; - winds[0][1] = 283; - - winds[1][0] = 698; - winds[1][1] = 293; - - winds[2][0] = 717; - winds[2][1] = 315; - - winds[3][0] = 717; - winds[3][1] = 323; - - winds[4][0] = 698; - winds[4][1] = 362; - - winds[5][0] = 698; - winds[5][1] = 400; - - for (i=0; i<6; i++){ - actor = init_object(desktop_plugin, "window5", "window5.png", - winds[i][0], winds[i][1], 8, 8, 10, - FALSE, FALSE, 100, 255, - (gpointer)&change_window1, NULL, NULL); - //change_window1(actor, desktop_plugin); - actor->time_start_animation = now + fast_rnd(30); - scene->actors = g_slist_append(scene->actors, actor); - - } - run_long_timeout(desktop_plugin); - -#if 0 - anim = g_new0(Animation, 1); - anim->count = 1; - anim->actor = actor; - anim->func_change = &change_tram; - anim->func_time = NULL; - anim->timestart = time(NULL); - anim->timeall = 10; - - scene.dynamic_actors = g_slist_append(scene.dynamic_actors, anim); -#endif -} - -/* Init Berlin Scene */ -static void -init_scene1(AWallpaperPlugin *desktop_plugin) -{ - Actor *actor, *actor1, *actor2; - Scene *scene; - gint now = time(NULL); - gint i; - gint winds[13][2]; - GPtrArray *child = NULL; - - scene = g_new0(Scene, 1); - scene->daytime = get_daytime(); - scene->actors = NULL; - scene->wind_orientation = -1; - scene->wind_angle = 0.3; - /* init value for random */ - scene->seed = time(NULL); - desktop_plugin->priv->scene = scene; - - actor = init_object(desktop_plugin, "sky", "sky.png", 0, 0, 5, 800, 480, - TRUE, TRUE, 100, 255, - (gpointer)&change_static_actor, NULL, NULL); - change_static_actor(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - - actor = init_object(desktop_plugin, "sun", "sun.png", 0, 0, 6, 88, 88, - FALSE, FALSE, 100, 255, - (gpointer)&change_sun, NULL, NULL); - actor->time_start_animation = time(NULL); - actor->duration_animation = G_MAXINT; - change_sun(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - -#if 0 - actor = init_object(desktop_plugin, "dot", "dot1.png", 0, 0, 11, 50, 50, - TRUE, 100, 255, NULL, NULL); - scene.actors = g_slist_append(scene.actors, actor); -#endif - - actor = init_object(desktop_plugin, "moon", "moon1.png", 400, 15, 6, 60, 60, - FALSE, FALSE, 100, 255, - (gpointer)&change_moon, NULL, NULL); - change_moon(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "cloud1", "cloud1.png", 0, fast_rnd(300)-97, 7, 150, 97, - FALSE, FALSE, 100, 255, - (gpointer)&change_cloud, NULL, NULL); - actor->time_start_animation = now + fast_rnd(30) + 10; - actor->duration_animation = 3*60; - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "cloud2", "cloud2.png", 0, fast_rnd(300)-75, 7, 188, 75, - FALSE, FALSE, 100, 255, - (gpointer)&change_cloud, NULL, NULL); - actor->time_start_animation = now + fast_rnd(10); - actor->duration_animation = 3*60; - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "cloud4", "cloud4.png", 0, fast_rnd(300)-75, 7, 150, 75, - FALSE, FALSE, 100, 255, - (gpointer)&change_cloud, NULL, NULL); - actor->time_start_animation = now + fast_rnd(60) + 20; - actor->duration_animation = 5*60; - scene->actors = g_slist_append(scene->actors, actor); - - - actor = init_object(desktop_plugin, "plane2", "plane3.png", 0, 45, 8, 160, 50, - FALSE, FALSE, 100, 255, - (gpointer)&change_plane2, NULL, NULL); - actor->time_start_animation = now + fast_rnd(40) + 20; - actor->duration_animation = 60; - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "plane1", "tu154.png", 620, 233, 9, 300, 116, - FALSE, FALSE, 100, 255, - (gpointer)&change_plane1, NULL, NULL); - actor->time_start_animation = now + fast_rnd(20); - actor->duration_animation = 30; - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "town", "town.png", 0, 0, 10, 800, 480, - TRUE, TRUE, 100, 255, - (gpointer)&change_static_actor_with_corner, NULL, NULL); - change_static_actor_with_corner(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - actor = init_object(desktop_plugin, "wind", "", 0, 0, 5, 0, 0, - FALSE, FALSE, 100, 255, - (gpointer)&change_wind, NULL, NULL); - change_wind(actor, desktop_plugin); - scene->actors = g_slist_append(scene->actors, actor); - - actor1 = init_object(desktop_plugin, "signal_red", "red.png", - 486, 425, 10, 18, 38, - FALSE, TRUE, 100, 255, NULL, NULL, NULL); - //actor->time_start_animation = now + fast_rnd(30) + 10; - scene->actors = g_slist_append(scene->actors, actor1); - - actor2 = init_object(desktop_plugin, "signal_green", "green.png", - 486, 425, 10, 18, 38, - TRUE, TRUE, 100, 255, NULL, NULL, NULL); - //actor->time_start_animation = now + fast_rnd(30) + 10; - scene->actors = g_slist_append(scene->actors, actor2); - child = g_ptr_array_sized_new(2); - g_ptr_array_add(child, actor1); - g_ptr_array_add(child, actor2); - actor = init_object(desktop_plugin, "signal", "", - 486, 425, 10, 18, 38, - FALSE, FALSE, 100, 255, - (gpointer)&change_signal, NULL, child); - actor->time_start_animation = now + fast_rnd(30) + 10; - scene->actors = g_slist_append(scene->actors, actor); - - winds[0][0] = 389; - winds[0][1] = 305; - - winds[1][0] = 373; - winds[1][1] = 306; - - winds[2][0] = 355; - winds[2][1] = 306; - - winds[3][0] = 356; - winds[3][1] = 288; - - winds[4][0] = 337; - winds[4][1] = 269; - - winds[5][0] = 372; - winds[5][1] = 268; - - winds[6][0] = 372; - winds[6][1] = 249; - - winds[7][0] = 388; - winds[7][1] = 249; - - winds[8][0] = 387; - winds[8][1] = 230; - - winds[9][0] = 372; - winds[9][1] = 211; - - winds[10][0] = 355; - winds[10][1] = 159; - - winds[11][0] = 335; - winds[11][1] = 158; - - winds[12][0] = 386; - winds[12][1] = 119; - - for (i=0; i<13; i++){ - actor = init_object(desktop_plugin, "window", "window.png", - winds[i][0], winds[i][1], 10, 8, 9, - FALSE, TRUE, 100, 255, - (gpointer)&change_window1, NULL, NULL); - //change_window1(actor, desktop_plugin); - actor->time_start_animation = now + fast_rnd(30); - scene->actors = g_slist_append(scene->actors, actor); - - } - - run_long_timeout(desktop_plugin); - -} void get_sun_screen_pos(double alt, double azm, gint * x, gint * y) diff --git a/applet/src/livewp-home-widget.h b/applet/src/livewp-home-widget.h index 02911bd..26717da 100644 --- a/applet/src/livewp-home-widget.h +++ b/applet/src/livewp-home-widget.h @@ -26,6 +26,7 @@ #include #include "livewp-actor.h" +#include "livewp-scene.h" G_BEGIN_DECLS @@ -68,9 +69,6 @@ void lw_settings(gpointer user_data, gpointer data); gint read_config(Animation_WallpaperPrivate *priv); void save_config(Animation_WallpaperPrivate *priv); void run_long_timeout(AWallpaperPlugin *desktop_plugin); -static void init_scene(AWallpaperPlugin *desktop_plugin); -static void init_scene1(AWallpaperPlugin *desktop_plugin); -static void init_scene2(AWallpaperPlugin *desktop_plugin); //void set_actor_visible(Actor *actor, gboolean visible); //void set_actor_scale(Actor *actor, double scalex, double scaley); void create_hildon_actor(Actor *actor, AWallpaperPlugin *desktop_plugin); -- 1.7.9.5