#ifndef __PIXMAP_CONTAINER_H #define __PIXMAP_CONTAINER_H #include #include #include "fontmanager.h" enum eFlushState { fsOpen, fsLock, fsCount, }; class cPixmapContainer : public cThread { private: static cMutex mutex; static cOsd *osd; static eFlushState flushState; bool pixContainerInit; int numPixmaps; cPixmap **pixmaps; int *pixmapsTransparency; bool checkRunning; int fadeTime; bool deleteOsdOnExit; protected: void SetInitFinished(void) { pixContainerInit = false; }; bool CreateOsd(int Left, int Top, int Width, int Height); void DeleteOsdOnExit(void) { deleteOsdOnExit = true; }; void LockFlush(void); void OpenFlush(void); //Wrappers for access to pixmaps bool PixmapExists(int num); int NumPixmaps(void) { return numPixmaps; }; void CreatePixmap(int num, int Layer, const cRect &ViewPort, const cRect &DrawPort = cRect::Null); bool DestroyPixmap(int num); void DrawText(int num, const cPoint &Point, const char *s, tColor ColorFg, tColor ColorBg, std::string fontName, int fontSize); void DrawRectangle(int num, const cRect &Rect, tColor Color); void DrawEllipse(int num, const cRect &Rect, tColor Color, int Quadrants = 0); void DrawImage(int num, const cPoint &Point, const cImage &Image); void DrawBitmap(int num, const cPoint &Point, const cBitmap &Bitmap, tColor ColorFg = 0, tColor ColorBg = 0, bool Overlay = false); void Fill(int num, tColor Color); void SetAlpha(int num, int Alpha); void SetTransparency(int num, int Transparency); void SetLayer(int num, int Layer); int Width(int num); int Height(int num); int DrawportWidth(int num); int DrawportHeight(int num); int DrawportX(int num); int DrawportY(int num); void SetDrawPortPoint(int num, const cPoint &Point); void SetCheckRunning(void) { checkRunning = true; }; void UnsetCheckRunning(void) { checkRunning = false; }; //HELPERS -- do not access the pixmaps array directly, use wrapper functions void SetFadeTime(int fade) { fadeTime = fade; }; void FadeIn(void); void FadeOut(void); void ScrollVertical(int num, int scrollDelay, int scrollSpeed); void ScrollHorizontal(int num, int scrollDelay, int scrollSpeed, int scrollMode); void CancelSave(void); void DoSleep(int duration); void DrawBlendedBackground(int num, int xStart, int width, tColor color, tColor colorBlending, bool fromTop); void DrawRoundedCorners(int num, int radius, int x, int y, int width, int height); void DrawRoundedCornersWithBorder(int num, tColor borderColor, int radius, int width, int height); public: cPixmapContainer(int numPixmaps); virtual ~cPixmapContainer(void); void DoFlush(void); virtual void Action(void) {}; }; #endif //__PIXMAP_CONTAINER_H