#include"hensu.h" void scale_ng(LPDWORD image_in,LPDWORD image_out,double zx,double zy) { int x,y,m,n; int xs=iWidth/2; int ys=iHeight/2; for(y=0;y=-xs && m=-ys && n0) m=(int)(x/zx+0.5); else m=(int)(x/zx-0.5); if(y>0) n=(int)(y/zy+0.5); else n=(int)(y/zy-0.5); if(m>=-xs && m=-ys && n0) m=(int)dx; else m=(int)(dx-1); if(dy>0) n=(int)dy; else n=(int)(dy-1); p=dx-m; q=dy-n; if(m>=-xs && m=-ys && n>16) +p*((image_in[xs+m+1+(ys+n )*iWidth] & 0x00ff0000)>>16)) +q*((1-p)*((image_in[xs+m +(ys+n+1)*iWidth] & 0x00ff0000)>>16) +p*((image_in[xs+m+1+(ys+n+1)*iWidth] & 0x00ff0000)>>16))); g=(int)((1-q)*((1-p)*((image_in[xs+m +(ys+n )*iWidth] & 0x0000ff00)>>8) +p*((image_in[xs+m+1+(ys+n )*iWidth] & 0x0000ff00)>>8)) +q*((1-p)*((image_in[xs+m +(ys+n+1)*iWidth] & 0x0000ff00)>>8) +p*((image_in[xs+m+1+(ys+n+1)*iWidth] & 0x0000ff00)>>8))); b=(int)((1-q)*((1-p)*( image_in[xs+m +(ys+n )*iWidth] & 0x000000ff) +p*( image_in[xs+m+1+(ys+n )*iWidth] & 0x000000ff)) +q*((1-p)*( image_in[xs+m +(ys+n+1)*iWidth] & 0x000000ff) +p*( image_in[xs+m+1+(ys+n+1)*iWidth] & 0x000000ff))); } else{r=0; g=0; b=0;} if(r<0) r=0; else if(r>255) r=255; if(g<0) g=0; else if(g>255) g=255; if(b<0) b=0; else if(b>255) b=255; image_out[xs+x+(ys+y)*iWidth]=(r<<16)+(g<<8)+b; } } void shift(LPDWORD image_in,LPDWORD image_out,double px,double py) { int x,y,m,n; double dx,dy,p,q; int xs=iWidth/2; int ys=iHeight/2; int r,g,b; for(y=-ys;y0) m=(int)dx; else m=(int)(dx-1); if(dy>0) n=(int)dy; else n=(int)(dy-1); p=dx-m; q=dy-n; if(m>=-xs && m=-ys && n>16) +p*((image_in[xs+m+1+(ys+n )*iWidth] & 0x00ff0000)>>16)) +q*((1-p)*((image_in[xs+m +(ys+n+1)*iWidth] & 0x00ff0000)>>16) +p*((image_in[xs+m+1+(ys+n+1)*iWidth] & 0x00ff0000)>>16))); g=(int)((1-q)*((1-p)*((image_in[xs+m +(ys+n )*iWidth] & 0x0000ff00)>>8) +p*((image_in[xs+m+1+(ys+n )*iWidth] & 0x0000ff00)>>8)) +q*((1-p)*((image_in[xs+m +(ys+n+1)*iWidth] & 0x0000ff00)>>8) +p*((image_in[xs+m+1+(ys+n+1)*iWidth] & 0x0000ff00)>>8))); b=(int)((1-q)*((1-p)*( image_in[xs+m +(ys+n )*iWidth] & 0x000000ff) +p*( image_in[xs+m+1+(ys+n )*iWidth] & 0x000000ff)) +q*((1-p)*( image_in[xs+m +(ys+n+1)*iWidth] & 0x000000ff) +p*( image_in[xs+m+1+(ys+n+1)*iWidth] & 0x000000ff))); } else{r=0; g=0; b=0;} if(r<0) r=0; else if(r>255) r=255; if(g<0) g=0; else if(g>255) g=255; if(b<0) b=0; else if(b>255) b=255; image_out[xs+x+(ys+y)*iWidth]=(r<<16)+(g<<8)+b; } } #include #define PI 3.141592 void rotation(LPDWORD image_in,LPDWORD image_out,double deg) { int x,y,m,n; double dx,dy,p,q; double rad,c,s; int xs=iWidth/2; int ys=iHeight/2; int r,g,b; rad=deg*PI/180; c=cos(rad); s=sin(rad); for(y=-ys;y0) m=(int)dx; else m=(int)(dx-1); if(dy>0) n=(int)dy; else n=(int)(dy-1); p=dx-m; q=dy-n; if(m>=-xs && m=-ys && n>16) +p*((image_in[xs+m+1+(ys+n )*iWidth] & 0x00ff0000)>>16)) +q*((1-p)*((image_in[xs+m +(ys+n+1)*iWidth] & 0x00ff0000)>>16) +p*((image_in[xs+m+1+(ys+n+1)*iWidth] & 0x00ff0000)>>16))); g=(int)((1-q)*((1-p)*((image_in[xs+m +(ys+n )*iWidth] & 0x0000ff00)>>8) +p*((image_in[xs+m+1+(ys+n )*iWidth] & 0x0000ff00)>>8)) +q*((1-p)*((image_in[xs+m +(ys+n+1)*iWidth] & 0x0000ff00)>>8) +p*((image_in[xs+m+1+(ys+n+1)*iWidth] & 0x0000ff00)>>8))); b=(int)((1-q)*((1-p)*( image_in[xs+m +(ys+n )*iWidth] & 0x000000ff) +p*( image_in[xs+m+1+(ys+n )*iWidth] & 0x000000ff)) +q*((1-p)*( image_in[xs+m +(ys+n+1)*iWidth] & 0x000000ff) +p*( image_in[xs+m+1+(ys+n+1)*iWidth] & 0x000000ff))); } else{r=0; g=0; b=0;} if(r<0) r=0; else if(r>255) r=255; if(g<0) g=0; else if(g>255) g=255; if(b<0) b=0; else if(b>255) b=255; image_out[xs+x+(ys+y)*iWidth]=(r<<16)+(g<<8)+b; } }