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 >
Wrap
C/C++ Source or Header
|
1997-09-22
|
5KB
|
174 lines
///////////////////
// VGA interface //
///////////////////
#ifndef __IVGA_H
#define __IVGA_H
#include "isoft.h"
#include "block.h"
#include "dpmi.h"
#include "far.h"
#include "near.h"
class IVGA : public ISoftware
{
public:
#ifndef __VGA__
// dummy constructor
IVGA(HWINDOW window=NULL) {};
#else
// setup
IVGA(HWINDOW window=NULL);
virtual ~IVGA();
// interface information
virtual INFO GetInfo();
virtual int GetModeList(List<MODE> &modelist);
// display mode routines
virtual int SetMode(MODE const &info);
virtual int SetMode(int x,int y,int id,int layout,int output,int frequency);
virtual int SetMode(int x,int y,FORMAT const &format,int layout,int output,int frequency);
virtual int QueryMode(MODE const &info);
virtual int QueryMode(int x,int y,int id,int layout,int output,int frequency);
virtual int QueryMode(int x,int y,FORMAT const &format,int layout,int output,int frequency);
virtual MODE GetMode();
// palette routines
virtual int SetPalette(Palette &palette);
virtual int GetPalette(Palette &palette);
// hardware functions
virtual int WaitForRetrace();
virtual int SaveState();
virtual int RestoreState();
// primary surface operations
virtual int SetPrimary(Surface &surface);
virtual Surface* GetPrimary();
virtual int SetOrigin(int x,int y);
virtual int GetOrigin(int &x,int &y);
// video memory management
virtual int GetTotalVideoMemory();
virtual int GetFreeVideoMemory();
virtual int CompactVideoMemory();
// console routines
virtual int getch();
virtual int kbhit();
virtual int keydown(int key);
// native access
virtual void* GetNative();
virtual int NativeType();
// data access
virtual void GetName(char name[]) const;
virtual int GetXResolution() const;
virtual int GetYResolution() const;
virtual int GetBitsPerPixel() const;
virtual int GetBytesPerPixel() const;
virtual int GetLayout() const;
virtual int GetOutput() const;
virtual int GetFrequency() const;
virtual FORMAT GetFormat() const;
virtual HWINDOW GetWindow() const;
// object state
virtual int ok() const;
protected:
// surface management
virtual HSURFACE RequestSurface(Surface &owner,int x,int y,FORMAT const &format,int type,int layout,int advance);
virtual void FreeSurface(HSURFACE handle);
virtual void* LockSurface(HSURFACE handle,int wait);
virtual void UnlockSurface(HSURFACE handle);
virtual int GetSurfaceLockCount(HSURFACE handle);
virtual int RestoreSurface(HSURFACE handle);
virtual SURFACEINFO GetSurfaceInfo(HSURFACE handle);
virtual void SetOwnerSurface(HSURFACE handle,Surface *owner);
// surface update
virtual int Update(Surface &src,void *extra);
virtual int Update(Surface &src,RECTANGLE const &rect,void *extra);
virtual int Update(Surface &src,RECTANGLE const &dest_rect,RECTANGLE const &src_rect,void *extra);
private:
// internal mode setting
int SetLinearMode(int x,int y,int id);
int SetPlanarMode(int x,int y,int id);
int SetFakeMode(int x,int y,int id);
int SetINDEX8(int x,int y);
int SetGREY8(int x,int y);
int SetRGB332(int x,int y);
int SetMode(int mode);
// vga memory clear
void ClearMemory();
// video memory management
int InitVideoMemory();
void CloseVideoMemory();
// primary surface management
int InitPrimary();
void ClosePrimary();
// data
uint XResolution; // x resolution of display
uint YResolution; // y resolution of display
FORMAT Format; // pixel format of display
int Layout; // memory layout of display
int NeedRestore; // need to restore text mode (yes/no)
Surface *PrimarySurface; // primary surface object
// vga surface
struct SURFACE
{
Surface *owner; // surface that owns this handle
MemoryBlock *block; // managed memory block
SURFACEINFO info; // surface information
};
// surface lists
List<SURFACE> VideoSurfaceList;
List<SURFACE> SystemSurfaceList;
// memory managers
MemoryManager VideoMemory;
MemoryManager SystemMemory;
// dpmi object
DPMI dpmi;
// status
int Status; // status variable (1=OK, 0=INVALID)
#endif
};
#endif