home *** CD-ROM | disk | FTP | other *** search
/ World of Graphics / WOGRAPH.BIN / 057.EXAMPLE.C < prev    next >
C/C++ Source or Header  |  1992-06-03  |  2KB  |  82 lines

  1. /*
  2.   This Turbo C Code example is an example of a program that simply
  3.   loads the SVGA256 device driver, goes into graphics mode, loads an
  4.   image from disk (one with a palette), and displays it.
  5.  
  6.   Function Load256Image will load an image file and place it in the variable
  7.   pointer image.  If you are a registered user feel free to use Load256Image
  8.   in your programs.
  9.  
  10.   To run this demonstration, you will need to have Turbo C as well as the
  11.   SVGA256.BGI device driver.  This driver is available as shareware,
  12.   through Jordan Hargave (see ReadMe.Doc), but it is also distributed with
  13.   256 Draw.  You have to have a VGA monitor for this example to run, however,
  14.   Super VGA is not at all required. Please read the note about device
  15.   drivers in the README.DOC file.
  16. */
  17.  
  18. #include <graphics.h>
  19. #include <stdio.h>
  20. #include <alloc.h>
  21. #include <io.h>
  22. #include <fcntl.h>
  23. #include <dos.h>
  24.  
  25. #define VGA320X200 0
  26.  
  27. int huge DetectVGA256(void);
  28. unsigned char *load256image(char *filename);
  29.  
  30. void main(void)
  31. {
  32.     int gd=DETECT, gm, i;
  33.     unsigned char *image;
  34.  
  35.     installuserdriver("SVGA256",DetectVGA256);
  36.     initgraph(&gd,&gm,"");
  37.  
  38.     image=load256image("256demo.vga");
  39.  
  40.     putimage(0,0,image,COPY_PUT);
  41.  
  42.     getch();
  43.     closegraph();
  44.     free(image);
  45. }
  46.  
  47. int huge DetectVGA256(void)
  48. {
  49.     return(0);
  50. }
  51.  
  52. unsigned char *load256image(char *filename)
  53. {
  54.     int fp, color;
  55.     unsigned int xsize, ysize, vgasize;
  56.     long size;
  57.     unsigned char *image;
  58.  
  59.     fp=open(filename, O_RDONLY | O_BINARY);
  60.     size=filelength(fp);
  61.     image=malloc(size);
  62.     read(fp,image,size);
  63.     close(fp);
  64.  
  65.     xsize=*(image+0)+*(image+1)*256;
  66.     ysize=*(image+2)+*(image+3)*256;
  67.     vgasize=imagesize(0,0,xsize,ysize);
  68.  
  69.     if (size > vgasize)
  70.     {
  71.         for (color=0; color < 256; color++)
  72.         {
  73.             outportb(0x3C8,color);
  74.             outportb(0x3C9,*(image+vgasize+(color*3)+0));
  75.             outportb(0x3C9,*(image+vgasize+(color*3)+1));
  76.             outportb(0x3C9,*(image+vgasize+(color*3)+2));
  77.         }
  78.         image=realloc(image,vgasize);
  79.     }
  80.     return(image);
  81. }
  82.