[Xbubble-commits] xbubble/src rgba.c,1.1,1.2 rgba.h,1.1,1.2

Martin Quinson xbubble-devel@lists.alioth.debian.org
Wed, 27 Apr 2005 14:37:13 +0000


Update of /cvsroot/xbubble/xbubble/src
In directory haydn:/tmp/cvs-serv26665

Modified Files:
	rgba.c rgba.h 
Log Message:
Add a copy_rgba_image, not used yet; rename arguments to circumvent a brain dead system header declaring a global called 'y1'. Yierk.

Index: rgba.h
===================================================================
RCS file: /cvsroot/xbubble/xbubble/src/rgba.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- rgba.h	5 Dec 2004 20:41:01 -0000	1.1
+++ rgba.h	27 Apr 2005 14:37:10 -0000	1.2
@@ -17,8 +17,9 @@
 void delete_rgba_image( RgbaImage ri );
 
 RgbaImage create_rgba_image_from_png_file( const char *filename );
+RgbaImage copy_rgba_image( RgbaImage ri );
 RgbaImage scale_rgba_image( RgbaImage ri, double scalex, double scaley );
-RgbaImage crop_rgba_image( RgbaImage ri, int x1, int y1, int x2, int y2 );
+RgbaImage crop_rgba_image( RgbaImage ri, int x1_arg, int y1_arg, int x2_arg, int y2_arg );
 RgbaImage rotate_rgba_image( RgbaImage ri, double angle, int autocrop );
 
 void create_pixmaps_from_rgba_image( RgbaImage ri, Pixmap *rgb, Pixmap *mask);

Index: rgba.c
===================================================================
RCS file: /cvsroot/xbubble/xbubble/src/rgba.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- rgba.c	5 Dec 2004 20:41:01 -0000	1.1
+++ rgba.c	27 Apr 2005 14:37:10 -0000	1.2
@@ -81,6 +81,12 @@
   return ri;
 }
 
+RgbaImage copy_rgba_image( RgbaImage ri ) {
+  RgbaImage ri2 = new_rgba_image(ri->width, ri->height);
+  memcpy(ri2->data, ri->data, 4*ri->width*ri->height);
+  return ri2;
+}
+
 RgbaImage scale_rgba_image( RgbaImage ri, double scalex, double scaley ) {
   RgbaImage ri2;  
   long r;
@@ -163,7 +169,7 @@
   return ri2;
 }
 
-RgbaImage crop_rgba_image( RgbaImage ri, int x1, int y1, int x2, int y2 ) {
+RgbaImage crop_rgba_image( RgbaImage ri, int x1_arg, int y1_arg, int x2_arg, int y2_arg ) {
   RgbaImage ri2;
   unsigned char *src;
   int row;
@@ -172,23 +178,23 @@
   int new_bytes_per_line;
   int bytes_per_line;
   
-  if (( x1 < 0 )||
-      ( y1 < 0 )||
-      ( x2 >= ri->width )||
-      ( y2 >= ri->height )||
-      ( x1 > x2 )||
-      ( y1 > y2 ))
+  if (( x1_arg < 0 )||
+      ( y1_arg < 0 )||
+      ( x2_arg >= ri->width )||
+      ( y2_arg >= ri->height )||
+      ( x1_arg > x2_arg )||
+      ( y1_arg > y2_arg ))
     fail( "invalid cropping parameters !" );
   
-  new_width = x2 - x1 + 1;
-  new_height = y2 - y1 + 1;
+  new_width = x2_arg - x1_arg + 1;
+  new_height = y2_arg - y1_arg + 1;
   ri2 = new_rgba_image( new_width, new_height );
   ri2->has_alpha = ri->has_alpha; 
-  ri2->hotx = ri->hotx - x1;
-  ri2->hoty = ri->hoty - y1;
+  ri2->hotx = ri->hotx - x1_arg;
+  ri2->hoty = ri->hoty - y1_arg;
   bytes_per_line = ( ri->width << 2 );
   new_bytes_per_line = ( new_width << 2 );
-  src = ri->data + (x1 << 2) + y1*bytes_per_line;
+  src = ri->data + (x1_arg << 2) + y1_arg*bytes_per_line;
   for ( row = 0; row < new_height; row++ )
     memcpy( ri2->data + row*new_bytes_per_line, 
 	    src + row*bytes_per_line, new_bytes_per_line );
@@ -200,7 +206,7 @@
   int x;
   int y;
   int x1;
-  int y1;
+  int Y1;
   int x2;
   int y2; 
   long ucos;
@@ -242,7 +248,7 @@
   kx = ri->hotx*( FRACONE - ucos ) + ri->hoty*usin;
   ky = ri->hoty*( FRACONE - ucos ) - ri->hotx*usin;
   x1 = ri->width;
-  y1 = ri->height;
+  Y1 = ri->height;
   x2 = -1;
   y2 = -1;
   
@@ -283,7 +289,7 @@
 	  /* compute clipping rectangle for autocropping */
 	  if (( autocrop )&&( v > MASK_THRESHOLD )) {
 	    x1 = min(x, x1);
-	    y1 = min(y, y1);
+	    Y1 = min(y, Y1);
 	    x2 = max(x, x2);
 	    y2 = max(y, y2);
 	  }
@@ -296,8 +302,8 @@
     }
   }
   /* autocrop if requested */
-  if (( autocrop )&&( x2 >= x1 )&&( y2 >= y1 )) {
-    ri3 = crop_rgba_image( ri2, x1, y1, x2, y2 );
+  if (( autocrop )&&( x2 >= x1 )&&( y2 >= Y1 )) {
+    ri3 = crop_rgba_image( ri2, x1, Y1, x2, y2 );
     delete_rgba_image(ri2);
     return ri3;
   }