]> git.sesse.net Git - vlc/blobdiff - modules/gui/skins2/src/theme.hpp
Win32 skins: reorder includes to fix warnings
[vlc] / modules / gui / skins2 / src / theme.hpp
index c94cbc25239d81c33514e120990b976547d58657..35af05b84a38e5a7aade79f45b8b96cb7b69a358 100644 (file)
@@ -17,9 +17,9 @@
  * 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 #ifndef THEME_HPP
@@ -33,6 +33,7 @@
 #include "../commands/cmd_generic.hpp"
 #include "../utils/bezier.hpp"
 #include "../utils/variable.hpp"
+#include "../utils/position.hpp"
 #include "../controls/ctrl_generic.hpp"
 #include <string>
 #include <list>
@@ -44,47 +45,80 @@ class Interpreter;
 /// Class storing the data of the current theme
 class Theme: public SkinObject
 {
-    private:
-        friend class Builder;
-        friend class Interpreter;
-    public:
-        Theme( intf_thread_t *pIntf ): SkinObject( pIntf ),
-            m_windowManager( getIntf() ) {}
-        virtual ~Theme();
+private:
+    friend class Builder;
+    friend class Interpreter;
+public:
+    Theme( intf_thread_t *pIntf ): SkinObject( pIntf ),
+        m_windowManager( getIntf() ) { }
+    virtual ~Theme();
+
+    void loadConfig();
+    int readConfig();
+    void saveConfig();
+    void applyConfig();
 
-        void loadConfig();
-        void saveConfig();
+    GenericBitmap *getBitmapById( const string &id ) const;
+    GenericFont *getFontById( const string &id ) const;
 
-        GenericBitmap *getBitmapById( const string &id );
-        GenericFont *getFontById( const string &id );
-        Popup *getPopupById( const string &id );
-        TopWindow *getWindowById( const string &id );
-        GenericLayout *getLayoutById( const string &id );
-        CtrlGeneric *getControlById( const string &id );
+#   define ObjByID( var ) ( const string &id ) const \
+        { return var.find_object( id ); }
+    Popup         *getPopupById    ObjByID( m_popups    )
+    TopWindow     *getWindowById   ObjByID( m_windows   )
+    GenericLayout *getLayoutById   ObjByID( m_layouts   )
+    CtrlGeneric   *getControlById  ObjByID( m_controls  )
+    Position      *getPositionById ObjByID( m_positions )
+#   undef  ObjById
 
-        WindowManager &getWindowManager() { return m_windowManager; }
+    WindowManager &getWindowManager() { return m_windowManager; }
 
+private:
+    template<class T> class IDmap: public std::map<string, T> {
     private:
-        /// Store the bitmaps by ID
-        map<string, GenericBitmapPtr> m_bitmaps;
-        /// Store the fonts by ID
-        map<string, GenericFontPtr> m_fonts;
-        /// Store the popups by ID
-        map<string, PopupPtr> m_popups;
-        /// Store the windows by ID
-        map<string, TopWindowPtr> m_windows;
-        /// Store the layouts by ID
-        map<string, GenericLayoutPtr> m_layouts;
-        /// Store the controls by ID
-        map<string, CtrlGenericPtr> m_controls;
-        /// Store the commands
-        list<CmdGenericPtr> m_commands;
-        /// Store the Bezier curves
-        list<BezierPtr> m_curves;
-        /// Store the variables
-        list<VariablePtr> m_vars;
+        typedef typename std::map<string, T> parent;
+    public:
+        typename T::pointer find_object(const string &id) const
+        {
+            typename parent::const_iterator it = parent::find( id );
+            return it!=parent::end() ? it->second.get() : NULL;
+        }
+        typename T::pointer find_first_object(const string &id) const;
+    };
+
+    struct save_t {
+        TopWindow* win;
+        GenericLayout* layout;
+        int x;
+        int y;
+        int width;
+        int height;
+        int visible;
+    };
+
+    /// Store the bitmaps by ID
+    IDmap<GenericBitmapPtr> m_bitmaps;
+    /// Store the fonts by ID
+    IDmap<GenericFontPtr> m_fonts;
+    /// Store the popups by ID
+    IDmap<PopupPtr> m_popups;
+    /// Store the windows by ID
+    IDmap<TopWindowPtr> m_windows;
+    /// Store the layouts by ID
+    IDmap<GenericLayoutPtr> m_layouts;
+    /// Store the controls by ID
+    IDmap<CtrlGenericPtr> m_controls;
+    /// Store the panel positions by ID
+    IDmap<PositionPtr> m_positions;
+    /// Store the commands
+    list<CmdGenericPtr> m_commands;
+    /// Store the Bezier curves
+    list<BezierPtr> m_curves;
+    /// Store the variables
+    list<VariablePtr> m_vars;
+    /// List saved windows/layouts
+    list<save_t> m_saved;
 
-        WindowManager m_windowManager;
+    WindowManager m_windowManager;
 };