From 88a83baf12292c08e69006a8614477c8bc646ca5 Mon Sep 17 00:00:00 2001 From: tanya Date: Fri, 30 Apr 2010 10:22:52 +0300 Subject: [PATCH] started restructuring --- applet/src/Makefile.am | 3 +- applet/src/livewp-actor.c | 435 ++++++++++++++++++++++++++++++++++ applet/src/livewp-actor.h | 60 +++++ applet/src/livewp-home-widget.c | 491 +-------------------------------------- 4 files changed, 502 insertions(+), 487 deletions(-) create mode 100644 applet/src/livewp-actor.c create mode 100644 applet/src/livewp-actor.h diff --git a/applet/src/Makefile.am b/applet/src/Makefile.am index 01c50b8..0f50a2d 100644 --- a/applet/src/Makefile.am +++ b/applet/src/Makefile.am @@ -23,7 +23,8 @@ liblivewp_home_widget_la_SOURCES = livewp-home-widget.c livewp-home-widget.h \ livewp-rules.c livewp-rules.h \ livewp-settings.c livewp-settings.h livewp-common.h \ livewp-config.c livewp-config.h \ - livewp-dbus.c livewp-dbus.h + livewp-dbus.c livewp-dbus.h \ + livewp-actor.c livewp-actor.h liblivewp_home_widget_la_LIBADD = $(EXAMPLE_LIBS) $(OSSO_LIBS) AM_CFLAGS = -Wall $(EXAMPLE_CFLAGS) $(OSSO_CFLAGS) diff --git a/applet/src/livewp-actor.c b/applet/src/livewp-actor.c new file mode 100644 index 0000000..f8d4009 --- /dev/null +++ b/applet/src/livewp-actor.c @@ -0,0 +1,435 @@ +/*vim: set sw=4 ts=4 et: */ +/* + * This file is part of Live Wallpaper (livewp) + * + * Copyright (C) 2010 Vlad Vasiliev + * Copyright (C) 2010 Tanya Makova + * for the code + * + * This software is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA +*/ +/*******************************************************************************/ +#include "livewp-actor.h" +#include +#include "livewp-rules.h" + +Actor* +init_object(AWallpaperPlugin *desktop_plugin, + gchar * name, + gchar * filename, + gint x, + gint y, + gint z, + gint width, + gint height, + gboolean visible, + gboolean load_image, + gint scale, + gint opacity, + void (*pfunc_change)(Actor*), + void (*pfunc_probability)(Actor*), + GPtrArray *child + ) +{ + Actor *actor = NULL; + actor = g_new0(Actor, 1); + actor->x = x; + actor->y = y; + actor->z = z; + actor->width = width; + actor->height = height; + actor->visible = visible; + actor->scale = scale; + actor->opacity = opacity; + actor->filename = g_strdup(filename); + actor->name = g_strdup(name); + actor->func_change = (gpointer)pfunc_change; + actor->func_probability = (gpointer)pfunc_probability; + actor->child = child; + if (load_image) + create_hildon_actor(actor, desktop_plugin); + else + actor->widget = NULL; + actor->time_start_animation = 0; + actor->duration_animation = 0; + return actor; +} + +static gint +path_line(gint x0, gint x1, double t) +{ + // уравниение прямой + return ((x1 - x0) * t + x0); +} + +void +change_moon(Actor * actor, AWallpaperPlugin *desktop_plugin) +{ + gint phase; + char *newfile; + gint x0 = 150, + x1 = 650, + x, y; + struct timeval tvb; + suseconds_t ms; + long sec; + double t; +#if 0 + gint y0, y1, x2, y2; + double a, b, c; + a = (double)(y2 - (double)(x2*(y1-y0) + x1*y0 - x0*y1)/(x1-x0))/(x2*(x2-x0-x1)+x0*x1); + b = (double)(y1-y0)/(x1-x0) - (double)a*(x0+x1); + c = (double)(x1*y0 - x0*y1)/(x1-x0) + (double)a*x0*x1; + fprintf(stderr, "a=%f, b=%f, c=%f\n", a, b, c); +#endif + gettimeofday(&tvb, NULL); + + ms = tvb.tv_usec; + sec = tvb.tv_sec; + + if (actor){ + if (desktop_plugin->priv->scene->daytime == TIME_NIGHT){ + if (!actor->visible){ + actor->visible = TRUE; + phase = get_moon_phase(); + newfile = g_strdup_printf( "%s%d.png", actor->name, phase); + if (actor->filename) + g_free(actor->filename); + actor->filename = newfile; + actor->time_start_animation = sec - fast_rnd(60 * 60); + actor->duration_animation = 1 * 60 * 60; + create_hildon_actor(actor, desktop_plugin); + + } + t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; + if (t <= 1) + x = path_line(x0, x1, t); + else + x = path_line(x1, x0, t-1); + y = 0.001920*x*x - 1.536*x + 337.2; + //y = a*x*x + b*x + c; + + actor_set_position_full(actor->widget, x, y, actor->z); + + if (t>=2){ + actor->time_start_animation = sec; + } + + }else if (actor->visible){ + actor->visible = FALSE; + fprintf(stderr, "destroy moon \n"); + destroy_hildon_actor(actor); + actor->time_start_animation = 0; + } + } + +} + +void +change_sun(Actor * actor, AWallpaperPlugin *desktop_plugin) +{ + double alt, azm; + gint x, y; + + //fprintf(stderr, "change sun\n"); + if (actor){ + if (desktop_plugin->priv->scene->daytime != TIME_NIGHT){ + if (!actor->visible){ + actor->visible = TRUE; + create_hildon_actor(actor, desktop_plugin); + } + get_sun_pos(&alt, &azm); + get_sun_screen_pos(alt, azm, &x, &y); + actor->x = x; + actor->y = y; + actor_set_position_full(actor->widget, x, y, actor->z); + actor->time_start_animation = time(NULL) + 60; + }else if (actor->visible){ + actor->visible = FALSE; + destroy_hildon_actor(actor); + actor->time_start_animation = 0; + } + } + +} + +void +change_tram(Actor * actor, AWallpaperPlugin *desktop_plugin) +{ + gint x0 = -300, y0 = 225, scale0 = 100, + x1 = 800, y1 = 162, scale1 = 130, + x, y, scale; + struct timeval tvb; + suseconds_t ms; + long sec; + double t; + + //fprintf(stderr, "change tram\n"); + gettimeofday(&tvb, NULL); + + ms = tvb.tv_usec; + sec = tvb.tv_sec; + + if (!actor->visible){ + actor->visible = TRUE; + if (desktop_plugin->priv->scene->daytime == TIME_NIGHT){ + if (actor->filename) + g_free(actor->filename); + actor->filename = g_strdup("tram_dark.png"); + } else{ + if (actor->filename) + g_free(actor->filename); + actor->filename = g_strdup("tram.png"); + } + create_hildon_actor(actor, desktop_plugin); + } + t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; + x = path_line(x0, x1, t); + y = path_line(y0, y1, t); + scale = path_line(scale0, scale1, t); + actor_set_position_full(actor->widget, x, y, actor->z); + set_actor_scale(actor, (double)scale/100, (double)scale/100); + if (t >= 1){ + /* stop animation */ + actor->visible = FALSE; + destroy_hildon_actor(actor); + actor->time_start_animation = sec + fast_rnd(60); + } +} + +void +change_plane1(Actor *actor, AWallpaperPlugin *desktop_plugin) +{ + gint x0 = 620, y0 = 233, + x1 = 79, y1 = -146, + x, y; + struct timeval tvb; + suseconds_t ms; + long sec; + double t; + + gettimeofday(&tvb, NULL); + + ms = tvb.tv_usec; + sec = tvb.tv_sec; +// fprintf(stderr, "1 %f - %d\n", sec+(double)ms/100000, now); + + if (desktop_plugin->priv->scene->daytime != TIME_NIGHT){ + if (actor->time_start_animation == 0){ + actor->time_start_animation = sec + fast_rnd(180); + return; + } + } + if (!actor->visible){ + actor->visible = TRUE; + create_hildon_actor(actor, desktop_plugin); + } + t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; + x = path_line(x0, x1, t); + y = path_line(y0, y1, t); + //scale = path_line(scale0, scale1, t); + actor_set_position_full(actor->widget, x, y, actor->z); + if (t >= 1){ + /* stop animation */ + actor->visible = FALSE; + destroy_hildon_actor(actor); + if (desktop_plugin->priv->scene->daytime == TIME_NIGHT) + actor->time_start_animation = 0; + else + actor->time_start_animation = sec + fast_rnd(180); + } + +} + +void +change_plane2(Actor *actor, AWallpaperPlugin *desktop_plugin) +{ + gint x0 = -actor->width, y0 = 45, + x1 = 800, y1 = 20, + x, y; + struct timeval tvb; + suseconds_t ms; + long sec; + double t; + + gettimeofday(&tvb, NULL); + + ms = tvb.tv_usec; + sec = tvb.tv_sec; +// fprintf(stderr, "1 %f - %d\n", sec+(double)ms/100000, now); + if (desktop_plugin->priv->scene->daytime != TIME_NIGHT){ + if (actor->time_start_animation == 0){ + actor->time_start_animation = sec + fast_rnd(180); + return; + } + } + if (!actor->visible){ + actor->visible = TRUE; + create_hildon_actor(actor, desktop_plugin); + } + + t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; + x = path_line(x0, x1, t); + y = path_line(y0, y1, t); + //scale = path_line(scale0, scale1, t); + actor_set_position_full(actor->widget, x, y, actor->z); + if (t >= 1){ + /* stop animation */ + actor->visible = FALSE; + destroy_hildon_actor(actor); + if (desktop_plugin->priv->scene->daytime == TIME_NIGHT) + actor->time_start_animation = 0; + else + actor->time_start_animation = sec + fast_rnd(180); + } + +} + +void +change_cloud(Actor *actor, AWallpaperPlugin *desktop_plugin) +{ + gint x0, y0 = 300, scale0 = 100, + x1, y1 = -actor->height, scale1 = 150, + x, y, scale; + struct timeval tvb; + suseconds_t ms; + long sec; + double t; + gchar *newfile; + + //fprintf(stderr, "change cloud\n"); + gettimeofday(&tvb, NULL); + + ms = tvb.tv_usec; + sec = tvb.tv_sec; + + if (!actor->visible){ + actor->visible = TRUE; + if (desktop_plugin->priv->scene->daytime == TIME_NIGHT){ + newfile = g_strdup_printf("%s_dark.png", actor->name); + }else{ + newfile = g_strdup_printf("%s.png", actor->name); + } + if (actor->filename) + g_free(actor->filename); + actor->filename = newfile; + + create_hildon_actor(actor, desktop_plugin); + } + t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; + + if (desktop_plugin->priv->scene->wind_orientation == 1){ + x0 = -actor->width; + x1 = 800; + } + else { + x0 = 800; + x1 = -actor->width; + } + + x = path_line(x0, x1, t); + y = -desktop_plugin->priv->scene->wind_angle * (x - x0) + actor->y; + scale = path_line(scale0, scale1, (double)(y - y0)/(y1 - y0)); + + actor_set_position_full(actor->widget, x, y, actor->z); + set_actor_scale(actor, (double)scale/100, (double)scale/100); + if ((y < y1 || y > y0) || t >= 1){ + /* stop animation */ + actor->visible = FALSE; + destroy_hildon_actor(actor); + actor->time_start_animation = sec + fast_rnd(300); + actor->y = fast_rnd(300); + } + +} + +void +change_wind(Actor *actor, AWallpaperPlugin *desktop_plugin) +{ + desktop_plugin->priv->scene->wind_orientation = fast_rnd(2); + if (desktop_plugin->priv->scene->wind_orientation == 0) desktop_plugin->priv->scene->wind_orientation = -1; + desktop_plugin->priv->scene->wind_angle = (double)(fast_rnd(200) - 100) / 100; + actor->time_start_animation = time(NULL) + (fast_rnd(10) + 10) * 60; + //fprintf(stderr, "change wind orient = %d angle = %f after = %d\n", scene.wind_orientation, scene.wind_angle, actor->time_start_animation-time(NULL)); +} + +void +change_window1(Actor * actor, AWallpaperPlugin *desktop_plugin) +{ + gint now = time(NULL); + if (desktop_plugin->priv->scene->daytime == TIME_DAY){ + if (actor->widget){ + actor->visible = FALSE; + destroy_hildon_actor(actor); + } + actor->time_start_animation = 0; + return; + }else { + if (!actor->widget) + create_hildon_actor(actor, desktop_plugin); + if (actor->time_start_animation == 0){ + actor->time_start_animation = now + fast_rnd(30); + return; + } + } + + if (!actor->visible) + actor->visible = TRUE; + else + actor->visible = FALSE; + set_actor_visible(actor, actor->visible); + actor->time_start_animation = now + fast_rnd(60) + 10; + +} + +void +change_signal(Actor * actor, AWallpaperPlugin *desktop_plugin) +{ + gint now = time(NULL); + Actor *a; + a = g_ptr_array_index(actor->child, 0); + if (a->visible) + a->visible = FALSE; + else + a->visible = TRUE; + set_actor_visible(a, a->visible); + + a = g_ptr_array_index(actor->child, 1); + if (a->visible) + a->visible = FALSE; + else + a->visible = TRUE; + set_actor_visible(a, a->visible); + + actor->time_start_animation = now + fast_rnd(30) + 10; +} + +void +set_actor_scale(Actor *actor, double scalex, double scaley) +{ + hildon_animation_actor_set_scale( + HILDON_ANIMATION_ACTOR(actor->widget), + scalex, + scaley + ); + +} + +void +set_actor_visible(Actor *actor, gboolean visible) +{ + hildon_animation_actor_set_show(HILDON_ANIMATION_ACTOR(actor->widget), visible); +} diff --git a/applet/src/livewp-actor.h b/applet/src/livewp-actor.h new file mode 100644 index 0000000..8437f7a --- /dev/null +++ b/applet/src/livewp-actor.h @@ -0,0 +1,60 @@ +/*vim: set sw=4 ts=4 et: */ +/* + * This file is part of Live Wallpaper (livewp) + * + * Copyright (C) 2010 Vlad Vasiliev + * Copyright (C) 2010 Tanya Makova + * for the code + * + * This software is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA +*/ +/*******************************************************************************/ +#ifndef _livewp_actor_h +#define _livewp_actor_h 1 + +#include "livewp-common.h" + + +Actor* init_object(AWallpaperPlugin *desktop_plugin, + gchar * name, + gchar * filename, + gint x, + gint y, + gint z, + gint width, + gint height, + gboolean visible, + gboolean load_image, + gint scale, + gint opacity, + void (*pfunc_change)(Actor*), + void (*pfunc_probability)(Actor*), + GPtrArray *child + ); + +void change_moon(Actor * actor, AWallpaperPlugin *desktop_plugin); +void change_sun(Actor * actor, AWallpaperPlugin *desktop_plugin); +void change_tram(Actor * actor, AWallpaperPlugin *desktop_plugin); +void change_plane1(Actor *actor, AWallpaperPlugin *desktop_plugin); +void change_plane2(Actor *actor, AWallpaperPlugin *desktop_plugin); +void change_cloud(Actor *actor, AWallpaperPlugin *desktop_plugin); +void change_wind(Actor *actor, AWallpaperPlugin *desktop_plugin); +void change_window1(Actor * actor, AWallpaperPlugin *desktop_plugin); +void change_signal(Actor * actor, AWallpaperPlugin *desktop_plugin); +void set_actor_scale(Actor *actor, double scalex, double scaley); +void set_actor_visible(Actor *actor, gboolean visible); +void change_layer(Actor * actor, AWallpaperPlugin *desktop_plugin); +#endif diff --git a/applet/src/livewp-home-widget.c b/applet/src/livewp-home-widget.c index 43edf61..a181dc5 100644 --- a/applet/src/livewp-home-widget.c +++ b/applet/src/livewp-home-widget.c @@ -24,6 +24,7 @@ /*******************************************************************************/ #include "livewp-common.h" #include "livewp-home-widget.h" +#include "livewp-actor.h" #include #include "livewp-rules.h" #include @@ -159,13 +160,6 @@ actor_set_position_full(GtkWidget *actor, gint x, gint y, gint z) hildon_animation_actor_set_position_full (HILDON_ANIMATION_ACTOR (actor),x-xapplet, y-yapplet, z); } -static gint -path_line(gint x0, gint x1, double t) -{ - // уравниение прямой - return ((x1 - x0) * t + x0); -} - void destroy_hildon_actor(Actor *actor) @@ -175,56 +169,6 @@ destroy_hildon_actor(Actor *actor) actor->widget = NULL; } -static Actor* -init_object(AWallpaperPlugin *desktop_plugin, - gchar * name, - gchar * filename, - gint x, - gint y, - gint z, - gint width, - gint height, - gboolean visible, - gboolean load_image, - gint scale, - gint opacity, - void (*pfunc_change)(Actor*), - void (*pfunc_probability)(Actor*), - GPtrArray *child - ) -{ - Actor *actor = NULL; - actor = g_new0(Actor, 1); - actor->x = x; - actor->y = y; - actor->z = z; - actor->width = width; - actor->height = height; - actor->visible = visible; - actor->scale = scale; - actor->opacity = opacity; - actor->filename = g_strdup(filename); - actor->name = g_strdup(name); - actor->func_change = (gpointer)pfunc_change; - actor->func_probability = (gpointer)pfunc_probability; - actor->child = child; - if (load_image) - create_hildon_actor(actor, desktop_plugin); - else - actor->widget = NULL; - actor->time_start_animation = 0; - actor->duration_animation = 0; - /* - a.widget = actor; - a.name = name; - a.x = x; - a.y = y; - a.z = z; - */ - //objects_list = g_slist_append(objects_list, G_OBJECT(actor)); - //objects_list = g_slist_append(objects_list, G_OBJECT(a)); - return actor; -} gint rnd(gint max) @@ -243,412 +187,6 @@ gint fast_rnd(gint max) return (gint)(seed % max); } -gint -probability_sun() -{ - /* update sun position after ... second */ - return 60; -} - - -gint -probability_plane() -{ - //return (fast_rnd(10) + 1) * 60; - return fast_rnd(180); -} - -void -change_moon(Actor * actor, AWallpaperPlugin *desktop_plugin) -{ - gint phase; - char *newfile; - gint x0 = 150, - x1 = 650, - x, y, - y0=150, y1 = 150, x2=400, y2=30; - double a, b, c; - struct timeval tvb; - suseconds_t ms; - long sec; - double t; -#if 0 - a = (double)(y2 - (double)(x2*(y1-y0) + x1*y0 - x0*y1)/(x1-x0))/(x2*(x2-x0-x1)+x0*x1); - b = (double)(y1-y0)/(x1-x0) - (double)a*(x0+x1); - c = (double)(x1*y0 - x0*y1)/(x1-x0) + (double)a*x0*x1; - fprintf(stderr, "a=%f, b=%f, c=%f\n", a, b, c); -#endif - gettimeofday(&tvb, NULL); - - ms = tvb.tv_usec; - sec = tvb.tv_sec; - - if (actor){ - if (desktop_plugin->priv->scene->daytime == TIME_NIGHT){ - if (!actor->visible){ - actor->visible = TRUE; - phase = get_moon_phase(); - newfile = g_strdup_printf( "%s%d.png", actor->name, phase); - if (actor->filename) - g_free(actor->filename); - actor->filename = newfile; - actor->time_start_animation = sec - fast_rnd(60 * 60); - actor->duration_animation = 1 * 60 * 60; - create_hildon_actor(actor, desktop_plugin); - - } - t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; - if (t <= 1) - x = path_line(x0, x1, t); - else - x = path_line(x1, x0, t-1); - //y = path_line(y0, y1, t); - y = 0.001920*x*x - 1.536*x + 337.2; - //y = a*x*x + b*x + c; - - actor_set_position_full(actor->widget, x, y, actor->z); - - if (t>=2){ - actor->time_start_animation = sec; - } - - }else if (actor->visible){ - actor->visible = FALSE; - fprintf(stderr, "destroy moon \n"); - destroy_hildon_actor(actor); - /* TO DO make moonrise*/ - actor->time_start_animation = 0; - } - } - -} - -void -change_sun(Actor * actor, AWallpaperPlugin *desktop_plugin) -{ - double alt, azm; - gint x, y; - - //fprintf(stderr, "change sun\n"); - if (actor){ - if (desktop_plugin->priv->scene->daytime != TIME_NIGHT){ - if (!actor->visible){ - actor->visible = TRUE; - create_hildon_actor(actor, desktop_plugin); - } - get_sun_pos(&alt, &azm); - get_sun_screen_pos(alt, azm, &x, &y); - actor->x = x; - actor->y = y; - actor_set_position_full(actor->widget, x, y, actor->z); - //probability_sun(actor); - actor->time_start_animation = time(NULL) + probability_sun(); - }else if (actor->visible){ - actor->visible = FALSE; - destroy_hildon_actor(actor); - actor->time_start_animation = 0; - } - } - -} - -static void -change_tram(Actor * actor, AWallpaperPlugin *desktop_plugin) -{ - gint x0 = -300, y0 = 225, scale0 = 100, - x1 = 800, y1 = 162, scale1 = 130, - x, y, scale; - struct timeval tvb; - suseconds_t ms; - long sec; - double t; - - //fprintf(stderr, "change tram\n"); - gettimeofday(&tvb, NULL); - - ms = tvb.tv_usec; - sec = tvb.tv_sec; - - if (!actor->visible){ - actor->visible = TRUE; - if (desktop_plugin->priv->scene->daytime == TIME_NIGHT){ - if (actor->filename) - g_free(actor->filename); - actor->filename = g_strdup("tram_dark.png"); - } else{ - if (actor->filename) - g_free(actor->filename); - actor->filename = g_strdup("tram.png"); - } - create_hildon_actor(actor, desktop_plugin); - } - t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; - x = path_line(x0, x1, t); - y = path_line(y0, y1, t); - scale = path_line(scale0, scale1, t); - //fprintf(stderr, "change tram t=%f x=%d y=%d scale=%d\n", t, x, y, scale); - actor_set_position_full(actor->widget, x, y, actor->z); - //hildon_animation_actor_set_scale(HILDON_ANIMATION_ACTOR(actor->widget), (double)scale/100, (double)scale/100); - set_actor_scale(actor, (double)scale/100, (double)scale/100); - if (t >= 1){ - /* stop animation */ - actor->visible = FALSE; - destroy_hildon_actor(actor); - actor->time_start_animation = sec + fast_rnd(60); - } -} - -void -change_plane1(Actor *actor, AWallpaperPlugin *desktop_plugin) -{ - gint x0 = 620, y0 = 233, - x1 = 79, y1 = -146, - x, y; - struct timeval tvb; - suseconds_t ms; - long sec; - double t; - - gettimeofday(&tvb, NULL); - - ms = tvb.tv_usec; - sec = tvb.tv_sec; -// fprintf(stderr, "1 %f - %d\n", sec+(double)ms/100000, now); - - if (desktop_plugin->priv->scene->daytime != TIME_NIGHT){ - if (actor->time_start_animation == 0){ - actor->time_start_animation = sec + probability_plane(); - return; - } - } - if (!actor->visible){ - actor->visible = TRUE; - create_hildon_actor(actor, desktop_plugin); - } - t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; - x = path_line(x0, x1, t); - y = path_line(y0, y1, t); - //scale = path_line(scale0, scale1, t); - //fprintf(stderr, "change tram t=%f x=%d y=%d scale=%d\n", t, x, y, scale); - actor_set_position_full(actor->widget, x, y, actor->z); - //hildon_animation_actor_set_scale(HILDON_ANIMATION_ACTOR(actor->widget), (double)scale/100, (double)scale/100); - if (t >= 1){ - /* stop animation */ - actor->visible = FALSE; - destroy_hildon_actor(actor); - if (desktop_plugin->priv->scene->daytime == TIME_NIGHT) - actor->time_start_animation = 0; - else - actor->time_start_animation = sec + probability_plane(); - } - -} - -void -change_plane2(Actor *actor, AWallpaperPlugin *desktop_plugin) -{ - gint x0 = -actor->width, y0 = 45, - x1 = 800, y1 = 20, - x, y; - struct timeval tvb; - suseconds_t ms; - long sec; - double t; - - gettimeofday(&tvb, NULL); - - ms = tvb.tv_usec; - sec = tvb.tv_sec; -// fprintf(stderr, "1 %f - %d\n", sec+(double)ms/100000, now); - if (desktop_plugin->priv->scene->daytime != TIME_NIGHT){ - if (actor->time_start_animation == 0){ - actor->time_start_animation = sec + probability_plane(); - return; - } - } - if (!actor->visible){ - actor->visible = TRUE; - create_hildon_actor(actor, desktop_plugin); - } - - t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; - x = path_line(x0, x1, t); - y = path_line(y0, y1, t); - //scale = path_line(scale0, scale1, t); - //fprintf(stderr, "change tram t=%f x=%d y=%d scale=%d\n", t, x, y, scale); - actor_set_position_full(actor->widget, x, y, actor->z); - //hildon_animation_actor_set_scale(HILDON_ANIMATION_ACTOR(actor->widget), (double)scale/100, (double)scale/100); - if (t >= 1){ - /* stop animation */ - actor->visible = FALSE; - destroy_hildon_actor(actor); - if (desktop_plugin->priv->scene->daytime == TIME_NIGHT) - actor->time_start_animation = 0; - else - actor->time_start_animation = sec + probability_plane(); - } - -} - -void -change_cloud(Actor *actor, AWallpaperPlugin *desktop_plugin) -{ - gint x0, y0 = 300, scale0 = 100, - x1, y1 = -actor->height, scale1 = 150, - x, y, scale; - struct timeval tvb; - suseconds_t ms; - long sec; - double t; - gchar *newfile; - - //fprintf(stderr, "change cloud\n"); - gettimeofday(&tvb, NULL); - - ms = tvb.tv_usec; - sec = tvb.tv_sec; - //fprintf(stderr, "c1oud %s - y0=%d\n", actor->name, actor->y); - - if (!actor->visible){ - actor->visible = TRUE; - if (desktop_plugin->priv->scene->daytime == TIME_NIGHT){ - newfile = g_strdup_printf("%s_dark.png", actor->name); - }else{ - newfile = g_strdup_printf("%s.png", actor->name); - } - if (actor->filename) - g_free(actor->filename); - actor->filename = newfile; - - create_hildon_actor(actor, desktop_plugin); - } - t = (double)((double)sec+(double)ms/1000000 - actor->time_start_animation) / actor->duration_animation; - - if (desktop_plugin->priv->scene->wind_orientation == 1){ - x0 = -actor->width; - x1 = 800; - } - else { - x0 = 800; - x1 = -actor->width; - } - - x = path_line(x0, x1, t); - y = -desktop_plugin->priv->scene->wind_angle * (x - x0) + actor->y; - scale = path_line(scale0, scale1, (double)(y - y0)/(y1 - y0)); - - //fprintf(stderr, "change cloud t=%f x=%d y=%d scale=%d\n", t, x, y, scale); - actor_set_position_full(actor->widget, x, y, actor->z); - //hildon_animation_actor_set_scale(HILDON_ANIMATION_ACTOR(actor->widget), (double)scale/100, (double)scale/100); - set_actor_scale(actor, (double)scale/100, (double)scale/100); - if ((y < y1 || y > y0) || t >= 1){ - /* stop animation */ - actor->visible = FALSE; - destroy_hildon_actor(actor); - actor->time_start_animation = sec + fast_rnd(300); - actor->y = fast_rnd(300); - } - -} - -void -change_wind(Actor *actor, AWallpaperPlugin *desktop_plugin) -{ - desktop_plugin->priv->scene->wind_orientation = fast_rnd(2); - if (desktop_plugin->priv->scene->wind_orientation == 0) desktop_plugin->priv->scene->wind_orientation = -1; - desktop_plugin->priv->scene->wind_angle = (double)(fast_rnd(200) - 100) / 100; - actor->time_start_animation = time(NULL) + (fast_rnd(10) + 10) * 60; - //fprintf(stderr, "change wind orient = %d angle = %f after = %d\n", scene.wind_orientation, scene.wind_angle, actor->time_start_animation-time(NULL)); -} - -void -change_window1(Actor * actor, AWallpaperPlugin *desktop_plugin) -{ - gint now = time(NULL); - if (desktop_plugin->priv->scene->daytime == TIME_DAY){ - if (actor->widget){ - actor->visible = FALSE; - destroy_hildon_actor(actor); - } - actor->time_start_animation = 0; - return; - }else { - if (!actor->widget) - create_hildon_actor(actor, desktop_plugin); - if (actor->time_start_animation == 0){ - actor->time_start_animation = now + fast_rnd(30); - return; - } - } - - if (!actor->visible) - actor->visible = TRUE; - else - actor->visible = FALSE; - //hildon_animation_actor_set_show( - // HILDON_ANIMATION_ACTOR(actor->widget), - // actor->visible - //); - set_actor_visible(actor, actor->visible); - actor->time_start_animation = now + fast_rnd(60) + 10; - -} - -void -change_signal(Actor * actor, AWallpaperPlugin *desktop_plugin) -{ - gint now = time(NULL); - Actor *a; -#if 0 - gchar *newfile; - gint now = time(NULL); - newfile = g_strdup_printf("%s%d.png", actor->name, scene.daytime); - if (!strcmp(actor->filename, "red.png")) - newfile = g_strdup_printf("%s", "green.png"); - else - newfile = g_strdup_printf("%s", "red.png"); - g_free(actor->filename); - actor->filename = newfile; - change_hildon_actor(actor, desktop_plugin); - actor->time_start_animation = now + fast_rnd(30) + 10; -#endif - a = g_ptr_array_index(actor->child, 0); - //fprintf(stderr, "actor name= %p \n", child->widget); - if (a->visible) - a->visible = FALSE; - else - a->visible = TRUE; - //hildon_animation_actor_set_show (HILDON_ANIMATION_ACTOR(a->widget), a->visible); - set_actor_visible(a, a->visible); - - a = g_ptr_array_index(actor->child, 1); - //fprintf(stderr, "actor name= %s \n", child->name); - if (a->visible) - a->visible = FALSE; - else - a->visible = TRUE; - //hildon_animation_actor_set_show (HILDON_ANIMATION_ACTOR(a->widget), a->visible); - set_actor_visible(a, a->visible); - - actor->time_start_animation = now + fast_rnd(30) + 10; -} - -void -set_actor_scale(Actor *actor, double scalex, double scaley) -{ - hildon_animation_actor_set_scale( - HILDON_ANIMATION_ACTOR(actor->widget), - scalex, - scaley - ); - -} - -void -set_actor_visible(Actor *actor, gboolean visible) -{ - hildon_animation_actor_set_show(HILDON_ANIMATION_ACTOR(actor->widget), visible); -} void create_hildon_actor(Actor *actor, AWallpaperPlugin *desktop_plugin) { @@ -685,20 +223,7 @@ create_hildon_actor(Actor *actor, AWallpaperPlugin *desktop_plugin) /* TO DO check it */ /* gdk_flush (); */ - //g_object_set_data(G_OBJECT(ha), "name", name); - //g_object_set_data(G_OBJECT(ha), "filename", filename); g_object_set_data(G_OBJECT(ha), "image", image); - /* - g_object_set_data(G_OBJECT(ha), "x", x); - g_object_set_data(G_OBJECT(ha), "y", y); - g_object_set_data(G_OBJECT(ha), "z", z); - g_object_set_data(G_OBJECT(ha), "width", width); - g_object_set_data(G_OBJECT(ha), "height", height); - g_object_set_data(G_OBJECT(ha), "scale", scale); - g_object_set_data(G_OBJECT(ha), "visible", visible); - g_object_set_data(G_OBJECT(ha), "opacity", opacity); - g_object_set_data(G_OBJECT(ha), "func", pfunc); - */ hildon_animation_actor_set_parent (HILDON_ANIMATION_ACTOR (ha), GTK_WINDOW(desktop_plugin)); actor->widget = ha; } @@ -783,40 +308,35 @@ change_layer(Actor * actor, AWallpaperPlugin *desktop_plugin) a = g_ptr_array_index(actor->child, 0); y = a->y + 10; if (y > 480) y = -480; - //fprintf(stderr, "!! %s - %d\n", actor->name, y); actor_set_position_full(a->widget, a->x, y, a->z); a->y = y; a = g_ptr_array_index(actor->child, 1); y = a->y + 10; if (y > 480) y = -480; - //fprintf(stderr, "!! %s - %d\n", actor->name, y); actor_set_position_full(a->widget, a->x, y, a->z); a->y = y; a = g_ptr_array_index(actor->child, 2); y = a->y + 20; if (y > 480) y = -480; - //fprintf(stderr, "!! %s - %d\n", actor->name, y); actor_set_position_full(a->widget, a->x, y, a->z); a->y = y; a = g_ptr_array_index(actor->child, 3); y = a->y + 20; if (y > 480) y = -480; - //fprintf(stderr, "!! %s - %d\n", actor->name, y); actor_set_position_full(a->widget, a->x, y, a->z); a->y = y; } - +#if 0 void change_layer1(Actor * actor, AWallpaperPlugin *desktop_plugin) { gint y; y = actor->y + 10; if (y > 480) y = -480; - //fprintf(stderr, "!! %s - %d\n", actor->name, y); actor_set_position_full(actor->widget, actor->x, y, actor->z); actor->y = y; } @@ -827,11 +347,10 @@ change_layer2(Actor * actor, AWallpaperPlugin *desktop_plugin) gint y; y = actor->y + 15; if (y >= 480) y = -480; - //fprintf(stderr, "!! %s - %d\n", actor->name, y); actor_set_position_full(actor->widget, actor->x, y, actor->z); actor->y = y; } - +#endif /* static gint get_time(gint t){ @@ -991,7 +510,7 @@ init_scene(AWallpaperPlugin *desktop_plugin) actor = init_object(desktop_plugin, "sun", "sun.png", 0, 0, 6, 88, 88, FALSE, FALSE, 100, 255, - (gpointer)&change_sun, (gpointer)&probability_sun, NULL); + (gpointer)&change_sun, NULL, NULL); actor->time_start_animation = now; actor->duration_animation = G_MAXINT; change_sun(actor, desktop_plugin); @@ -1307,7 +826,7 @@ init_scene1(AWallpaperPlugin *desktop_plugin) actor = init_object(desktop_plugin, "sun", "sun.png", 0, 0, 6, 88, 88, FALSE, FALSE, 100, 255, - (gpointer)&change_sun, (gpointer)&probability_sun, NULL); + (gpointer)&change_sun, NULL, NULL); actor->time_start_animation = time(NULL); actor->duration_animation = G_MAXINT; change_sun(actor, desktop_plugin); -- 1.7.9.5