home *** CD-ROM | disk | FTP | other *** search
- /* PPMView v0.4 (31 October 1995) - ©1995 by WK-Artworks */
- /*
-
- wkmc is a simple true-color-display using a 8-bit-screen,
- the idea behind this came from Stefan Kost and Smack/IFT
-
- NOTE: I think it's fast beeing pure C !
-
-
- Advantages (compared against MultiColor):
- -terrible high speed
- -picture-size and -aspect isn't changed
- -no ugly diagonal-dithering
- -no flickering (uses Multiscan)
- -uses all 256 registers (not only 255)
- -every color-channel (RGB) has a diffent number of
- shades ("eye-sensitive")
- */
-
- #include "wkmc.h"
-
- int main(int argc,char **argv) {
- FILE *fh;
- char hs[64];
- UBYTE *bl[8];
- int width,height,i,qt=0,bn;
- UBYTE *line=NULL;
- struct IntuiMessage *imsg;
- ULONG iclass;
- USHORT icode;
- printf("\n PPMView v0.4 - ©1995 by WK-Artworks/IFT\n");
- printf("-----------------------------------------\n");
- if(argc<2) {printf(" Usage: ppmview <ppm-file> [displayID]\n");return(1);}
- fh=fopen(argv[1],"rb");
- if(fh==NULL) return(1);
- if(argc>2) displayID=strtol(argv[2],NULL,16);
- fscanf(fh,"%s",hs);
-
- fscanf(fh,"%s",hs);
- width=strtol(hs,NULL,10);
- fscanf(fh,"%s",hs);
- height=strtol(hs,NULL,10);
- fscanf(fh,"%s",hs);
- #ifdef __GNUC__
- fread(&i,1,1,fh);
- #endif
- printf(" Resolution : %dx%d\n",width,height);
- if(init(width,height)==0) {
-
- /* do it */
- bn=theScreen->BitMap.BytesPerRow;
-
- for(i=0;i<8;i++) {bl[i]=malloc(bn);if(bl[i]==NULL) return(1);}
- line=(UBYTE*)malloc(3*width);
- if(line==NULL) {fclose(fh);return(1);}
- time(&tm1);
- for(i=0;i<height;i++) {
- fread(line,1,3*width,fh);
- SetLineS(i,line,width,bn,bl);
-
- imsg=(struct IntuiMessage*)GetMsg(theWindow->UserPort);
- if(imsg!=NULL) {
- iclass=imsg->Class;
- icode=imsg->Code;
- ReplyMsg((struct Message*)imsg);
- switch(iclass) {
- case IDCMP_VANILLAKEY:switch(icode) {
- case ' ':free(line);for(i=0;i<8;i++) free(bl[i]);fclose(fh); cleanup();return(0);break;
- case 27:free(line);for(i=0;i<8;i++) free(bl[i]);fclose(fh); cleanup();return(0);break;
- }
- }
- }
-
-
- }
-
- time(&tm2);
- tm=difftime(tm2,tm1);
- printf(" Decode-time: %lds\n",(ULONG)tm);
- free(line);
- for(i=0;i<8;i++) free(bl[i]);
- fclose(fh);
-
- /* wait */
- do {
- WaitPort(theWindow->UserPort);
- do {
- imsg=(struct IntuiMessage*)GetMsg(theWindow->UserPort);
- if(imsg!=NULL) {
- iclass=imsg->Class;
- icode=imsg->Code;
- ReplyMsg((struct Message*)imsg);
- switch(iclass) {
- case IDCMP_VANILLAKEY:switch(icode) {
- case ' ':qt=1;break;
- case 27:qt=1;break;
- }
- }
- }
- } while(imsg!=NULL);
- } while(qt==0);
- /* clean up*/
- cleanup();
- }
- return(0);
- printf("\n");
- }
-
-
-