ext/RMagick/rmimage.c in rmagick-1.15.7 vs ext/RMagick/rmimage.c in rmagick-1.15.8
- old
+ new
@@ -1,6 +1,6 @@
-/* $Id: rmimage.c,v 1.192.2.4 2007/03/31 13:45:05 rmagick Exp $ */
+/* $Id: rmimage.c,v 1.192.2.5 2007/07/31 12:25:23 rmagick Exp $ */
/*============================================================================\
| Copyright (C) 2007 by Timothy P. Hunter
| Name: rmimage.c
| Author: Tim Hunter
| Purpose: Image class method definitions for RMagick
@@ -1011,20 +1011,39 @@
switch(gravity)
{
case NorthEastGravity:
case EastGravity:
+ case SouthEastGravity:
*x_offset = (long)(image->columns) - (long)(mark->columns) - *x_offset;
break;
- case SouthWestGravity:
+ case NorthGravity:
case SouthGravity:
- *y_offset = (long)(image->rows) - (long)(mark->rows) - *y_offset;
+ case CenterGravity:
+ case StaticGravity:
+ *x_offset += (long)(image->columns/2) - (long)(mark->columns/2);
break;
+ default:
+ break;
+ }
+ switch(gravity)
+ {
+ case SouthWestGravity:
+ case SouthGravity:
case SouthEastGravity:
- *x_offset = (long)(image->columns) - (long)(mark->columns) - *x_offset;
*y_offset = (long)(image->rows) - (long)(mark->rows) - *y_offset;
break;
+ case EastGravity:
+ case WestGravity:
+ case CenterGravity:
+ case StaticGravity:
+ *y_offset += (long)(image->rows/2) - (long)(mark->rows/2);
+ break;
+ case NorthEastGravity:
+ case NorthGravity:
+ // Don't let these run into the default case
+ break;
default:
Data_Get_Struct(grav, MagickEnum, magick_enum);
rb_warning("gravity type `%s' has no effect", rb_id2name(magick_enum->id));
break;
}
@@ -2777,20 +2796,39 @@
switch(gravity)
{
case NorthEastGravity:
case EastGravity:
- x_offset = (long)(image->columns) - (long)(comp_image->columns) - x_offset;
+ case SouthEastGravity:
+ x_offset = ((long)(image->columns) - (long)(comp_image->columns)) - x_offset;
break;
- case SouthWestGravity:
+ case NorthGravity:
case SouthGravity:
- y_offset = (long)(image->rows) - (long)(comp_image->rows) - y_offset;
+ case CenterGravity:
+ case StaticGravity:
+ x_offset += (long)(image->columns/2) - (long)(comp_image->columns/2);
break;
+ default:
+ break;
+ }
+ switch(gravity)
+ {
+ case SouthWestGravity:
+ case SouthGravity:
case SouthEastGravity:
- x_offset = (long)(image->columns) - (long)(comp_image->columns) - x_offset;
- y_offset = (long)(image->rows) - (long)(comp_image->rows) - y_offset;
+ y_offset = ((long)(image->rows) - (long)(comp_image->rows)) - y_offset;
break;
+ case EastGravity:
+ case WestGravity:
+ case CenterGravity:
+ case StaticGravity:
+ y_offset += (long)(image->rows/2) - (long)(comp_image->rows/2);
+ break;
+ case NorthEastGravity:
+ case NorthGravity:
+ // Don't let these run into the default case
+ break;
default:
Data_Get_Struct(argv[1], MagickEnum, magick_enum);
rb_warning("gravity type `%s' has no effect", rb_id2name(magick_enum->id));
break;
}
@@ -10741,18 +10779,37 @@
switch(gravity)
{
case NorthEastGravity:
case EastGravity:
+ case SouthEastGravity:
nx = image->columns - columns - nx;
break;
- case SouthWestGravity:
+ case NorthGravity:
case SouthGravity:
- ny = image->rows - rows - ny;
+ case CenterGravity:
+ case StaticGravity:
+ nx += image->columns/2 - columns/2;
break;
+ default:
+ break;
+ }
+ switch(gravity)
+ {
+ case SouthWestGravity:
+ case SouthGravity:
case SouthEastGravity:
- nx = image->columns - columns - nx;
ny = image->rows - rows - ny;
+ break;
+ case EastGravity:
+ case WestGravity:
+ case CenterGravity:
+ case StaticGravity:
+ ny += image->rows/2 - rows/2;
+ break;
+ case NorthEastGravity:
+ case NorthGravity:
+ // Don't let these run into the default case
break;
default:
Data_Get_Struct(argv[0], MagickEnum, magick_enum);
rb_warning("gravity type `%s' has no effect", rb_id2name(magick_enum->id));
break;