Newer
Older
little-o / src / sys / include / objgfx / ogDisplay_VESA.h
@reddawg reddawg on 26 Sep 2005 4 KB no message
#ifndef OGDISPLAY_VESA_H

#define OGDISPLAY_VESA_H



#include "objgfx30.h"



struct TMode_Rec {

    uInt16 ModeAttributes     __attribute__((packed));

    uInt8  WindowAFlags       __attribute__((packed));

    uInt8  WindowBFlags       __attribute__((packed));

    uInt16 Granularity        __attribute__((packed));

    uInt16 WindowSize         __attribute__((packed));

    uInt16 WindowASeg         __attribute__((packed));

    uInt16 WindowBSeg         __attribute__((packed));

    void*  BankSwitch         __attribute__((packed));

    uInt16 BytesPerLine       __attribute__((packed));

    uInt16 xRes               __attribute__((packed));

    uInt16 yRes               __attribute__((packed));

    uInt8  CharWidth          __attribute__((packed));

    uInt8  CharHeight         __attribute__((packed));

    uInt8  NumBitPlanes       __attribute__((packed));

    uInt8  BitsPerPixel       __attribute__((packed));

    uInt8  NumberOfBanks      __attribute__((packed));

    uInt8  MemoryModel        __attribute__((packed));

    uInt8  BankSize           __attribute__((packed));

    uInt8  NumOfImagePages    __attribute__((packed));

    uInt8  Reserved           __attribute__((packed));

    // Direct colour fields (required for Direct/6 and YUV/7 memory models

    uInt8  RedMaskSize        __attribute__((packed));

    uInt8  RedFieldPosition   __attribute__((packed));

    uInt8  GreenMaskSize      __attribute__((packed));

    uInt8  GreenFieldPosition __attribute__((packed));

    uInt8  BlueMaskSize       __attribute__((packed));

    uInt8  BlueFieldPosition  __attribute__((packed));

    uInt8  AlphaMaskSize      __attribute__((packed));

    uInt8  AlphaFieldPosition __attribute__((packed));

    uInt8  DirectColourMode   __attribute__((packed));

    // VESA 2.0 specific fields

    uInt32 physBasePtr        __attribute__((packed));

    void*  OffScreenMemOffset __attribute__((packed));

    uInt16 OffScreenMemSize   __attribute__((packed));

    uInt8  paddington[461]    __attribute__((packed));

};



struct TVESA_Rec {

    char    VBESignature[4]   __attribute__((packed));

    uInt8   minVersion        __attribute__((packed));

    uInt8   majVersion        __attribute__((packed));

    uInt32  OEMStringPtr      __attribute__((packed));

    uInt32  Capabilities      __attribute__((packed));

    uInt32  VideoModePtr      __attribute__((packed));

    uInt16  TotalMemory       __attribute__((packed));

    // VESA 2.0 specific fields

    uInt16  OEMSoftwareRev    __attribute__((packed));

    uInt32  OEMVendorNamePtr  __attribute__((packed));

    uInt32  OEMProductNamePtr __attribute__((packed));

    uInt32  OEMProductRevPtr  __attribute__((packed));

    uInt8   paddington[474]   __attribute__((packed));

};



class ogDisplay_VESA : public ogSurface {

 protected:

  uInt16       ScreenSelector;

  TVESA_Rec*   VESARec;

  TMode_Rec*   ModeRec;

  bool         InGraphics;

  uInt16       findMode(uInt32, uInt32, uInt32);

  void         getModeInfo(uInt16);

  void         getVESAInfo(void);

  void         setMode(uInt16);

  virtual uInt32 rawGetPixel(uInt32, uInt32);  

  virtual void rawSetPixel(uInt32, uInt32, uInt32);

  virtual void rawLine(uInt32, uInt32, uInt32, uInt32, uInt32);

  void         setPal(void);

 public:

               ogDisplay_VESA(void);

  virtual bool ogAvail(void);

  virtual bool ogAlias(ogSurface&, uInt32, uInt32, uInt32, uInt32);

  virtual void ogClear(uInt32);

  virtual bool ogClone(ogSurface&);

  virtual void ogCopyLineTo(uInt32, uInt32, const void *, uInt32);

  virtual void ogCopyLineFrom(uInt32, uInt32, void *, uInt32);

  virtual void ogCopyPal(ogSurface&);

  virtual bool ogCreate(uInt32, uInt32, ogPixelFmt);

  virtual uInt32 ogGetPixel(int32, int32);

  virtual void * ogGetPtr(uInt32, uInt32);

  virtual void ogHLine(int32, int32, int32, uInt32);

  virtual bool ogLoadPal(const char *);  

  virtual void ogSetPixel(int32, int32, uInt32);

  virtual void ogSetRGBPalette(uInt8, uInt8, uInt8, uInt8);  

  virtual void ogVFlip(void);

  virtual void ogVLine(int32, int32, int32, uInt32);

  virtual      ~ogDisplay_VESA(void);

}; // ogDisplay_VESA



#endif