vlc | branch: master | Erwan Tulou <[email protected]> | Fri Apr 5 17:02:37 2013 +0200| [29db598a0a7ff27ec7cfeab68da3194bc456dd4a] | committer: Erwan Tulou
skins2: cosmetics (no functional change) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=29db598a0a7ff27ec7cfeab68da3194bc456dd4a --- modules/gui/skins2/controls/ctrl_slider.cpp | 78 +++++++++++---------------- modules/gui/skins2/controls/ctrl_slider.hpp | 6 ++- 2 files changed, 36 insertions(+), 48 deletions(-) diff --git a/modules/gui/skins2/controls/ctrl_slider.cpp b/modules/gui/skins2/controls/ctrl_slider.cpp index 283c8ec..fe5b002 100644 --- a/modules/gui/skins2/controls/ctrl_slider.cpp +++ b/modules/gui/skins2/controls/ctrl_slider.cpp @@ -38,7 +38,7 @@ static inline float scroll( bool up, float pct, float step ) { - return pct + (up? step : -step); + return pct + ( up ? step : -step ); } @@ -57,7 +57,8 @@ CtrlSliderCursor::CtrlSliderCursor( intf_thread_t *pIntf, m_cmdOverDown( this ), m_cmdDownOver( this ), m_cmdOverUp( this ), m_cmdUpOver( this ), m_cmdMove( this ), m_cmdScroll( this ), - m_lastPercentage( 0 ), m_xOffset( 0 ), m_yOffset( 0 ), + m_lastPercentage( 0 ), m_lastCursorRect(), + m_xOffset( 0 ), m_yOffset( 0 ), m_pEvt( NULL ), m_rCurve( rCurve ) { // Build the images of the cursor @@ -134,10 +135,8 @@ bool CtrlSliderCursor::mouseOver( int x, int y ) const return m_pImg->hit( x - xPos + m_pImg->getWidth() / 2, y - yPos + m_pImg->getHeight() / 2 ); } - else - { - return false; - } + + return false; } @@ -149,10 +148,10 @@ void CtrlSliderCursor::draw( OSGraphics &rImage, int xDest, int yDest, int w, in rect inter; rect clip( xDest, yDest, w, h); - if( rect::intersect( m_currentCursorRect, clip, &inter ) ) + if( rect::intersect( m_lastCursorRect, clip, &inter ) ) rImage.drawGraphics( *m_pImg, - inter.x - m_currentCursorRect.x, - inter.y - m_currentCursorRect.y, + inter.x - m_lastCursorRect.x, + inter.y - m_lastCursorRect.y, inter.x, inter.y, inter.width, inter.height ); } } @@ -160,22 +159,7 @@ void CtrlSliderCursor::draw( OSGraphics &rImage, int xDest, int yDest, int w, in void CtrlSliderCursor::onPositionChange() { - // Compute the position of the cursor - int xPos, yPos; - m_rCurve.getPoint( m_rVariable.get(), xPos, yPos ); - - // Compute the resize factors - float factorX, factorY; - getResizeFactors( factorX, factorY ); - xPos = (int)(xPos * factorX); - yPos = (int)(yPos * factorY); - - const Position *pPos = getPosition(); - - int x = pPos->getLeft() + xPos - m_pImg->getWidth() / 2; - int y = pPos->getTop() + yPos - m_pImg->getHeight() / 2; - - m_currentCursorRect = rect( x, y, m_pImg->getWidth(), m_pImg->getHeight() ); + m_lastCursorRect = getCurrentCursorRect(); } @@ -302,6 +286,27 @@ void CtrlSliderCursor::getResizeFactors( float &rFactorX, void CtrlSliderCursor::refreshLayout( bool force ) { + rect currRect = getCurrentCursorRect(); + if( !force && currRect == m_lastCursorRect ) + return; + + rect join; + if( rect::join( m_lastCursorRect, currRect, &join ) ) + { + m_lastCursorRect = currRect; + + const Position *pPos = getPosition(); + notifyLayout( join.width, join.height, + join.x - pPos->getLeft(), + join.y - pPos->getTop() ); + } +} + + +rect CtrlSliderCursor::getCurrentCursorRect() +{ + const Position *pPos = getPosition(); + // Compute the position of the cursor int xPos, yPos; m_rCurve.getPoint( m_rVariable.get(), xPos, yPos ); @@ -312,31 +317,10 @@ void CtrlSliderCursor::refreshLayout( bool force ) xPos = (int)(xPos * factorX); yPos = (int)(yPos * factorY); - const Position *pPos = getPosition(); - int x = pPos->getLeft() + xPos - m_pImg->getWidth() / 2; int y = pPos->getTop() + yPos - m_pImg->getHeight() / 2; - rect region( x, y, m_pImg->getWidth(), m_pImg->getHeight() ); - - - if( !force && - region.x == m_currentCursorRect.x && - region.y == m_currentCursorRect.y && - region.width == m_currentCursorRect.width && - region.height == m_currentCursorRect.height ) - { - return; - } - - rect join; - if( rect::join( m_currentCursorRect, region, &join ) ) - { - m_currentCursorRect = region; - notifyLayout( join.width, join.height, - join.x - pPos->getLeft(), - join.y - pPos->getTop() ); - } + return rect( x, y, m_pImg->getWidth(), m_pImg->getHeight() ); } diff --git a/modules/gui/skins2/controls/ctrl_slider.hpp b/modules/gui/skins2/controls/ctrl_slider.hpp index 573c706..10eaa60 100644 --- a/modules/gui/skins2/controls/ctrl_slider.hpp +++ b/modules/gui/skins2/controls/ctrl_slider.hpp @@ -88,7 +88,6 @@ private: int m_width, m_height; /// Position of the cursor int m_xPosition, m_yPosition; - rect m_currentCursorRect; /// Callback objects DEFINE_CALLBACK( CtrlSliderCursor, OverDown ) DEFINE_CALLBACK( CtrlSliderCursor, DownOver ) @@ -98,6 +97,8 @@ private: DEFINE_CALLBACK( CtrlSliderCursor, Scroll ) /// Last saved position of the cursor (stored as a percentage) float m_lastPercentage; + /// Last saved cursor placement + rect m_lastCursorRect; /// Offset between the mouse pointer and the center of the cursor int m_xOffset, m_yOffset; /// The last received event @@ -117,6 +118,9 @@ private: /// Call notifyLayout void refreshLayout( bool force = true ); + + /// getter for the current slider rectangle + rect getCurrentCursorRect(); }; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
