Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

display_fbdev.h

Go to the documentation of this file.
00001 /*
00002         $Id: display_fbdev.h,v 1.2 2001/03/10 17:26:28 mbn Exp $
00003 
00004         ------------------------------------------------------------------------
00005         ClanLib, the platform independent game SDK.
00006 
00007         This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00008         version 2. See COPYING for details.
00009 
00010         For a total list of contributers see CREDITS.
00011 
00012         ------------------------------------------------------------------------
00013 */
00014 
00015 #ifndef header_display_fbdev
00016 #define header_display_fbdev
00017 
00018 #ifdef USE_FBDEV
00019 
00020 #include "Display/Display/Generic/displaycard_generic.h"
00021 
00022 #include "target_fbdev.h"
00023 
00024 #include <linux/fb.h>
00025 
00026 class CL_FBDev_DisplayCard : public CL_DisplayCard_Generic
00027 {
00028 public:
00029         CL_FBDev_DisplayCard(int card_no);
00030         virtual ~CL_FBDev_DisplayCard();
00031         
00032         // CL_DisplayCard functions:
00033         // -------------------------
00034 
00035         virtual void flip_display(bool sync=false);
00036         virtual void put_display(const class CL_Rect &rect);
00037         virtual void set_palette(CL_Palette *palette);
00038         virtual CL_Palette *get_palette();
00039         virtual void set_videomode(int width, int height, int bpp, bool fullscreen, bool allow_resize, bool video_memory);
00040         virtual bool is_initialized();
00041         
00042         virtual std::string get_name() { return "FBDev Display"; }
00043         virtual const std::list<CL_VidMode*> &get_videomodes();
00044 
00045         // CL_DisplayCard_Generic functions:
00046         // ---------------------------------
00047 
00048         virtual void push_clip_rect() { m_clip_stack.push_front(m_cur_clip); }
00049 
00050         virtual void push_clip_rect(const CL_ClipRect &clip)
00051         {
00052                 push_clip_rect();
00053                 m_cur_clip = m_cur_clip.clip(clip);
00054                 set_card_clip();
00055         }
00056         virtual void set_clip_rect(const CL_ClipRect &clip)
00057         {
00058                 m_cur_clip = clip;
00059                 set_card_clip();
00060         }
00061         virtual void pop_clip_rect()
00062         {
00063                 m_cur_clip = m_clip_stack.front();
00064                 m_clip_stack.pop_front();
00065                 set_card_clip();
00066         }
00067 
00068         virtual CL_Target *get_target() { return m_target; }
00069         virtual CL_Target *get_frontbuffer() { return m_target; }
00070         
00071         virtual void fill_rect(int, int, int, int, float, float, float, float);
00072         virtual void draw_rect(int, int, int, int, float, float, float, float);
00073 
00074         virtual int get_total_memory() { return fb_fix.smem_len; }
00075         
00076 
00077         // own functions
00078         unsigned char* get_offscreen_mem();
00079         int yoffset;
00080 
00081         unsigned int get_virt_width();
00082         
00083         bool accel_alpha_ret() { return m_accel_alpha_rect; }
00084         bool accel_scale_blit() { return m_accel_scale_blit; }
00085 
00086 
00087 protected:
00088         virtual CL_Blitters create_hw_blitters(CL_SurfaceProvider *provider);
00089 
00090 private:
00091         void set_card_clip();
00092 
00093         volatile unsigned char *m_mmioaddr;
00094         bool doublebuffer;
00095         bool m_accel_alpha_rect;
00096         bool m_accel_scale_blit;
00097         fb_fix_screeninfo fb_fix;
00098         fb_var_screeninfo fb_var_orig;
00099         fb_var_screeninfo fb_var;
00100         unsigned char* fb_mem;
00101         int fd;
00102 
00103         
00104         bool m_initialized;
00105         CL_Palette *m_palette;
00106         CL_Target_FBDev *m_target;
00107 
00108         std::string fb_try_accel;
00109 };
00110 
00111 #endif /* USE_FBDEV */
00112 
00113 #endif

Generated at Wed Apr 4 19:54:00 2001 for ClanLib by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001