vdr  2.2.0
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
cDvbSdFfOsd Class Reference

Public Member Functions

 cDvbSdFfOsd (int Left, int Top, int OsdDev, uint Level)
 
virtual ~cDvbSdFfOsd ()
 
virtual eOsdError CanHandleAreas (const tArea *Areas, int NumAreas)
 
virtual eOsdError SetAreas (const tArea *Areas, int NumAreas)
 
virtual void Flush (void)
 
- Public Member Functions inherited from cOsd
virtual ~cOsd ()
 
bool IsTrueColor (void) const
 
int Left (void)
 
int Top (void)
 
int Width (void)
 
int Height (void)
 
void SetAntiAliasGranularity (uint FixedColors, uint BlendColors)
 
cBitmapGetBitmap (int Area)
 
virtual cPixmapCreatePixmap (int Layer, const cRect &ViewPort, const cRect &DrawPort=cRect::Null)
 
virtual void DestroyPixmap (cPixmap *Pixmap)
 
virtual void DrawImage (const cPoint &Point, const cImage &Image)
 
virtual void DrawImage (const cPoint &Point, int ImageHandle)
 
virtual void SaveRegion (int x1, int y1, int x2, int y2)
 
virtual void RestoreRegion (void)
 
virtual eOsdError SetPalette (const cPalette &Palette, int Area)
 
virtual void DrawPixel (int x, int y, tColor Color)
 
virtual void DrawBitmap (int x, int y, const cBitmap &Bitmap, tColor ColorFg=0, tColor ColorBg=0, bool ReplacePalette=false, bool Overlay=false)
 
virtual void DrawScaledBitmap (int x, int y, const cBitmap &Bitmap, double FactorX, double FactorY, bool AntiAlias=false)
 
virtual void DrawText (int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width=0, int Height=0, int Alignment=taDefault)
 
virtual void DrawRectangle (int x1, int y1, int x2, int y2, tColor Color)
 
virtual void DrawEllipse (int x1, int y1, int x2, int y2, tColor Color, int Quadrants=0)
 
virtual void DrawSlope (int x1, int y1, int x2, int y2, tColor Color, int Type)
 

Protected Member Functions

virtual void SetActive (bool On)
 
- Protected Member Functions inherited from cOsd
 cOsd (int Left, int Top, uint Level)
 
bool Active (void)
 
cPixmapAddPixmap (cPixmap *Pixmap)
 
cPixmapRenderPixmaps (void)
 

Private Member Functions

void Cmd (OSD_Command cmd, int color=0, int x0=0, int y0=0, int x1=0, int y1=0, const void *data=NULL)
 

Private Attributes

int osdDev
 
int osdMem
 
bool shown
 

Additional Inherited Members

- Static Public Member Functions inherited from cOsd
static int OsdLeft (void)
 
static int OsdTop (void)
 
static int OsdWidth (void)
 
static int OsdHeight (void)
 
static void SetOsdPosition (int Left, int Top, int Width, int Height)
 
static int IsOpen (void)
 

Detailed Description

Definition at line 21 of file dvbsdffosd.c.

Constructor & Destructor Documentation

cDvbSdFfOsd::cDvbSdFfOsd ( int  Left,
int  Top,
int  OsdDev,
uint  Level 
)

Definition at line 37 of file dvbsdffosd.c.

References esyslog, MAXOSDMEMORY, osdDev, osdMem, and shown.

Referenced by cDvbOsdProvider::CreateOsd().

cDvbSdFfOsd::~cDvbSdFfOsd ( )
virtual

Definition at line 56 of file dvbsdffosd.c.

References SetActive().

Member Function Documentation

eOsdError cDvbSdFfOsd::CanHandleAreas ( const tArea Areas,
int  NumAreas 
)
virtual

Checks whether the OSD can display the given set of sub-areas.

The return value indicates whether a call to SetAreas() with this set of areas will succeed. CanHandleAreas() may be called with an OSD that is already in use with other areas and will not interfere with the current operation of the OSD. A derived class must first call the base class CanHandleAreas() to check the basic conditions, like not overlapping etc.

