Google

/*
 * Create a cropped and scaled copy of an image
 *
 * Examples:
 *   iw, ih = old_image.width, old_image.height
 *   new_w, new_h = iw - 20, ih - 20
 *   x, y, w, h = 10, 10, iw - 10, ih - 10
 *   new_image = old_image.crop_scaled x, y, w, h, new_w, new_h
 *
 *   iw, ih = old_image.width, old_image.height
 *   new_w, new_h = iw - 20, ih - 20
 *   values = [10, 10, iw - 10, iw - 10, new_w, new_h]
 *   new_image = old_image.crop_scaled values
 *
 *   iw, ih = old_image.width, old_image.height
 *   new_w, new_h = iw - 20, ih - 20
 *   x, y, w, h = 10, 10, iw - 10, ih - 10
 *   new_image = old_image.create_crop_scaled x, y, w, h, new_w, new_h
 *
 *   iw, ih = old_image.width, old_image.height
 *   new_w, new_h = iw - 20, ih - 20
 *   values = [10, 10, iw - 10, iw - 10, new_w, new_h]
 *   new_image = old_image.create_crop_scaled values
 *
 */
static VALUE image_crop_scaled(int argc, VALUE *argv, VALUE self) {