diff options
Diffstat (limited to 'src/ui/slider.cpp')
-rw-r--r-- | src/ui/slider.cpp | 115 |
1 files changed, 59 insertions, 56 deletions
diff --git a/src/ui/slider.cpp b/src/ui/slider.cpp index be8af18..70dd2cc 100644 --- a/src/ui/slider.cpp +++ b/src/ui/slider.cpp @@ -1,5 +1,6 @@ // * This file is part of the COLOBOT source code // * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) // * // * 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 @@ -16,22 +17,19 @@ // slider.cpp +#include "ui/slider.h" -#include <windows.h> -#include <stdio.h> -#include <d3d.h> - -#include "common/struct.h" -#include "old/d3dengine.h" -#include "old/math3d.h" #include "common/event.h" #include "common/misc.h" #include "common/iman.h" -#include "old/text.h" +#include "graphics/engine/engine.h" +#include "graphics/engine/text.h" #include "ui/button.h" -#include "ui/slider.h" + +#include <stdio.h> +namespace Ui { const float CURSOR_WIDTH = (10.0f/640.0f); const float HOLE_WIDTH = (5.0f/480.0f); @@ -41,7 +39,7 @@ const float HOLE_WIDTH = (5.0f/480.0f); // Object's constructor. -CSlider::CSlider(CInstanceManager* iMan) : CControl(iMan) +CSlider::CSlider() : CControl() { m_buttonLeft = 0; m_buttonRight = 0; @@ -71,10 +69,10 @@ CSlider::~CSlider() // Creates a new button. -bool CSlider::Create(Math::Point pos, Math::Point dim, int icon, EventMsg eventMsg) +bool CSlider::Create(Math::Point pos, Math::Point dim, int icon, EventType eventType) { - if ( eventMsg == EVENT_NULL ) eventMsg = GetUniqueEventMsg(); - CControl::Create(pos, dim, icon, eventMsg); + if ( eventType == EVENT_NULL ) eventType = GetUniqueEventType(); + CControl::Create(pos, dim, icon, eventType); MoveAdjust(); return true; @@ -115,20 +113,20 @@ void CSlider::MoveAdjust() #if 1 if ( m_buttonLeft == 0 ) { - m_buttonLeft = new CButton(m_iMan); + m_buttonLeft = new CButton(); m_buttonLeft->Create(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), m_bHoriz?55:49, EVENT_NULL); // </^ m_buttonLeft->SetRepeat(true); if ( m_state & STATE_SHADOW ) m_buttonLeft->SetState(STATE_SHADOW); - m_eventUp = m_buttonLeft->RetEventMsg(); + m_eventUp = m_buttonLeft->GetEventType(); } if ( m_buttonRight == 0 ) { - m_buttonRight = new CButton(m_iMan); + m_buttonRight = new CButton(); m_buttonRight->Create(Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f), m_bHoriz?48:50, EVENT_NULL); // >/v m_buttonRight->SetRepeat(true); if ( m_state & STATE_SHADOW ) m_buttonRight->SetState(STATE_SHADOW); - m_eventDown = m_buttonRight->RetEventMsg(); + m_eventDown = m_buttonRight->GetEventType(); } m_marginButton = m_bHoriz?(m_dim.y*0.75f):(m_dim.x/0.75f); @@ -261,7 +259,7 @@ bool CSlider::EventProcess(const Event &event) if ( !m_buttonRight->EventProcess(event) ) return false; } - if ( event.event == m_eventUp && m_step > 0.0f ) + if ( event.type == m_eventUp && m_step > 0.0f ) { m_visibleValue -= m_bHoriz?m_step:-m_step; if ( m_visibleValue < 0.0f ) m_visibleValue = 0.0f; @@ -269,11 +267,11 @@ bool CSlider::EventProcess(const Event &event) AdjustGlint(); Event newEvent = event; - newEvent.event = m_eventMsg; + newEvent.type = m_eventType; m_event->AddEvent(newEvent); } - if ( event.event == m_eventDown && m_step > 0.0f ) + if ( event.type == m_eventDown && m_step > 0.0f ) { m_visibleValue += m_bHoriz?m_step:-m_step; if ( m_visibleValue < 0.0f ) m_visibleValue = 0.0f; @@ -281,28 +279,29 @@ bool CSlider::EventProcess(const Event &event) AdjustGlint(); Event newEvent = event; - newEvent.event = m_eventMsg; + newEvent.type = m_eventType; m_event->AddEvent(newEvent); } - if ( event.event == EVENT_LBUTTONDOWN && - (m_state & STATE_VISIBLE) && + if ( event.type == EVENT_MOUSE_BUTTON_DOWN && + (event.mouseButton.button == 1 ) && + (m_state & STATE_VISIBLE) && (m_state & STATE_ENABLE) ) { - if ( CControl::Detect(event.pos) ) + if ( CControl::Detect(event.mouseButton.pos) ) { if ( m_bHoriz ) { pos.x = m_pos.x+m_marginButton; dim.x = m_dim.x-m_marginButton*2.0f; - value = (event.pos.x-pos.x-CURSOR_WIDTH/2.0f); + value = (event.mouseButton.pos.x-pos.x-CURSOR_WIDTH/2.0f); value /= (dim.x-CURSOR_WIDTH); } else { pos.y = m_pos.y+m_marginButton; dim.y = m_dim.y-m_marginButton*2.0f; - value = (event.pos.y-pos.y-CURSOR_WIDTH/2.0f); + value = (event.mouseButton.pos.y-pos.y-CURSOR_WIDTH/2.0f); value /= (dim.y-CURSOR_WIDTH); } if ( value < 0.0f ) value = 0.0f; @@ -311,29 +310,29 @@ bool CSlider::EventProcess(const Event &event) AdjustGlint(); Event newEvent = event; - newEvent.event = m_eventMsg; + newEvent.type = m_eventType; m_event->AddEvent(newEvent); m_bCapture = true; - m_pressPos = event.pos; + m_pressPos = event.mouseButton.pos; m_pressValue = m_visibleValue; } } - if ( event.event == EVENT_MOUSEMOVE && m_bCapture ) + if ( event.type == EVENT_MOUSE_MOVE && m_bCapture ) { if ( m_bHoriz ) { pos.x = m_pos.x+m_marginButton; dim.x = m_dim.x-m_marginButton*2.0f; - value = (event.pos.x-pos.x-CURSOR_WIDTH/2.0f); + value = (event.mouseMove.pos.x-pos.x-CURSOR_WIDTH/2.0f); value /= (dim.x-CURSOR_WIDTH); } else { pos.y = m_pos.y+m_marginButton; dim.y = m_dim.y-m_marginButton*2.0f; - value = (event.pos.y-pos.y-CURSOR_WIDTH/2.0f); + value = (event.mouseMove.pos.y-pos.y-CURSOR_WIDTH/2.0f); value /= (dim.y-CURSOR_WIDTH); } if ( value < 0.0f ) value = 0.0f; @@ -345,32 +344,35 @@ bool CSlider::EventProcess(const Event &event) AdjustGlint(); Event newEvent = event; - newEvent.event = m_eventMsg; + newEvent.type = m_eventType; m_event->AddEvent(newEvent); } } - if ( event.event == EVENT_LBUTTONUP && m_bCapture ) + if ( ( event.type == EVENT_MOUSE_BUTTON_UP ) && + ( event.mouseButton.button == 1 ) && + m_bCapture ) { m_bCapture = false; } - if ( event.event == EVENT_KEYDOWN && - event.param == VK_WHEELUP && - Detect(event.pos) && - m_buttonLeft != 0 ) + if (event.type == EVENT_MOUSE_WHEEL && + event.mouseWheel.dir == WHEEL_UP && + Detect(event.mouseWheel.pos) && + m_buttonLeft != 0) { Event newEvent = event; - newEvent.event = m_buttonLeft->RetEventMsg(); + newEvent.type = m_buttonLeft->GetEventType(); m_event->AddEvent(newEvent); } - if ( event.event == EVENT_KEYDOWN && - event.param == VK_WHEELDOWN && - Detect(event.pos) && - m_buttonRight != 0 ) + + if (event.type == EVENT_MOUSE_WHEEL && + event.mouseButton.button == WHEEL_DOWN && + Detect(event.mouseWheel.pos) && + m_buttonRight != 0) { Event newEvent = event; - newEvent.event = m_buttonRight->RetEventMsg(); + newEvent.type = m_buttonRight->GetEventType(); m_event->AddEvent(newEvent); } @@ -465,11 +467,11 @@ void CSlider::Draw() if ( m_bHoriz ) { - sprintf(text, "%d", (int)(m_min+m_visibleValue*(m_max-m_min))); - h = m_engine->RetText()->RetHeight(m_fontSize, m_fontType); + sprintf(text, "%d", static_cast<int>(m_min+m_visibleValue*(m_max-m_min))); + h = m_engine->GetText()->GetHeight(m_fontType, m_fontSize); pos.x = m_pos.x+m_dim.x+(10.0f/640.0f); pos.y = m_pos.y+(m_dim.y-h)/2.0f; - m_engine->RetText()->DrawText(text, pos, m_dim.x, 1, m_fontSize, m_fontStretch, m_fontType, 0); + m_engine->GetText()->DrawText(text, m_fontType, m_fontSize, pos, m_dim.x, Gfx::TEXT_ALIGN_LEFT, 0); } else { @@ -481,8 +483,8 @@ void CSlider::Draw() pos.y += (h-CURSOR_WIDTH)*m_visibleValue; dim.x = 50.0f/640.0f; dim.y = 16.0f/480.0f; - sprintf(text, "%d", (int)(m_min+(m_visibleValue*(m_max-m_min)))); - m_engine->RetText()->DrawText(text, pos, dim.x, 1, m_fontSize, m_fontStretch, m_fontType, 0); + sprintf(text, "%d", static_cast<int>(m_min+(m_visibleValue*(m_max-m_min)))); + m_engine->GetText()->DrawText(text, m_fontType, m_fontSize, pos, dim.x, Gfx::TEXT_ALIGN_RIGHT, 0); } } } @@ -496,8 +498,8 @@ void CSlider::DrawVertex(Math::Point pos, Math::Point dim, int icon) if ( icon == 0 ) { - m_engine->SetTexture("button2.tga"); - m_engine->SetState(D3DSTATENORMAL); + m_engine->SetTexture("button2.png"); + m_engine->SetState(Gfx::ENG_RSTATE_NORMAL); uv1.x = 0.0f/256.0f; // yellow rectangle uv1.y = 32.0f/256.0f; uv2.x = 32.0f/256.0f; @@ -508,8 +510,8 @@ void CSlider::DrawVertex(Math::Point pos, Math::Point dim, int icon) } else if ( icon == 1 ) { - m_engine->SetTexture("button2.tga"); - m_engine->SetState(D3DSTATENORMAL); + m_engine->SetTexture("button2.png"); + m_engine->SetState(Gfx::ENG_RSTATE_NORMAL); uv1.x = 128.0f/256.0f; // gray rectangle uv1.y = 32.0f/256.0f; uv2.x = 160.0f/256.0f; @@ -520,8 +522,8 @@ void CSlider::DrawVertex(Math::Point pos, Math::Point dim, int icon) } else { - m_engine->SetTexture("button2.tga"); - m_engine->SetState(D3DSTATENORMAL); + m_engine->SetTexture("button2.png"); + m_engine->SetState(Gfx::ENG_RSTATE_NORMAL); uv1.x = 224.0f/256.0f; // cursor uv1.y = 32.0f/256.0f; uv2.x = 256.0f/256.0f; @@ -561,7 +563,7 @@ void CSlider::SetVisibleValue(float value) AdjustGlint(); } -float CSlider::RetVisibleValue() +float CSlider::GetVisibleValue() { return m_min+m_visibleValue*(m_max-m_min); } @@ -572,9 +574,10 @@ void CSlider::SetArrowStep(float step) m_step = step/(m_max-m_min); } -float CSlider::RetArrowStep() +float CSlider::GetArrowStep() { return m_step*(m_max-m_min); } +} |