/***************************************************************************
xosdctrl.h - description
-------------------
begin : Sat Feb 22 2003
copyright : (C) 2003 by Sheldon Lee Wen
email : leewsb@hotmail.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifndef XOSDCTRL_H
#define XOSDCTRL_H
extern "C" {
#include <xosd.h>
#include <sys/time.h>
#include <semaphore.h>
}
#include <lineak/displayctrl.h>
#include <string>
#include <iostream>
class LConfig;
using namespace std;
/**Controls functioning of XOSD.
*@author Sheldon Lee Wen
*/
class xosdCtrl : public displayCtrl {
public:
xosdCtrl();
xosdCtrl(LConfig& config);
xosdCtrl(string font, string color, int delay, xosd_pos pos, xosd_align align, int hoffset, int voffset, int soffset, int lines);
virtual ~xosdCtrl();
/** This creates the osd object */
virtual void create(int lines);
/** Reinitilize the object */
virtual void init(LConfig& config, bool init = false);
/** Reinitilize the object */
virtual void init(bool init = false);
/* Cleanup xosd */
virtual void cleanup();
/* Age the display and scroll */
virtual void agenscroll();
/* Age the display */
virtual void age();
/* Show the volume */
virtual void volume(float volume);
/* Show a command */
virtual void show(string command);
/** Write property of string font. */
virtual void setFont( const string& _newVal);
/** Read property of string font. */
virtual const string& getFont();
/** Write property of string color. */
virtual void setColor( const string& _newVal);
/** Read property of string color. */
virtual const string& getColor();
/** Write property of int Timeout. */
virtual void setTimeout( const int& _newVal);
/** Read property of int Timeout. */
virtual const int& getTimeout();
/** Write property of int Forcewait. */
virtual void setForcewait( const bool& _newVal);
/** Read property of int Forcewait. */
virtual const bool& getForcewait();
/** Write property of xosd_pos Pos. */
virtual void setPos( const xosd_pos& _newVal);
/** Read property of xosd_pos Pos. */
virtual const xosd_pos& getPos();
/** Write property of xosd_align Align. */
virtual void setAlign( const xosd_align& _newVal);
/** Read property of xosd_align Align. */
virtual const xosd_align& getAlign();
/** Write property of int HorizontalOffset. */
virtual void setHorizontalOffset( const int& _newVal);
/** Read property of int HorizontalOffset. */
virtual const int& getHorizontalOffset();
/** Write property of int HorizontalOffset. */
virtual void setVerticalOffset( const int& _newVal);
/** Read property of int HorizontalOffset. */
virtual const int& getVerticalOffset();
/** Write property of int Shadow. */
virtual void setShadowOffset( const int& _newVal);
/** Read property of int Shadow. */
virtual const int& getShadowOffset();
/** Write property of int ScrollAge. */
virtual void setScrollAge( const bool& _newVal);
/** Read property of int ScrollAge. */
virtual const bool& getScrollAge();
/** Write property of int ScreenLine. */
virtual void setScreenLine( const int& _newVal);
/** Read property of int ScreenLine. */
virtual const int& getScreenLine();
/** Write property of int Lines. */
virtual void setLines( const int& _newVal);
/** Read property of int Lines. */
virtual const int& getLines();
virtual void show();
virtual void hide();
/** Scroll the display lines number of lines */
virtual void scroll(int lines = 0);
virtual bool enabled() { return (osd != NULL); }
private:
xosd *osd;
struct timeval old_age,new_age;
/** Font typeface to use */
string Font;
/** Font color to use */
string Color;
/** Delay for display */
int Timeout;
/** Are we forced to wait for the display to clear? */
bool Forcewait;
/** Position of the screen in which to display our text. */
xosd_pos Pos;
/** Show a shadow or not? */
int ShadowOffset;
/** Number of lines on the screen to use. */
int ScreenLine;
/** Number of lines of display text. */
int Lines;
/** Screen offset */
int HorizontalOffset, VerticalOffset;
/** Age and scroll the display? */
bool ScrollAge;
/** Set the screen alignment of xosd. */
xosd_align Align;
/** Semaphores for fixing threading issues */
sem_t enter_sem, exit_sem;
/** Flag for initialization */
bool initialized;
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1