From: Charles Brej Date: Wed, 5 Nov 2008 15:04:58 +0000 (+0000) Subject: Generate a dynamicly animated comet in solar plugin X-Git-Tag: 0.6.0~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=517c68cde8ec4e00b0fdf04bdc92894f6ed7fa9e;p=thirdparty%2Fplymouth.git Generate a dynamicly animated comet in solar plugin This removes the need for the comet1.png --- diff --git a/src/plugins/splash/solar/Makefile.am b/src/plugins/splash/solar/Makefile.am index 53cc86b5..84bc2f2f 100644 --- a/src/plugins/splash/solar/Makefile.am +++ b/src/plugins/splash/solar/Makefile.am @@ -24,7 +24,7 @@ solar_la_SOURCES = $(srcdir)/plugin.c plymouthdir = $(datadir)/plymouth/solar plymouth_DATA = bullet.png entry.png lock.png \ background.png star.png box.png \ - comet1.png progress_bar.png + progress_bar.png # planet1.png planet2.png planet3.png planet4.png planet5.png EXTRA_DIST = $(plymouth_DATA) diff --git a/src/plugins/splash/solar/comet1.png b/src/plugins/splash/solar/comet1.png deleted file mode 100755 index 4b6cbaea..00000000 Binary files a/src/plugins/splash/solar/comet1.png and /dev/null differ diff --git a/src/plugins/splash/solar/plugin.c b/src/plugins/splash/solar/plugin.c index 419f2739..79745132 100644 --- a/src/plugins/splash/solar/plugin.c +++ b/src/plugins/splash/solar/plugin.c @@ -154,9 +154,6 @@ struct _ply_boot_splash_plugin #ifdef SHOW_PLANETS ply_image_t *planet_image[5]; #endif -#ifdef SHOW_COMETS - ply_image_t *comet_image[1]; -#endif #ifdef SHOW_PROGRESS_BAR ply_image_t *progress_barimage; #endif @@ -210,9 +207,6 @@ create_plugin (void) plugin->planet_image[3] = ply_image_new (PLYMOUTH_IMAGE_DIR "solar/planet4.png"); plugin->planet_image[4] = ply_image_new (PLYMOUTH_IMAGE_DIR "solar/planet5.png"); #endif -#ifdef SHOW_COMETS - plugin->comet_image[0] = ply_image_new (PLYMOUTH_IMAGE_DIR "solar/comet1.png"); -#endif #ifdef SHOW_PROGRESS_BAR plugin->progress_barimage = ply_image_new (PLYMOUTH_IMAGE_DIR "solar/progress_bar.png"); #endif @@ -252,9 +246,6 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin) ply_image_free (plugin->planet_image[3]); ply_image_free (plugin->planet_image[4]); #endif -#ifdef SHOW_COMETS - ply_image_free (plugin->comet_image[0]); -#endif #ifdef SHOW_PROGRESS_BAR ply_image_free (plugin->progress_barimage); #endif @@ -412,8 +403,8 @@ satellite_move (ply_boot_splash_plugin_t *plugin, sprite_t* sprite, double time) int width = ply_image_get_width (sprite->image); int height = ply_image_get_height (sprite->image); - sprite->x=cos(satellite->theta+(1-plugin->progress)*5000/(satellite->distance))*satellite->distance; - sprite->y=sin(satellite->theta+(1-plugin->progress)*5000/(satellite->distance))*satellite->distance; + sprite->x=cos(satellite->theta+(1-plugin->progress)*2000/(satellite->distance))*satellite->distance; + sprite->y=sin(satellite->theta+(1-plugin->progress)*2000/(satellite->distance))*satellite->distance; sprite->z=0; float distance = sqrt(sprite->z*sprite->z+sprite->y*sprite->y); @@ -474,7 +465,27 @@ satellite_move (ply_boot_splash_plugin_t *plugin, sprite_t* sprite, double time) uint32_t *image_data = ply_image_get_data (satellite->image); uint32_t *comet_data = ply_image_get_data (satellite->image_altered); - + x = width/2; + image_data[x] = 0xFFFFFFFF; + x = 2*sin(plugin->progress*62)+width/2; + image_data[x] = 0xFFFFFFFF; + x = 2*sin(plugin->progress*163)+width/2; + image_data[x] = 0xFFFFFFFF; + x = 2*sin(plugin->progress*275)+width/2; + image_data[x] = 0xFFFFFFFF; + for (y=height-1; y>0; y--) + { + for (x=1; x0)pixel = (image_data[(x)+(y-1)*width]>>24)*2 + (image_data[(x-1)+(y-1)*width]>>24) + (image_data[(x+1)+(y-1)*width]>>24); + pixel /= 4.05; + pixel |= pixel<<8; + pixel |= pixel<<16; + image_data[x+y*width] = pixel; + } + } + for (x=1; xtheta+(1-plugin->progress)*5000/(satellite->distance)); + float angle = atan2 (fy, fx)-(satellite->theta+(1-plugin->progress)*2000/(satellite->distance))+M_PI/2*0.0; float distance = sqrt(fy*fy+fx*fx); fx = cos(angle)*distance; fy = sin(angle)*distance; + fx += (fy*fy*2)/(satellite->distance); fx += (float) width/2; fy += (float) height/2; int ix=fx; @@ -1052,17 +1064,26 @@ setup_solar (ply_boot_splash_plugin_t *plugin) #ifdef SHOW_COMETS for (i=0; i<1; i++) { - satellite_t* satellite = malloc(sizeof(satellite_t)); - satellite->type=SATELLITE_TYPE_COMET; - satellite->end_x=satellite->start_x=720-800+screen_area.width; - satellite->end_y=satellite->start_y=300-480+screen_area.height; - - satellite->distance=600; - satellite->theta=M_PI*0.8; - satellite->image=plugin->comet_image[i]; - satellite->image_altered=ply_image_resize (satellite->image, ply_image_get_width(satellite->image), ply_image_get_height(satellite->image)); - sprite = add_sprite (plugin, satellite->image_altered, SPRITE_TYPE_SATELLITE, satellite); - satellite_move (plugin, sprite, 0); + satellite_t* satellite = malloc(sizeof(satellite_t)); + satellite->type=SATELLITE_TYPE_COMET; + satellite->end_x=satellite->start_x=720-800+screen_area.width; + satellite->end_y=satellite->start_y=300-480+screen_area.height; + satellite->distance=550+i*50; + satellite->theta=M_PI*0.8; +#define COMET_SIZE 64 + satellite->image=ply_image_resize (plugin->progress_barimage, COMET_SIZE, COMET_SIZE); + satellite->image_altered=ply_image_resize (satellite->image, COMET_SIZE, COMET_SIZE); + uint32_t * image_data = ply_image_get_data (satellite->image); + uint32_t * image_altered_data = ply_image_get_data (satellite->image_altered); + + + for (y=0; yimage_altered, SPRITE_TYPE_SATELLITE, satellite); + for (x=0; xplanet_image[4])) return false; #endif -#ifdef SHOW_COMETS - if (!ply_image_load (plugin->comet_image[0])) - return false; -#endif #ifdef SHOW_PROGRESS_BAR if (!ply_image_load (plugin->progress_barimage)) return false;