?? guiparser.h.svn-base
字號:
/***************************************** Copyright 2001-2003 Sigma Designs, Inc. All Rights Reserved Proprietary and Confidential *****************************************//** @file guiparser.h @brief gui xml parser @author Raul Chirinos, Laurent Crinon @date 2004-03-02*/#ifndef __RMCURACAOGUI_PARSER_H__#define __RMCURACAOGUI_PARSER_H__#include "rmdef/rmdef.h"#include "rmtinyxml/src/tinyxml/tinyxml.h"#include "guitypes.h"// xml KiSS addon#ifdef GUI_REFID_2#define DEFAULT_FONT "KiSS_Cinea_18_8859_1"#ifdef GUI_REFID_3#define DEFAULT_FOREGROUNDCOLOR "0xe0ffffff"//#define DEFAULT_BACKGROUNDCOLOR "0xe0372b3d"#define DEFAULT_BACKGROUNDCOLOR "0xe0372b3d"#define DEFAULT_BUTTON_BACKGROUNDCOLOR "0xe0877b8d"#define DEFAULT_TRANSPERACY_COLOR "0x80ff0000"#define DEFAULT_MENUITEM_COLOR "0xe0ffffff"#define DEFAULT_MENU_COLOR "0xe0ffffff"#define DEFAULT_POPUP_FILE "popupbox_small.png"#define BIG_POPUP_FILE "popupbox_big.png"#define DEFAULT_POPUP_X "200"#define DEFAULT_POPUP_Y "150"#define DEFAULT_BIGPOPUP_X "100"#define DEFAULT_BIGPOPUP_Y "105"#define DEFAULT_MENU_X "163"#define DEFAULT_MENU_Y "102"#define DEFAULT_ICON_WIDTH "26"#else#define DEFAULT_FOREGROUNDCOLOR "0xd0ffffff"#define DEFAULT_BACKGROUNDCOLOR "0xd0152747"#define DEFAULT_BUTTON_BACKGROUNDCOLOR "0xd07589A2"#define DEFAULT_TRANSPERACY_COLOR "0x80ff0000"#define DEFAULT_MENUITEM_COLOR "0x80fdcb1f"#define DEFAULT_MENU_COLOR "0xd0ffffff"#define DEFAULT_POPUP_FILE "popupbox_small.png"#define BIG_POPUP_FILE "popupbox_big.png"#define DEFAULT_POPUP_X "200"#define DEFAULT_POPUP_Y "150"#define DEFAULT_BIGPOPUP_X "100"#define DEFAULT_BIGPOPUP_Y "105"#define DEFAULT_MENU_X "163"#define DEFAULT_MENU_Y "128"#define DEFAULT_ICON_WIDTH "26"#endif//10 subtracted#define DEFAULT_SLIDER_X "110"#define DEFAULT_SLIDER_Y "400"#define DEFAULT_MENU_HEIGHT "360"#define DEFAULT_MENU_WIDTH "485"#define DEFAULT_SLIDER_WIDTH "500"#define DEFAULT_SLIDER_HEIGHT "34"#define DEFAULT_STRING_WIDTH "520"#define DEFAULT_STRING_HEIGHT "20"#define KEYBOARD_WIDTH_REGULAR 48#define KEYBOARD_WIDTH_WIDE 96#define KEYBOARD_HEIGHT 44#define KEYBOARD_Y_OFFSET 156#define KEYBOARD_X_OFFSET 72#define KEYBOARD_X_MARGIN 0#define KEYBOARD_Y_MARGIN 0#else#define DEFAULT_FONT "SigmaOSD118x23"#endif // GUI_REFID_2// xml identifiers#define XMLBUTTON_NODE "button"#define XMLBITMAP_NODE "bitmap"#define XMLMEDIACONTROL_NODE "mediaControls"#define XMLLANGTABLE_NODE "langTable"#define XMLLANGITEM_NODE "langItem"#define XMLTRANSLATION_NODE "translation"#define XMLANIMATIONS_NODE "animations"#define XMLANIMATIONITEM_NODE "animationItem"#define XMLPANEL_NODE "panel"#define XMLSCREENFORMAT_NODE "screenFormat"#define XMLMAINPAGE_NODE "mainPage"#define XMLMESSAGEPOPUP_NODE "messagePopup"#define XMLURL_NODE "url"#define XMLOSDPAGELIST_NODE "osdPageList"#define XMLWIDTH_NODE "width"#define XMLHEIGHT_NODE "height"#define XMLDEFAULT_NODE "default"#define XMLOSDPAGE_NODE "osdPage"#define XMLDYNPAGE_NODE "dynamic"#define XMLNAME_NODE "name"#define XMLLANG_NODE "lang"#define XMLSHADOW_NODE "shadow"#define XMLFILE_NODE "file"#define XMLORIENTATION_NODE "orientation"#define XMLSELECTOVERLAY_NODE "selectoverlay"#define XMLURL_NODE "url"#define XMLSKIN_NODE "skin"#define XMLSELECTEDFILE_NODE "selectedFile"#define XMLITEMPATH_NODE "path"#define XMLDIRECTOR_NODE "director"#define XMLPRICE_NODE "price"#define XMLDESCRIPTION_NODE "description"#define XMLACTORS_NODE "actors"#define XMLCOMPANY_NODE "company"#define XMLSUBTITLES_NODE "subtitles"#define XMLTIME_NODE "time"#define XMLYEAR_NODE "year"#define XMLFILETYPE_NODE "filetype"#define XMLX_NODE "x"#define XMLY_NODE "y"#define XMLITEMSPAGE_NODE "itemsPage"#define XMLEXTENDEDLIST_NODE "extended"#define XMLARROMUP_NODE "fileArrowUp"#define XMLINFO_NODE "info"#define XMLARROMUPINACTIVE_NODE "fileArrowUpInactive"#define XMLARROMDOWN_NODE "fileArrowDown"#define XMLARROMDOWNINACITVE_NODE "fileArrowDownInactive"#define XMLVISIBLE_NODE "visible"#define XMLEVENTLIST_NODE "eventList"#define XMLBUTTONLIST_NODE "buttonList"#define XMLBITMAPLIST_NODE "bitmapList"#define XMLICONLIST_NODE "iconList"#define XMLEVENT_NODE "event"#define XMLBACKGROUNDCOLOR_NODE "backgroundcolor"#define XMLFOREGROUNDCOLOR_NODE "foregroundcolor"#define XMLBORDER_NODE "border"#define XMLOUTLINECOLOR_NODE "outlinecolor"#define XMLSELECTIONCOLOR_NODE "selectioncolor"#define XMLTRANSPARENTCOLOR_NODE "transparentcolor"#define XMLUSETRANSPARENTCOLOR_NODE "usetransparentcolor"#define XMLFONTFILE_NODE "fontfile"#define XMLCHARWIDTH_NODE "charwidth"#define XMLROUNDED_NODE "rounded"#define XMLTEXT_NODE "text"#define XMLSTATE_NODE "state"#define XMLPREVPAGE_NODE "previousPage"#define XMLKEYDOWN_NODE "keydown"#define XMLKEYUP_NODE "keyup"#define XMLKEYLEFT_NODE "keyleft"#define XMLKEYRIGHT_NODE "keyright"#define XMLCOMMAND_NODE "command"#define XMLLINK_NODE "link"#define XMLCOMMANDLIST_NODE "commandList"#define XMLID_NODE "id"#define XMLMENU_NODE "menu"#define XMLMENUITEM_NODE "menuitem"#define XMLMENULIST_NODE "menuList"#define XMLMENUITEMLIST_NODE "menuitemList"#define XMLINDEX_NODE "index"#define XMLTEXTALIGN_NODE "textalign"#define XMLTEXTVALUE_NODE "textvalue"#define XMLPOPUP_NODE "popup"#define XMLPOPUPLIST_NODE "popupList"#define XMLTRANSPARENTBACKGROUND_NODE "transparentbackground"#define XMLSTRING_NODE "string"#define XMLSTRINGLIST_NODE "stringList"#define XMLPASSWORD_NODE "password"#define XMLSTRINGITEMLIST_NODE "stringItemList"#define XMLSTRINGITEM_NODE "stringItem"#define XMLLIST_NODE "list"#define XMLLISTS_NODE "Lists"#define XMLLISTITEMS_NODE "listItems"#define XMLITEM_NODE "item"#define XMLICON_NODE "icon"#define XMLICONLIST_NODE "iconList"#define XMLTYPE_NODE "type"#define XMLTHUMBFULL_NODE "full"#define XMLTHUMB_NODE "thumb"#define XMLTHUMBMID_NODE "thumbMid"#define XMLTHUMBSTARTX_NODE "thumbStartX"#define XMLTHUMBSTARTY_NODE "thumbStartY"#define XMLTHUMBENDX_NODE "thumbEndX"#define XMLTHUMBENDY_NODE "thumbEndY"#define XMLEVENTBITMAPLIST_NODE "eventBitmapList"#define XMLSLIDERLIST_NODE "sliderList"#define XMLSLIDER_NODE "slider"#define XMLMIN_NODE "min"#define XMLMAX_NODE "max"#define XMLSTEPS_NODE "steps"#define XMLVALUE_NODE "value"#define XMLSELECTEDOBJECT_NODE "selectedObject"#define XMLTEXTTABLELIST_NODE "textTableList"#define XMLTEXTTABLE_NODE "textTable"#define XMLTEXTITEMLIST_NODE "textItemList"#define XMLTEXTITEM_NODE "textItem"#define XMLCOLUMNS_NODE "columns"#define XMLROW_NODE "row"#define XMLCOLUMN_NODE "column"#define XMLMERGECOLUMNS_NODE "mergecolumns"#define XMLCOLUMNWIDTH_NODE "columnWidth"#define XMLMEDIALIST_NODE "mediaList"#define XMLMEDIA_NODE "media"#define XMLDURATION_NODE "duration"#define XMLWHENDONE_NODE "whenDone"#define XMLCANSKIP_NODE "canskip"#define XMLCHAPTER_NODE "chapter"#define XMLCHAPTERLIST_NODE "chapterList"#define XMLSTARTTIME_NODE "startTime"#define XMLMENUOUTLINECOLOR_NODE "menuOutlineColor"#define XMLMINLENGTH_NODE "minLength"#define XMLMAXLENGTH_NODE "maxLength"#define XMLZINDEX_NODE "zIndex"#define XMLINVERTDISPLAY_NODE "invertDisplay"#define XMLICONWIDTH_NODE "iconWidth"class RMcuracaoGuiParser{ public: RMcuracaoGuiParser(); ~RMcuracaoGuiParser(); RMstatus DoParsing(RMnonAscii *xmlFile); RMint16 ParseWEBPage(guiOsdPageType **pages, RMuint8 pageId, RMuint8* buffer, RMuint16 size); guiListType* ParseWEBList(guiOsdPageType **pages, RMuint32 pageId, RMuint8* buffer, RMuint16 size); guiPopupType* ParseWEBPopup(guiPopupType** popups, RMuint16* nbPopups, RMuint8* buffer, RMuint16 size); guiListItemType* RefreshListItem(RMuint32 pageId, RMuint16 listId, RMuint16 itemId, RMuint8* buffer, RMuint16 size); RMstatus Close(); RMstatus GetPlayerParams(guiPlayerParams *params); RMstatus GetPages(guiOsdPageType *pages[MAX_GUI_PAGES], RMuint16 *npages); RMstatus GetMediaControls(guiMediaControls **controls); RMstatus GetAnimation(guiAnimationType **animation); RMstatus GetScreenFormat(guiScreenFormatType* screenFormat); RMstatus GetCommands(guiCommandType *commands[MAX_GUI_COMMANDS], RMuint16 *ncommands); RMstatus GetPopups(guiPopupType *popup[MAX_GUI_POPUPS], RMuint16 *npopups); RMstatus GetIcons(guiIconType *icon[MAX_GUI_ICONS], RMuint16 *nicons); RMstatus GetEventBitmaps(guiBitmapType *icon[MAX_GUI_EVENTBITMAPS], RMuint16 *nbitmaps); RMstatus GetSliders(guiSliderType *slider[MAX_GUI_SLIDERS], RMuint16 *nsliders); RMstatus GetTextTables(guiTextTableType *texttable[MAX_GUI_TEXTTABLES], RMuint16 *ntextTables); RMstatus GetMediaFiles(guiMediaType *media[MAX_GUI_MEDIA], RMuint16 *nmediaFiles); RMstatus GetEvents(guiEventType *events[MAX_GUI_EVENTS], RMuint16 *nevents); RMstatus UpdateMenuLink(RMascii* menuItem, RMascii* menuName, RMuint32 pageId); const RMascii* GetUrl() {return m_url;} const RMascii* GetBitmapPath() {return m_bitmapsPath;} const RMascii* GetLangPath() { return m_langPage;}#ifdef GUI_REFID_2 RMstatus updateObjectTextByName(RMascii *name, RMascii *objectText, RMbool multibleObjects);#endif private: guiScreenFormatType m_screenFormat; guiMediaControls *m_mediaControls; guiLangTranslations* m_langTranslations; guiAnimationType *m_loadAnimation; guiOsdPageType *m_osdPages[MAX_GUI_PAGES]; guiCommandType *m_Commands[MAX_GUI_COMMANDS]; guiPopupType *m_Popups[MAX_GUI_POPUPS]; guiIconType *m_Icons[MAX_GUI_ICONS]; guiBitmapType *m_EventBitmaps[MAX_GUI_EVENTBITMAPS]; guiSliderType *m_Sliders[MAX_GUI_SLIDERS]; guiTextTableType *m_TextTables[MAX_GUI_TEXTTABLES]; guiMediaType *m_MediaFiles[MAX_GUI_MEDIA]; guiEventType *m_Events[MAX_GUI_EVENTS]; guiPlayerParams m_playerParams; RMascii* m_url; RMascii* m_langPage; RMascii* m_bitmapsPath; RMuint16 m_nbOsdPages; RMuint16 m_nbCommands; RMuint16 m_nbPopups; RMuint16 m_nbIcons; RMuint16 m_nbEventBitmaps; RMuint16 m_nbSliders; RMuint16 m_nbTextTables; RMuint16 m_nbMediaFiles; RMuint16 m_nbEvents; // these are used only to set ids. pages use their index number as id RMuint32 m_nextButtonId; RMuint32 m_nextBitmapId; RMuint32 m_nextMenuId; RMuint32 m_nextSubMenuButtonId; RMuint32 m_nextListId; RMuint32 m_nextStringId; RMuint32 m_nextChapterId; RMuint32 ConvertSMPTEtoSecs(const RMascii* str); private: RMstatus ParseScreenFormat(TiXmlElement *pnode); RMstatus ParsePageList(TiXmlElement *pnode); RMstatus ParseMediaControls(TiXmlElement *pnode); RMstatus ParseLangTable(TiXmlElement *pnode); RMstatus ParseAnimations(TiXmlElement *pnode); guiPanelType* ParsePanels(TiXmlElement *pnode); guiAnimationItem* ParseAnimationItem(TiXmlElement *pnode); guiOsdPageType* ParseOsdPage(TiXmlElement *pnode); RMstatus ParseEventList(TiXmlElement *pnode, guiEventType *events[MAX_GUI_EVENTS], RMuint16 *nbEvents); guiEventType *ParseEvent(TiXmlElement *pnode); RMstatus ParseEventList(TiXmlElement *pnode); RMstatus ParseButtonList(TiXmlElement *pnode, guiButtonType *buttons[MAX_GUI_BUTTONS], RMuint16 *nbButtons, guiMenuType *pMenu); guiButtonType *ParseButton(TiXmlElement *pnode, guiMenuType *pMenu); RMstatus ParseBitmapList(TiXmlElement *pnode, guiBitmapType *bitmaps[MAX_GUI_BITMAPS], RMuint16 *nbBitmaps); guiBitmapType *ParseBitmap(TiXmlElement *pnode); RMstatus ParseCommandList(TiXmlElement *pnode); guiCommandType *ParseCommand(TiXmlElement *pnode); RMstatus ParseMenuList(TiXmlElement *pnode, guiMenuType *menus[MAX_GUI_MENUS], RMuint16 *nbMenus); guiMenuType *ParseMenu(TiXmlElement *pnode); RMstatus ParseMenuItemList(TiXmlElement *pnode, guiMenuItemType *items[MAX_GUI_MENUITEMS], RMuint16 *nbItems, guiMenuType *pMenu); guiMenuItemType *ParseMenuItem(TiXmlElement *pnode, guiMenuType *pMenu); RMstatus ParsePopupList(TiXmlElement *pnode); guiPopupType *ParsePopup(TiXmlElement *pnode); RMstatus ParseStringList(TiXmlElement *pnode, guiStringType *items[MAX_GUI_STRINGS], RMuint16 *nbStrings); guiStringType *ParseString(TiXmlElement *pnode); RMstatus ParseLists(TiXmlElement *pnode, guiListType *lists[MAX_GUI_LISTS], RMuint16 *nbLists); guiListType *ParseList(TiXmlElement *pnode); RMstatus ParseIconList(TiXmlElement *pnode); guiIconType *ParseIcon(TiXmlElement *pnode); RMstatus ParseEventBitmapList(TiXmlElement *pnode); RMstatus ParseSliderList(TiXmlElement *pnode); guiSliderType *ParseSlider(TiXmlElement *pnode); RMstatus ParseTextTableList(TiXmlElement *pnode); guiTextTableType *ParseTextTable(TiXmlElement *pnode); RMstatus ParseTextItemList(TiXmlElement *pnode, guiTextItemType *items[MAX_GUI_TEXTITEMS], RMuint16 *nbItems); guiTextItemType *ParseTextItem(TiXmlElement *pnode); RMstatus ParseMediaList(TiXmlElement *pnode); guiMediaType *ParseMediaFile(TiXmlElement *pnode); RMstatus ParseChapterList(TiXmlElement *pnode, guiChapterType *chapters[MAX_GUI_CHAPTERS], RMuint16 *nbChapters); guiChapterType *ParseChapter(TiXmlElement *pnode); RMstatus ParseListItems(TiXmlElement *pnode, guiListItemType *items[MAX_GUI_LISTITEMS], RMuint16 *nbItems, guiListType *pList); guiTranslation* ParseTranslation(TiXmlElement *pnode); guiListItemType *ParseListItem(TiXmlElement *pnode, guiListType *pList); void FillLangTable(const RMascii* original, RMascii** table, guiTranslation **item); void FreeOsdPage(guiOsdPageType *page); void FreePanel(guiPanelType* panel); void FreeAnimationItem(guiAnimationItem* item); void FreeMediaControls(guiMediaControls* media); void FreeAnimations(guiAnimationType *page); void FreeTranslations(guiLangTranslations *page); void FreeEvent(guiEventType *event); void FreeButton(guiButtonType *button); void FreeBitmap(guiBitmapType *bitmap); void FreeCommand(guiCommandType *command); void FreeMenu(guiMenuType *menu); void FreeMenuItem(guiMenuItemType *menuitem); void FreePopup(guiPopupType *popup); void FreeString(guiStringType *string); void FreeList(guiListType *list); void FreeIcon(guiIconType *item); void FreeSlider(guiSliderType *slider); void FreeTextTable(guiTextTableType *table); void FreeTextItem(guiTextItemType *textitem); void FreeMediaFile(guiMediaType *media); void FreeChapter(guiChapterType *chapter); void FreePlayerParams(); void FreeListItem(guiListItemType *item); // auto key navigation functions RMstatus DoPageAutoKeyNavigation(guiOsdPageType *page); RMstatus DoPopupAutoKeyNavigation(guiPopupType *popup);};#endif // __RMCURACAOGUI_PARSER_H__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -