summaryrefslogtreecommitdiff
path: root/display.c
diff options
context:
space:
mode:
authorChristian Tusche <chr13@gmx.net>2007-05-06 17:26:51 +0200
committerThomas Günther <tom@toms-cafe.de>2009-06-04 00:40:07 +0200
commit0b3f86344a87940d324695e0bc9449c35cbf60d4 (patch)
treef4562fbc169695101eaab3bc25e813fc0f0c761a /display.c
parentac64ce03ec6b5766691ff2da3af6f51ed800792a (diff)
downloadvdr-plugin-text2skin-0b3f86344a87940d324695e0bc9449c35cbf60d4.tar.gz
vdr-plugin-text2skin-0b3f86344a87940d324695e0bc9449c35cbf60d4.tar.bz2
2007-05-06: Version 1.1-cvs_ext-0.10a (text2skin-1.1-cvs_ext-0.10a.diff)
- increased efficiency in drawing list items in the main menu - introduce relative Pos and Size of objects to given BasePos, BaseSize (used to draw list items)
Diffstat (limited to 'display.c')
-rw-r--r--display.c101
1 files changed, 62 insertions, 39 deletions
diff --git a/display.c b/display.c
index 9960eac..8c03c12 100644
--- a/display.c
+++ b/display.c
@@ -962,11 +962,8 @@ cxType cText2SkinDisplayMenu::GetTokenData(const txToken &Token)
switch (Token.Type) {
case tMenuItem:
case tMenuGroup:
- if (Token.Index < 0) return false;
case tMenuCurrent:
- if (Token.Index >= 0 && Token.Tab == -1) return false;
break;
-
default:
if (Token.Tab >= 0) return false;
break;
@@ -977,38 +974,63 @@ cxType cText2SkinDisplayMenu::GetTokenData(const txToken &Token)
return mTitle;
case tMenuItem:
- return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel
- && mCurrentItem != (uint)Token.Index
- ? (cxType)mItems[Token.Index].tabs[Token.Tab]
- : (cxType)false;
+ if (Token.Index < 0) return false;
+
+ if( mItems.size() <= (uint)Token.Index || !mItems[Token.Index].sel ||
+ mCurrentItem == (uint)Token.Index )
+ return false;
+
+ if (Token.Tab < 0) {
+ return Token.Attrib.Type == aNumber
+ ? (cxType)mItems[Token.Index].tabs[Token.Attrib.Number]
+ : (cxType)mItems[Token.Index].text;
+ }
+
+ return (cxType)mItems[Token.Index].tabs[Token.Tab];
case tIsMenuItem:
return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel
&& mCurrentItem != (uint)Token.Index;
case tMenuCurrent:
+ if(mItems.size() <= mCurrentItem)
+ return false;
+
if (Token.Index < 0) {
- if (mItems.size() > mCurrentItem)
- return Token.Attrib.Type == aNumber
- ? (cxType)mItems[mCurrentItem].tabs[Token.Attrib.Number]
- : (cxType)mItems[mCurrentItem].text;
- else
- return false;
+ return Token.Attrib.Type == aNumber
+ ? (cxType)mItems[mCurrentItem].tabs[Token.Attrib.Number]
+ : (cxType)mItems[mCurrentItem].text;
}
- return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel
- && mCurrentItem == (uint)Token.Index
- ? (cxType)mItems[Token.Index].tabs[Token.Tab]
- : (cxType)false;
+ if( mItems.size() <= (uint)Token.Index || !mItems[Token.Index].sel ||
+ mCurrentItem != (uint)Token.Index )
+ return false;
+
+ if (Token.Tab < 0) {
+ return Token.Attrib.Type == aNumber
+ ? (cxType)mItems[Token.Index].tabs[Token.Attrib.Number]
+ : (cxType)mItems[Token.Index].text;
+ }
+
+ return (cxType)mItems[Token.Index].tabs[Token.Tab];
case tIsMenuCurrent:
return mItems.size() > (uint)Token.Index && mItems[Token.Index].sel
&& mCurrentItem == (uint)Token.Index;
case tMenuGroup:
- return mItems.size() > (uint)Token.Index && !mItems[Token.Index].sel
- ? (cxType)mItems[Token.Index].tabs[Token.Tab]
- : (cxType)false;
+ if (Token.Index < 0) return false;
+
+ if( mItems.size() <= (uint)Token.Index || mItems[Token.Index].sel)
+ return false;
+
+ if (Token.Tab < 0) {
+ return Token.Attrib.Type == aNumber
+ ? (cxType)mItems[Token.Index].tabs[Token.Attrib.Number]
+ : (cxType)mItems[Token.Index].text;
+ }
+
+ return (cxType)mItems[Token.Index].tabs[Token.Tab];
case tIsMenuGroup:
return mItems.size() > (uint)Token.Index && !mItems[Token.Index].sel;
@@ -1417,17 +1439,7 @@ void cText2SkinDisplayTracks::SetAudioChannel(int AudioChannel)
cxType cText2SkinDisplayTracks::GetTokenData(const txToken &Token)
{
- switch (Token.Type) {
- case tMenuItem:
- if (Token.Index < 0) return false;
- case tMenuCurrent:
- if (Token.Index >= 0 && Token.Tab == -1) return false;
- break;
-
- default:
- if (Token.Tab >= 0) return false;
- break;
- }
+ if (Token.Tab >= 0) return false;
int index = Token.Index;
if (index >= 0 && mCurrentItem >= (uint)mMaxItems) {
@@ -1440,17 +1452,28 @@ cxType cText2SkinDisplayTracks::GetTokenData(const txToken &Token)
return mTitle;
case tMenuItem:
- return mItems.size() > (uint)index && mCurrentItem != (uint)index
- ? (cxType)mItems[index]
- : (cxType)false;
-
+ if (index < 0) return false;
+
+ if( mItems.size() <= (uint)index || mCurrentItem == (uint)index )
+ return false;
+
+ return (cxType)mItems[index];
+
case tIsMenuItem:
return mItems.size() > (uint)index && mCurrentItem != (uint)index;
-
+
case tMenuCurrent:
- return mItems.size() > (uint)index && mCurrentItem == (uint)index
- ? (cxType)mItems[index]
- : (cxType)false;
+ if(mItems.size() <= mCurrentItem)
+ return false;
+
+ if (index < 0) {
+ return (cxType)mItems[mCurrentItem];
+ }
+
+ if( mItems.size() <= (uint)index || mCurrentItem != (uint)index )
+ return false;
+
+ return (cxType)mItems[index];
case tIsMenuCurrent:
return mItems.size() > (uint)index && mCurrentItem == (uint)index;