My_DirectDraw.h
上传用户:may_xy
上传日期:2007-08-09
资源大小:1519k
文件大小:3k
源码类别:

游戏

开发平台:

C/C++

  1. typedef unsigned short USHORT;   //类型定义
  2. typedef unsigned short WORD;
  3. typedef unsigned char  UCHAR;
  4. typedef unsigned char  BYTE;
  5. #define BITMAP_ID            0x4D42 // universal id for a bitmap
  6. //#define MAX_FRAMES      6
  7. #define DDRAW_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }
  8. // this builds a 16 bit color value in 5.5.5 format (1-bit alpha mode)
  9. #define _RGB16BIT555(r,g,b) ((b & 31) + ((g & 31) << 5) + ((r & 31) << 10))
  10. // this builds a 16 bit color value in 5.6.5 format (green dominate mode)
  11. #define _RGB16BIT565(r,g,b) ((b & 31) + ((g & 63) << 5) + ((r & 31) << 11))
  12. // this builds a 32 bit color value in A.8.8.8 format (8-bit alpha mode)
  13. #define _RGB32BIT(a,r,g,b) ((b) + ((g) << 8) + ((r) << 16) + ((a) << 24))
  14. // container structure for bitmaps .BMP file
  15. typedef struct BITMAP_FILE_TAG
  16. {
  17. BITMAPFILEHEADER bitmapfileheader;  // this contains the bitmapfile header
  18. BITMAPINFOHEADER bitmapinfoheader;  // this is all the info including the palette
  19. PALETTEENTRY     palette[256];      // we will store the palette here
  20. UCHAR            *buffer;           // this is a pointer to the data
  21. }BITMAP_FILE, *BITMAP_FILE_PTR;
  22. class CMainFrame;
  23. class CMyDirectDraw
  24. {
  25. // friend class CGame;
  26. private:
  27. LPDIRECTDRAW7         lpdd;  // dd object
  28. LPDIRECTDRAWCLIPPER   lpddclipper;  // dd clipper
  29. DDSURFACEDESC2        ddsd;                  // a direct draw surface description struct
  30. DDSCAPS2              ddscaps;               // a direct draw surface capabilities struct
  31. DDBLTFX               ddbltfx;               // used to fill
  32. HRESULT               ddrval;                // result back from dd calls
  33. DWORD                 start_clock_count;  // used for timing
  34. BITMAP_FILE           bitmap;                // holds the bitmap
  35. CFont* old_font;
  36. int SCREEN_BPP;  //32位色;
  37. public:
  38. int Flip_Bitmap(UCHAR *image,int bytes_per_line, int height);
  39. int Load_Bitmap_File(BITMAP_FILE_PTR bitmap, char *filename);
  40. int Unload_Bitmap_File(BITMAP_FILE_PTR bitmap);
  41. int Scan_Image_Bitmap(BITMAP_FILE_PTR bitmap,
  42.   LPDIRECTDRAWSURFACE7 lpdds,
  43.   int cx,
  44.   int cy
  45.   );
  46. LPDIRECTDRAWCLIPPER AttachClipper(LPDIRECTDRAWSURFACE7 lpdds,
  47.  int num_rects,
  48.  LPRECT clip_list);
  49. public:
  50. CMyDirectDraw();
  51. virtual ~CMyDirectDraw();
  52. int BitmapToSurface(LPDIRECTDRAWSURFACE7 Dest_Surface,  //目的表面;
  53.  int Dest_x, //目的表面x座标;
  54.  int Dest_y, //目的表面y座标;
  55.  char* filename, //源位图文件名;
  56.  int Bitmap_Width, //位图宽;
  57.  int Bitmap_Height //位图长;
  58.  );
  59. int Init();   //初始化DDraw 平台;
  60. //单色填充整个表面
  61. int FillSurface(LPDIRECTDRAWSURFACE7 lpdds,int color);
  62. LPDIRECTDRAWSURFACE7 CreateSurface(int width,
  63.    int height,
  64.    int mem_flags,
  65.    int color_key
  66.   );
  67. int DrawSurface(LPDIRECTDRAWSURFACE7 source,
  68.    int x,
  69.    int y, 
  70.    int width,
  71.    int height,
  72.    LPDIRECTDRAWSURFACE7 dest, 
  73.    int transparent
  74.    );    
  75. int TextGDI(char *text,
  76.   int x,
  77.   int y,
  78.   COLORREF color,
  79.   int size,
  80.   char* type,
  81.   LPDIRECTDRAWSURFACE7 lpdds);
  82. int DebugText(char* text,int time);  //调试用;
  83. };