[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;
}