pike.git / src / modules / Image / dct.c

version» Context lines:

pike.git/src/modules/Image/dct.c:7:   /*   **! module Image   **! class Image   */      #include "global.h"      #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.   **!   **! Method for scaling is rather complex;   **! the image is transformed via a cosine transform,   **! and then resampled back.
pike.git/src/modules/Image/dct.c:71:   void image_dct(INT32 args)   {    rgbd_group *area,*val;    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"); +  CHECK_INIT();    -  +  get_all_args(NULL, 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); -  resource_error(NULL,0,0,"memory",0,"Out of memory.\n"); +  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); -  resource_error(NULL,0,0,"memory",0,"Out of memory.\n"); +  out_of_memory_error(NULL, -1, 0);    }       xsz2=THIS->xsize*2.0;    ysz2=THIS->ysize*2.0;       enh=(8.0/THIS->xsize)*(8.0/THIS->ysize);       for (u=0; u<THIS->xsize; u++)    {    double d,z0;