]> git.sesse.net Git - vlc/blobdiff - modules/gui/skins2/controls/ctrl_image.hpp
skins2: implement art display in image controls
[vlc] / modules / gui / skins2 / controls / ctrl_image.hpp
index 705d477ac74a305345eca2e4edf7d48be307938e..eef74985805e62461d177d52bba11f600ae82714 100644 (file)
@@ -1,11 +1,11 @@
 /*****************************************************************************
  * ctrl_image.hpp
  *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: ctrl_image.hpp,v 1.1 2004/01/03 23:31:33 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
  * 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., 59 Temple Place - Suite 330, Boston, MA  02111, 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 CTRL_IMAGE_HPP
 #define CTRL_IMAGE_HPP
 
 #include "../commands/cmd_generic.hpp"
+#include "../utils/observer.hpp"
 #include "ctrl_flat.hpp"
 
 class GenericBitmap;
 class OSGraphics;
+class CmdGeneric;
+class VarString;
 
 
 /// Control image
-class CtrlImage: public CtrlFlat
+class CtrlImage: public CtrlFlat, public Observer<VarString>
 {
-    public:
-        // Create an image with the given bitmap (which is NOT copied)
-        CtrlImage( intf_thread_t *pIntf, const GenericBitmap &rBitmap,
-                   const UString &rHelp );
-        virtual ~CtrlImage();
-
-        /// Handle an event on the control
-        virtual void handleEvent( EvtGeneric &rEvent );
-
-        /// Check whether coordinates are inside the control
-        virtual bool mouseOver( int x, int y ) const;
-
-        /// Draw the control on the given graphics
-        virtual void draw( OSGraphics &rImage, int xDest, int yDest );
-
-    private:
-        /// Bitmap
-        const GenericBitmap &m_rBitmap;
-        /// Buffer to stored the rendered bitmap
-        OSGraphics *m_pImage;
+public:
+    /// Resize methods
+    enum resize_t
+    {
+        kMosaic,                // Repeat the base image in a mosaic
+        kScale,                 // Scale the base image
+        kScaleAndRatioPreserved // Scale image (aspect ratio preserved)
+    };
+
+    // Create an image with the given bitmap (which is NOT copied)
+    CtrlImage( intf_thread_t *pIntf, GenericBitmap &rBitmap,
+               CmdGeneric &rCommand, resize_t resizeMethod,
+               const UString &rHelp, VarBool *pVisible, bool art );
+    virtual ~CtrlImage();
+
+    /// Handle an event on the control
+    virtual void handleEvent( EvtGeneric &rEvent );
+
+    /// Check whether coordinates are inside the control
+    virtual bool mouseOver( int x, int y ) const;
+
+    /// Draw the control on the given graphics
+    virtual void draw( OSGraphics &rImage, int xDest, int yDest );
+
+    /// Get the type of control (custom RTTI)
+    virtual string getType() const { return "image"; }
+
+private:
+    /// Bitmap
+    GenericBitmap* m_pBitmap;
+    /// original Bitmap
+    GenericBitmap* m_pOriginalBitmap;
+    /// Buffer to stored the rendered bitmap
+    OSGraphics *m_pImage;
+    /// Command triggered by a double-click on the image
+    CmdGeneric &m_rCommand;
+    /// Resize method
+    resize_t m_resizeMethod;
+    /// does the image get updated as art
+    bool m_art;
+
+    /// Method called when the observed variable is modified
+    virtual void onUpdate( Subject<VarString> &rVariable, void* );
+
+
 };
 
 #endif