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;