#ifndef __TVGUIDE_IMAGECACHE_H #define __TVGUIDE_IMAGECACHE_H #define X_DISPLAY_MISSING #include #include #include "imagemagickwrapper.h" enum eCacheType { ctOsdElement = 0, ctGrid, ctLogo, ctChannelGroup, ctIcon, }; enum eOsdElementType { oeNone = -1, oeStatusHeaderContentFull, oeStatusHeaderContentWindowed, oeStatusHeaderTVFrame, oeButtonRed, oeButtonGreen, oeButtonYellow, oeButtonBlue, oeLogoBack, oeTimeline1, oeTimeline2, oeDateViewer, oeClock, oeChannelJump, }; class cImageCache : public cImageMagickWrapper { public: cImageCache(); ~cImageCache(); void CreateCache(void); cImage *GetOsdElement(eOsdElementType type); cImage *GetGrid(int width, int height, bool active); cImage *GetChannelGroup(int width, int height); cImage *GetLogo(const cChannel *channel); cImage *GetIcon(std::string name, int width, int height); std::string GetCacheSize(eCacheType type); void Clear(void); private: cImage *tempStaticLogo; Image bufferGrid; Image bufferGridActive; bool gridsAvailable; int cornerWidth; int cornerHeight; cImage *imgLeft; cImage *imgLeftActive; cImage *imgRight; cImage *imgRightActive; cImage *imgHead; cImage *imgHeadActive; cImage *imgBottom; cImage *imgBottomActive; cImage *imgChannelgroupHead; cImage *imgChannelgroupBottom; cImage *groupsHead; cImage *groupsBottom; cImage *groupsLeft; cImage *groupsRight; std::map osdElementCache; std::map gridCache; std::map groupsCache; std::map logoCache; std::map iconCache; void CreateOsdIconCache(void); void PrepareGridIconCache(void); void CreateGridIconCache(void); void CreateChannelGroupCache(void); void CreateLogoCache(void); bool LoadIcon(std::string name); void InsertIntoOsdElementCache(eOsdElementType type, int width=0, int height=0); void InsertIntoGridCache(std::string name, int width, int height, bool active); cImage *CreateGrid(int width, int height, bool active); void AddCornersHorizontal(cImage *img, bool active); void AddCornersVertical(cImage *img, bool active); void InsertIntoGroupsCacheHorizontal(int size); void InsertIntoGroupsCacheVertical(int size); void AddCornersGroupHorizontal(cImage *img); void AddCornersGroupVertical(cImage *img); bool LoadLogo(const cChannel *channel); void InsertIntoLogoCache(std::string channelID); }; #endif //__TVGUIDE_IMAGECACHE_H