// cc -O new_view.c viewerlib.c -lX11 -D_FORTIFY_SOURCE=0
#include"viewer.h"
void ImageRead(Image*im,char*name){
FILE*fp=fopen(name,"rb");
fscanf(fp,"%*s%d%d%*s%*c",&im->W,&im->H);
im->data=(unsigned char*)malloc(im->W*im->H*3);
fread(im->data,1,im->W*im->H*3,fp);
fclose(fp);
}
void ImageAlloc(Image*dst,Image*src){
dst->W=src->W;
dst->H=src->H;
dst->data=(unsigned char*)malloc(src->W*src->H*3);
}
void Process(Image*dst,Image*src){
#define DIST2(x,y,xx,yy) (x-xx)*(x-xx)+(y-yy)*(y-yy)
int x,y;
printf("Process\n");
for(y=0;y<dst->H;y++)
for(x=0;x<dst->W;x++){
dst->data[(y*dst->W+x)*3+0]=src->data[(y*src->W+x)*3+0];
dst->data[(y*dst->W+x)*3+1]=src->data[(y*src->W+x)*3+1];
dst->data[(y*dst->W+x)*3+2]=src->data[(y*src->W+x)*3+2];
}
}
main(){
Viewer vw;
Image dst,src;
ImageRead(&src,"input.jpg");
ImageAlloc(&dst,&src); // src と同じ大きさの領域を確保し,dst のメンバを設定する.
Process(&dst,&src); // src をもとにして,dst を作成する関数を呼ぶ.
//printf("ViewerInit\n");
ViewerInit(&vw,dst.W,dst.H);
//printf("ViewerImageWrite\n");
ViewerImageWrite(&vw,&dst);
//printf("ViewerEvent\n");
while(1){
int ev[4];
ViewerEvent(&vw,ev);
if(ev[0]=='q' || ev[0]==248) return 0;
}
}