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

  1. ////////////////////////
  2. // Software interface //
  3. ////////////////////////
  4.  
  5. #ifndef __ISOFTWARE_H
  6. #define __ISOFTWARE_H
  7.  
  8. #include "iface.h"
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16. class ISoftware : public Interface
  17. {
  18.     public:
  19.  
  20.         // setup
  21.         ISoftware(HWINDOW window=NULL);
  22.         virtual ~ISoftware();
  23.  
  24.         // interface information
  25.         virtual INFO GetInfo();
  26.         virtual int GetModeList(List<MODE> &modelist);
  27.  
  28.         // display mode routines
  29.         virtual int SetMode(MODE const &info);
  30.         virtual int SetMode(int x,int y,int id,int layout,int output,int frequency);
  31.         virtual int SetMode(int x,int y,FORMAT const &format,int layout,int output,int frequency);
  32.         virtual int QueryMode(MODE const &info);
  33.         virtual int QueryMode(int x,int y,int id,int layout,int output,int frequency);
  34.         virtual int QueryMode(int x,int y,FORMAT const &format,int layout,int output,int frequency);
  35.         virtual MODE GetMode();
  36.  
  37.         // palette routines
  38.         virtual int SetPalette(Palette &palette);
  39.         virtual int GetPalette(Palette &palette);
  40.         
  41.         // hardware functions
  42.         virtual int WaitForRetrace();
  43.         virtual int SaveState();
  44.         virtual int RestoreState();
  45.         
  46.         // primary surface operations
  47.         virtual int SetPrimary(Surface &surface);
  48.         virtual Surface* GetPrimary();
  49.         virtual int SetOrigin(int x,int y);
  50.         virtual int GetOrigin(int &x,int &y);
  51.  
  52.         // video memory management
  53.         virtual int GetTotalVideoMemory();
  54.         virtual int GetFreeVideoMemory();
  55.         virtual int CompactVideoMemory();
  56.  
  57.         // console routines
  58.         virtual int getch();
  59.         virtual int kbhit();
  60.         virtual int keydown(int key);
  61.  
  62.         // native access
  63.         virtual void* GetNative();
  64.         virtual int NativeType();
  65.  
  66.         // data access
  67.         virtual void GetName(char name[]) const;
  68.         virtual int GetXResolution() const;
  69.         virtual int GetYResolution() const;
  70.         virtual int GetBitsPerPixel() const;
  71.         virtual int GetBytesPerPixel() const;
  72.         virtual int GetLayout() const;
  73.         virtual int GetOutput() const;
  74.         virtual int GetFrequency() const;
  75.         virtual FORMAT GetFormat() const;
  76.         virtual HWINDOW GetWindow() const;
  77.  
  78.         // object state 
  79.         virtual int ok() const;       
  80.  
  81.     protected:
  82.         
  83.         // surface management
  84.         virtual HSURFACE RequestSurface(Surface &owner,int x,int y,FORMAT const &format,int type,int layout,int advance);
  85.         virtual void FreeSurface(HSURFACE handle);
  86.         virtual void* LockSurface(HSURFACE handle,int wait);
  87.         virtual void UnlockSurface(HSURFACE handle);
  88.         virtual int GetSurfaceLockCount(HSURFACE handle);
  89.         virtual int RestoreSurface(HSURFACE handle);
  90.         virtual SURFACEINFO GetSurfaceInfo(HSURFACE handle);
  91.         virtual void* GetNativeSurface(HSURFACE handle);
  92.         virtual int GetNativeSurfaceType(HSURFACE handle);
  93.         virtual void SetOwnerSurface(HSURFACE handle,Surface *owner);
  94.         
  95.         // surface clear
  96.         virtual int Clear(Surface &surface,COLOR const &color);
  97.         virtual int Clear(Surface &surface,RECTANGLE const &rect,COLOR const &color);
  98.  
  99.         // surface update
  100.         virtual int Update(Surface &src,void *extra);
  101.         virtual int Update(Surface &src,RECTANGLE const &rect,void *extra);
  102.         virtual int Update(Surface &src,RECTANGLE const &dest_rect,RECTANGLE const &src_rect,void *extra);
  103.         
  104.         // surface bitblt
  105.         virtual int BitBlt(Surface &src,Surface &dest,EFFECTS const *effects,void *extra);
  106.         virtual int BitBlt(Surface &src,Surface &dest,RECTANGLE const &rect,EFFECTS const *effects,void *extra);
  107.         virtual int BitBlt(Surface &src,RECTANGLE const &src_rect,
  108.                            Surface &dest,RECTANGLE const &dest_rect,EFFECTS const *effects,void *extra);
  109.  
  110.         // surface stretchblt
  111.         virtual int StretchBlt(Surface &src,Surface &dest,EFFECTS const *effects,void *extra);
  112.         virtual int StretchBlt(Surface &src,Surface &dest,RECTANGLE const &rect,EFFECTS const *effects,void *extra);
  113.         virtual int StretchBlt(Surface &src,RECTANGLE const &src_rect,
  114.                                Surface &dest,RECTANGLE const &dest_rect,EFFECTS const *effects,void *extra);
  115.  
  116.         // clipping and cropping
  117.         int ClipAndCrop(Surface const &src,Surface const &dest,RECTANGLE &rect);
  118.         int ClipAndCrop(Surface const &src,RECTANGLE &src_rect,Surface const &dest,RECTANGLE &dest_rect);
  119.  
  120.     private:
  121.  
  122.         // format converter
  123.         CONVERTER Converter;
  124.  
  125.         // software surface
  126.         struct SURFACE
  127.         {
  128.             Surface *owner;
  129.             void *buffer;
  130.             int count;
  131.             SURFACEINFO info;
  132.         };
  133.  
  134.         // software surface list
  135.         List<SURFACE> SurfaceList;
  136. };
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146. #endif
  147.