#ifndef __framebuffer_h__ #define __framebuffer_h__ #ifdef HAVE_CONFIG_H #include #endif #include #include /* freetype stuff */ #define FONT "/share/fonts/pakenham.ttf" #include #include FT_FREETYPE_H #include FT_CACHE_H #include FT_CACHE_SMALL_BITMAPS_H #if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 9)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2))) #define FTC_Manager_Lookup_Face FTC_Manager_LookupFace #define _FTC_SBit_Cache_Lookup(a,b,c,d) FTC_SBitCache_Lookup(a,b,c,d,NULL) #else #define _FTC_SBit_Cache_Lookup(a,b,c,d) FTC_SBit_Cache_Lookup(a,b,c,d) #endif class Cfb { public: Cfb(); ~Cfb(); static Cfb* getInstance(); int init(); int RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int color); int GetStringLen(const char *string); void RenderString(const char *string, int sx, int sy, int maxwidth, int layout, int size, int color); void RenderBox(int sx, int sy, int ex, int ey, int mode, int color); void RenderCircle(int sx, int sy, int color); void HorLine(int x, int y, int l, int color); void SetPixel(int x, int y, int c); void PaintIcon(unsigned char *icon, int sx, int sy); void FBPaint(void); void FBClear(void); void Cleanup (void); int GetRCCode(); virtual void getDimensions(int* fb_ex, int* fb_sx, int* fb_ey, int* fb_sy){*fb_ex=ex; *fb_sx=sx; *fb_ey=ey; *fb_sy=sy;}; virtual void getStartDimensions(int* fb_startx, int* fb_starty){*fb_startx=startx; *fb_starty=starty;}; virtual int getYScreeninfo(){return var_screeninfo.yres;}; private: CParser * cpars; int fb, startx, starty, sx, ex, sy, ey; struct fb_fix_screeninfo fix_screeninfo; struct fb_var_screeninfo var_screeninfo; unsigned char *lfb, *lbb; FT_Library library; FTC_Manager manager; FTC_SBitCache cache; FTC_SBit sbit; FTC_ImageTypeRec desc; FT_Face face; FT_UInt prev_glyphindex; FT_Bool use_kerning; static FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface); struct rawHeader { uint8_t width_lo; uint8_t width_hi; uint8_t height_lo; uint8_t height_hi; uint8_t transp; } __attribute__ ((packed)); }; #endif //__framebuffer_h__