/*
 * interpolatedOps.h --
 *
 *      Headerfile for interpolatedOps.c, which contains all transfor-
 *      mations that require interpolation. (scale and rotate)
 *
 * Copyright (c) 2016-2017 by Simon Bachmann <simonbachmann@bluewin.ch>
 * All rights reserved.
 *
 * Permission is hereby granted, without written agreement and without
 * license or royalty fees, to use, copy, modify, and distribute this
 * software and its documentation for any purpose, provided that the
 * above copyright notice and the following two paragraphs appear in
 * all copies of this software.
 * 
 */

#ifndef IMGTOOLS_INTERPOLATEDOPS
#define IMGTOOLS_INTERPOLATEDOPS

/*
 * We use macros for the lanczos 2 and 3 filter fucnts
 * in order to avoid one additional function call
 * 
 * Approach does not work, as the filter functs are referenced through a 
 * function pointer array
 */
// #define Imgtools_Lanczos2Filter(X) (Imgtools_GeneralLanczosFilter((X), 2))
// #define Imgtools_Lanczos3Filter(X) (Imgtools_GeneralLanczosFilter((X), 3))

/*
 * === Prototypes ===
 */
int Imgtools_Scale(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
int Imgtools_Rotate(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);

#endif

/*
 * Constants
 */
extern const char *const filterNames[];
