mirror of
				https://projects.vdr-developer.org/git/vdr-plugin-skindesigner.git
				synced 2023-10-19 15:58:31 +00:00 
			
		
		
		
	added possibility for blinking images, texts, rectangles, ellipses and slopes
This commit is contained in:
		
							
								
								
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							@@ -290,4 +290,6 @@ Version 0.4.2
 | 
				
			|||||||
- fixed bug that string tokens are not evaluated in area conditions
 | 
					- fixed bug that string tokens are not evaluated in area conditions
 | 
				
			||||||
- added possibility to draw a debug grid in views
 | 
					- added possibility to draw a debug grid in views
 | 
				
			||||||
- added more info if debugImage is activted in config
 | 
					- added more info if debugImage is activted in config
 | 
				
			||||||
 | 
					- added possibility for blinking images, texts, rectangles, ellipses 
 | 
				
			||||||
 | 
					  and slopes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
									
									
									
									
								
							@@ -88,6 +88,7 @@ OBJS = $(PLUGIN).o \
 | 
				
			|||||||
       libtemplate/templatefunction.o \
 | 
					       libtemplate/templatefunction.o \
 | 
				
			||||||
       libtemplate/templateloopfunction.o \
 | 
					       libtemplate/templateloopfunction.o \
 | 
				
			||||||
       libtemplate/xmlparser.o \
 | 
					       libtemplate/xmlparser.o \
 | 
				
			||||||
 | 
					       views/animation.o \
 | 
				
			||||||
       views/view.o \
 | 
					       views/view.o \
 | 
				
			||||||
       views/viewgrid.o \
 | 
					       views/viewgrid.o \
 | 
				
			||||||
       views/viewhelpers.o \
 | 
					       views/viewhelpers.o \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,6 +73,8 @@
 | 
				
			|||||||
  name NMTOKEN #IMPLIED
 | 
					  name NMTOKEN #IMPLIED
 | 
				
			||||||
  text CDATA #REQUIRED
 | 
					  text CDATA #REQUIRED
 | 
				
			||||||
  condition CDATA #IMPLIED
 | 
					  condition CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animtype CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animfreq CDATA #IMPLIED
 | 
				
			||||||
  debug (true|false) #IMPLIED  
 | 
					  debug (true|false) #IMPLIED  
 | 
				
			||||||
>
 | 
					>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -110,6 +112,8 @@
 | 
				
			|||||||
  text CDATA #REQUIRED
 | 
					  text CDATA #REQUIRED
 | 
				
			||||||
  direction (bottomup|topdown) #IMPLIED
 | 
					  direction (bottomup|topdown) #IMPLIED
 | 
				
			||||||
  condition CDATA #IMPLIED
 | 
					  condition CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animtype CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animfreq CDATA #IMPLIED
 | 
				
			||||||
  debug (true|false) #IMPLIED  
 | 
					  debug (true|false) #IMPLIED  
 | 
				
			||||||
>
 | 
					>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -124,6 +128,8 @@
 | 
				
			|||||||
  color CDATA #REQUIRED
 | 
					  color CDATA #REQUIRED
 | 
				
			||||||
  name NMTOKEN #IMPLIED
 | 
					  name NMTOKEN #IMPLIED
 | 
				
			||||||
  condition CDATA #IMPLIED
 | 
					  condition CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animtype CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animfreq CDATA #IMPLIED
 | 
				
			||||||
  debug NMTOKEN #IMPLIED
 | 
					  debug NMTOKEN #IMPLIED
 | 
				
			||||||
 >
 | 
					 >
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -139,6 +145,8 @@
 | 
				
			|||||||
  quadrant CDATA #REQUIRED
 | 
					  quadrant CDATA #REQUIRED
 | 
				
			||||||
  name NMTOKEN #IMPLIED
 | 
					  name NMTOKEN #IMPLIED
 | 
				
			||||||
  condition CDATA #IMPLIED
 | 
					  condition CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animtype CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animfreq CDATA #IMPLIED
 | 
				
			||||||
  debug NMTOKEN #IMPLIED
 | 
					  debug NMTOKEN #IMPLIED
 | 
				
			||||||
 >
 | 
					 >
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -154,6 +162,8 @@
 | 
				
			|||||||
  type CDATA #REQUIRED
 | 
					  type CDATA #REQUIRED
 | 
				
			||||||
  name NMTOKEN #IMPLIED
 | 
					  name NMTOKEN #IMPLIED
 | 
				
			||||||
  condition CDATA #IMPLIED
 | 
					  condition CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animtype CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animfreq CDATA #IMPLIED
 | 
				
			||||||
  debug NMTOKEN #IMPLIED
 | 
					  debug NMTOKEN #IMPLIED
 | 
				
			||||||
 >
 | 
					 >
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -170,5 +180,7 @@
 | 
				
			|||||||
  path CDATA #REQUIRED
 | 
					  path CDATA #REQUIRED
 | 
				
			||||||
  name CDATA #IMPLIED
 | 
					  name CDATA #IMPLIED
 | 
				
			||||||
  condition CDATA #IMPLIED
 | 
					  condition CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animtype CDATA #IMPLIED
 | 
				
			||||||
 | 
					  animfreq CDATA #IMPLIED
 | 
				
			||||||
  debug NMTOKEN #IMPLIED
 | 
					  debug NMTOKEN #IMPLIED
 | 
				
			||||||
