pike.git
/
src
/
modules
/
Image
/
dct.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/modules/Image/dct.c:13:
#include <math.h> #include <ctype.h> #include "global.h" #include "pike_macros.h" #include "object.h" #include "interpret.h" #include "svalue.h" #include "pike_error.h"
+
#include "module_support.h"
#include "image.h" #define sp Pike_sp extern struct program *image_program; #ifdef THIS #undef THIS /* Needed for NT */ #endif #define THIS ((struct image *)(Pike_fp->current_storage))
-
#define THISOBJ (Pike_fp->current_object)
+
#define testrange(x) MAXIMUM(MINIMUM((x),255),0) static const double c0=0.70710678118654752440; static const double pi=3.14159265358979323846; /* **! method object dct(int newx,int newy) **! Scales the image to a new size. **!
pike.git/src/modules/Image/dct.c:74:
struct object *o; struct image *img; INT32 x,y,u,v; double xsz2,ysz2,enh,xp,yp,dx,dy; double *costbl; rgb_group *pix; if (!THIS->img) Pike_error("Called Image.Image object is not initialized\n");
+
get_all_args("dct", args, "%d%d", &x, &y);
+
x = MAXIMUM(1, x);
+
y = MAXIMUM(1, y);
+
#ifdef DCT_DEBUG fprintf(stderr,"%lu bytes, %lu bytes\n", (unsigned long)(sizeof(rgbd_group)*THIS->xsize*THIS->ysize), (unsigned long)(sizeof(rgb_group)*THIS->xsize*THIS->ysize+1)); #endif area=xalloc(sizeof(rgbd_group)*THIS->xsize*THIS->ysize+1); if (!(costbl=malloc(sizeof(double)*THIS->xsize+1))) { free(area); out_of_memory_error(NULL, -1, 0); } o=clone_object(image_program,0); img=(struct image*)(o->storage); *img=*THIS;
-
+
img->xsize = x;
+
img->ysize = y;
-
if (args>=2
-
&& TYPEOF(sp[-args]) == T_INT
-
&& TYPEOF(sp[1-args]) == T_INT)
-
{
-
img->xsize=MAXIMUM(1,sp[-args].u.integer);
-
img->ysize=MAXIMUM(1,sp[1-args].u.integer);
-
}
-
else {
-
free(area);
-
free(costbl);
-
free_object(o);
-
bad_arg_error("image->dct",sp-args,args,0,"",sp-args,
-
"Bad arguments to image->dct()\n");
-
}
-
+
if (!(img->img=malloc(sizeof(rgb_group)* img->xsize*img->ysize+RGB_VEC_PAD))) { free(area); free(costbl); free_object(o); out_of_memory_error(NULL, -1, 0); } xsz2=THIS->xsize*2.0;