]> 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 571f6b7795cc25056405e3c455b41dba5fb5d0d9..0b7d92ebb4c510ee82639fbdf5e7917cbdae4ae9 100644 (file)
@@ -1,11 +1,11 @@
 /*****************************************************************************
  * builder.hpp
  *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: builder.hpp,v 1.4 2004/03/01 18:33:31 asmax Exp $
+ * 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 );
-        virtual ~Builder() {}
+        Builder( intf_thread_t *pIntf, const BuilderData &rData,
+                 const string &rPath );
+        virtual ~Builder();
 
         /// Create a Theme object, ready to use.
         /// Return NULL in case of problem
@@ -59,32 +62,57 @@ 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 );
 
         /// 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;
 };
 
 #endif