[Gimp-developer] current gimp status and a patch for apply_lens.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



   Hi,

 I'm using current HEAD cvs of the Gimp.
 I've seen that all the filter plugins which use a GTK interface are
crashing. Is this a known bug and is this due to the switch to the
version 2.0 of gtk+? Is there anything I can do to help fixing this?

I've notice that plugins use gtk_signal* fonctions while the gimp
application (under the app directory) use g_signal* ones. This lets me
think the plugins are not yet converted to use gtk+-2.0.

If you can tell me what need to be changed for the migration, I'll be
happy to fix all these plugins.

Apart from this, you'll find a patch for the apply_lens plugins which
improve a little bit its speed attached to this mail. I'm pretty sure
this could be even more optimized.

      Regards,

             DindinX

-- 
dindinx@xxxxxxxxxx
Fishbowl, n.:
	A glass-enclosed isolation cell where newly promoted managers are
	kept for observation.
--- apply_lens.c.orig	Sun Aug 26 19:25:22 2001
+++ apply_lens.c	Sun Aug 26 19:37:27 2001
@@ -210,25 +210,22 @@
   Ellipsoid formula: x^2/a^2 + y^2/b^2 + z^2/c^2 = 1
  */
 static void
-find_projected_pos (gfloat  a,
-		    gfloat  b,
+find_projected_pos (gfloat  a2,
+		    gfloat  b2,
+                    gfloat  c2,
 		    gfloat  x,
 		    gfloat  y,
 		    gfloat *projx,
 		    gfloat *projy)
 {
-  gfloat c;
   gfloat n[3];
   gfloat nxangle, nyangle, theta1, theta2;
   gfloat ri1 = 1.0;
   gfloat ri2 = lvals.refraction;
 
-  /* PARAM */
-  c = MIN (a, b);
-
   n[0] = x;
   n[1] = y;
-  n[2] = sqrt ((1 - x * x / (a * a) - y * y / (b * b)) * (c * c));
+  n[2] = sqrt ((1 - x * x / a2 - y * y / b2) * c2);
 
   nxangle = acos (n[0] / sqrt(n[0] * n[0] + n[2] * n[2]));
   theta1 = G_PI / 2 - nxangle;
@@ -255,7 +252,7 @@
   guchar  *src, *dest;
   gint     i, col;
   gfloat   regionwidth, regionheight, dx, dy, xsqr, ysqr;
-  gfloat   a, b, asqr, bsqr, x, y;
+  gfloat   a, b, c, asqr, bsqr, csqr, x, y;
   glong    pixelpos, pos;
   GimpRGB  background;
   guchar   bgr_red, bgr_blue, bgr_green;
@@ -271,8 +268,11 @@
   regionheight = y2 - y1;
   b = regionheight / 2;
 
+  c = MIN (a, b);
+
   asqr = a * a;
   bsqr = b * b;
+  csqr = c * c;
 
   width = drawable->width;
   height = drawable->height;
@@ -296,7 +296,7 @@
 	  ysqr = dy * dy;
 	  if (ysqr < (bsqr - (bsqr * xsqr) / asqr))
 	    {
-	      find_projected_pos (a, b, dx, dy, &x, &y);
+	      find_projected_pos (asqr, bsqr, csqr, dx, dy, &x, &y);
 	      y = -y;
 	      pos = ((gint) (y + b) * regionwidth + (gint) (x + a)) * bytes;
 

[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux