home *** CD-ROM | disk | FTP | other *** search
/ Computer Panoráma / computer_panorama_1997-12-hibas.iso / SHARE / GRAPH / PTC051.ZIP / EXAMPLES / RAND32.CPP < prev    next >
C/C++ Source or Header  |  1997-09-23  |  2KB  |  71 lines

  1. ////////////////////////////////////
  2. // random 32bit ARGB8888 putpixel //
  3. ////////////////////////////////////
  4.  
  5. #include "ptc.h"
  6. #include <conio.h>                                      
  7. #include <iostream.h>
  8. #include <stdlib.h>
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16. int main(int argc,char *argv[])
  17. {
  18.     // try to init ptc from command line (ie. "rand32 640 480 ARGB8888")
  19.     PTC ptc(argc,argv);
  20.     if (!ptc.ok())
  21.     {
  22.         // command line init failed - fall back to 320x200 fuzzy 32bit modeset (FUZZY32 is implied)
  23.         if (!ptc.Init(320,200))
  24.         {
  25.             ptc.Close();
  26.             cout << "could not initialize ptc\n";
  27.             return 1;
  28.         }
  29.     }
  30.     
  31.     // get display resolution
  32.     int xres=ptc.GetXResolution();
  33.     int yres=ptc.GetYResolution();
  34.  
  35.     // create fullscreen 32bit ARGB8888 surface
  36.     Surface surface(ptc,xres,yres,ARGB8888);
  37.  
  38.     // main loop
  39.     while (!ptc.kbhit())
  40.     {
  41.         // lock surface
  42.         uint* buffer=(uint*)surface.Lock();
  43.         if (!buffer)
  44.         {
  45.             ptc.Close();
  46.             cout << "null surface lock!\n";
  47.             return 1;
  48.         }
  49.         
  50.         // plot 100 random pixels
  51.         for (int i=0; i<100; i++)
  52.         {
  53.             int x=random(xres);
  54.             int y=random(yres);
  55.             buffer[xres*y+x]=RGB32(random(255),random(255),random(255));
  56.         }
  57.  
  58.         // unlock surface
  59.         surface.Unlock();
  60.  
  61.         // update to display
  62.         if (!surface.Update())
  63.         {
  64.             ptc.Close();
  65.             cout << "update failed\n";
  66.             return 1;
  67.         }
  68.     }
  69.     return 0;
  70. }
  71.