summaryrefslogtreecommitdiff
path: root/xml
diff options
context:
space:
mode:
authorlordjaxom <lordjaxom>2005-01-26 20:40:28 +0000
committerlordjaxom <lordjaxom>2005-01-26 20:40:28 +0000
commit9295b6677b9a3e33704440efbed9c2070ab0a470 (patch)
tree5018e2bcf10002c2f228420aba8035b33a048708 /xml
parent5394e3dc8d32c7b7530b33d2a66237ea103a1c78 (diff)
downloadvdr-plugin-text2skin-9295b6677b9a3e33704440efbed9c2070ab0a470.tar.gz
vdr-plugin-text2skin-9295b6677b9a3e33704440efbed9c2070ab0a470.tar.bz2
- consistent parent element handling
- cache check now respects requested image's dimensions and alpha
Diffstat (limited to 'xml')
-rw-r--r--xml/function.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/xml/function.c b/xml/function.c
index 468240e..4010ee0 100644
--- a/xml/function.c
+++ b/xml/function.c
@@ -1,5 +1,5 @@
/*
- * $Id: function.c,v 1.13 2005/01/23 19:44:09 lordjaxom Exp $
+ * $Id: function.c,v 1.14 2005/01/26 20:40:28 lordjaxom Exp $
*/
#include "xml/function.h"
@@ -13,16 +13,19 @@ static const char *Internals[] = {
"not", "and", "or", "equal", "file", "trans", "plugin", "gt", "lt", "ge", "le", "ne", NULL
};
-cxFunction::cxFunction(cxSkin *Skin):
- mSkin(Skin),
+cxFunction::cxFunction(cxObject *Parent):
+ mObject(Parent),
+ mSkin(Parent->Skin()),
mType(string),
- mString(Skin, false),
+ mString(mObject, false),
mNumber(0),
mNumParams(0)
{
}
cxFunction::cxFunction(const cxString &String):
+ mObject(String.Object()),
+ mSkin(String.Skin()),
mType(string),
mString(String),
mNumber(0),
@@ -31,6 +34,8 @@ cxFunction::cxFunction(const cxString &String):
}
cxFunction::cxFunction(const cxFunction &Src):
+ mObject(Src.mObject),
+ mSkin(Src.mSkin),
mType(Src.mType),
mString(Src.mString),
mNumber(Src.mNumber),
@@ -118,7 +123,7 @@ bool cxFunction::Parse(const std::string &Text)
}
if (inExpr == 1) {
- expr = new cxFunction(mSkin);
+ expr = new cxFunction(mObject);
if (!expr->Parse(std::string(last, ptr - last))) {
delete expr;
return false;
@@ -180,8 +185,11 @@ bool cxFunction::Parse(const std::string &Text)
cxType cxFunction::FunFile(const cxType &Param) const
{
std::string path = cText2SkinRender::ImagePath(Param);
- Dprintf("checking file(%s) in cache\n", path.c_str());
- return cText2SkinBitmap::Available(path)
+ //Dprintf("checking file(%s) in cache\n", path.c_str());
+ return cText2SkinBitmap::Available(path, mObject->Alpha(),
+ mObject->Size().h > 1 ? mObject->Size().h : 0,
+ mObject->Size().w > 1 ? mObject->Size().w : 0,
+ mObject->Colors())
? (cxType)Param
: (cxType)false;
}
@@ -224,6 +232,8 @@ cxType cxFunction::Evaluate(void) const
return false;
case fun_eq:
+ if (mParams[1]->Evaluate() == "Stereo")
+ Dprintf("eq: |%s| |%s|\n", mParams[0]->Evaluate().String().c_str(), mParams[1]->Evaluate().String().c_str());
return mParams[0]->Evaluate() == mParams[1]->Evaluate();
case fun_ne: