D:/Zythum/DinoKod/Interface/Slider.cpp

00001 //---------------------------------------------------------------------------------------------
00002 //      This file is a part of "DinoKod".
00003 //      Copyright © 2003 Dino Productions. All Rights Reserved.
00004 //      
00005 //      File                    : Slider.cpp
00006 //      Author                  : Cedric Stanus
00007 //      Date                    : 05/09/2003
00008 //      Modification    :
00009 //
00010 //---------------------------------------------------------------------------------------------
00011 #include "Render/Render.h"
00012 #include "Render/Font.h"
00013 #include "Interface/Slider.h"
00014 
00015 //---------------------------------------------------------------------------------------------------------------------
00016 KSlider::KSlider( KWin* pFather, KFPt& Pos, KFPt& Size, KInterface* pInterface,bool bHorizontal,KFPt& SizeSliderBar)
00017 :KWin( pFather, Pos, Size, pInterface, 0, "" )
00018 {
00019         m_bHorizontal   = bHorizontal ;
00020         m_SizeSliderBar = SizeSliderBar ;
00021         m_bClicked              = false;
00022         m_fPosSlider    = 0.0f ;
00023         m_fAbsolutePosSlider = 0.0f ;
00024         SetRange(0.0f,100.0f,1.0f) ;
00025 }
00026 
00027 //---------------------------------------------------------------------------------------------------------------------
00028 KSlider::~KSlider()
00029 {
00030 }
00031 
00032 //---------------------------------------------------------------------------------------------------------------------
00033 void KSlider::Display()
00034 {
00035         u8      Fade = u8( 255.0f * GetFade() );
00036         DrawQuad( m_Pos.x, m_Pos.y, m_Size.x, m_Size.y, KSHADER_NO, KRGBA( 56, 91, 149, Fade ),KRGB_BLACK, KRM_MODULATE );
00037         
00038         if(m_bHorizontal)
00039         {
00040                 float fPosX = m_Pos.x + (m_Size.x * m_fPosSlider) ;
00041                 if(fPosX > (m_Pos.x + m_Size.x - m_SizeSliderBar.x))
00042                         fPosX = m_Pos.x + m_Size.x - m_SizeSliderBar.x ;
00043 
00044                 DrawQuad(fPosX , m_Pos.y - (m_SizeSliderBar.y - m_Size.y) / 2 , m_SizeSliderBar.x, m_SizeSliderBar.y, KSHADER_NO, KRGBA( 5, 134, 254, Fade ),KRGB_BLACK, KRM_MODULATE );
00045         }
00046         else
00047         {
00048                 float fPosY = m_Pos.y + (m_Size.y * m_fPosSlider) ;
00049                 if(fPosY > (m_Pos.y + m_Size.y - m_SizeSliderBar.y))
00050                         fPosY = m_Pos.y + m_Size.y - m_SizeSliderBar.y ;
00051 
00052                 DrawQuad( m_Pos.x - (m_SizeSliderBar.x - m_Size.x) / 2 , fPosY , m_SizeSliderBar.x, m_SizeSliderBar.y, KSHADER_NO, KRGBA( 5, 134, 254, Fade ),KRGB_BLACK, KRM_MODULATE );
00053         }
00054 }
00055 
00056 //---------------------------------------------------------------------------------------------------------------------
00057 void KSlider::Manage()
00058 {
00059         KFPt mousePos = GetMousePos() ;
00060         if((m_bHorizontal) && (m_bClicked))
00061         {
00062                 m_fPosSlider = (mousePos.x - m_Pos.x) / m_Size.x ;
00063         }
00064         if((!m_bHorizontal) && (m_bClicked))
00065         {
00066                 m_fPosSlider = (mousePos.y - m_Pos.y) / m_Size.y ;
00067         }
00068 
00069         if(m_fStep > 0)
00070         {
00071                 m_fAbsolutePosSlider = ((int)(((m_fRangeMax - m_fRangeMin) * m_fPosSlider) / m_fStep)) * m_fStep ;
00072                 m_fPosSlider = m_fAbsolutePosSlider / (m_fRangeMax - m_fRangeMin) ;
00073         }
00074         else
00075         {
00076                 m_fAbsolutePosSlider = 0.0f ;
00077                 m_fPosSlider = m_fRangeMin ;
00078         }
00079         if(m_fPosSlider <= 0.01f)
00080         {
00081                 m_fPosSlider = 0.0f ;
00082                 m_fAbsolutePosSlider = m_fRangeMin ;
00083         }
00084         if(m_fPosSlider >= 0.99f)
00085         {
00086                 m_fPosSlider = 1.0f ;
00087                 m_fAbsolutePosSlider = m_fRangeMax ;
00088         }
00089 }
00090 
00091 //---------------------------------------------------------------------------------------------------------------------
00092 bool KSlider::OnMouseEvent( KWMOUSEEVENT Event, u32 Param )
00093 {
00094         if( m_bEnabled )
00095         {
00096                 if( IsInside( GetMousePos() ) )
00097                 {
00098                         if(( Event == KWME_LDOWN ) && (!m_bClicked))
00099                         {
00100                                 m_bClicked = true;
00101                         }
00102                 }
00103         }
00104         if( Event == KWME_LUP )
00105         {
00106                 m_bClicked = false;
00107         }
00108         return true ;
00109 }
00110 
00111 //---------------------------------------------------------------------------------------------------------------------
00112 void KSlider::SetRange(float fRangeMin,float fRangeMax,float fStep)
00113 {
00114         if((fRangeMin > fRangeMax) || (fStep > (fRangeMax - fRangeMin)))
00115                 return ;
00116 
00117         if((fRangeMin == m_fRangeMin) && (fRangeMax == m_fRangeMax) && (fStep == m_fStep))
00118                 return ;
00119 
00120         if(fStep <= 0)
00121                 fStep = 0.0f ;
00122 
00123         m_fRangeMax = fRangeMax ;
00124         m_fRangeMin = fRangeMin ;
00125         m_fStep         = fStep ;
00126 
00127         m_fPosSlider = 0.0f ;
00128         m_fAbsolutePosSlider = m_fRangeMin ;
00129 }
00130 
00131 //---------------------------------------------------------------------------------------------------------------------
00132 void KSlider::Load()
00133 {
00134 
00135 }
00136 
00137 //---------------------------------------------------------------------------------------------------------------------
00138 void KSlider::Unload()
00139 {
00140         m_bClicked = false;
00141 }

Generated on Sun Mar 25 20:02:12 2007 for Zythum Project by  doxygen 1.5.1-p1