/* Call im_contrast_surface_raw via arg vector.
 */
static int
contrast_surface_raw_vec( im_object *argv )
{
	int half_win_size = *((int *) argv[2]);
	int spacing = *((int *) argv[3]);

	return( im_contrast_surface_raw( argv[0], argv[1], 
		half_win_size, spacing ) );
}
/**
 * im_contrast_surface:
 * @in: input image
 * @out: output image
 * @half_win_size: window radius
 * @spacing: subsample output by this
 *
 * Generate an image where the value of each pixel represents the
 * contrast within a window of half_win_size from the corresponsing
 * point in the input image. Sub-sample by a factor of spacing.
 * 
 * See also: im_spcor(), im_gradcor().
 * 
 * Returns: 0 on success, -1 on error.
 */
int
im_contrast_surface (IMAGE * in, IMAGE * out, int half_win_size, int spacing)
{
  IMAGE *t1 = im_open_local (out, "im_contrast_surface intermediate", "p");

  if (!t1
      || im_embed (in, t1, 1, half_win_size, half_win_size,
		   in->Xsize + DOUBLE (half_win_size),
		   in->Ysize + DOUBLE (half_win_size))
      || im_contrast_surface_raw (t1, out, half_win_size, spacing))

    return -1;

  out->Xoffset = 0;
  out->Yoffset = 0;

  return 0;
}