From 517c68cde8ec4e00b0fdf04bdc92894f6ed7fa9e Mon Sep 17 00:00:00 2001 From: Charles Brej Date: Wed, 5 Nov 2008 15:04:58 +0000 Subject: [PATCH] Generate a dynamicly animated comet in solar plugin This removes the need for the comet1.png --- src/plugins/splash/solar/Makefile.am | 2 +- src/plugins/splash/solar/comet1.png | Bin 2046 -> 0 bytes src/plugins/splash/solar/plugin.c | 71 +++++++++++++++++---------- 3 files changed, 45 insertions(+), 28 deletions(-) delete mode 100755 src/plugins/splash/solar/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 4b6cbaeab62a1e1b03d8aa3fe3de61af85583336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2046 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOV; z3jqr7npAfH000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000MBNklPi>V7t5HB;AxPErY?f?3@`n#r{?ls1s3v5cV z?LJTe=e8xuH#Pva$ss=hwt(MBD!|D0pKX5wESma0x~BBs27V*ykHB-=whTn1i&_uo&Ya^9?-F^ysm)X zO4?}(46h>qvi$(KWxES>CDm9o4=(KiH?ssJZA*G8=`v`)2o_bgr?$^+_iY#3H!A>j z&$s;oI0GiYEU$;aTS+rXcK}Q4$LMauw~y_Qfv;@ele7)oOAtE17#If=itWX^gV1fb z{*iPJY}o$P_D&8x1bUJ#ZNHXuKOEueMwP(IZ4M+YBz*~-+8zTRY+nE);7Za}6W^&c zb@Tbzwfzvd4ZHjP{ku_N&O?14*}m zodl~3ybNZnoeDIO0ZPx`i~4(P`xhZadqB_jUEo~OmF=;lewgCgv!J`~+b^X!e7)(CA|aATU`PHz+EjLfUl$cu3~%~OBzKYpGGVVC0zoCH7jgo z09F*>)b>0nJqF&`o&ulP-VY!aNgKciEfMp3+uyZX4u{ZCN|^=+I+E^7dYZrt!}u!O z<0!y)wnxBB(mmUYb<5%II_p0{*j+*LUL2n%0l_iwO45@6;WkT`cx-!LQYWmjof(j4 z7E-gFGI(oy({?Yny%7;K0!{*gJ86eotuBG8syeCfez^ZpYW)hR!SB-cT+*!ssslU^ zIqJ1t3skl%Nmr6OsrzXyje%#8!rQ`drdkcz-Ybz8jF71QQ4&?AvZH24n)%WjO=r z#9;^#-sH3}T1%;uSjnz%YR#^tioU zAkP7CH)QD2_U$OWMQHI!DDXu9u*4rItp>prD*Vf|v&;B?7q<5#Jy`*E7ix53YmNbk$D3QdZ6C7k;sHBCCZ-N?}+1>`uB;AeeH4Ex1#Ahek z|03q-hrEC7Db z_ayDb6rD5yf?CtTsj8}k0{2r2^GMS`tWt(|`0|mW&&Me6PK68OZ9HEUU#mD)ZdLB4P z*|b*<+wP@~yO|GGnG#KGZ-f>PBaz9Lc$F4dS{ZfN4k^uQn*eG}vH)0Ds@ zlb))oszohyQV#QMjZsRef(x}sYF7r-Z7?KeBhK$4w_l|_7D>CwkYR#xCv36g;Nw;< zO0IZ;lC+t_&+=KDNqMCUY=tb%S+2i48|Znd@qG7%cAwnUcJw-b!I6_TmZdA&QI9KS c*+>BX1HPn0=t=56dH?_b07*qoM6N<$f`k{x#sB~S 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_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); - 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); + + 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;