diff options
Diffstat (limited to 'glcdskin')
-rw-r--r-- | glcdskin/object.c | 19 | ||||
-rw-r--r-- | glcdskin/parser.c | 1 |
2 files changed, 14 insertions, 6 deletions
diff --git a/glcdskin/object.c b/glcdskin/object.c index 1b1417b..6e87b95 100644 --- a/glcdskin/object.c +++ b/glcdskin/object.c @@ -510,18 +510,25 @@ void cSkinObject::Render(GLCD::cBitmap * screen) int loops = 1; int varx[5] = {0, 0, 0, 0, 0}; int vary[5] = {0, 0, 0, 0, 0}; + + int fxOff = 1; + if (mRadius > 1) + fxOff = 2; switch (mEffect) { case tfxShadow: - loops = 2; - varx[0] = 1; vary[0] = 1; + loops = 1; + for (int fxi = 0; fxi < fxOff; fxi++) { + varx[fxi] = fxi + 1; vary[fxi] = fxi + 1; + loops++; + } break; case tfxOutline: loops = 5; - varx[0] = -1; vary[0] = 0; - varx[1] = 1; vary[1] = 0; - varx[2] = 0; vary[2] = -1; - varx[3] = 0; vary[3] = 1; + varx[0] = -fxOff; vary[0] = 0; + varx[1] = fxOff; vary[1] = 0; + varx[2] = 0; vary[2] = -fxOff; + varx[3] = 0; vary[3] = fxOff; break; case tfxNone: // no-one gets forgotten here, so make g++ happy default: diff --git a/glcdskin/parser.c b/glcdskin/parser.c index cb90fa0..b017326 100644 --- a/glcdskin/parser.c +++ b/glcdskin/parser.c @@ -298,6 +298,7 @@ bool StartElem(const std::string & name, std::map<std::string,std::string> & att ATTRIB_OPT_FUNC("altcondition", object->ParseAltCondition); ATTRIB_OPT_FUNC_PARAM("effectcolor", object->ParseColor, object->mEffectColor); ATTRIB_OPT_FUNC("effect", object->ParseEffect); + ATTRIB_OPT_NUMBER("radius", object->mRadius); } else if (name == "button") { |