1 /* 2 * This file is part of the Colobot: Gold Edition source code 3 * Copyright (C) 2001-2020, Daniel Roux, EPSITEC SA & TerranovaTeam 4 * http://epsitec.ch; http://colobot.info; http://github.com/colobot 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 * See the GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see http://gnu.org/licenses 18 */ 19 20 #pragma once 21 22 #include "ui/controls/control.h" 23 24 #include "common/event.h" 25 26 #include <memory> 27 28 namespace Ui 29 { 30 31 class CButton; 32 33 const float SCROLL_WIDTH = (15.0f/640.0f); 34 35 36 37 class CScroll : public CControl 38 { 39 public: 40 CScroll(); 41 ~CScroll(); 42 43 bool Create(Math::Point pos, Math::Point dim, int icon, EventType eventMsg) override; 44 45 void SetPos(Math::Point pos) override; 46 void SetDim(Math::Point dim) override; 47 48 bool SetState(int state, bool bState) override; 49 bool SetState(int state) override; 50 bool ClearState(int state) override; 51 52 bool EventProcess(const Event &event) override; 53 void Draw() override; 54 55 void SetVisibleValue(float value); 56 float GetVisibleValue(); 57 58 void SetVisibleRatio(float value); 59 float GetVisibleRatio(); 60 61 void SetArrowStep(float step); 62 float GetArrowStep(); 63 64 protected: 65 void MoveAdjust(); 66 void AdjustGlint(); 67 void DrawVertex(Math::Point pos, Math::Point dim, int icon); 68 69 protected: 70 std::unique_ptr<CButton> m_buttonUp; 71 std::unique_ptr<CButton> m_buttonDown; 72 73 float m_visibleValue; 74 float m_visibleRatio; 75 float m_step; 76 77 bool m_bCapture; 78 Math::Point m_pressPos; 79 float m_pressValue; 80 }; 81 82 83 } // namespace Ui 84