⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skin_parser.cpp

📁 video linux conference
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************** * skin_parser.cpp ***************************************************************************** * Copyright (C) 2004 VideoLAN * $Id: skin_parser.cpp 11009 2005-05-14 14:39:05Z ipkiss $ * * Authors: Cyril Deguet     <asmax@via.ecp.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA. *****************************************************************************/#include "skin_parser.hpp"#include <math.h>SkinParser::SkinParser( intf_thread_t *pIntf, const string &rFileName,                        const string &rPath ):    XMLParser( pIntf, rFileName ), m_xOffset( 0 ), m_yOffset( 0 ),    m_path( rPath ){}void SkinParser::handleBeginElement( const string &rName, AttrList_t &attr ){#define CheckDefault( a, b ) \    if( attr.find(a) == attr.end() ) attr[strdup(a)] = strdup(b);#define RequireDefault( a ) \    if( attr.find(a) == attr.end() ) \    { \        msg_Err( getIntf(), "Bad theme (element: %s, missing attribute: %s)", \                 rName.c_str(), a ); \        m_errors = true; return; \    }    if( rName == "Anchor" )    {        RequireDefault( "priority" );        CheckDefault( "x", "0" );        CheckDefault( "y", "0" );        CheckDefault( "points", "(0,0)" );        CheckDefault( "range", "10" );        const BuilderData::Anchor anchor( atoi( attr["x"] ) + m_xOffset,                atoi( attr["y"] ) + m_yOffset, atoi( attr["range"] ),                atoi( attr["priority"] ), attr["points"], m_curLayoutId );        m_data.m_listAnchor.push_back( anchor );    }    else if( rName == "Bitmap" )    {        RequireDefault( "id" );        RequireDefault( "file" );        RequireDefault( "alphacolor" );        const BuilderData::Bitmap bitmap( uniqueId( attr["id"] ),                convertFileName( attr["file"] ),                convertColor( attr["alphacolor"] ) );        m_data.m_listBitmap.push_back( bitmap );    }    else if( rName == "BitmapFont" )    {        RequireDefault( "id" );        RequireDefault( "file" );        CheckDefault( "type", "digits" );        const BuilderData::BitmapFont font( uniqueId( attr["id"] ),                convertFileName( attr["file"] ),                attr["type"] );        m_data.m_listBitmapFont.push_back( font );    }    else if( rName == "Button" )    {        RequireDefault( "up" );        CheckDefault( "id", "none" );        CheckDefault( "visible", "true" );        CheckDefault( "x", "0" );        CheckDefault( "y", "0" );        CheckDefault( "lefttop", "lefttop" );        CheckDefault( "rightbottom", "lefttop" );        CheckDefault( "down", "none" );        CheckDefault( "over", "none" );        CheckDefault( "action", "none" );        CheckDefault( "tooltiptext", "" );        CheckDefault( "help", "" );        const BuilderData::Button button( uniqueId( attr["id"] ),                atoi( attr["x"] ) + m_xOffset, atoi( attr["y"] ) + m_yOffset,                attr["lefttop"], attr["rightbottom"], attr["visible"],                attr["up"], attr["down"], attr["over"], attr["action"],                attr["tooltiptext"], attr["help"],                m_curLayer, m_curWindowId, m_curLayoutId );        m_curLayer++;        m_data.m_listButton.push_back( button );    }    else if( rName == "Checkbox" )    {        RequireDefault( "up1" );        RequireDefault( "up2" );        RequireDefault( "state" );        CheckDefault( "id", "none" );        CheckDefault( "visible", "true" );        CheckDefault( "x", "0" );        CheckDefault( "y", "0" );        CheckDefault( "lefttop", "lefttop" );        CheckDefault( "rightbottom", "lefttop" );        CheckDefault( "down1", "none" );        CheckDefault( "over1", "none" );        CheckDefault( "down2", "none" );        CheckDefault( "over2", "none" );        CheckDefault( "action1", "none" );        CheckDefault( "action2", "none" );        CheckDefault( "tooltiptext1", "" );        CheckDefault( "tooltiptext2", "" );        CheckDefault( "help", "" );        const BuilderData::Checkbox checkbox( uniqueId( attr["id"] ),                atoi( attr["x"] ) + m_xOffset, atoi( attr["y"] ) + m_yOffset,                attr["lefttop"], attr["rightbottom"], attr["visible"],                attr["up1"], attr["down1"], attr["over1"],                attr["up2"], attr["down2"], attr["over2"], attr["state"],                attr["action1"], attr["action2"], attr["tooltiptext1"],                attr["tooltiptext2"], attr["help"], m_curLayer, m_curWindowId,                m_curLayoutId );        m_curLayer++;        m_data.m_listCheckbox.push_back( checkbox );    }    else if( rName == "Font" )    {        RequireDefault( "id" );        RequireDefault( "file" );        CheckDefault( "size", "12" );        const BuilderData::Font fontData( uniqueId( attr["id"] ),                convertFileName( attr["file"] ),                atoi( attr["size"] ) );        m_data.m_listFont.push_back( fontData );    }    else if( rName == "Group" )    {        CheckDefault( "x", "0" );        CheckDefault( "y", "0" );        m_xOffset += atoi( attr["x"] );        m_yOffset += atoi( attr["y"] );        m_xOffsetList.push_back( atoi( attr["x"] ) );        m_yOffsetList.push_back( atoi( attr["y"] ) );    }    else if( rName == "Image" )    {        RequireDefault( "image" );        CheckDefault( "id", "none" );        CheckDefault( "visible", "true" );        CheckDefault( "x", "0" );        CheckDefault( "y", "0" );        CheckDefault( "lefttop", "lefttop" );        CheckDefault( "rightbottom", "lefttop" );        CheckDefault( "action", "none" );        CheckDefault( "resize", "mosaic" );        CheckDefault( "help", "" );        const BuilderData::Image imageData( uniqueId( attr["id"] ),                atoi( attr["x"] ) + m_xOffset, atoi( attr["y"] ) + m_yOffset,                attr["lefttop"], attr["rightbottom"], attr["visible"],                attr["image"], attr["action"], attr["resize"], attr["help"],                m_curLayer, m_curWindowId, m_curLayoutId );        m_curLayer++;        m_data.m_listImage.push_back( imageData );    }    else if( rName == "Layout" )    {        RequireDefault( "width" );        RequireDefault( "height" );        CheckDefault( "id", "none" );        CheckDefault( "minwidth", "-1" );        CheckDefault( "maxwidth", "-1" );        CheckDefault( "minheight", "-1" );        CheckDefault( "maxheight", "-1" );        m_curLayoutId = uniqueId( attr["id"] );        const BuilderData::Layout layout( m_curLayoutId, atoi( attr["width"] ),                atoi( attr["height"] ), atoi( attr["minwidth"] ),                atoi( attr["maxwidth"] ), atoi( attr["minheight"] ),                atoi( attr["maxheight"] ), m_curWindowId );        m_data.m_listLayout.push_back( layout );        m_curLayer = 0;    }    else if( rName == "Playlist" )    {        RequireDefault( "id" );        RequireDefault( "font" );        CheckDefault( "visible", "true" );        CheckDefault( "x", "0" );        CheckDefault( "y", "0" );        CheckDefault( "width", "0" );        CheckDefault( "height", "0" );        CheckDefault( "lefttop", "lefttop" );        CheckDefault( "rightbottom", "lefttop" );        CheckDefault( "bgimage", "none" );        CheckDefault( "fgcolor", "#000000" );        CheckDefault( "playcolor", "#FF0000" );        CheckDefault( "bgcolor1", "#FFFFFF" );        CheckDefault( "bgcolor2", "#FFFFFF" );        CheckDefault( "selcolor", "#0000FF" );        CheckDefault( "help", "" );        m_curListId = uniqueId( attr["id"] );        const BuilderData::List listData( m_curListId, atoi( attr["x"] ) +                m_xOffset, atoi( attr["y"] ) + m_yOffset, attr["visible"],                atoi( attr["width"]), atoi( attr["height"] ),                attr["lefttop"], attr["rightbottom"],                attr["font"], "playlist", attr["bgimage"],                convertColor( attr["fgcolor"] ),                convertColor( attr["playcolor"] ),                convertColor( attr["bgcolor1"] ),                convertColor( attr["bgcolor2"] ),                convertColor( attr["selcolor"] ), attr["help"],                m_curLayer, m_curWindowId, m_curLayoutId );        m_curLayer++;        m_data.m_listList.push_back( listData );    }    else if( rName == "RadialSlider" )    {        RequireDefault( "sequence" );        RequireDefault( "nbimages" );        CheckDefault( "id", "none" );        CheckDefault( "visible", "true" );        CheckDefault( "x", "0" );        CheckDefault( "y", "0" );        CheckDefault( "lefttop", "lefttop" );        CheckDefault( "rightbottom", "lefttop" );        CheckDefault( "minangle", "0" );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -