home *** CD-ROM | disk | FTP | other *** search
/ Computer Panoráma / computer_panorama_1997-12-hibas.iso / SHARE / GRAPH / PTC051.ZIP / SRC / IVGA.H < prev    next >
C/C++ Source or Header  |  1997-09-22  |  5KB  |  174 lines

  1. ///////////////////
  2. // VGA interface //
  3. ///////////////////
  4.  
  5. #ifndef __IVGA_H
  6. #define __IVGA_H
  7.  
  8. #include "isoft.h"
  9. #include "block.h"
  10. #include "dpmi.h"
  11. #include "far.h"
  12. #include "near.h"
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. class IVGA : public ISoftware
  22. {
  23.     public:
  24.  
  25. #ifndef __VGA__
  26.  
  27.         // dummy constructor
  28.         IVGA(HWINDOW window=NULL) {};
  29. #else
  30.  
  31.         // setup
  32.         IVGA(HWINDOW window=NULL);
  33.         virtual ~IVGA();
  34.  
  35.         // interface information
  36.         virtual INFO GetInfo();
  37.         virtual int GetModeList(List<MODE> &modelist);
  38.  
  39.         // display mode routines
  40.         virtual int SetMode(MODE const &info);
  41.         virtual int SetMode(int x,int y,int id,int layout,int output,int frequency);
  42.         virtual int SetMode(int x,int y,FORMAT const &format,int layout,int output,int frequency);
  43.         virtual int QueryMode(MODE const &info);
  44.         virtual int QueryMode(int x,int y,int id,int layout,int output,int frequency);
  45.         virtual int QueryMode(int x,int y,FORMAT const &format,int layout,int output,int frequency);
  46.         virtual MODE GetMode();
  47.  
  48.         // palette routines
  49.         virtual int SetPalette(Palette &palette);
  50.         virtual int GetPalette(Palette &palette);
  51.         
  52.         // hardware functions
  53.         virtual int WaitForRetrace();
  54.         virtual int SaveState();
  55.         virtual int RestoreState();
  56.         
  57.         // primary surface operations
  58.         virtual int SetPrimary(Surface &surface);
  59.         virtual Surface* GetPrimary();
  60.         virtual int SetOrigin(int x,int y);
  61.         virtual int GetOrigin(int &x,int &y);
  62.  
  63.         // video memory management
  64.         virtual int GetTotalVideoMemory();
  65.         virtual int GetFreeVideoMemory();
  66.         virtual int CompactVideoMemory();
  67.  
  68.         // console routines
  69.         virtual int getch();
  70.         virtual int kbhit();
  71.         virtual int keydown(int key);
  72.  
  73.         // native access
  74.         virtual void* GetNative();
  75.         virtual int NativeType();
  76.  
  77.         // data access
  78.         virtual void GetName(char name[]) const;
  79.         virtual int GetXResolution() const;
  80.         virtual int GetYResolution() const;
  81.         virtual int GetBitsPerPixel() const;
  82.         virtual int GetBytesPerPixel() const;
  83.         virtual int GetLayout() const;
  84.         virtual int GetOutput() const;
  85.         virtual int GetFrequency() const;
  86.         virtual FORMAT GetFormat() const;
  87.         virtual HWINDOW GetWindow() const;
  88.  
  89.         // object state 
  90.         virtual int ok() const;       
  91.  
  92.     protected:
  93.         
  94.         // surface management
  95.         virtual HSURFACE RequestSurface(Surface &owner,int x,int y,FORMAT const &format,int type,int layout,int advance);
  96.         virtual void FreeSurface(HSURFACE handle);
  97.         virtual void* LockSurface(HSURFACE handle,int wait);
  98.         virtual void UnlockSurface(HSURFACE handle);
  99.         virtual int GetSurfaceLockCount(HSURFACE handle);
  100.         virtual int RestoreSurface(HSURFACE handle);
  101.         virtual SURFACEINFO GetSurfaceInfo(HSURFACE handle);
  102.         virtual void SetOwnerSurface(HSURFACE handle,Surface *owner);
  103.         
  104.         // surface update
  105.         virtual int Update(Surface &src,void *extra);
  106.         virtual int Update(Surface &src,RECTANGLE const &rect,void *extra);
  107.         virtual int Update(Surface &src,RECTANGLE const &dest_rect,RECTANGLE const &src_rect,void *extra);
  108.  
  109.     private:
  110.  
  111.         // internal mode setting
  112.         int SetLinearMode(int x,int y,int id);
  113.         int SetPlanarMode(int x,int y,int id);
  114.         int SetFakeMode(int x,int y,int id);
  115.         int SetINDEX8(int x,int y);
  116.         int SetGREY8(int x,int y);
  117.         int SetRGB332(int x,int y);
  118.         int SetMode(int mode);
  119.  
  120.         // vga memory clear
  121.         void ClearMemory();
  122.  
  123.         // video memory management
  124.         int InitVideoMemory();
  125.         void CloseVideoMemory();
  126.  
  127.         // primary surface management
  128.         int InitPrimary();
  129.         void ClosePrimary();
  130.  
  131.         // data
  132.         uint XResolution;                   // x resolution of display
  133.         uint YResolution;                   // y resolution of display
  134.         FORMAT Format;                      // pixel format of display
  135.         int Layout;                         // memory layout of display
  136.         int NeedRestore;                    // need to restore text mode (yes/no)
  137.         Surface *PrimarySurface;            // primary surface object
  138.  
  139.         // vga surface
  140.         struct SURFACE
  141.         {
  142.             Surface *owner;                 // surface that owns this handle
  143.             MemoryBlock *block;             // managed memory block
  144.             SURFACEINFO info;               // surface information
  145.         };
  146.  
  147.         // surface lists
  148.         List<SURFACE> VideoSurfaceList;
  149.         List<SURFACE> SystemSurfaceList;
  150.  
  151.         // memory managers
  152.         MemoryManager VideoMemory;
  153.         MemoryManager SystemMemory;
  154.  
  155.         // dpmi object
  156.         DPMI dpmi;
  157.  
  158.         // status
  159.         int Status;                         // status variable (1=OK, 0=INVALID)
  160. #endif
  161. };
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173. #endif
  174.