irtglc.c
Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 // author: Yuki Furuta <furushchev@jsk.imi.i.u-tokyo.ac.jp>
00025 
00026 #pragma init (register_irtglc)
00027 
00028 #include "eus.h"
00029 
00030 extern pointer ___irtglc();
00031 static register_irtglc()
00032 { add_module_initializer("___irtglc", ___irtglc);}
00033 
00034 #define colsize(p) (intval(p->c.ary.dim[1]))
00035 #define rowsize(p) (intval(p->c.ary.dim[0]))
00036 #define isimage(p) ((isarray(p) && \
00037                      p->c.ary.rank==makeint(2) && \
00038                      (elmtypeof(p->c.ary.entity)==ELM_CHAR || \
00039                       elmtypeof(p->c.ary.entity)==ELM_BYTE)))
00040 
00041 pointer CTRANSPOSE_IMAGE_ROWS(ctx,n,argv)
00042      register context *ctx;
00043      register int n;
00044      register pointer argv[];
00045 /* (height step src-entity &optional dst-entity) */
00046 {
00047   int h,step,y;
00048   char *src, *dst, *buf;
00049   
00050   ckarg2(3,4);
00051   h=ckintval(argv[0]); step=ckintval(argv[1]);
00052   if (isstring(argv[2])) src=argv[2]->c.str.chars;
00053   else src=(char*)bigintval(argv[2]);
00054 
00055   if (n==3) {
00056     buf=malloc(sizeof(char)*step);
00057     for(y = 0; y < h/2; ++y) {
00058       memcpy(buf, src + (h-y-1)*step, step);
00059       memcpy(src + (h-y-1)*step, src + y*step, step);
00060       memcpy(src + y*step, buf, step);
00061     }
00062     free(buf);
00063     return(src);
00064   } else {
00065     if (isstring(argv[3])) dst=argv[3]->c.str.chars;
00066     else dst=(char*)bigintval(argv[3]);
00067     for(y = 0; y < h; ++y) {
00068       memcpy(dst + y*step, src + (h-y-1)*step, step);
00069     }
00070     return(dst);}}
00071 
00072 pointer ___irtglc(ctx,n,argv,env)
00073      register context *ctx;
00074      int n;
00075      pointer argv[];
00076      pointer env;
00077 {
00078   pointer mod=argv[0];
00079   defun(ctx,"CTRANSPOSE-IMAGE-ROWS",mod,CTRANSPOSE_IMAGE_ROWS);
00080 }
00081 


jskeus
Author(s): JSK Alumnis
autogenerated on Thu Jun 6 2019 21:31:35