codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
// 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; } }
Private
[
?
]
Run code
Submit