]> git.sesse.net Git - vlc/commitdiff
* winamp2.xml: hack to support nums_ex.bmp and numbers.bmp
authorCyril Deguet <asmax@videolan.org>
Sun, 6 Nov 2005 17:05:50 +0000 (17:05 +0000)
committerCyril Deguet <asmax@videolan.org>
Sun, 6 Nov 2005 17:05:50 +0000 (17:05 +0000)
* theme_loader.cpp: correct handling of subdirectories in winamp
  skins

modules/gui/skins2/parser/builder.cpp
modules/gui/skins2/src/file_bitmap.cpp
modules/gui/skins2/src/generic_bitmap.cpp
modules/gui/skins2/src/theme_loader.cpp
share/skins2/winamp2.xml

index 5099e8a64047901c709ec1f9101a86f7f76735e4..22ef1deb13f29dec235af057b9dce56e638e55e5 100644 (file)
@@ -146,6 +146,12 @@ void Builder::addBitmap( const BuilderData::Bitmap &rData )
     GenericBitmap *pBmp =
         new FileBitmap( getIntf(), m_pImageHandler,
                         rData.m_fileName, rData.m_alphaColor );
+    if( !pBmp->getData() )
+    {
+        // Invalid bitmap
+        delete pBmp;
+        return;
+    }
     m_pTheme->m_bitmaps[rData.m_id] = GenericBitmapPtr( pBmp );
 }
 
@@ -175,6 +181,13 @@ void Builder::addBitmapFont( const BuilderData::BitmapFont &rData )
 {
     GenericBitmap *pBmp =
         new FileBitmap( getIntf(), m_pImageHandler, rData.m_file, 0 );
+    if( !pBmp->getData() )
+    {
+        // invalid bitmap
+        delete pBmp;
+        return;
+    }
+
     m_pTheme->m_bitmaps[rData.m_id] = GenericBitmapPtr( pBmp );
 
     GenericFont *pFont = new BitmapFont( getIntf(), *pBmp, rData.m_type );
index b831b4c51e80adebf65ea334f80610c03f910cc7..99fcc5d86284ff17fd3517a95b1a40ddc234b333 100644 (file)
@@ -28,7 +28,7 @@
 
 FileBitmap::FileBitmap( intf_thread_t *pIntf, image_handler_t *pImageHandler,
                         string fileName, uint32_t aColor ):
-    GenericBitmap( pIntf ), m_width( 0 ), m_height( 0 )
+    GenericBitmap( pIntf ), m_width( 0 ), m_height( 0 ), m_pData( NULL )
 {
     video_format_t fmt_in = {0}, fmt_out = {0};
     picture_t *pPic;
index e839d64f2ec29515915d483a72cd68b59febd5c0..c3d69922ebabe9cf4d2a228b026b9e53f92d6c8e 100644 (file)
@@ -44,6 +44,11 @@ void BitmapImpl::drawBitmap( const GenericBitmap &rSource, int xSrc, int ySrc,
 {
     int srcWidth = rSource.getWidth();
     uint32_t *pSrc = (uint32_t*)rSource.getData() + ySrc * srcWidth + xSrc;
+    if( !pSrc )
+    {
+        return;
+    }
+
     uint32_t *pDest = (uint32_t*)m_pData + yDest * m_width + xDest ;
     for( int y = 0; y < height; y++ )
     {
index cd760a22d12973bc5a05bbdd02614ae989824399..b48a45338eb6aa3d5faf9f10f9c56156f4e9c5b6 100644 (file)
@@ -283,16 +283,21 @@ bool ThemeLoader::extract( const string &fileName )
     }
     else
     {
-        // No XML file, assume it is a winamp2 skin
-        path = tempPath;
-
-        // Look for winamp2.xml in the resource path
-        list<string> resPath = pOsFactory->getResourcePath();
-        list<string>::const_iterator it;
-        for( it = resPath.begin(); it != resPath.end(); it++ )
+        // No XML file, check if it is a winamp2 skin
+        string mainBmp;
+        if( findFile( tempPath, "main.bmp", mainBmp ) )
         {
-            if( findFile( *it, WINAMP2_XML_FILE, xmlFile ) )
-                break;
+            msg_Dbg( getIntf(), "Try to load a winamp2 skin" );
+            path = getFilePath( mainBmp );
+
+            // Look for winamp2.xml in the resource path
+            list<string> resPath = pOsFactory->getResourcePath();
+            list<string>::const_iterator it;
+            for( it = resPath.begin(); it != resPath.end(); it++ )
+            {
+                if( findFile( *it, WINAMP2_XML_FILE, xmlFile ) )
+                    break;
+            }
         }
     }
 
index 7e924e0ad48d68f91dca778833177ee53891281c..cb709c7551fe03c5788122934b2405da10e6f2d2 100644 (file)
@@ -22,6 +22,7 @@
        <SubBitmap id="quit_up" x="18" y="0" width="9" height="9" />
        <SubBitmap id="quit_down" x="18" y="9" width="9" height="9" />
     </Bitmap>
+    <BitmapFont id="digits_font" file="numbers.bmp" type="digits"/>
     <BitmapFont id="digits_font" file="nums_ex.bmp" type="digits"/>
     <BitmapFont id="text_font" file="text.bmp" type="text"/>