/*******************************************************************************/
#include "livewp-common.h"
#include "livewp-home-widget.h"
+#include "livewp-actor.h"
#include <gconf/gconf-client.h>
#include "livewp-rules.h"
#include <sys/time.h>
#define Ystartposition 448
gint xapplet = 0, yapplet = 0;
-Scene scene;
+//Scene scene;
static void
lw_applet_realize (GtkWidget *widget)
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)
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)
guint offset = 12923;
guint multiplier = 4079;
- scene.seed = scene.seed * multiplier + offset;
- return (gint)(scene.seed % max);
-}
-
-gint
-probability_sun()
-{
- /* update sun position after ... second */
- return 60;
-}
-
-
-gint
-probability_plane()
-{
- return (fast_rnd(10) + 1) * 60;
-// return 0;
-}
-
-void
-change_moon(Actor * actor, AWallpaperPlugin *desktop_plugin)
-{
- gint phase;
- char *newfile;
-
- if (actor){
- if (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;
- create_hildon_actor(actor, desktop_plugin);
-
- }
- //actor->x = 400;
- //actor->y = 10;
- // actor_set_position_full(actor->widget, x, y, actor->z);
- //probability_sun(actor);
- //fprintf(stderr, "after change sun %d\n", actor->time_start_animation);
- }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 (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 (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);
- if (t >= 1){
- /* stop animation */
- actor->visible = FALSE;
- destroy_hildon_actor(actor);
- actor->time_start_animation = sec + fast_rnd(300);
- }
-}
-
-void
-change_plane1(Actor *actor, AWallpaperPlugin *desktop_plugin)
-{
- gint x0 = 620, y0 = 233, scale0 = 100,
- x1 = 79, y1 = -146, scale1 = 100,
- x, y, scale;
- 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 (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 (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, scale0 = 100,
- x1 = 800, y1 = 20, scale1 = 100,
- x, y, scale;
- 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 (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 (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 (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 (scene.wind_orientation == 1){
- x0 = -actor->width;
- x1 = 800;
- }
- else {
- x0 = 800;
- x1 = -actor->width;
- }
-
- x = path_line(x0, x1, t);
- y = -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);
- 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)
-{
- scene.wind_orientation = fast_rnd(2);
- if (scene.wind_orientation == 0) scene.wind_orientation = -1;
- 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 (scene.daytime == TIME_DAY){
- if (actor->visible){
- actor->visible = FALSE;
- destroy_hildon_actor(actor);
- }
- actor->time_start_animation = 0;
- return;
- }else if (actor->time_start_animation == 0){
- actor->time_start_animation = now + fast_rnd(30);
- return;
- }
-
- if (!actor->visible){
- actor->visible = TRUE;
- create_hildon_actor(actor, desktop_plugin);
- actor->time_start_animation = now + fast_rnd(60) + 10;
- }else {
- actor->visible = FALSE;
- destroy_hildon_actor(actor);
- 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);
-
- 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);
-
- actor->time_start_animation = now + fast_rnd(30) + 10;
+ //*seed = *seed * multiplier + offset;
+ //return (gint)(*seed % max);
+ guint seed = time(NULL);
+ return (gint)(seed % max);
}
void
realize(ha);
gtk_widget_show_all(ha);
hildon_animation_actor_set_show (HILDON_ANIMATION_ACTOR(ha), actor->visible);
-
+
/* 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;
}
change_static_actor(Actor * actor, AWallpaperPlugin *desktop_plugin)
{
gchar *newfile;
- newfile = g_strdup_printf("%s%d.png", actor->name, scene.daytime);
+ newfile = g_strdup_printf("%s%d.png", actor->name, desktop_plugin->priv->scene->daytime);
if (actor->filename)
g_free(actor->filename);
actor->filename = newfile;
void
change_static_actor_with_corner(Actor * actor, AWallpaperPlugin *desktop_plugin)
{
- gchar *newfile;
- gchar buffer[2048];
+ gchar buffer[2048];
if (desktop_plugin->priv->right_corner)
gtk_widget_destroy(desktop_plugin->priv->right_corner);
snprintf(buffer, sizeof(buffer) - 1, "%s/%s/town%i_right_corner.png", \
- THEME_PATH, desktop_plugin->priv->theme, scene.daytime);
+ THEME_PATH, desktop_plugin->priv->theme, desktop_plugin->priv->scene->daytime);
desktop_plugin->priv->right_corner = gtk_image_new_from_file (buffer);
if (desktop_plugin->priv->right_corner){
gtk_fixed_put(GTK_FIXED(desktop_plugin->priv->main_widget), desktop_plugin->priv->right_corner, 0, 0);
gint y;
Actor *a;
+ if (!desktop_plugin->priv->rich_animation) return;
+
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;
}
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){
}
*/
static void
-destroy_scene(void){
- GSList * tmp = scene.actors;
+destroy_scene(AWallpaperPlugin *desktop_plugin)
+{
+ GSList * tmp = desktop_plugin->priv->scene->actors;
Actor *actor;
while (tmp != NULL){
actor = tmp->data;
if (actor){
+ if (actor->child){
+ g_ptr_array_free(actor->child, TRUE);
+ }
if (actor->filename)
g_free(actor->filename);
if (actor->name)
reload_scene(AWallpaperPlugin *desktop_plugin)
{
fprintf(stderr,"Reload scene %s\n", desktop_plugin->priv->theme);
- destroy_scene();
+ 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;
-
+ 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);
+ 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);
+ 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, -480, 6, 800, 960,
+ 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);
+ scene->actors = g_slist_append(scene->actors, actor);
g_ptr_array_add(child, actor);
actor = init_object(desktop_plugin, "layer1", "layer1_1.png",
- 0, (-480 - 480), 7, 800, 960,
+ 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);
+ scene->actors = g_slist_append(scene->actors, actor);
g_ptr_array_add(child, actor);
actor = init_object(desktop_plugin, "layer2", "layer2_2.png",
- 0, -480, 8, 800, 960,
+ 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);
+ scene->actors = g_slist_append(scene->actors, actor);
g_ptr_array_add(child, actor);
actor = init_object(desktop_plugin, "layer2", "layer2_1.png",
- 0, (-480 - 480), 9, 800, 960,
+ 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);
+ scene->actors = g_slist_append(scene->actors, actor);
g_ptr_array_add(child, actor);
actor = init_object(desktop_plugin, "layers", "",
- 0, (-480 - 480), 9, 800, 960,
+ 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);
+ 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.daytime = get_daytime();
- scene.actors = NULL;
- scene.wind_orientation = -1;
- scene.wind_angle = 0.3;
+ //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);
-
-
+ 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,
+ TRUE , TRUE, 100, 255,
(gpointer)&change_static_actor, NULL, NULL);
change_static_actor(actor, desktop_plugin);
- scene.actors = g_slist_append(scene.actors, actor);
-
+ scene->actors = g_slist_append(scene->actors, actor);
+
actor = init_object(desktop_plugin, "sun", "sun.png",
0, 0, 6, 88, 88,
- TRUE, TRUE, 100, 255,
- (gpointer)&change_sun, &probability_sun, NULL);
+ 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);
+ 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);
0, fast_rnd(300)-97, 7, 150, 97,
FALSE, FALSE, 100, 255,
(gpointer)&change_cloud, NULL, NULL);
- actor->time_start_animation = now + fast_rnd(180);
+ actor->time_start_animation = now + fast_rnd(20);
actor->duration_animation = 3*60;
- scene.actors = g_slist_append(scene.actors, actor);
+ 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(180);
+ actor->time_start_animation = now + fast_rnd(40)+10;
actor->duration_animation = 3*60;
- scene.actors = g_slist_append(scene.actors, actor);
+ 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(180);
+ actor->time_start_animation = now + fast_rnd(60) + 20;
actor->duration_animation = 5*60;
- scene.actors = g_slist_append(scene.actors, actor);
+ scene->actors = g_slist_append(scene->actors, actor);
actor = init_object(desktop_plugin, "town", "town0.png",
TRUE, TRUE, 100, 255,
(gpointer)&change_static_actor, NULL, NULL);
change_static_actor(actor, desktop_plugin);
- scene.actors = g_slist_append(scene.actors, actor);
+ 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, 9, 350, 210,
+ -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);
+ scene->actors = g_slist_append(scene->actors, actor);
actor = init_object(desktop_plugin, "border", "border0.png",
- 0, 480-79, 10, 800, 79,
+ 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);
+ 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);
+ 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);
+ scene->actors = g_slist_append(scene->actors, actor);
/* windows in 4-th house */
(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);
+ scene->actors = g_slist_append(scene->actors, actor);
}
(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);
+ scene->actors = g_slist_append(scene->actors, actor);
}
(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);
+ scene->actors = g_slist_append(scene->actors, actor);
}
(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);
+ scene->actors = g_slist_append(scene->actors, actor);
}
(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);
+ scene->actors = g_slist_append(scene->actors, actor);
}
-
run_long_timeout(desktop_plugin);
#if 0
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.daytime = get_daytime();
- scene.actors = NULL;
- scene.wind_orientation = -1;
- scene.wind_angle = 0.3;
+ 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);
-
+ 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);
+ scene->actors = g_slist_append(scene->actors, actor);
actor = init_object(desktop_plugin, "sun", "sun.png", 0, 0, 6, 88, 88,
- TRUE, TRUE, 100, 255,
- (gpointer)&change_sun, &probability_sun, NULL);
+ 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);
+ scene->actors = g_slist_append(scene->actors, actor);
#if 0
actor = init_object(desktop_plugin, "dot", "dot1.png", 0, 0, 11, 50, 50,
FALSE, FALSE, 100, 255,
(gpointer)&change_moon, NULL, NULL);
change_moon(actor, desktop_plugin);
- scene.actors = g_slist_append(scene.actors, actor);
+ 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(180);
+ actor->time_start_animation = now + fast_rnd(30) + 10;
actor->duration_animation = 3*60;
- scene.actors = g_slist_append(scene.actors, actor);
+ 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(180);
+ actor->time_start_animation = now + fast_rnd(10);
actor->duration_animation = 3*60;
- scene.actors = g_slist_append(scene.actors, actor);
+ 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(180);
+ actor->time_start_animation = now + fast_rnd(60) + 20;
actor->duration_animation = 5*60;
- scene.actors = g_slist_append(scene.actors, actor);
+ 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 + probability_plane();
+ actor->time_start_animation = now + fast_rnd(40) + 20;
actor->duration_animation = 60;
- scene.actors = g_slist_append(scene.actors, actor);
+ 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 + probability_plane();
+ actor->time_start_animation = now + fast_rnd(20);
actor->duration_animation = 30;
- scene.actors = g_slist_append(scene.actors, actor);
+ 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);
+ 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);
+ 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, actor);
+ 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, actor1);
+ 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);
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);
+ scene->actors = g_slist_append(scene->actors, actor);
winds[0][0] = 389;
winds[0][1] = 305;
(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);
+ scene->actors = g_slist_append(scene->actors, actor);
}
}
-
void
get_sun_screen_pos(double alt, double azm, gint * x, gint * y)
{
static gboolean
short_timeout (AWallpaperPlugin *desktop_plugin)
{
- gint daytime = get_daytime();
+ //gint daytime = get_daytime();
GSList * tmp;
void (*pfunc)(gpointer, gpointer);
time_t now;
now = time(NULL);
//scene.daytime = daytime;
/* fprintf(stderr, "Short timer %d\n", now); */
- tmp = scene.actors;
+ tmp = desktop_plugin->priv->scene->actors;
while (tmp != NULL){
actor = tmp->data;
if (now >= actor->time_start_animation
//fprintf(stderr, "!!!run long timeout short_timer=%d\n", desktop_plugin->priv->short_timer);
- if (scene.daytime != daytime){
- scene.daytime = daytime;
- tmp = scene.actors;
+ if (desktop_plugin->priv->scene->daytime != daytime){
+ desktop_plugin->priv->scene->daytime = daytime;
+ tmp = desktop_plugin->priv->scene->actors;
while (tmp != NULL){
//change_actor(tmp->data);
pfunc =((Actor*)tmp->data)->func_change;
now = time(NULL);
//fprintf(stderr, "Now %d\n", now);
- tmp = scene.actors;
+ tmp = desktop_plugin->priv->scene->actors;
while (tmp != NULL){
actor = tmp->data;
if (now >= actor->time_start_animation
rich_animation_press(GtkWidget *widget, GdkEvent *event,
gpointer user_data){
fprintf(stderr,"gggggggggggggggggggg2222\n");
+ return FALSE;
}
static void
animation_wallpaper_plugin_init (AWallpaperPlugin *desktop_plugin)
gchar buffer[2048];
- fprintf(stderr, "!!!!!!!plugin init \n");
+ //fprintf(stderr, "!!!!!!!plugin init \n");
Animation_WallpaperPrivate *priv = Animation_Wallpaper_HOME_PLUGIN_GET_PRIVATE (desktop_plugin);
desktop_plugin->priv = Animation_Wallpaper_HOME_PLUGIN_GET_PRIVATE (desktop_plugin);
priv->osso = osso_initialize(PACKAGE, VERSION, TRUE, NULL);
priv->desktop_plugin = desktop_plugin;
priv->visible = TRUE;
priv->short_timer = 0;
- priv->theme = g_strdup("Modern");
+ //priv->theme = g_strdup("Modern");
desktop_plugin->priv->main_widget = gtk_fixed_new();
gtk_widget_set_size_request(desktop_plugin->priv->main_widget, 100, 32);
*/
hd_home_plugin_item_set_settings (HD_HOME_PLUGIN_ITEM (desktop_plugin), TRUE);
g_signal_connect (desktop_plugin, "show-settings",
- G_CALLBACK (lw_settings), priv);
+ G_CALLBACK (show_settings), priv);
gtk_widget_show (desktop_plugin->priv->main_widget);
gtk_container_add (GTK_CONTAINER (desktop_plugin), desktop_plugin->priv->main_widget);
init_applet_position();
fprintf(stderr, "!!!theme = %s\n", priv->theme);
+ priv->scene = NULL;
if (!strcmp(priv->theme,"Modern"))
init_scene(desktop_plugin);
else if (!strcmp(priv->theme,"Berlin"))
init_scene2(desktop_plugin);
priv->long_timer = g_timeout_add(LONG_TIMER, (GtkFunction)long_timeout, desktop_plugin);
/* TODO Move scene to priv */
- scene.timer_type = LONG_TIMER_TYPE;
+ //scene.timer_type = LONG_TIMER_TYPE;
g_signal_connect (desktop_plugin, "notify::is-on-current-desktop",
G_CALLBACK (desktop_plugin_visible_notify), desktop_plugin);
priv->short_timer = 0;
}
- destroy_scene();
+ destroy_scene(desktop_plugin);
}
static void
static void
animation_wallpaper_plugin_class_finalize (AWallpaperPluginClass *class) {
}
+
+