Package: desktop-base Version: 6.0.5 Severity: minor Tags: patch The spacefun script for plymouth is missing the Window.GetX() and Window.GetY() adjustements for each sprite. If mutliple monitors are in use, then all sprites are shifted left the value of Window.GetX() and top the value of GetY().
Please find attached a patched version of the spacefun.script using the Window.GetX() and Window.GetY() methods to center the output when mutliptle monitors are in use. The patch also disables the downscaling of the background image. If downscaling is allowed, then the bigger screen resolutions won't be filled up completely. All output on these resolutions will have a black border. If this behaviour is not accaptable then please remove the following changes in the patch. --- desktop-base-6.0.5/plymouth/spacefun/spacefun.script 2010-12-12 23:32:05.000000000 +0100 +++ desktop-base-6.0.5_twinmode/plymouth/spacefun/spacefun.script 2011-02-13 17:27:37.118332543 +0100 @@ -34,13 +34,15 @@ if (screen_ratio > bg_image_ratio) bg_scale_factor = Window.GetWidth() / bg_image.GetWidth(); else bg_scale_factor = Window.GetHeight() / bg_image.GetHeight(); +if (bg_scale_factor < 1) + bg_scale_factor = 1; scaled_bg_image = bg_image.Scale(bg_image.GetWidth() * bg_scale_factor, bg_image.GetHeight() * bg_scale_factor); A better fix would be to implement the function Window.GetMaxWidth() and Window.GetMaxHeight() in plymouth and use these for scaling. -- System Information: Debian Release: 6.0 APT prefers stable APT policy: (500, 'stable') Architecture: i386 (i686) Kernel: Linux 2.6.32-5-686 (SMP w/1 CPU core) Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages desktop-base depends on: ii librsvg2-common 2.26.3-1 SAX-based renderer library for SVG desktop-base recommends no packages. Versions of packages desktop-base suggests: ii gnome 1:2.30+7 The GNOME Desktop Environment, wit -- no debconf information *** /home/adris/todo/desktop-base-6.0.5_twinmode.patch diff -rupN desktop-base-6.0.5/plymouth/spacefun/spacefun.script desktop-base-6.0.5_twinmode/plymouth/spacefun/spacefun.script --- desktop-base-6.0.5/plymouth/spacefun/spacefun.script 2010-12-12 23:32:05.000000000 +0100 +++ desktop-base-6.0.5_twinmode/plymouth/spacefun/spacefun.script 2011-02-13 17:27:37.118332543 +0100 @@ -34,13 +34,15 @@ if (screen_ratio > bg_image_ratio) bg_scale_factor = Window.GetWidth() / bg_image.GetWidth(); else bg_scale_factor = Window.GetHeight() / bg_image.GetHeight(); +if (bg_scale_factor < 1) + bg_scale_factor = 1; scaled_bg_image = bg_image.Scale(bg_image.GetWidth() * bg_scale_factor, bg_image.GetHeight() * bg_scale_factor); # Display background bg_sprite = Sprite(scaled_bg_image); -bg_sprite.SetPosition(Window.GetWidth() / 2 - scaled_bg_image.GetWidth() / 2, - Window.GetHeight() / 2 - scaled_bg_image.GetHeight() / 2, +bg_sprite.SetPosition(Window.GetX() + Window.GetWidth() / 2 - scaled_bg_image.GetWidth() / 2, + Window.GetY() + Window.GetHeight() / 2 - scaled_bg_image.GetHeight() / 2, -10000); #------------------------------- Earth --------------------------------------------- @@ -56,8 +58,8 @@ for (i = 0; i < 5; i++) earth_glow_index = 0; earth_sprite = Sprite(earth_images[earth_glow_index]); earth_to_edge = Math.Min(Window.GetWidth(), Window.GetHeight()) * 0.07; -earth_x = earth_to_edge; -earth_y = Window.GetHeight() - earth_to_edge - earth_images[0].GetHeight(); +earth_x = Window.GetX() + earth_to_edge; +earth_y = Window.GetY() + Window.GetHeight() - earth_to_edge - earth_images[0].GetHeight(); earth_sprite.SetPosition(earth_x, earth_y, -10); #------------------------------- Planet -------------------------------------------- @@ -69,8 +71,8 @@ planet_image = planet_image.Scale(planet planet_sprite = Sprite(planet_image); planet_to_edge_y = Window.GetHeight() * 0.14; planet_to_edge_x = Window.GetWidth() * 0.08; -planet_x = Window.GetWidth() - planet_to_edge_x - planet_image.GetWidth(); -planet_y = planet_to_edge_y; +planet_x = Window.GetX() + Window.GetWidth() - planet_to_edge_x - planet_image.GetWidth(); +planet_y = Window.GetY() + planet_to_edge_y; planet_sprite.SetPosition(planet_x, planet_y, -10); #------------------------------- Logo ---------------------------------------------- @@ -81,8 +83,8 @@ logo_image = logo_image.Scale(logo_image logo_image.GetHeight() * logo_scale_factor); logo_sprite = Sprite(logo_image); logo_to_edge = Window.GetHeight() * 0.1; -logo_sprite.SetPosition(Window.GetWidth() - logo_to_edge - logo_image.GetWidth(), - Window.GetHeight() - logo_to_edge - logo_image.GetHeight(), +logo_sprite.SetPosition(Window.GetX() + Window.GetWidth() - logo_to_edge - logo_image.GetWidth(), + Window.GetY() + Window.GetHeight() - logo_to_edge - logo_image.GetHeight(), -10); #------------------------------- Swirl galaxies ------------------------------------ @@ -125,13 +127,13 @@ for (i = 0; i < 3; i++) swirl_image = swirl_image.Rotate(swirls[i].angle); swirl_sprites[i] = Sprite(); if (swirls[i].x >= 0) - swirl_sprites[i].SetX(Window.GetWidth() * swirls[i].x); + swirl_sprites[i].SetX(Window.GetX() + Window.GetWidth() * swirls[i].x); else - swirl_sprites[i].SetX(Window.GetWidth() * (1 + swirls[i].x) - swirl_image.GetWidth()); + swirl_sprites[i].SetX(Window.GetX() + Window.GetWidth() * (1 + swirls[i].x) - swirl_image.GetWidth()); if (swirls[i].y >= 0) - swirl_sprites[i].SetY(Window.GetHeight() * swirls[i].y); + swirl_sprites[i].SetY(Window.GetY() + Window.GetHeight() * swirls[i].y); else - swirl_sprites[i].SetY(Window.GetHeight() * (1 + swirls[i].y) - swirl_image.GetHeight()); + swirl_sprites[i].SetY(Window.GetY() + Window.GetHeight() * (1 + swirls[i].y) - swirl_image.GetHeight()); swirl_sprites[i].SetImage(swirl_image); } @@ -192,9 +194,9 @@ for (i = 0; i < NUM_STARS; i++) # Randomize position, we accept that stars may be half out of the viewport # in each direction - star_x = Math.Random() * (Window.GetWidth() + transformed_image.GetWidth()) + star_x = Window.GetX() + Math.Random() * (Window.GetWidth() + transformed_image.GetWidth()) - transformed_image.GetWidth() / 2; - star_y = Math.Random() * (Window.GetHeight() + transformed_image.GetHeight()) + star_y = Window.GetY() + Math.Random() * (Window.GetHeight() + transformed_image.GetHeight()) - transformed_image.GetHeight() / 2; stars[i].SetPosition(star_x, star_y, -20); # Stars go behind other elements. } @@ -214,8 +216,8 @@ rocket_sprite = Sprite(); # Rocket trajectory # Take a point somwhere in the middle to compute the parabola -middle_x = Window.GetWidth() * 0.42; -middle_y = Window.GetHeight() * 0.42; +middle_x = Window.GetX() + Window.GetWidth() * 0.42; +middle_y = Window.GetY() + Window.GetHeight() * 0.42; # Parabole coeffs so that y = a.x^2 + b.x + c for the earth, planet and middle points # Use the earth and planet centers instead of top left corner earth_cx = earth_x + earth_images[0].GetWidth()/2; @@ -314,8 +316,8 @@ fun dialog_setup() entry.image = Image("entry.png"); box.sprite = Sprite(box.image); - box.x = Window.GetWidth() / 2 - box.image.GetWidth ()/2; - box.y = Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; box.z = 10000; box.sprite.SetPosition(box.x, box.y, box.z); @@ -456,7 +458,7 @@ fun message_callback (text) } next_msg_image = Image.Text(text, 1, 1, 1, 1); msg_sprites[next_msg_idx] = Sprite(); - msg_sprites[next_msg_idx].SetPosition(10, next_msg_y, 10000); + msg_sprites[next_msg_idx].SetPosition(Window.GetX() + 10, Window.GetY() + next_msg_y, 10000); msg_sprites[next_msg_idx].SetImage(next_msg_image); next_msg_idx = (next_msg_idx + 1) % MAX_MSG_DISPLAYED;
diff -rupN desktop-base-6.0.5/plymouth/spacefun/spacefun.script desktop-base-6.0.5_twinmode/plymouth/spacefun/spacefun.script --- desktop-base-6.0.5/plymouth/spacefun/spacefun.script 2010-12-12 23:32:05.000000000 +0100 +++ desktop-base-6.0.5_twinmode/plymouth/spacefun/spacefun.script 2011-02-13 17:27:37.118332543 +0100 @@ -34,13 +34,15 @@ if (screen_ratio > bg_image_ratio) bg_scale_factor = Window.GetWidth() / bg_image.GetWidth(); else bg_scale_factor = Window.GetHeight() / bg_image.GetHeight(); +if (bg_scale_factor < 1) + bg_scale_factor = 1; scaled_bg_image = bg_image.Scale(bg_image.GetWidth() * bg_scale_factor, bg_image.GetHeight() * bg_scale_factor); # Display background bg_sprite = Sprite(scaled_bg_image); -bg_sprite.SetPosition(Window.GetWidth() / 2 - scaled_bg_image.GetWidth() / 2, - Window.GetHeight() / 2 - scaled_bg_image.GetHeight() / 2, +bg_sprite.SetPosition(Window.GetX() + Window.GetWidth() / 2 - scaled_bg_image.GetWidth() / 2, + Window.GetY() + Window.GetHeight() / 2 - scaled_bg_image.GetHeight() / 2, -10000); #------------------------------- Earth --------------------------------------------- @@ -56,8 +58,8 @@ for (i = 0; i < 5; i++) earth_glow_index = 0; earth_sprite = Sprite(earth_images[earth_glow_index]); earth_to_edge = Math.Min(Window.GetWidth(), Window.GetHeight()) * 0.07; -earth_x = earth_to_edge; -earth_y = Window.GetHeight() - earth_to_edge - earth_images[0].GetHeight(); +earth_x = Window.GetX() + earth_to_edge; +earth_y = Window.GetY() + Window.GetHeight() - earth_to_edge - earth_images[0].GetHeight(); earth_sprite.SetPosition(earth_x, earth_y, -10); #------------------------------- Planet -------------------------------------------- @@ -69,8 +71,8 @@ planet_image = planet_image.Scale(planet planet_sprite = Sprite(planet_image); planet_to_edge_y = Window.GetHeight() * 0.14; planet_to_edge_x = Window.GetWidth() * 0.08; -planet_x = Window.GetWidth() - planet_to_edge_x - planet_image.GetWidth(); -planet_y = planet_to_edge_y; +planet_x = Window.GetX() + Window.GetWidth() - planet_to_edge_x - planet_image.GetWidth(); +planet_y = Window.GetY() + planet_to_edge_y; planet_sprite.SetPosition(planet_x, planet_y, -10); #------------------------------- Logo ---------------------------------------------- @@ -81,8 +83,8 @@ logo_image = logo_image.Scale(logo_image logo_image.GetHeight() * logo_scale_factor); logo_sprite = Sprite(logo_image); logo_to_edge = Window.GetHeight() * 0.1; -logo_sprite.SetPosition(Window.GetWidth() - logo_to_edge - logo_image.GetWidth(), - Window.GetHeight() - logo_to_edge - logo_image.GetHeight(), +logo_sprite.SetPosition(Window.GetX() + Window.GetWidth() - logo_to_edge - logo_image.GetWidth(), + Window.GetY() + Window.GetHeight() - logo_to_edge - logo_image.GetHeight(), -10); #------------------------------- Swirl galaxies ------------------------------------ @@ -125,13 +127,13 @@ for (i = 0; i < 3; i++) swirl_image = swirl_image.Rotate(swirls[i].angle); swirl_sprites[i] = Sprite(); if (swirls[i].x >= 0) - swirl_sprites[i].SetX(Window.GetWidth() * swirls[i].x); + swirl_sprites[i].SetX(Window.GetX() + Window.GetWidth() * swirls[i].x); else - swirl_sprites[i].SetX(Window.GetWidth() * (1 + swirls[i].x) - swirl_image.GetWidth()); + swirl_sprites[i].SetX(Window.GetX() + Window.GetWidth() * (1 + swirls[i].x) - swirl_image.GetWidth()); if (swirls[i].y >= 0) - swirl_sprites[i].SetY(Window.GetHeight() * swirls[i].y); + swirl_sprites[i].SetY(Window.GetY() + Window.GetHeight() * swirls[i].y); else - swirl_sprites[i].SetY(Window.GetHeight() * (1 + swirls[i].y) - swirl_image.GetHeight()); + swirl_sprites[i].SetY(Window.GetY() + Window.GetHeight() * (1 + swirls[i].y) - swirl_image.GetHeight()); swirl_sprites[i].SetImage(swirl_image); } @@ -192,9 +194,9 @@ for (i = 0; i < NUM_STARS; i++) # Randomize position, we accept that stars may be half out of the viewport # in each direction - star_x = Math.Random() * (Window.GetWidth() + transformed_image.GetWidth()) + star_x = Window.GetX() + Math.Random() * (Window.GetWidth() + transformed_image.GetWidth()) - transformed_image.GetWidth() / 2; - star_y = Math.Random() * (Window.GetHeight() + transformed_image.GetHeight()) + star_y = Window.GetY() + Math.Random() * (Window.GetHeight() + transformed_image.GetHeight()) - transformed_image.GetHeight() / 2; stars[i].SetPosition(star_x, star_y, -20); # Stars go behind other elements. } @@ -214,8 +216,8 @@ rocket_sprite = Sprite(); # Rocket trajectory # Take a point somwhere in the middle to compute the parabola -middle_x = Window.GetWidth() * 0.42; -middle_y = Window.GetHeight() * 0.42; +middle_x = Window.GetX() + Window.GetWidth() * 0.42; +middle_y = Window.GetY() + Window.GetHeight() * 0.42; # Parabole coeffs so that y = a.x^2 + b.x + c for the earth, planet and middle points # Use the earth and planet centers instead of top left corner earth_cx = earth_x + earth_images[0].GetWidth()/2; @@ -314,8 +316,8 @@ fun dialog_setup() entry.image = Image("entry.png"); box.sprite = Sprite(box.image); - box.x = Window.GetWidth() / 2 - box.image.GetWidth ()/2; - box.y = Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; box.z = 10000; box.sprite.SetPosition(box.x, box.y, box.z); @@ -456,7 +458,7 @@ fun message_callback (text) } next_msg_image = Image.Text(text, 1, 1, 1, 1); msg_sprites[next_msg_idx] = Sprite(); - msg_sprites[next_msg_idx].SetPosition(10, next_msg_y, 10000); + msg_sprites[next_msg_idx].SetPosition(Window.GetX() + 10, Window.GetY() + next_msg_y, 10000); msg_sprites[next_msg_idx].SetImage(next_msg_image); next_msg_idx = (next_msg_idx + 1) % MAX_MSG_DISPLAYED;