ctrl_resize.hpp

Go to the documentation of this file.
00001 /*****************************************************************************
00002  * ctrl_resize.hpp
00003  *****************************************************************************
00004  * Copyright (C) 2003 the VideoLAN team
00005  * $Id: 7d2d718b1819b059e9371fb7663c2d7a8e44aacb $
00006  *
00007  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
00008  *          Olivier Teulière <ipkiss@via.ecp.fr>
00009  *
00010  * This program is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License as published by
00012  * the Free Software Foundation; either version 2 of the License, or
00013  * (at your option) any later version.
00014  *
00015  * This program is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  * GNU General Public License for more details.
00019  *
00020  * You should have received a copy of the GNU General Public License along
00021  * with this program; if not, write to the Free Software Foundation, Inc.,
00022  * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
00023  *****************************************************************************/
00024 
00025 #ifndef CTRL_RESIZE_HPP
00026 #define CTRL_RESIZE_HPP
00027 
00028 #include "ctrl_flat.hpp"
00029 #include "../commands/cmd_generic.hpp"
00030 #include "../src/window_manager.hpp"
00031 #include "../utils/fsm.hpp"
00032 
00033 class WindowManager;
00034 
00035 
00036 /// Control decorator for resizing windows
00037 class CtrlResize: public CtrlFlat
00038 {
00039 public:
00040     CtrlResize( intf_thread_t *pIntf, WindowManager &rWindowManager,
00041                 CtrlFlat &rCtrl, GenericLayout &rLayout,
00042                 const UString &rHelp, VarBool *pVisible,
00043                 WindowManager::Direction_t direction );
00044     virtual ~CtrlResize() { }
00045 
00046     /// Handle an event
00047     virtual void handleEvent( EvtGeneric &rEvent );
00048 
00049     /// Check whether coordinates are inside the decorated control
00050     virtual bool mouseOver( int x, int y ) const;
00051 
00052     /// Draw the control on the given graphics
00053     virtual void draw( OSGraphics &rImage, int xDest, int yDest );
00054 
00055     /// Set the position and the associated layout of the decorated control
00056     virtual void setLayout( GenericLayout *pLayout,
00057                             const Position &rPosition );
00058     virtual void unsetLayout();
00059 
00060     /// Get the position of the decorated control in the layout, if any
00061     virtual const Position *getPosition() const;
00062 
00063     /// Method called when the control is resized
00064     virtual void onResize();
00065 
00066     /// Get the type of control (custom RTTI)
00067     virtual string getType() const { return m_rCtrl.getType(); }
00068 
00069 private:
00070     FSM m_fsm;
00071     /// Window manager
00072     WindowManager &m_rWindowManager;
00073     /// Decorated CtrlFlat
00074     CtrlFlat &m_rCtrl;
00075     /// The layout resized by this control
00076     GenericLayout &m_rLayout;
00077     /// The last received event
00078     EvtGeneric *m_pEvt;
00079     /// Position of the click that started the resizing
00080     int m_xPos, m_yPos;
00081     /// Direction of the resizing
00082     WindowManager::Direction_t m_direction;
00083 
00084     /// Change the cursor, based on the given direction
00085     void changeCursor( WindowManager::Direction_t direction ) const;
00086 
00087     /// Callback objects
00088     DEFINE_CALLBACK( CtrlResize, OutStill )
00089     DEFINE_CALLBACK( CtrlResize, StillOut )
00090     DEFINE_CALLBACK( CtrlResize, StillStill )
00091     DEFINE_CALLBACK( CtrlResize, StillResize )
00092     DEFINE_CALLBACK( CtrlResize, ResizeStill )
00093     DEFINE_CALLBACK( CtrlResize, ResizeResize )
00094 
00095     // Size of the layout, before resizing
00096     int m_width, m_height;
00097 };
00098 
00099 #endif
00100 

Generated on Tue May 25 08:04:58 2010 for VLC by  doxygen 1.5.6