00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef header_blit_mga
00017 #define header_blit_mga
00018
00019 #ifdef USE_FBDEV
00020
00021 #include "../Generic/blitters.h"
00022 #include "display_fbdev.h"
00023
00024 class CL_Blit_AlphaMask_RLE;
00025
00026 class CL_Blit_MGA :
00027 public CL_Blit_NoClip,
00028 public CL_Blit_Clip,
00029 public CL_Blit_Scale_NoClip,
00030 public CL_Blit_Scale_Clip
00031 {
00032 public:
00033 CL_Blit_MGA(CL_FBDev_DisplayCard *card, CL_SurfaceProvider *provider, volatile unsigned char *mmioaddr);
00034 virtual ~CL_Blit_MGA();
00035
00036 bool init_surface(CL_Blitters *blitters);
00037
00038 virtual void blt_noclip(
00039 CL_Target *target,
00040 int x,
00041 int y,
00042 int spr_no);
00043
00044 virtual void blt_clip(
00045 CL_Target *target,
00046 int x,
00047 int y,
00048 int spr_no,
00049 const CL_ClipRect &clip);
00050
00051 virtual void blt_scale_noclip(
00052 CL_Target *target,
00053 int x,
00054 int y,
00055 int dest_width,
00056 int dest_height,
00057 int spr_no);
00058
00059 virtual void blt_scale_clip(
00060 CL_Target *target,
00061 int x,
00062 int y,
00063 int dest_width,
00064 int dest_height,
00065 int spr_no,
00066 const CL_ClipRect &clip);
00067
00068 static void reload_all_surfaces();
00069
00070 private:
00071 CL_FBDev_DisplayCard *m_card;
00072 CL_SurfaceProvider *m_provider;
00073 bool m_transparent;
00074 unsigned int m_transcol;
00075 unsigned int m_width, m_height;
00076 unsigned int m_store, m_size;
00077
00078 volatile unsigned char *m_mmioaddr;
00079
00080 CL_Blit_AlphaMask_RLE *m_alphablitter;
00081
00082 bool reload(bool lock_provider, bool create_surface);
00083
00084 static std::list<CL_Blit_MGA*> m_loaded_surfaces;
00085 };
00086
00087 #endif
00088
00089 #endif