home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / w / wgt3_ex.zip / 256CON.C next >
C/C++ Source or Header  |  1992-07-30  |  4KB  |  205 lines

  1. #include <dos.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4. #include "wgt.h"
  5. #include "wgtmenu.h"
  6. #include "filesel.h"
  7.  
  8.  
  9. color pal[256];    // our palette
  10. char *menubar[10]={" QUIT  "," FILE "," MODE ",NULL,NULL,NULL,NULL,NULL,NULL,NULL};
  11. int menuchoice; // result from menus
  12. wgtfont little; // smaller font with special characters 
  13. int picmode=3;    // mode for picture (PCX,PAK,BLK)
  14. char *picturename; // filename of picture for loading and saving
  15.            // used with file selector
  16. char *palname;       // filename of palette
  17. block screen2;       // a virtual screen to load pictures onto
  18.  
  19.  
  20. void changemode(int);
  21. void loadapicture(void);
  22. void saveapicture(void);
  23. void dopalette(void);
  24.  
  25. void main(void)
  26. {
  27. vga256();
  28.  
  29. screen2=wnewblock(0,0,319,199);
  30. little=wloadfont("medium.wfn");
  31. wreadpalette(0,255,&pal);
  32. wsetrgb(1,63,63,63,&pal);
  33. wsetrgb(253,50,50,50,&pal);
  34. wsetrgb(254,40,40,40,&pal);
  35. wsetrgb(255,30,30,30,&pal);
  36. wsetpalette(0,255,&pal);
  37.  
  38. menubarcolor=254;
  39. menubartextcolor=1;
  40. bordercolor=255;
  41. highlightcolor=144;
  42.  
  43. menufont=little;
  44.  
  45. dropdown[0].choice[0]=" QUIT ";
  46.  
  47. dropdown[1].choice[0]="LOAD A PICTURE";
  48. dropdown[1].choice[1]="--------------";
  49. dropdown[1].choice[2]="SAVE A PICTURE";
  50. dropdown[1].choice[3]="--------------";
  51. dropdown[1].choice[4]="LOAD A PALETTE";
  52. dropdown[1].choice[5]="--------------";
  53. dropdown[1].choice[6]="SAVE A PALETTE";
  54.  
  55. dropdown[2].choice[0]=" PCX \x09";
  56. dropdown[2].choice[1]=" PAK \x09";
  57. dropdown[2].choice[2]=" BLK \x0A";
  58.  
  59. initdropdowns();
  60.  
  61. showmenubar();
  62.  
  63.   mon();
  64.  
  65. do { menuchoice=checkmenu();
  66.  
  67.  switch (menuchoice)
  68.    {
  69.    case 20:
  70.    case 21:
  71.    case 22: changemode(menuchoice-19); break;
  72.    case 10: loadapicture(); break;
  73.    case 12: saveapicture(); break;
  74.    case 14: dopalette(); break;
  75.  
  76.   }
  77.  } while (menuchoice !=0);    // quit
  78.  
  79.  
  80. removemenubar();
  81. free(little);            // free the font
  82. wfreeblock(screen2);
  83. textmode(C80);
  84. }
  85.  
  86.  
  87. void changemode(int cmode)
  88. {
  89. // make all boxes empty
  90. dropdown[2].choice[0]=" PCX \x09";
  91. dropdown[2].choice[1]=" PAK \x09";
  92. dropdown[2].choice[2]=" BLK \x09";
  93.  
  94.  
  95. // and put a check mark in the right one
  96. if (cmode==1)
  97. dropdown[2].choice[0]=" PCX \x0A";
  98. else if (cmode==2)
  99. dropdown[2].choice[1]=" PAK \x0A";
  100. else if (cmode==3)
  101. dropdown[2].choice[2]=" BLK \x0A";
  102.  
  103. picmode=cmode;
  104. }
  105.  
  106.  
  107. void loadapicture()
  108. {
  109. block tempblock=NULL;
  110.  
  111.    moff();
  112. removemenubar();
  113.  
  114. if (picmode==1)
  115.     picturename=wfileselector("Load a PCX","*.pcx");
  116. else if (picmode==2)
  117.     picturename=wfileselector("Load a PAK","*.pak");
  118. else if (picmode==3)
  119.     picturename=wfileselector("Load a BLK","*.blk");
  120.  
  121.  
  122. if (picturename !=NULL)    // if you selected something
  123.     {
  124.   moff();
  125.     wsetscreen(screen2);
  126.     wcls(0);            // clear the virtual screen
  127.     if (picmode==1)
  128.        {
  129.        wnormscreen();
  130.        wloadpcx256(picturename,&pal);
  131.        wsetscreen(screen2);
  132.        wcopyscreen(0,0,319,199,NULL,0,0,screen2);
  133.     wsetrgb(1,63,63,63,&pal);
  134.     wsetrgb(253,50,50,50,&pal);
  135.     wsetrgb(254,40,40,40,&pal);
  136.     wsetrgb(255,30,30,30,&pal);
  137.     wsetpalette(0,255,&pal);
  138.       }
  139.     else if (picmode==2)
  140.        {
  141.        tempblock=wloadpak(picturename);
  142.        wputblock(0,0,tempblock,0);
  143.        }
  144.     else if (picmode==3)
  145.        {
  146.        tempblock=wloadblock(picturename);
  147.        wputblock(0,0,tempblock,0);
  148.        }
  149.  
  150.     if (tempblock !=NULL)
  151.        wfreeblock(tempblock);
  152.     }
  153. wnormscreen();
  154. wputblock(0,0,screen2,0);
  155. showmenubar();
  156.    mon();
  157. }
  158.  
  159. void saveapicture()
  160. {
  161. removemenubar();
  162.  
  163.    moff();
  164. if (picmode==1)
  165.     picturename=wfileselector("Save a PCX","*.pcx");
  166. else if (picmode==2)
  167.     picturename=wfileselector("Save a PAK","*.pak");
  168. else if (picmode==3)
  169.     picturename=wfileselector("Save a BLK","*.blk");
  170.  
  171.  
  172. if (picturename !=NULL)    // if you selected something
  173.     {
  174.     moff();
  175.     wsetscreen(screen2);
  176.     wnormscreen();
  177.     wputblock(0,0,screen2,0);
  178.     if (picmode==1)
  179.        wsavepcx256(picturename,&pal);
  180.     else if (picmode==2)
  181.        wsavepak(picturename,screen2);
  182.     else if (picmode==3)
  183.        wsaveblock(picturename,screen2);
  184.     }
  185. showmenubar();
  186.    mon();
  187. }
  188.  
  189.  
  190. void dopalette(void)
  191. {
  192.  
  193. moff();
  194. removemenubar();
  195.  
  196. palname=wfileselector("Load a palette","*.pal");
  197. if (palname !=NULL)
  198. moff();
  199. wloadpalette(palname,&pal);
  200. wsetpalette(0,255,&pal);
  201. wnormscreen();
  202. wputblock(0,0,screen2,0);
  203. showmenubar();
  204.    mon();
  205. }