debuging
[livewp] / applet / src / livewp-actor.c
index 6286b20..ad6ffcd 100644 (file)
@@ -673,12 +673,10 @@ change_signal(Actor * actor, AWallpaperPlugin *desktop_plugin)
 void
 change_tape(Actor *actor, AWallpaperPlugin *desktop_plugin)
 {
-    gint x, y,
-        speed[4] = {7, 10, 5, 14}, 
-        i;
+    gint x, y, i;
     Actor *a;
 
-    double angle = 0;
+    if (!desktop_plugin->priv->rich_animation) return;
     
     char * accel_filename = "/sys/class/i2c-adapter/i2c-3/3-001d/coord";
     //char * accel_filename = "/home/tanya/coord";
@@ -699,25 +697,51 @@ change_tape(Actor *actor, AWallpaperPlugin *desktop_plugin)
     }
 
     //fprintf(stderr, "change obj %i %i %i angle rad=%f, deg=%f\n", ax, ay, az, atan2(ax, -ay), atan2(ax, -ay)*180/M_PI);
-    angle = atan2(ay, ax);
+    int ang = (int)floor(atan2(ay, ax)*180/M_PI);
+    if (ang < 0) ang = 360+ang;
 
     if (!desktop_plugin->priv->rich_animation) return;
 
-    for (i=0; i<24; i++){
+    for (i=0; i<16; i++){
         a = g_ptr_array_index(actor->child, i);
-        //x = a->x - cos(angle*M_PI/180)*a->z;
-        //y = a->y - sin(angle*M_PI/180)*a->z;
-        x = a->x - cos(angle)*a->z;
-        y = a->y - sin(angle)*a->z;
-        if (x <= -a->width) 
-            x = 800;
-        if (y <= -a->width)
-            y = 480;
-        if (x > 800+a->width)
+        if (a->scale == 100) a->scale = ang;
+        if (abs(a->scale - ang) > 10){
+            if (a->scale > ang){
+                if ((a->scale - ang) < (ang + (360-a->scale))) a->scale--;
+                else a->scale++;
+            }
+            if (a->scale < ang) {
+                if (ang - a->scale < (a->scale+(360-ang))) a->scale++;
+                else a->scale--;
+            }
+            if (a->scale > 360) a->scale = 0;
+            if (a->scale < 0) a->scale = 360;
+        }
+    
+        x = a->x - (float)cos(a->scale*M_PI/180)*a->z;
+        y = a->y - (float)sin(a->scale*M_PI/180)*a->z;
+        //x = round(a->x - (float)cos(a->scale*M_PI/180)*a->z);
+        //y = round(a->y - (float)sin(a->scale*M_PI/180)*a->z);
+        //x = a->x - cos(angle)*a->z;
+        //y = a->y - sin(angle)*a->z;
+        if ((a->scale > 270 || a->scale < 90) && x < -a->width*cos(a->scale*M_PI/180)){ 
+            x = 800; 
+            y = fast_rnd(480);
+        } 
+        if ((a->scale > 90 && a->scale < 270) && x > 800 - a->width*cos(a->scale*M_PI/180)){
             x = 0;
-        if (y > 480+a->width)
+            y = fast_rnd(480);
+        }
+        if (a->scale > 0 && a->scale < 180 && y < -a->width*sin(a->scale*M_PI/180)){
+            y = 480;
+            x = fast_rnd(800);
+        }
+        if (a->scale < 360 && a->scale > 180 && y > 480 - a->width*sin(a->scale*M_PI/180)){
             y = 0;
-        set_actor_rotation(a, HILDON_AA_Z_AXIS, angle*180/M_PI, 0, 0, 0);
+            x = fast_rnd(800);
+        }
+        //if (i ==0) fprintf(stderr, "x=%d y=%d ang=%d speed=%d\n", x, y, a->scale, a->z);
+        set_actor_rotation(a, HILDON_AA_Z_AXIS, a->scale, 0, 0, 0);
         set_actor_position(a, x, y, a->z, desktop_plugin);
         a->x = x;
         a->y = y;