#include <stdio.h> /* za debug printoute */
#include <inttypes.h>
+
+#define TEST_XY_LIMITS
+
//--------------------------------------------------------
//pointer to an interpolating function
typedef int (*interpp)(unsigned char*, int, int, float, float, unsigned char*);
//printf("U=%2d V=%2d ",(int)rintf(x),(int)rintf(y));
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
*v=sl[(int)rintf(x)+(int)rintf(y)*w];
int interpNN_b(unsigned char *sl, int w, int h, float x, float y, unsigned char *v)
{
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
*v=sl[(int)rintf(x)+(int)rintf(y)*w];
int interpNN_b32(unsigned char *sl, int w, int h, float x, float y, unsigned char *v)
{
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
v[3]= sl[(int)rintf(x)*4+(int)rintf(y)*4*w+3];
float alpha = (float) v[3] / 255.0;
float a,b;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)floorf(x); n=(int)floorf(y);
float a,b;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)floorf(x); n=(int)floorf(y);
float p[4],p1[4],p2[4],p3[4],p4[4];
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-2; if (m<0) m=0; if ((m+5)>w) m=w-4;
float alpha = 1.0;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-2; if (m<0) m=0; if ((m+5)>w) m=w-4;
float pp,p[4],wx[4],wy[4],xx;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-2; if (m<0) m=0; if ((m+5)>w) m=w-4;
float pp,p[4],wx[4],wy[4],xx;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-2; if (m<0) m=0; if ((m+5)>w) m=w-4;
float pp,p[4],wx[4],wy[4],xx;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-2; if (m<0) m=0; if ((m+5)>w) m=w-4;
float pp,p[4],wx[4],wy[4],xx;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-2; if (m<0) m=0; if ((m+5)>w) m=w-4;
float pp,p[6],wx[6],wy[6],xx;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-3; if (m<0) m=0; if ((m+7)>w) m=w-6;
float pp,p[6],wx[6],wy[6],xx;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-3; if (m<0) m=0; if ((m+7)>w) m=w-6;
float PI=3.141592654;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-8; if (m<0) m=0; if ((m+17)>w) m=w-16;
float PI=3.141592654;
#ifdef TEST_XY_LIMITS
- if ((x<0)||(x>w)||(y<0)||(y>h)) return -1;
+ if ((x<0)||(x>=(w-1))||(y<0)||(y>=(h-1))) return -1;
#endif
m=(int)ceilf(x)-8; if (m<0) m=0; if ((m+17)>w) m=w-16;