Hello,

If the resolution of the background image isn't same as of the screen size, 
currently the image is tiled. Just made it scale.
Patch attached with this mail. 

-Srini.

--- src/moblin-netbook.c.old    2009-06-01 21:17:21.000000000 +0530
+++ src/moblin-netbook.c        2009-06-01 23:26:06.000000000 +0530
@@ -1069,6 +1069,49 @@ moblin_netbook_plugin_init (MoblinNetboo
   priv->info.description = _("Effects for Moblin Netbooks");
 }
 
+/* Code from penge-magic-tile.c */
+static void
+paint_texture (ClutterActor *actor, int aw, int ah)
+{
+  CoglHandle *tex;
+  gint bw, bh;
+  float v;
+  float tx1, tx2, ty1, ty2;
+  ClutterColor col = { 0xff, 0xff, 0xff, 0xff };
+
+  tex = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor));
+
+  bw = cogl_texture_get_width (tex); /* base texture width */
+  bh = cogl_texture_get_height (tex); /* base texture height */
+
+  /* no comment */
+  if ((float)bw/bh < (float)aw/ah)
+  {
+    /* fit width */
+    v = (((float)ah * bw) / ((float)aw * bh)) / 2;
+    tx1 = 0;
+    tx2 = 1;
+    ty1 = (0.5 - v);
+    ty2 = (0.5 + v);
+  } else {
+    /* fit height */
+    v = (((float)aw * bh) / ((float)ah * bw)) / 2;
+    tx1 = (0.5 - v);
+    tx2 = (0.5 + v);
+    ty1 = 0;
+    ty2 = 1;
+  }
+
+  col.alpha = clutter_actor_get_paint_opacity (actor);
+  cogl_set_source_color4ub (col.red, col.green, col.blue, col.alpha);
+  cogl_rectangle (0, 0, aw, ah);
+  cogl_set_source_texture (tex);
+  cogl_rectangle_with_texture_coords (0, 0,
+                                      aw, ah,
+                                      tx1, ty1,
+                                      tx2, ty2);
+}
+
 static void
 on_desktop_pre_paint (ClutterActor *actor, gpointer data)
 {
@@ -1079,35 +1122,14 @@ on_desktop_pre_paint (ClutterActor *acto
   float              t_w, t_h;
   guint              tex_width, tex_height;
   guint              w, h;
+  gint                      screen_width, screen_height;
 
-  clutter_actor_get_size (priv->parallax_tex, &w, &h);
-
-  cogl_translate (priv->parallax_paint_offset - (gint)w/4, 0 , 0);
-
-  cogl_texture
-       = clutter_texture_get_cogl_texture 
(CLUTTER_TEXTURE(priv->parallax_tex));
+  mutter_plugin_query_screen_size (plugin, &screen_width, &screen_height);
 
   if (cogl_texture == COGL_INVALID_HANDLE)
     return;
 
-  col.alpha = clutter_actor_get_paint_opacity (actor);
-  cogl_set_source_color4ub (col.red,
-                            col.green,
-                            col.blue,
-                            col.alpha);
-
-  tex_width = cogl_texture_get_width (cogl_texture);
-  tex_height = cogl_texture_get_height (cogl_texture);
-
-  t_w = (float) w / tex_width;
-  t_h = (float) h / tex_height;
-
-  /* Parent paint translated us into position */
-  cogl_set_source_texture (cogl_texture);
-  cogl_rectangle_with_texture_coords (0, 0,
-                                      w, h,
-                                      0, 0,
-                                      t_w, t_h);
+  paint_texture (actor, screen_width, screen_height);
 
   g_signal_stop_emission_by_name (actor, "paint");
 }
_______________________________________________
Moblin dev Mailing List
[email protected]

To manage or unsubscribe from this mailing list visit:
https://lists.moblin.org/mailman/listinfo/dev or your user account on 
http://moblin.org once logged in.

For more information on the Moblin Developer Mailing lists visit:
http://moblin.org/community/mailing-lists

Reply via email to