>
 | 
					>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -237,6 +237,25 @@ void cPixmapContainer::SetViewPort(int num, const cRect &rect) {
 | 
				
			|||||||
    pixmaps[num]->SetViewPort(rect);    
 | 
					    pixmaps[num]->SetViewPort(rect);    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int cPixmapContainer::Layer(int num) {
 | 
				
			||||||
 | 
					    if (checkRunning && !Running())
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					    cMutexLock MutexLock(&mutex);
 | 
				
			||||||
 | 
					    if (!pixmaps[num])
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					    return pixmaps[num]->Layer();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cPixmapContainer::Pos(int num, cPoint &pos) {
 | 
				
			||||||
 | 
					    if (checkRunning && !Running())
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    cMutexLock MutexLock(&mutex);
 | 
				
			||||||
 | 
					    if (!pixmaps[num])
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    pos.SetX(pixmaps[num]->ViewPort().X());
 | 
				
			||||||
 | 
					    pos.SetY(pixmaps[num]->ViewPort().Y());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int cPixmapContainer::Width(int num) {
 | 
					int cPixmapContainer::Width(int num) {
 | 
				
			||||||
    if (checkRunning && !Running())
 | 
					    if (checkRunning && !Running())
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,6 +44,8 @@ protected:
 | 
				
			|||||||
    void SetTransparency(int num, int Transparency);
 | 
					    void SetTransparency(int num, int Transparency);
 | 
				
			||||||
    void SetLayer(int num, int Layer);
 | 
					    void SetLayer(int num, int Layer);
 | 
				
			||||||
    void SetViewPort(int num, const cRect &rect);
 | 
					    void SetViewPort(int num, const cRect &rect);
 | 
				
			||||||
 | 
					    int Layer(int num);
 | 
				
			||||||
 | 
					    void Pos(int num, cPoint &pos);
 | 
				
			||||||
    int Width(int num);
 | 
					    int Width(int num);
 | 
				
			||||||
    int Height(int num);
 | 
					    int Height(int num);
 | 
				
			||||||
    int DrawportWidth(int num);
 | 
					    int DrawportWidth(int num);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -143,6 +143,10 @@ void cTemplateFunction::SetParameters(vector<pair<string, string> > params) {
 | 
				
			|||||||
            p.first = ptDeterminateFont;
 | 
					            p.first = ptDeterminateFont;
 | 
				
			||||||
        } else if (!name.compare("direction")) {
 | 
					        } else if (!name.compare("direction")) {
 | 
				
			||||||
            p.first = ptDirection;
 | 
					            p.first = ptDirection;
 | 
				
			||||||
 | 
					        } else if (!name.compare("animtype")) {
 | 
				
			||||||
 | 
					            p.first = ptAnimType;
 | 
				
			||||||
 | 
					        } else if (!name.compare("animfreq")) {
 | 
				
			||||||
 | 
					            p.first = ptAnimFreq;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            p.first = ptNone;
 | 
					            p.first = ptNone;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -242,6 +246,7 @@ bool cTemplateFunction::CalculateParameters(void) {
 | 
				
			|||||||
            case ptScaleTvY:
 | 
					            case ptScaleTvY:
 | 
				
			||||||
            case ptScaleTvWidth:
 | 
					            case ptScaleTvWidth:
 | 
				
			||||||
            case ptScaleTvHeight:
 | 
					            case ptScaleTvHeight:
 | 
				
			||||||
 | 
					            case ptAnimFreq:
 | 
				
			||||||
                SetNumericParameter(type, value);
 | 
					                SetNumericParameter(type, value);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            case ptAlign:
 | 
					            case ptAlign:
 | 
				
			||||||
@@ -287,6 +292,9 @@ bool cTemplateFunction::CalculateParameters(void) {
 | 
				
			|||||||
            case ptDirection:
 | 
					            case ptDirection:
 | 
				
			||||||
                paramValid = SetDirection(value);
 | 
					                paramValid = SetDirection(value);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					            case ptAnimType:
 | 
				
			||||||
 | 
					                paramValid = SetAnimType(value);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                paramValid = true;
 | 
					                paramValid = true;
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
@@ -736,6 +744,16 @@ bool cTemplateFunction::DoExecute(void) {
 | 
				
			|||||||
    return condParam->IsTrue();
 | 
					    return condParam->IsTrue();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool cTemplateFunction::IsAnimated(void) {
 | 
				
			||||||
 | 
					    map< eParamType, int >::iterator hit = numericParameters.find(ptAnimType);
 | 
				
			||||||
 | 
					    if (hit == numericParameters.end())
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    eAnimType type = (eAnimType)hit->second;
 | 
				
			||||||
 | 
					    if (type > atNone)
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*******************************************************************
 | 
					/*******************************************************************
 | 
				
			||||||
* Private Functions
 | 
					* Private Functions
 | 
				
			||||||
*******************************************************************/
 | 
					*******************************************************************/
 | 
				
			||||||
@@ -1125,6 +1143,16 @@ bool cTemplateFunction::SetDirection(string value) {
 | 
				
			|||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool cTemplateFunction::SetAnimType(string value) {
 | 
				
			||||||
 | 
					    int animType = atNone;
 | 
				
			||||||
 | 
					    if (!value.compare("blink"))
 | 
				
			||||||
 | 
					        animType = atBlink;
 | 
				
			||||||
 | 
					    else if (!value.compare("animated"))
 | 
				
			||||||
 | 
					        animType = atAnimated;
 | 
				
			||||||
 | 
					    numericParameters.insert(pair<eParamType, int>(ptAnimType, animType));
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cTemplateFunction::SetDebugGrid(string value) {
 | 
					void cTemplateFunction::SetDebugGrid(string value) {
 | 
				
			||||||
    int numGridsX = 0;
 | 
					    int numGridsX = 0;
 | 
				
			||||||
    int numGridsY = 0;
 | 
					    int numGridsY = 0;
 | 
				
			||||||
@@ -1653,6 +1681,12 @@ string cTemplateFunction::GetParamName(eParamType pt) {
 | 
				
			|||||||
        case ptDirection:
 | 
					        case ptDirection:
 | 
				
			||||||
            name = "Text Direction";
 | 
					            name = "Text Direction";
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					        case ptAnimType:
 | 
				
			||||||
 | 
					            name = "Animation Type";
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case ptAnimFreq:
 | 
				
			||||||
 | 
					            name = "Animation Frequency";
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            name = "Unknown";
 | 
					            name = "Unknown";
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,6 +86,8 @@ enum eParamType {
 | 
				
			|||||||
    ptCache,
 | 
					    ptCache,
 | 
				
			||||||
    ptDeterminateFont,
 | 
					    ptDeterminateFont,
 | 
				
			||||||
    ptDirection,
 | 
					    ptDirection,
 | 
				
			||||||
 | 
					    ptAnimType,
 | 
				
			||||||
 | 
					    ptAnimFreq,
 | 
				
			||||||
    ptNone
 | 
					    ptNone
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -98,6 +100,12 @@ enum eImageType {
 | 
				
			|||||||
    itImage
 | 
					    itImage
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum eAnimType {
 | 
				
			||||||
 | 
					    atNone,
 | 
				
			||||||
 | 
					    atBlink,
 | 
				
			||||||
 | 
					    atAnimated
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum eFloatType {
 | 
					enum eFloatType {
 | 
				
			||||||
    flNone,
 | 
					    flNone,
 | 
				
			||||||
    flTopLeft,
 | 
					    flTopLeft,
 | 
				
			||||||
@@ -168,6 +176,7 @@ protected:
 | 
				
			|||||||
    bool SetDetached(string value);
 | 
					    bool SetDetached(string value);
 | 
				
			||||||
    bool SetBackground(string value);
 | 
					    bool SetBackground(string value);
 | 
				
			||||||
    bool SetDirection(string value);
 | 
					    bool SetDirection(string value);
 | 
				
			||||||
 | 
					    bool SetAnimType(string value);
 | 
				
			||||||
    void SetDebugGrid(string value);
 | 
					    void SetDebugGrid(string value);
 | 
				
			||||||
    void ParseStringParameters(void);
 | 
					    void ParseStringParameters(void);
 | 
				
			||||||
    void ParseNumericalParameters(void);
 | 
					    void ParseNumericalParameters(void);
 | 
				
			||||||
@@ -232,6 +241,7 @@ public:
 | 
				
			|||||||
    bool ParsedCompletely(void) { return parsedCompletely; };
 | 
					    bool ParsedCompletely(void) { return parsedCompletely; };
 | 
				
			||||||
    bool DoExecute(void);
 | 
					    bool DoExecute(void);
 | 
				
			||||||
    bool Updated(void) { return updated; };
 | 
					    bool Updated(void) { return updated; };
 | 
				
			||||||
 | 
					    bool IsAnimated(void);
 | 
				
			||||||
    //Debug
 | 
					    //Debug
 | 
				
			||||||
    void Debug(void);
 | 
					    void Debug(void);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -744,6 +744,8 @@ void cTemplateView::SetFunctionDefinitions(void) {
 | 
				
			|||||||
    attributes.insert("fontsize");
 | 
					    attributes.insert("fontsize");
 | 
				
			||||||
    attributes.insert("color");
 | 
					    attributes.insert("color");
 | 
				
			||||||
    attributes.insert("text");
 | 
					    attributes.insert("text");
 | 
				
			||||||
 | 
					    attributes.insert("animtype");
 | 
				
			||||||
 | 
					    attributes.insert("animfreq");
 | 
				
			||||||
    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
					    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    name = "drawtextbox";
 | 
					    name = "drawtextbox";
 | 
				
			||||||
@@ -781,6 +783,8 @@ void cTemplateView::SetFunctionDefinitions(void) {
 | 
				
			|||||||
    attributes.insert("fontsize");
 | 
					    attributes.insert("fontsize");
 | 
				
			||||||
    attributes.insert("color");
 | 
					    attributes.insert("color");
 | 
				
			||||||
    attributes.insert("text");
 | 
					    attributes.insert("text");
 | 
				
			||||||
 | 
					    attributes.insert("animtype");
 | 
				
			||||||
 | 
					    attributes.insert("animfreq");
 | 
				
			||||||
    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
					    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    name = "drawimage";
 | 
					    name = "drawimage";
 | 
				
			||||||
@@ -799,6 +803,8 @@ void cTemplateView::SetFunctionDefinitions(void) {
 | 
				
			|||||||
    attributes.insert("align");
 | 
					    attributes.insert("align");
 | 
				
			||||||
    attributes.insert("valign");
 | 
					    attributes.insert("valign");
 | 
				
			||||||
    attributes.insert("cache");
 | 
					    attributes.insert("cache");
 | 
				
			||||||
 | 
					    attributes.insert("animtype");
 | 
				
			||||||
 | 
					    attributes.insert("animfreq");
 | 
				
			||||||
    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
					    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    name = "drawrectangle";
 | 
					    name = "drawrectangle";
 | 
				
			||||||
@@ -813,6 +819,8 @@ void cTemplateView::SetFunctionDefinitions(void) {
 | 
				
			|||||||
    attributes.insert("width");
 | 
					    attributes.insert("width");
 | 
				
			||||||
    attributes.insert("height");
 | 
					    attributes.insert("height");
 | 
				
			||||||
    attributes.insert("color");
 | 
					    attributes.insert("color");
 | 
				
			||||||
 | 
					    attributes.insert("animtype");
 | 
				
			||||||
 | 
					    attributes.insert("animfreq");
 | 
				
			||||||
    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
					    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    name = "drawellipse";
 | 
					    name = "drawellipse";
 | 
				
			||||||
@@ -828,6 +836,8 @@ void cTemplateView::SetFunctionDefinitions(void) {
 | 
				
			|||||||
    attributes.insert("height");
 | 
					    attributes.insert("height");
 | 
				
			||||||
    attributes.insert("color");
 | 
					    attributes.insert("color");
 | 
				
			||||||
    attributes.insert("quadrant");
 | 
					    attributes.insert("quadrant");
 | 
				
			||||||
 | 
					    attributes.insert("animtype");
 | 
				
			||||||
 | 
					    attributes.insert("animfreq");
 | 
				
			||||||
    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
					    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    name = "drawslope";
 | 
					    name = "drawslope";
 | 
				
			||||||
@@ -843,6 +853,8 @@ void cTemplateView::SetFunctionDefinitions(void) {
 | 
				
			|||||||
    attributes.insert("height");
 | 
					    attributes.insert("height");
 | 
				
			||||||
    attributes.insert("color");
 | 
					    attributes.insert("color");
 | 
				
			||||||
    attributes.insert("type");
 | 
					    attributes.insert("type");
 | 
				
			||||||
 | 
					    attributes.insert("animtype");
 | 
				
			||||||
 | 
					    attributes.insert("animfreq");
 | 
				
			||||||
    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
					    funcsAllowed.insert(pair< string, set<string> >(name, attributes));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -120,7 +120,7 @@
 | 
				
			|||||||
            <drawimage condition="{isDolby}" imagetype="icon" path="ico_dolby" x="{areaheight}*6 + 20" y="0" width="{areaheight}*3" height="{areaheight}"/>
 | 
					            <drawimage condition="{isDolby}" imagetype="icon" path="ico_dolby" x="{areaheight}*6 + 20" y="0" width="{areaheight}*3" height="{areaheight}"/>
 | 
				
			||||||
            <drawimage condition="{hasVT}" imagetype="icon" path="ico_videotext" x="{areaheight}*9 + 30" y="0" width="{areaheight}" height="{areaheight}"/>
 | 
					            <drawimage condition="{hasVT}" imagetype="icon" path="ico_videotext" x="{areaheight}*9 + 30" y="0" width="{areaheight}" height="{areaheight}"/>
 | 
				
			||||||
            <drawimage condition="{isEncrypted}" imagetype="icon" path="ico_crypted" x="{areaheight}*10 + 40" y="0" width="{areaheight}*2" height="{areaheight}"/>
 | 
					            <drawimage condition="{isEncrypted}" imagetype="icon" path="ico_crypted" x="{areaheight}*10 + 40" y="0" width="{areaheight}*2" height="{areaheight}"/>
 | 
				
			||||||
            <drawimage condition="{isRecording}" imagetype="icon" path="ico_rec_on" x="{areaheight}*12 + 50" y="0" width="{areaheight}" height="{areaheight}"/>
 | 
					            <drawimage condition="{isRecording}" animtype="blink" animfreq="500" imagetype="icon" path="ico_rec_on" x="{areaheight}*12 + 50" y="0" width="{areaheight}" height="{areaheight}"/>
 | 
				
			||||||
        </area>
 | 
					        </area>
 | 
				
			||||||
    </statusinfo>
 | 
					    </statusinfo>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,8 +81,8 @@
 | 
				
			|||||||
        </area>
 | 
					        </area>
 | 
				
			||||||
        <area condition="{numtimers}" x="55%" y="71%" width="44%" height="19%" layer="2">
 | 
					        <area condition="{numtimers}" x="55%" y="71%" width="44%" height="19%" layer="2">
 | 
				
			||||||
            <loop name="timers" x="0" y="0" orientation="horizontal" columnwidth="{areawidth}/4" rowheight="{areaheight}" overflow="cut">
 | 
					            <loop name="timers" x="0" y="0" orientation="horizontal" columnwidth="{areawidth}/4" rowheight="{areaheight}" overflow="cut">
 | 
				
			||||||
                <drawimage  cache="true" name="logo" imagetype="channellogo" path="{timers[channelid]}" width="{columnwidth}-15" height="40%" align="center" y="10" />
 | 
					                <drawimage cache="true" name="logo" imagetype="channellogo" path="{timers[channelid]}" width="{columnwidth}-15" height="40%" align="center" y="10" />
 | 
				
			||||||
                <drawrectangle condition="{timers[recording]}" x="0" y="{height(logo)}+10" width="{columnwidth}-5" height="{rowheight} - {height(logo)} - 20" color="{clrRedTrans}" />
 | 
					                <drawimage condition="{timers[recording]}" animtype="blink" animfreq="500" imagetype="icon" path="ico_rec_on" x="{columnwidth}*0.75" y="{columnwidth}*0.05" width="{columnwidth}*0.2" height="{columnwidth}*0.2"/>
 | 
				
			||||||
                <drawtextbox x="5" y="{height(logo)} + 10" width="{columnwidth}-10" align="center" maxlines="2" font="{regular}" fontsize="15%" color="{clrWhite}" text="{timers[title]}" />
 | 
					                <drawtextbox x="5" y="{height(logo)} + 10" width="{columnwidth}-10" align="center" maxlines="2" font="{regular}" fontsize="15%" color="{clrWhite}" text="{timers[title]}" />
 | 
				
			||||||
                <drawtext align="center" y="75%" font="{regular}" fontsize="20%" color="{clrWhite}" text="{timers[datetime]}" />
 | 
					                <drawtext align="center" y="75%" font="{regular}" fontsize="20%" color="{clrWhite}" text="{timers[datetime]}" />
 | 
				
			||||||
            </loop>
 | 
					            </loop>
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										110
									
								
								views/animation.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								views/animation.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,110 @@
 | 
				
			|||||||
 | 
					#include "animation.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cAnimation::cAnimation(eAnimType animType, int animFreq, cRect &pos, int layer) : cPixmapContainer(1) {
 | 
				
			||||||
 | 
					    this->animType = animType;
 | 
				
			||||||
 | 
					    this->animFreq = animFreq;
 | 
				
			||||||
 | 
					    this->pos = pos;
 | 
				
			||||||
 | 
					    this->layer = layer;
 | 
				
			||||||
 | 
					    blinkOn = true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cAnimation::~cAnimation() {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cAnimation::Action(void) {
 | 
				
			||||||
 | 
					    CreatePixmap(0, layer+1, pos);
 | 
				
			||||||
 | 
					    bool init = true;
 | 
				
			||||||
 | 
					    while (Running()) {
 | 
				
			||||||
 | 
					        if (animType == atBlink) {
 | 
				
			||||||
 | 
					            if (!blinkOn) {
 | 
				
			||||||
 | 
					                Fill(0, clrTransparent);
 | 
				
			||||||
 | 
					                blinkOn = true;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                DrawBlink();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (animType == atAnimated) {
 | 
				
			||||||
 | 
					            esyslog("skindesigner: animationType atAnimated not implemented");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (init)
 | 
				
			||||||
 | 
					            FadeIn();
 | 
				
			||||||
 | 
					        init = false;
 | 
				
			||||||
 | 
					        DoFlush();
 | 
				
			||||||
 | 
					        DoSleep(animFreq);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cAnimation::Stop(void) {
 | 
				
			||||||
 | 
					    CancelSave();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/********************************************************************************************
 | 
				
			||||||
 | 
					* cAnimatedImage
 | 
				
			||||||
 | 
					********************************************************************************************/
 | 
				
			||||||
 | 
					cAnimatedImage::cAnimatedImage(eAnimType animType, int animFreq, cRect &pos, int layer) : cAnimation(animType, animFreq, pos, layer) {
 | 
				
			||||||
 | 
					    image = NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cAnimatedImage::~cAnimatedImage() {
 | 
				
			||||||
 | 
					    esyslog("skindesigner: killing animation");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cAnimatedImage::DrawBlink(void) {
 | 
				
			||||||
 | 
					    blinkOn = false;
 | 
				
			||||||
 | 
					    if (!image)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cPoint posImage(0,0);
 | 
				
			||||||
 | 
					    if (Running())
 | 
				
			||||||
 | 
					        DrawImage(0, posImage, *image);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/********************************************************************************************
 | 
				
			||||||
 | 
					* cAnimatedText
 | 
				
			||||||
 | 
					********************************************************************************************/
 | 
				
			||||||
 | 
					cAnimatedText::cAnimatedText(eAnimType animType, int animFreq, cRect &pos, int layer) : cAnimation(animType, animFreq, pos, layer) {
 | 
				
			||||||
 | 
					    text = "";
 | 
				
			||||||
 | 
					    fontName = "";
 | 
				
			||||||
 | 
					    fontSize = 1;
 | 
				
			||||||
 | 
					    fontColor = clrTransparent;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cAnimatedText::~cAnimatedText() {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cAnimatedText::DrawBlink(void) {
 | 
				
			||||||
 | 
					    blinkOn = false;
 | 
				
			||||||
 | 
					    if (text.size() == 0)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cPoint posText(0,0);
 | 
				
			||||||
 | 
					    if (Running())
 | 
				
			||||||
 | 
					        DrawText(0, posText, text.c_str(), fontColor, clrTransparent, fontName, fontSize);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/********************************************************************************************
 | 
				
			||||||
 | 
					* cAnimatedOsdObject
 | 
				
			||||||
 | 
					********************************************************************************************/
 | 
				
			||||||
 | 
					cAnimatedOsdObject::cAnimatedOsdObject(eFuncType type, eAnimType animType, int animFreq, cRect &pos, int layer) : cAnimation(animType, animFreq, pos, layer) {
 | 
				
			||||||
 | 
					    this->type = type;
 | 
				
			||||||
 | 
					    color = 0x00000000;
 | 
				
			||||||
 | 
					    quadrant = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cAnimatedOsdObject::~cAnimatedOsdObject() {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cAnimatedOsdObject::DrawBlink(void) {
 | 
				
			||||||
 | 
					    blinkOn = false;
 | 
				
			||||||
 | 
					    cRect posObject(0, 0, pos.Width(), pos.Height());
 | 
				
			||||||
 | 
					    if (Running()) {
 | 
				
			||||||
 | 
					        if (type == ftDrawRectangle) {
 | 
				
			||||||
 | 
					            DrawRectangle(0, posObject, color);
 | 
				
			||||||
 | 
					        } else if (type == ftDrawEllipse) {
 | 
				
			||||||
 | 
					            DrawEllipse(0, posObject, color, quadrant);
 | 
				
			||||||
 | 
					        } else if (type == ftDrawSlope) {
 | 
				
			||||||
 | 
					            DrawSlope(0, posObject, color, quadrant);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										68
									
								
								views/animation.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								views/animation.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					#ifndef __ANIMATION_H
 | 
				
			||||||
 | 
					#define __ANIMATION_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "string"
 | 
				
			||||||
 | 
					#include "../libcore/pixmapcontainer.h"
 | 
				
			||||||
 | 
					#include "../libtemplate/template.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cAnimation : public cPixmapContainer {
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    eAnimType animType;
 | 
				
			||||||
 | 
					    int animFreq;
 | 
				
			||||||
 | 
					    cRect pos;
 | 
				
			||||||
 | 
					    int layer;
 | 
				
			||||||
 | 
					    bool blinkOn;
 | 
				
			||||||
 | 
					    virtual void DrawBlink(void) {};
 | 
				
			||||||
 | 
					    virtual void Action(void);
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    cAnimation(eAnimType animType, int animFreq, cRect &pos, int layer);
 | 
				
			||||||
 | 
					    virtual ~cAnimation();
 | 
				
			||||||
 | 
					    void SetAnimationFadeTime(int fadeTime) { SetFadeTime(fadeTime); };
 | 
				
			||||||
 | 
					    virtual void Stop(void);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cAnimatedImage : public cAnimation {
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    cImage *image;
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    void DrawBlink(void);
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    cAnimatedImage(eAnimType animType, int animFreq, cRect &pos, int layer);
 | 
				
			||||||
 | 
					    virtual ~cAnimatedImage();
 | 
				
			||||||
 | 
					    void SetImage(cImage *i) { image = i; };
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cAnimatedText : public cAnimation {
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    string text;
 | 
				
			||||||
 | 
					    string fontName;
 | 
				
			||||||
 | 
					    int fontSize;
 | 
				
			||||||
 | 
					    tColor fontColor;
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    void DrawBlink(void);
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    cAnimatedText(eAnimType animType, int animFreq, cRect &pos, int layer);
 | 
				
			||||||
 | 
					    virtual ~cAnimatedText();
 | 
				
			||||||
 | 
					    void SetText(string &t) { text = t; };
 | 
				
			||||||
 | 
					    void SetFont(string &font) { fontName = font; };
 | 
				
			||||||
 | 
					    void SetFontSize(int size) { fontSize = size; };
 | 
				
			||||||
 | 
					    void SetFontColor(tColor col) { fontColor = col; };
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class cAnimatedOsdObject : public cAnimation {
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    eFuncType type;
 | 
				
			||||||
 | 
					    tColor color;
 | 
				
			||||||
 | 
					    int quadrant;
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    void DrawBlink(void);
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    cAnimatedOsdObject(eFuncType type, eAnimType animType, int animFreq, cRect &pos, int layer);
 | 
				
			||||||
 | 
					    virtual ~cAnimatedOsdObject();
 | 
				
			||||||
 | 
					    void SetColor(tColor col) { color = col; };
 | 
				
			||||||
 | 
					    void SetQuadrant(int q) { quadrant = q; };
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //__ANIMATION_H
 | 
				
			||||||
							
								
								
									
										163
									
								
								views/view.c
									
									
									
									
									
								
							
							
						
						
									
										163
									
								
								views/view.c
									
									
									
									
									
								
							@@ -40,6 +40,11 @@ cView::~cView() {
 | 
				
			|||||||
        cViewElement *ve = dVeIt->second;
 | 
					        cViewElement *ve = dVeIt->second;
 | 
				
			||||||
        delete ve;
 | 
					        delete ve;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    for (multimap<int, cAnimation*>::iterator animIt = animations.begin(); animIt != animations.end(); animIt++) {
 | 
				
			||||||
 | 
					        cAnimation *anim = animIt->second;
 | 
				
			||||||
 | 
					        anim->Stop();
 | 
				
			||||||
 | 
					        delete anim;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cView::DrawDebugGrid(void) {
 | 
					void cView::DrawDebugGrid(void) {
 | 
				
			||||||
@@ -57,6 +62,7 @@ void cView::Init(void) {
 | 
				
			|||||||
    scrollDelay = 0;
 | 
					    scrollDelay = 0;
 | 
				
			||||||
    scrollMode = smNone;
 | 
					    scrollMode = smNone;
 | 
				
			||||||
    scrollSpeed = ssMedium;
 | 
					    scrollSpeed = ssMedium;
 | 
				
			||||||
 | 
					    animCat = 0;
 | 
				
			||||||
    currentlyScrolling = false;
 | 
					    currentlyScrolling = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -85,8 +91,10 @@ void cView::DrawViewElement(eViewElement ve, map <string,string> *stringTokens,
 | 
				
			|||||||
    cTemplateViewElement *viewElement = NULL;
 | 
					    cTemplateViewElement *viewElement = NULL;
 | 
				
			||||||
    if (tmplViewElement) {
 | 
					    if (tmplViewElement) {
 | 
				
			||||||
        viewElement = tmplViewElement;
 | 
					        viewElement = tmplViewElement;
 | 
				
			||||||
 | 
					        animCat = 0;
 | 
				
			||||||
    } else if (tmplView) {
 | 
					    } else if (tmplView) {
 | 
				
			||||||
        viewElement = tmplView->GetViewElement(ve);
 | 
					        viewElement = tmplView->GetViewElement(ve);
 | 
				
			||||||
 | 
					        animCat = ve;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (!viewElement)
 | 
					    if (!viewElement)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
@@ -164,8 +172,10 @@ void cView::DrawViewElement(eViewElement ve, map <string,string> *stringTokens,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void cView::ClearViewElement(eViewElement ve) {
 | 
					void cView::ClearViewElement(eViewElement ve) {
 | 
				
			||||||
    cTemplateViewElement *viewElement = NULL;
 | 
					    cTemplateViewElement *viewElement = NULL;
 | 
				
			||||||
 | 
					    int currentAnimCat = ve;
 | 
				
			||||||
    if (tmplViewElement) {
 | 
					    if (tmplViewElement) {
 | 
				
			||||||
        viewElement = tmplViewElement;
 | 
					        viewElement = tmplViewElement;
 | 
				
			||||||
 | 
					        currentAnimCat = 0;
 | 
				
			||||||
    } else if (tmplView) {
 | 
					    } else if (tmplView) {
 | 
				
			||||||
        viewElement = tmplView->GetViewElement(ve);
 | 
					        viewElement = tmplView->GetViewElement(ve);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -182,6 +192,7 @@ void cView::ClearViewElement(eViewElement ve) {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        pixCurrent++; 
 | 
					        pixCurrent++; 
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    ClearAnimations(currentAnimCat);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cView::DestroyViewElement(eViewElement ve) {
 | 
					void cView::DestroyViewElement(eViewElement ve) {
 | 
				
			||||||
@@ -199,6 +210,21 @@ void cView::DestroyViewElement(eViewElement ve) {
 | 
				
			|||||||
        DestroyPixmap(pixCurrent);
 | 
					        DestroyPixmap(pixCurrent);
 | 
				
			||||||
        pixCurrent++; 
 | 
					        pixCurrent++; 
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    ClearAnimations(ve);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cView::ClearAnimations(int cat) {
 | 
				
			||||||
 | 
					    //stop and delete all animated elements from this viewelement
 | 
				
			||||||
 | 
					    if (animations.size() == 0)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    pair<multimap<int,cAnimation*>::iterator, multimap<int,cAnimation*>::iterator> rangeAnims;
 | 
				
			||||||
 | 
					    rangeAnims = animations.equal_range(cat);
 | 
				
			||||||
 | 
					    for (multimap<int,cAnimation*>::iterator it = rangeAnims.first; it!=rangeAnims.second; ++it) {
 | 
				
			||||||
 | 
					        cAnimation *anim = it->second;
 | 
				
			||||||
 | 
					        anim->Stop();
 | 
				
			||||||
 | 
					        delete anim;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    animations.erase(cat);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cView::ActivateScrolling(void) {
 | 
					void cView::ActivateScrolling(void) {
 | 
				
			||||||
@@ -560,7 +586,11 @@ void cView::DoDrawText(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			|||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        text = func->GetText(false);
 | 
					        text = func->GetText(false);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    DrawText(num, pos, text.c_str(), clr, clrBack, fontName, fontSize);
 | 
					    if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					        DrawAnimatedText(num, func, pos, text, clr, fontName, fontSize);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        DrawText(num, pos, text.c_str(), clr, clrBack, fontName, fontSize);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cView::DoDrawTextVertical(int num, cTemplateFunction *func, int x0, int y0) {
 | 
					void cView::DoDrawTextVertical(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			||||||
@@ -606,7 +636,13 @@ void cView::DoDrawTextVertical(int num, cTemplateFunction *func, int x0, int y0)
 | 
				
			|||||||
    if (y < 0) y = func->GetContainerHeight() - textVertical->Height() - 5;
 | 
					    if (y < 0) y = func->GetContainerHeight() - textVertical->Height() - 5;
 | 
				
			||||||
    y += y0;
 | 
					    y += y0;
 | 
				
			||||||
    cPoint pos(x,y);
 | 
					    cPoint pos(x,y);
 | 
				
			||||||
    DrawImage(num, pos, *textVertical);
 | 
					
 | 
				
			||||||
 | 
					    if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					        cRect posAnim(x, y, textVertical->Width(), textVertical->Height());
 | 
				
			||||||
 | 
					        DrawAnimatedImage(num, func, posAnim, textVertical);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        DrawImage(num, pos, *textVertical);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cView::DoDrawTextBox(int num, cTemplateFunction *func, int x0, int y0) {
 | 
					void cView::DoDrawTextBox(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			||||||
@@ -804,7 +840,12 @@ void cView::DoDrawRectangle(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			|||||||
    int h = func->GetNumericParameter(ptHeight);
 | 
					    int h = func->GetNumericParameter(ptHeight);
 | 
				
			||||||
    cRect size(x, y, w, h);
 | 
					    cRect size(x, y, w, h);
 | 
				
			||||||
    tColor clr = func->GetColorParameter(ptColor);
 | 
					    tColor clr = func->GetColorParameter(ptColor);
 | 
				
			||||||
    DrawRectangle(num, size, clr);
 | 
					    
 | 
				
			||||||
 | 
					    if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					        DrawAnimatedOsdObject(num, func, size, clr, 0);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        DrawRectangle(num, size, clr);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cView::DoDrawEllipse(int num, cTemplateFunction *func, int x0, int y0) {
 | 
					void cView::DoDrawEllipse(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			||||||
@@ -823,7 +864,12 @@ void cView::DoDrawEllipse(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			|||||||
        esyslog("skindesigner: wrong quadrant %d for drawellipse, allowed values are from -4 to 8", quadrant);
 | 
					        esyslog("skindesigner: wrong quadrant %d for drawellipse, allowed values are from -4 to 8", quadrant);
 | 
				
			||||||
        quadrant = 0;
 | 
					        quadrant = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    DrawEllipse(num, size, clr, quadrant);
 | 
					
 | 
				
			||||||
 | 
					    if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					        DrawAnimatedOsdObject(num, func, size, clr, quadrant);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        DrawEllipse(num, size, clr, quadrant);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cView::DoDrawSlope(int num, cTemplateFunction *func, int x0, int y0) {
 | 
					void cView::DoDrawSlope(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			||||||
@@ -842,7 +888,11 @@ void cView::DoDrawSlope(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			|||||||
        esyslog("skindesigner: wrong type %d for drawslope, allowed values are from 0 to 7", type);
 | 
					        esyslog("skindesigner: wrong type %d for drawslope, allowed values are from 0 to 7", type);
 | 
				
			||||||
        type = 0;
 | 
					        type = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    DrawSlope(num, size, clr, type);
 | 
					    if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					        DrawAnimatedOsdObject(num, func, size, clr, type);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        DrawSlope(num, size, clr, type);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cView::DoDrawImage(int num, cTemplateFunction *func, int x0, int y0) {
 | 
					void cView::DoDrawImage(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			||||||
@@ -861,31 +911,56 @@ void cView::DoDrawImage(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			|||||||
        case itChannelLogo: {
 | 
					        case itChannelLogo: {
 | 
				
			||||||
            cImage *logo = imgCache->GetLogo(path, width, height);
 | 
					            cImage *logo = imgCache->GetLogo(path, width, height);
 | 
				
			||||||
            if (logo) {
 | 
					            if (logo) {
 | 
				
			||||||
                DrawImage(num, pos, *logo);
 | 
					                if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					                    cRect posAnim(x, y, width, height);
 | 
				
			||||||
 | 
					                    DrawAnimatedImage(num, func, posAnim, logo);
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    DrawImage(num, pos, *logo);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break; }
 | 
					            break; }
 | 
				
			||||||
        case itSepLogo: {
 | 
					        case itSepLogo: {
 | 
				
			||||||
            cImage *sepLogo = imgCache->GetSeparatorLogo(path, width, height);
 | 
					            cImage *sepLogo = imgCache->GetSeparatorLogo(path, width, height);
 | 
				
			||||||
            if (sepLogo) {
 | 
					            if (sepLogo) {
 | 
				
			||||||
                DrawImage(num, pos, *sepLogo);
 | 
					                if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					                    cRect posAnim(x, y, width, height);
 | 
				
			||||||
 | 
					                    DrawAnimatedImage(num, func, posAnim, sepLogo);
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    DrawImage(num, pos, *sepLogo);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break; }
 | 
					            break; }
 | 
				
			||||||
        case itSkinPart: {
 | 
					        case itSkinPart: {
 | 
				
			||||||
            cImage *skinpart = imgCache->GetSkinpart(path, width, height);
 | 
					            cImage *skinpart = imgCache->GetSkinpart(path, width, height);
 | 
				
			||||||
            if (skinpart) {
 | 
					            if (skinpart) {
 | 
				
			||||||
                DrawImage(num, pos, *skinpart);
 | 
					                if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					                    cRect posAnim(x, y, width, height);
 | 
				
			||||||
 | 
					                    DrawAnimatedImage(num, func, posAnim, skinpart);
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    DrawImage(num, pos, *skinpart);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break; }
 | 
					            break; }
 | 
				
			||||||
        case itIcon: {
 | 
					        case itIcon: {
 | 
				
			||||||
            cImage *icon = imgCache->GetIcon(type, path, width, height);
 | 
					            cImage *icon = imgCache->GetIcon(type, path, width, height);
 | 
				
			||||||
            if (icon) {
 | 
					            if (icon) {
 | 
				
			||||||
                DrawImage(num, pos, *icon);
 | 
					                if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					                    cRect posAnim(x, y, width, height);
 | 
				
			||||||
 | 
					                    DrawAnimatedImage(num, func, posAnim, icon);
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    DrawImage(num, pos, *icon);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break; }
 | 
					            break; }
 | 
				
			||||||
        case itMenuIcon: {
 | 
					        case itMenuIcon: {
 | 
				
			||||||
            cImage *icon = imgCache->GetIcon(type, path, width, height);
 | 
					            cImage *icon = imgCache->GetIcon(type, path, width, height);
 | 
				
			||||||
            if (icon) {
 | 
					            if (icon) {
 | 
				
			||||||
                DrawImage(num, pos, *icon);
 | 
					                if (func->IsAnimated()) {
 | 
				
			||||||
 | 
					                    cRect posAnim(x, y, width, height);
 | 
				
			||||||
 | 
					                    DrawAnimatedImage(num, func, posAnim, icon);
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    DrawImage(num, pos, *icon);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break; }
 | 
					            break; }
 | 
				
			||||||
        case itImage: {
 | 
					        case itImage: {
 | 
				
			||||||
@@ -901,6 +976,70 @@ void cView::DoDrawImage(int num, cTemplateFunction *func, int x0, int y0) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cView::DrawAnimatedImage(int numPix, cTemplateFunction *func, cRect &pos, cImage *image) {
 | 
				
			||||||
 | 
					    int layer = Layer(numPix);
 | 
				
			||||||
 | 
					    cRect posAnim = CalculateAnimationClip(numPix, pos);
 | 
				
			||||||
 | 
					    eAnimType animType = (eAnimType)func->GetNumericParameter(ptAnimType);
 | 
				
			||||||
 | 
					    int animFreq = func->GetNumericParameter(ptAnimFreq);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cAnimatedImage *anim = new cAnimatedImage(animType, animFreq, posAnim, layer);
 | 
				
			||||||
 | 
					    animations.insert(pair<int, cAnimation*>(animCat, anim));
 | 
				
			||||||
 | 
					    if (tmplView) {
 | 
				
			||||||
 | 
					        anim->SetAnimationFadeTime(tmplView->GetNumericParameter(ptFadeTime));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    anim->SetImage(image);
 | 
				
			||||||
 | 
					    anim->Start();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cView::DrawAnimatedText(int numPix, cTemplateFunction *func, cPoint &pos, string text, tColor col, string fontName, int fontSize) {
 | 
				
			||||||
 | 
					    int layer = Layer(numPix);
 | 
				
			||||||
 | 
					    int textWidth = fontManager->Width(fontName, fontSize, text.c_str());
 | 
				
			||||||
 | 
					    int textHeight = fontManager->Height(fontName, fontSize);
 | 
				
			||||||
 | 
					    cRect posOrig(pos.X(), pos.Y(), textWidth, textHeight);
 | 
				
			||||||
 | 
					    cRect posAnim = CalculateAnimationClip(numPix, posOrig);
 | 
				
			||||||
 | 
					    eAnimType animType = (eAnimType)func->GetNumericParameter(ptAnimType);
 | 
				
			||||||
 | 
					    int animFreq = func->GetNumericParameter(ptAnimFreq);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    cAnimatedText *anim = new cAnimatedText(animType, animFreq, posAnim, layer);
 | 
				
			||||||
 | 
					    animations.insert(pair<int, cAnimation*>(animCat, anim));
 | 
				
			||||||
 | 
					    if (tmplView) {
 | 
				
			||||||
 | 
					        anim->SetAnimationFadeTime(tmplView->GetNumericParameter(ptFadeTime));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    anim->SetText(text);
 | 
				
			||||||
 | 
					    anim->SetFont(fontName);
 | 
				
			||||||
 | 
					    anim->SetFontSize(fontSize);
 | 
				
			||||||
 | 
					    anim->SetFontColor(col);
 | 
				
			||||||
 | 
					    anim->Start();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cView::DrawAnimatedOsdObject(int numPix, cTemplateFunction *func, cRect &pos, tColor col, int quadrant) {
 | 
				
			||||||
 | 
					    int layer = Layer(numPix);
 | 
				
			||||||
 | 
					    cRect posAnim = CalculateAnimationClip(numPix, pos);
 | 
				
			||||||
 | 
					    eFuncType funcType = func->GetType();
 | 
				
			||||||
 | 
					    eAnimType animType = (eAnimType)func->GetNumericParameter(ptAnimType);
 | 
				
			||||||
 | 
					    int animFreq = func->GetNumericParameter(ptAnimFreq);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cAnimatedOsdObject *anim = new cAnimatedOsdObject(funcType, animType, animFreq, posAnim, layer);
 | 
				
			||||||
 | 
					    animations.insert(pair<int, cAnimation*>(animCat, anim));
 | 
				
			||||||
 | 
					    if (tmplView) {
 | 
				
			||||||
 | 
					        anim->SetAnimationFadeTime(tmplView->GetNumericParameter(ptFadeTime));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    anim->SetColor(col);
 | 
				
			||||||
 | 
					    anim->SetQuadrant(quadrant);
 | 
				
			||||||
 | 
					    anim->Start();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cRect cView::CalculateAnimationClip(int numPix, cRect &pos) {
 | 
				
			||||||
 | 
					    cPoint posPix;
 | 
				
			||||||
 | 
					    Pos(numPix, posPix);
 | 
				
			||||||
 | 
					    cRect posAnim;
 | 
				
			||||||
 | 
					    posAnim.SetX(posPix.X() + pos.X());
 | 
				
			||||||
 | 
					    posAnim.SetY(posPix.Y() + pos.Y());
 | 
				
			||||||
 | 
					    posAnim.SetWidth(pos.Width());
 | 
				
			||||||
 | 
					    posAnim.SetHeight(pos.Height());
 | 
				
			||||||
 | 
					    return posAnim;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/***********************************************************************
 | 
					/***********************************************************************
 | 
				
			||||||
* cViewElement
 | 
					* cViewElement
 | 
				
			||||||
************************************************************************/
 | 
					************************************************************************/
 | 
				
			||||||
@@ -1021,6 +1160,7 @@ void cViewListItem::ClearListItem(void) {
 | 
				
			|||||||
    for (int pixCurrent = 0; pixCurrent < pixMax; pixCurrent++) {
 | 
					    for (int pixCurrent = 0; pixCurrent < pixMax; pixCurrent++) {
 | 
				
			||||||
        Fill(pixCurrent, clrTransparent);
 | 
					        Fill(pixCurrent, clrTransparent);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    ClearAnimations(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cViewListItem::SetListElementPosition(cTemplatePixmap *pix) {
 | 
					void cViewListItem::SetListElementPosition(cTemplatePixmap *pix) {
 | 
				
			||||||
@@ -1069,7 +1209,6 @@ cGrid::cGrid(cTemplateViewElement *tmplGrid) : cView(tmplGrid) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cGrid::~cGrid() {
 | 
					cGrid::~cGrid() {
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cGrid::Set(double x, double y, double width, double height,
 | 
					void cGrid::Set(double x, double y, double width, double height,
 | 
				
			||||||
@@ -1175,6 +1314,7 @@ void cGrid::Clear(void) {
 | 
				
			|||||||
    for (int pixCurrent = 0; pixCurrent < pixMax; pixCurrent++) {
 | 
					    for (int pixCurrent = 0; pixCurrent < pixMax; pixCurrent++) {
 | 
				
			||||||
        Fill(pixCurrent, clrTransparent);
 | 
					        Fill(pixCurrent, clrTransparent);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    ClearAnimations(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cGrid::DeletePixmaps(void) {
 | 
					void cGrid::DeletePixmaps(void) {
 | 
				
			||||||
@@ -1182,6 +1322,7 @@ void cGrid::DeletePixmaps(void) {
 | 
				
			|||||||
    for (int pixCurrent = 0; pixCurrent < pixMax; pixCurrent++) {
 | 
					    for (int pixCurrent = 0; pixCurrent < pixMax; pixCurrent++) {
 | 
				
			||||||
        DestroyPixmap(pixCurrent);
 | 
					        DestroyPixmap(pixCurrent);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    ClearAnimations(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void cGrid::PositionPixmap(cTemplatePixmap *pix) {
 | 
					void cGrid::PositionPixmap(cTemplatePixmap *pix) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@
 | 
				
			|||||||
#include "map"
 | 
					#include "map"
 | 
				
			||||||
#include "../libcore/pixmapcontainer.h"
 | 
					#include "../libcore/pixmapcontainer.h"
 | 
				
			||||||
#include "../libtemplate/template.h"
 | 
					#include "../libtemplate/template.h"
 | 
				
			||||||
 | 
					#include "animation.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace std;
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -23,6 +24,10 @@ private:
 | 
				
			|||||||
    void DoDrawEllipse(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
 | 
					    void DoDrawEllipse(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
 | 
				
			||||||
    void DoDrawSlope(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
 | 
					    void DoDrawSlope(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
 | 
				
			||||||
    void DoDrawImage(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
 | 
					    void DoDrawImage(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0);
 | 
				
			||||||
 | 
					    void DrawAnimatedImage(int numPix, cTemplateFunction *func, cRect &pos, cImage *image);
 | 
				
			||||||
 | 
					    void DrawAnimatedText(int numPix, cTemplateFunction *func, cPoint &pos, string text, tColor col, string fontName, int fontSize);
 | 
				
			||||||
 | 
					    void DrawAnimatedOsdObject(int numPix, cTemplateFunction *func, cRect &pos, tColor col, int quadrant);
 | 
				
			||||||
 | 
					    cRect CalculateAnimationClip(int numPix, cRect &pos);
 | 
				
			||||||
    void ActivateScrolling(void);
 | 
					    void ActivateScrolling(void);
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
    cTemplateView *tmplView;
 | 
					    cTemplateView *tmplView;
 | 
				
			||||||
@@ -30,6 +35,8 @@ protected:
 | 
				
			|||||||
    cTemplateViewTab *tmplTab;
 | 
					    cTemplateViewTab *tmplTab;
 | 
				
			||||||
    //detached viewelements
 | 
					    //detached viewelements
 | 
				
			||||||
    map < eViewElement, cViewElement* > detachedViewElements;
 | 
					    map < eViewElement, cViewElement* > detachedViewElements;
 | 
				
			||||||
 | 
					    //animated elements
 | 
				
			||||||
 | 
					    multimap < int, cAnimation* > animations;
 | 
				
			||||||
    //scaling window
 | 
					    //scaling window
 | 
				
			||||||
    cRect scalingWindow;
 | 
					    cRect scalingWindow;
 | 
				
			||||||
    bool tvScaled;
 | 
					    bool tvScaled;
 | 
				
			||||||
@@ -44,9 +51,11 @@ protected:
 | 
				
			|||||||
    int scrollDelay;
 | 
					    int scrollDelay;
 | 
				
			||||||
    int scrollMode;
 | 
					    int scrollMode;
 | 
				
			||||||
    int scrollSpeed;
 | 
					    int scrollSpeed;
 | 
				
			||||||
 | 
					    int animCat;
 | 
				
			||||||
    void DrawViewElement(eViewElement ve, map <string,string> *stringTokens = NULL, map <string,int> *intTokens = NULL, map < string, vector< map< string, string > > > *loopTokens = NULL);
 | 
					    void DrawViewElement(eViewElement ve, map <string,string> *stringTokens = NULL, map <string,int> *intTokens = NULL, map < string, vector< map< string, string > > > *loopTokens = NULL);
 | 
				
			||||||
    void ClearViewElement(eViewElement ve);
 | 
					    void ClearViewElement(eViewElement ve);
 | 
				
			||||||
    void DestroyViewElement(eViewElement ve);
 | 
					    void DestroyViewElement(eViewElement ve);
 | 
				
			||||||
 | 
					    void ClearAnimations(int cat);
 | 
				
			||||||
    bool ExecuteViewElement(eViewElement ve);
 | 
					    bool ExecuteViewElement(eViewElement ve);
 | 
				
			||||||
    bool DetachViewElement(eViewElement ve);
 | 
					    bool DetachViewElement(eViewElement ve);
 | 
				
			||||||
    bool ViewElementScrolls(eViewElement ve);
 | 
					    bool ViewElementScrolls(eViewElement ve);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user