From 85fad441ea3f7a343c9a3b8bed0a6c3ec8b5e224 Mon Sep 17 00:00:00 2001 From: Cyril Deguet Date: Thu, 10 Nov 2005 20:42:48 +0000 Subject: [PATCH] * winamp2.xml: added the Equalizer and Playlist windows. Now it starts to really look cool ;-) * builder.cpp: look for fonts in the resource path if the font file cannot be found in the theme itself * ctrl_slider.cpp: fixed the hack for winamp: the bar images are separated by 2 rows, not 3... --- modules/gui/skins2/controls/ctrl_slider.cpp | 4 +- modules/gui/skins2/parser/builder.cpp | 44 ++++++++- modules/gui/skins2/parser/builder.hpp | 8 +- modules/gui/skins2/parser/skin_parser.cpp | 29 ++---- modules/gui/skins2/parser/skin_parser.hpp | 5 +- modules/gui/skins2/src/theme_loader.cpp | 4 +- share/Makefile.am | 1 + share/skins2/fonts/FreeSansBold.ttf | Bin 0 -> 64228 bytes share/skins2/winamp2.xml | 96 +++++++++++++++++--- 9 files changed, 147 insertions(+), 44 deletions(-) create mode 100644 share/skins2/fonts/FreeSansBold.ttf diff --git a/modules/gui/skins2/controls/ctrl_slider.cpp b/modules/gui/skins2/controls/ctrl_slider.cpp index 73edd8cb2e..744d3f806a 100644 --- a/modules/gui/skins2/controls/ctrl_slider.cpp +++ b/modules/gui/skins2/controls/ctrl_slider.cpp @@ -387,9 +387,9 @@ void CtrlSliderBg::draw( OSGraphics &rImage, int xDest, int yDest ) if( m_pImgSeq ) { // Draw the background image - // XXX the "-3" is a hack for winamp skins... + // XXX the "-2" is a hack for winamp skins... rImage.drawGraphics( *m_pImgSeq, 0, m_position * m_bgHeight, - xDest, yDest, m_bgWidth, m_bgHeight - 3); + xDest, yDest, m_bgWidth, m_bgHeight - 2); } } diff --git a/modules/gui/skins2/parser/builder.cpp b/modules/gui/skins2/parser/builder.cpp index ef1b93f1f9..ab7bb28088 100644 --- a/modules/gui/skins2/parser/builder.cpp +++ b/modules/gui/skins2/parser/builder.cpp @@ -52,8 +52,9 @@ #include "vlc_image.h" -Builder::Builder( intf_thread_t *pIntf, const BuilderData &rData ): - SkinObject( pIntf ), m_rData( rData ), m_pTheme( NULL ) +Builder::Builder( intf_thread_t *pIntf, const BuilderData &rData, + const string &rPath ): + SkinObject( pIntf ), m_rData( rData ), m_path( rPath ), m_pTheme( NULL ) { m_pImageHandler = image_HandlerCreate( pIntf ); } @@ -145,7 +146,7 @@ void Builder::addBitmap( const BuilderData::Bitmap &rData ) { GenericBitmap *pBmp = new FileBitmap( getIntf(), m_pImageHandler, - rData.m_fileName, rData.m_alphaColor ); + getFilePath( rData.m_fileName ), rData.m_alphaColor ); if( !pBmp->getData() ) { // Invalid bitmap @@ -181,7 +182,8 @@ void Builder::addSubBitmap( const BuilderData::SubBitmap &rData ) void Builder::addBitmapFont( const BuilderData::BitmapFont &rData ) { GenericBitmap *pBmp = - new FileBitmap( getIntf(), m_pImageHandler, rData.m_file, 0 ); + new FileBitmap( getIntf(), m_pImageHandler, + getFilePath( rData.m_file ), 0 ); if( !pBmp->getData() ) { // Invalid bitmap @@ -205,7 +207,9 @@ void Builder::addBitmapFont( const BuilderData::BitmapFont &rData ) void Builder::addFont( const BuilderData::Font &rData ) { - GenericFont *pFont = new FT2Font( getIntf(), rData.m_fontFile, + // Try to load the font from the theme directory + GenericFont *pFont = new FT2Font( getIntf(), + getFilePath( rData.m_fontFile ), rData.m_size ); if( pFont->init() ) { @@ -214,6 +218,28 @@ void Builder::addFont( const BuilderData::Font &rData ) else { delete pFont; + + // Font not found; try in the resource path + OSFactory *pOSFactory = OSFactory::instance( getIntf() ); + const list &resPath = pOSFactory->getResourcePath(); + const string &sep = pOSFactory->getDirSeparator(); + + list::const_iterator it; + for( it = resPath.begin(); it != resPath.end(); it++ ) + { + string path = (*it) + sep + "fonts" + sep + rData.m_fontFile; + pFont = new FT2Font( getIntf(), path, rData.m_size ); + if( pFont->init() ) + { + // Font loaded successfully + m_pTheme->m_fonts[rData.m_id] = GenericFontPtr( pFont ); + break; + } + else + { + delete pFont; + } + } } } @@ -865,6 +891,14 @@ GenericFont *Builder::getFont( const string &fontId ) } +string Builder::getFilePath( const string &rFileName ) const +{ + OSFactory *pFactory = OSFactory::instance( getIntf() ); + return m_path + pFactory->getDirSeparator() + rFileName; +} + + + Bezier *Builder::getPoints( const char *pTag ) const { vector xBez, yBez; diff --git a/modules/gui/skins2/parser/builder.hpp b/modules/gui/skins2/parser/builder.hpp index f041d56ee4..80c80a1032 100644 --- a/modules/gui/skins2/parser/builder.hpp +++ b/modules/gui/skins2/parser/builder.hpp @@ -46,7 +46,8 @@ class Theme; class Builder: public SkinObject { public: - Builder( intf_thread_t *pIntf, const BuilderData &rData ); + Builder( intf_thread_t *pIntf, const BuilderData &rData, + const string &rPath ); virtual ~Builder(); /// Create a Theme object, ready to use. @@ -59,6 +60,8 @@ class Builder: public SkinObject private: /// Data from the XML const BuilderData &m_rData; + /// Path of the theme + const string m_path; /// Theme under construction Theme *m_pTheme; @@ -87,6 +90,9 @@ class Builder: public SkinObject int xPos, int yPos, int width, int height, const Box &rBox ) const; + // Build the full path of a file + string getFilePath( const string &fileName ) const; + /// Get a font from its id GenericFont *getFont( const string &fontId ); diff --git a/modules/gui/skins2/parser/skin_parser.cpp b/modules/gui/skins2/parser/skin_parser.cpp index d7996a70f5..c04bf090f9 100644 --- a/modules/gui/skins2/parser/skin_parser.cpp +++ b/modules/gui/skins2/parser/skin_parser.cpp @@ -27,8 +27,8 @@ SkinParser::SkinParser( intf_thread_t *pIntf, const string &rFileName, const string &rPath, bool useDTD, BuilderData *pData ): - XMLParser( pIntf, rFileName, useDTD ), m_pData(pData), - m_ownData(pData == NULL), m_xOffset( 0 ), m_yOffset( 0 ), m_path( rPath ) + XMLParser( pIntf, rFileName, useDTD ), m_path( rPath), m_pData(pData), + m_ownData(pData == NULL), m_xOffset( 0 ), m_yOffset( 0 ) { // Make sure the data is allocated if( m_pData == NULL ) @@ -62,12 +62,13 @@ void SkinParser::handleBeginElement( const string &rName, AttrList_t &attr ) if( rName == "Include" ) { RequireDefault( "file" ); - msg_Dbg( getIntf(), "Opening included XML file: %s", - convertFileName( attr["file"] ).c_str() ); + + OSFactory *pFactory = OSFactory::instance( getIntf() ); + string fullPath = m_path + pFactory->getDirSeparator() + attr["file"]; + msg_Dbg( getIntf(), "Opening included XML file: %s", fullPath.c_str() ); // FIXME: We do not use the DTD to validate the included XML file, // as the parser seems to dislike it otherwise... - SkinParser subParser( getIntf(), convertFileName( attr["file"] ), - m_path, false, m_pData ); + SkinParser subParser( getIntf(), fullPath.c_str(), false, m_pData ); subParser.parse(); } @@ -93,8 +94,7 @@ void SkinParser::handleBeginElement( const string &rName, AttrList_t &attr ) m_curBitmapId = uniqueId( attr["id"] ); const BuilderData::Bitmap bitmap( m_curBitmapId, - convertFileName( attr["file"] ), - convertColor( attr["alphacolor"] ) ); + attr["file"], convertColor( attr["alphacolor"] ) ); m_pData->m_listBitmap.push_back( bitmap ); } @@ -119,8 +119,7 @@ void SkinParser::handleBeginElement( const string &rName, AttrList_t &attr ) CheckDefault( "type", "digits" ); const BuilderData::BitmapFont font( attr["id"], - convertFileName( attr["file"] ), - attr["type"] ); + attr["file"], attr["type"] ); m_pData->m_listBitmapFont.push_back( font ); } @@ -189,8 +188,7 @@ void SkinParser::handleBeginElement( const string &rName, AttrList_t &attr ) CheckDefault( "size", "12" ); const BuilderData::Font fontData( uniqueId( attr["id"] ), - convertFileName( attr["file"] ), - atoi( attr["size"] ) ); + attr["file"], atoi( attr["size"] ) ); m_pData->m_listFont.push_back( fontData ); } @@ -525,13 +523,6 @@ int SkinParser::convertColor( const char *transcolor ) const } -string SkinParser::convertFileName( const char *fileName ) const -{ - OSFactory *pFactory = OSFactory::instance( getIntf() ); - return m_path + pFactory->getDirSeparator() + string( fileName ); -} - - int SkinParser::convertInRange( const char *value, int minValue, int maxValue, const string &rAttribute ) const { diff --git a/modules/gui/skins2/parser/skin_parser.hpp b/modules/gui/skins2/parser/skin_parser.hpp index 116989d207..df251b4f72 100644 --- a/modules/gui/skins2/parser/skin_parser.hpp +++ b/modules/gui/skins2/parser/skin_parser.hpp @@ -41,6 +41,8 @@ class SkinParser: public XMLParser const BuilderData &getData() const { return *m_pData; } private: + /// Path of the theme + const string m_path; /// Container for mapping data from the XML BuilderData *m_pData; /// Indicate whether the class owns the data @@ -58,8 +60,6 @@ class SkinParser: public XMLParser int m_curLayer; /// Set of used id set m_idSet; - /// Path of the XML file being parsed - const string m_path; /// Callbacks virtual void handleBeginElement( const string &rName, @@ -70,7 +70,6 @@ class SkinParser: public XMLParser //@{ bool convertBoolean( const char *value ) const; int convertColor( const char *transcolor ) const; - string convertFileName( const char *fileName ) const; /// Transform to int, and check that it is in the given range (if not, /// the closest range boundary will be used) int convertInRange( const char *value, int minValue, int maxValue, diff --git a/modules/gui/skins2/src/theme_loader.cpp b/modules/gui/skins2/src/theme_loader.cpp index 899613f667..7d8cc3e62a 100644 --- a/modules/gui/skins2/src/theme_loader.cpp +++ b/modules/gui/skins2/src/theme_loader.cpp @@ -200,7 +200,7 @@ bool ThemeLoader::extractFileInZip( unzFile file, const string &rootDir ) // Convert the file name to lower case, because some winamp skins // use the wrong case... - for( int i=0; i< strlen( filenameInZip ); i++) + for( size_t i=0; i< strlen( filenameInZip ); i++) { filenameInZip[i] = tolower( filenameInZip[i] ); } @@ -359,7 +359,7 @@ bool ThemeLoader::parse( const string &path, const string &xmlFile ) } // Build and store the theme - Builder builder( getIntf(), parser.getData() ); + Builder builder( getIntf(), parser.getData(), path ); getIntf()->p_sys->p_theme = builder.build(); return true; diff --git a/share/Makefile.am b/share/Makefile.am index 4242138653..73791b97eb 100644 --- a/share/Makefile.am +++ b/share/Makefile.am @@ -78,6 +78,7 @@ DIST_skins2 = \ skins2/default.vlt \ \ skins2/fonts/FreeSans.ttf \ + skins2/fonts/FreeSansBold.ttf \ skins2/skin.dtd \ skins2/skin.catalog \ skins2/winamp2.xml \ diff --git a/share/skins2/fonts/FreeSansBold.ttf b/share/skins2/fonts/FreeSansBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0cae657e909891dbc2127090f3a15267d9ce8ddc GIT binary patch literal 64228 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 yP8E_pCRoa{iZH*O;(*FV~mtUR$ literal 0 HcmV?d00001 diff --git a/share/skins2/winamp2.xml b/share/skins2/winamp2.xml index 715e4adabf..8c51326dfc 100644 --- a/share/skins2/winamp2.xml +++ b/share/skins2/winamp2.xml @@ -18,12 +18,28 @@ + + + + + + + + + + + + + + + + @@ -36,36 +52,92 @@ + + + + + + + + + - - + + + + + + - -