]> git.sesse.net Git - vlc/blobdiff - modules/gui/skins2/parser/builder.hpp
macosx: Fix a dead lock.
[vlc] / modules / gui / skins2 / parser / builder.hpp
index 55e1b378e48d97f051f3c4ed1ba3f53e6018608f..0b7d92ebb4c510ee82639fbdf5e7917cbdae4ae9 100644 (file)
@@ -1,11 +1,11 @@
 /*****************************************************************************
  * builder.hpp
  *****************************************************************************
- * Copyright (C) 2003 VideoLAN (Centrale Réseaux) and its contributors
+ * Copyright (C) 2003 the VideoLAN team
  * $Id$
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
- *          Olivier Teulière <ipkiss@via.ecp.fr>
+ *          Olivier Teulière <ipkiss@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
  *
  * 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.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #ifndef BUILDER_HPP
 #define BUILDER_HPP
 
 #include "builder_data.hpp"
-#include "../src/os_graphics.hpp"
-#include "../src/generic_window.hpp"
-#include "../src/generic_layout.hpp"
-#include "../src/generic_bitmap.hpp"
-#include "../src/generic_font.hpp"
-#include "../commands/cmd_generic.hpp"
-#include "../controls/ctrl_generic.hpp"
-#include "../utils/bezier.hpp"
+#include "../src/skin_common.hpp"
 
 #include <string>
 #include <list>
 #include <map>
 
 class Theme;
+class Bezier;
+class CmdGeneric;
+class GenericFont;
+class Position;
+class GenericRect;
 
 
 /// Class for skin construction
 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,31 +62,45 @@ 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;
 
         void addTheme( const BuilderData::Theme &rData );
+        void addIniFile( const BuilderData::IniFile &rData );
         void addBitmap( const BuilderData::Bitmap &rData );
+        void addSubBitmap( const BuilderData::SubBitmap &rData );
         void addBitmapFont( const BuilderData::BitmapFont &rData );
         void addFont( const BuilderData::Font &rData );
+        void addPopupMenu( const BuilderData::PopupMenu &rData );
+        void addMenuItem( const BuilderData::MenuItem &rData );
+        void addMenuSeparator( const BuilderData::MenuSeparator &rData );
         void addWindow( const BuilderData::Window &rData );
         void addLayout( const BuilderData::Layout &rData );
         void addAnchor( const BuilderData::Anchor &rData );
         void addButton( const BuilderData::Button &rData );
         void addCheckbox( const BuilderData::Checkbox &rData );
         void addImage( const BuilderData::Image &rData );
+        void addPanel( const BuilderData::Panel &rData );
         void addText( const BuilderData::Text &rData );
         void addRadialSlider( const BuilderData::RadialSlider &rData );
         void addSlider( const BuilderData::Slider &rData );
         void addList( const BuilderData::List &rData );
+        void addTree( const BuilderData::Tree &rData );
         void addVideo( const BuilderData::Video &rData );
 
-       /// Compute the position of a control
+        /// Compute the position of a control
         const Position makePosition( const string &rLeftTop,
                                      const string &rRightBottom,
                                      int xPos, int yPos, int width, int height,
-                                     const Box &rBox ) const;
+                                     const GenericRect &rRect,
+                                     bool xKeepRatio = false,
+                                     bool yKeepRatio = false ) 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 );
@@ -91,6 +108,9 @@ class Builder: public SkinObject
         /// Function to parse "points" tags
         Bezier *getPoints( const char *pTag ) const;
 
+        /// Compute a color value
+        uint32_t getColor( const string &rVal ) const;
+
         /// Image handler (used to load image files)
         image_handler_t *m_pImageHandler;
 };