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:
parent
22da0fccd4
commit
e8291960bd
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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user