Reimplemented from cOsd.

Definition at line 85 of file dvbsdffosd.c.

References tArea::bpp, cOsd::CanHandleAreas(), tArea::Height(), cOsd::Height(), MAXNUMWINDOWS, oeBppNotSupported, oeOk, oeOutOfMemory, oeTooManyAreas, oeWrongAlignment, oeWrongAreaSize, osdMem, tArea::Width(), and cOsd::Width().

void cDvbSdFfOsd::Cmd ( OSD_Command  cmd,
int  color = 0,
int  x0 = 0,
int  y0 = 0,
int  x1 = 0,
int  y1 = 0,
const void *  data = NULL 
)
private

Definition at line 119 of file dvbsdffosd.c.

References osdDev.

Referenced by Flush(), SetActive(), and SetAreas().

void cDvbSdFfOsd::Flush ( void  )
virtual

Actually commits all data to the OSD hardware.

Flush() should return as soon as possible. For a true color OSD using the default implementation with in memory pixmaps, the Flush() function should basically do something like this:

LOCK_PIXMAPS; while (cPixmapMemory *pm = dynamic_cast<cPixmapMemory *>(RenderPixmaps())) { int w = pm->ViewPort().Width(); int h = pm->ViewPort().Height(); int d = w * sizeof(tColor); MyOsdDrawPixmap(Left() + pm->ViewPort().X(), Top() + pm->ViewPort().Y(), pm->Data(), w, h, h * d); DestroyPixmap(pm); }

If a plugin uses a derived cPixmap implementation, it needs to use that type instead of cPixmapMemory.

Reimplemented from cOsd.

Definition at line 134 of file dvbsdffosd.c.

References cOsd::Active(), cPalette::Bpp(), cBitmap::Clean(), Cmd(), cPalette::Colors(), cBitmap::Data(), cBitmap::Dirty(), cOsd::GetBitmap(), cBitmap::Height(), cOsd::Height(), cOsd::Left(), shown, cOsd::Top(), cBitmap::Width(), cOsd::Width(), cBitmap::X0(), and cBitmap::Y0().

Referenced by SetActive().

void cDvbSdFfOsd::SetActive ( bool  On)
protectedvirtual

Sets this OSD to be the active one.

A derived class must call cOsd::SetActive(On).

Reimplemented from cOsd.

Definition at line 61 of file dvbsdffosd.c.

References cOsd::Active(), Cmd(), Flush(), cOsd::GetBitmap(), MAXNUMWINDOWS, cOsd::SetActive(), and shown.

Referenced by ~cDvbSdFfOsd().

eOsdError cDvbSdFfOsd::SetAreas ( const tArea Areas,
int  NumAreas 
)
virtual

Sets the sub-areas to the given areas.

The return value indicates whether the operation was successful. If an error is reported, nothing will have changed and the previous OSD (if any) will still be displayed as before. If the OSD has been divided into several sub-areas, all areas that are part of the rectangle that surrounds a given drawing operation will be drawn into, with the proper offsets. A new call overwrites any previous settings To set up a true color OSD, exactly one area must be requested, with its coordinates set to the full area the OSD shall cover, and the bpp value set to 32.

Reimplemented from cOsd.

Definition at line 107 of file dvbsdffosd.c.

References Cmd(), cOsd::GetBitmap(), cOsd::SetAreas(), and shown.

Member Data Documentation

int cDvbSdFfOsd::osdDev
private
int cDvbSdFfOsd::osdMem
private

Definition at line 24 of file dvbsdffosd.c.

Referenced by CanHandleAreas(), and cDvbSdFfOsd().

bool cDvbSdFfOsd::shown
private

Definition at line 25 of file dvbsdffosd.c.

Referenced by cDvbSdFfOsd(), Flush(), SetActive(), and SetAreas().


The documentation for this class was generated from the following file: