From f1e450cc9ee893ea4d0f6735f4d63abc0a9a129e Mon Sep 17 00:00:00 2001 From: nihonium Date: Wed, 4 Jan 2023 00:18:42 +0300 Subject: [PATCH] seminar11 slider --- seminar11_events/02_slider/Makefile | 6 ++ seminar11_events/02_slider/circle.cpp | 57 ++++++++++++ seminar11_events/02_slider/consolas.ttf | Bin 0 -> 98504 bytes seminar11_events/02_slider/slider.cpp | 36 +++++++ seminar11_events/02_slider/slider.hpp | 119 ++++++++++++++++++++++++ 5 files changed, 218 insertions(+) create mode 100644 seminar11_events/02_slider/Makefile create mode 100644 seminar11_events/02_slider/circle.cpp create mode 100644 seminar11_events/02_slider/consolas.ttf create mode 100644 seminar11_events/02_slider/slider.cpp create mode 100644 seminar11_events/02_slider/slider.hpp diff --git a/seminar11_events/02_slider/Makefile b/seminar11_events/02_slider/Makefile new file mode 100644 index 0000000..579a8f1 --- /dev/null +++ b/seminar11_events/02_slider/Makefile @@ -0,0 +1,6 @@ +build: + g++ ./slider.cpp -std=c++11 -o slider -lsfml-graphics -lsfml-window -lsfml-system +build_debug: + g++ ./slider.cpp -std=c++11 -o slider -lsfml-graphics -lsfml-window -lsfml-system -D_DEBUG +build_circle: + g++ ./circle.cpp -std=c++11 -o circle -lsfml-graphics -lsfml-window -lsfml-system diff --git a/seminar11_events/02_slider/circle.cpp b/seminar11_events/02_slider/circle.cpp new file mode 100644 index 0000000..9d7b609 --- /dev/null +++ b/seminar11_events/02_slider/circle.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include "slider.hpp" + +int main() +{ + int result; + unsigned char r, g, b; + + sf::RenderWindow window(sf::VideoMode(800, 600), "Slider"); + window.setFramerateLimit(60); + + sf::Font font; + if (!font.loadFromFile("consolas.ttf")) { + std::cout << "Can't load button font" << std::endl; + } + + Slider slider(window, font, sf::Vector2f{200, 100}, 10, 250); + + Slider slider_r(window, font, sf::Vector2f{800, 200}, 0, 255); + Slider slider_g(window, font, sf::Vector2f{800, 300}, 0, 255); + Slider slider_b(window, font, sf::Vector2f{800, 400}, 0, 255); + + sf::CircleShape circle(10); + circle.setPosition(sf::Vector2f{400, 400}); + + while (window.isOpen()) { + sf::Event event; + while (window.pollEvent(event)) { + if (event.type == sf::Event::Closed) { + window.close(); + } + + result = slider.handleEvent(event); + + /* Centering of the circle */ + circle.setPosition(circle.getPosition() + sf::Vector2f{circle.getRadius() - result, circle.getRadius() - result}); + circle.setRadius(result); + + r = slider_r.handleEvent(event); + g = slider_g.handleEvent(event); + b = slider_b.handleEvent(event); + circle.setFillColor(sf::Color{r, g, b}); + } + window.clear(sf::Color::Black); + + slider.draw(); + slider_r.draw(); + slider_g.draw(); + slider_b.draw(); + + window.draw(circle); + window.display(); + } + return 0; +} diff --git a/seminar11_events/02_slider/consolas.ttf b/seminar11_events/02_slider/consolas.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a79deb5e9deaafdf5adf0d23b3176c975ca7e925 GIT binary patch literal 98504 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 L>)yBWRpzGwLH-Cp literal 0 HcmV?d00001 diff --git a/seminar11_events/02_slider/slider.cpp b/seminar11_events/02_slider/slider.cpp new file mode 100644 index 0000000..792be9b --- /dev/null +++ b/seminar11_events/02_slider/slider.cpp @@ -0,0 +1,36 @@ +#include +#include +#include +#include "slider.hpp" + +int main() +{ + int result; + + sf::RenderWindow window(sf::VideoMode(800, 600), "Slider"); + window.setFramerateLimit(60); + + sf::Font font; + if (!font.loadFromFile("consolas.ttf")) { + std::cout << "Can't load button font" << std::endl; + } + + Slider slider(window, font); + + while (window.isOpen()) { + sf::Event event; + while (window.pollEvent(event)) { + if (event.type == sf::Event::Closed) { + window.close(); + } + + result = slider.handleEvent(event); + std::cout << result << std::endl; + } + window.clear(sf::Color::Black); + + slider.draw(); + window.display(); + } + return 0; +} diff --git a/seminar11_events/02_slider/slider.hpp b/seminar11_events/02_slider/slider.hpp new file mode 100644 index 0000000..f72c090 --- /dev/null +++ b/seminar11_events/02_slider/slider.hpp @@ -0,0 +1,119 @@ +#pragma once +#include +#include +#include + +class Slider +{ +private: + inline static const sf::Color defaultColor {sf::Color(190, 210, 190)}; + inline static const sf::Color pressedColor {sf::Color(150, 170, 150)}; + inline static const sf::Color textColor {sf::Color::Black}; + inline static const int kCharacterSize = 14; + + int mMinValue; + int mMaxValue; + float mSliderPosition = 0; + + sf::RenderWindow& mRenderWindow; + sf::RectangleShape mSlider; + sf::RectangleShape mAxis; + sf::Text mText; + + /* Is slider pressed at the moment */ + bool mIsPressed = false; + + int onMousePressed(const sf::Event& event) + { + if (event.mouseButton.button == sf::Mouse::Left) { + sf::Vector2f mousePosition = mRenderWindow.mapPixelToCoords({event.mouseButton.x, event.mouseButton.y}); + if (mSlider.getGlobalBounds().contains(mousePosition)) + mIsPressed = true; + else if (mAxis.getGlobalBounds().contains(mousePosition)) + { + mIsPressed = true; + if (mousePosition.x + mSlider.getSize().x <= mAxis.getPosition().x + mAxis.getSize().x) { + mSlider.setPosition({mousePosition.x, mSlider.getPosition().y}); + mSliderPosition = (mSlider.getPosition().x - mAxis.getPosition().x) / (mAxis.getSize().x - mSlider.getSize().x); + } + else { + mSlider.setPosition({mAxis.getPosition().x + mAxis.getSize().x - mSlider.getSize().x, mSlider.getPosition().y}); + mSliderPosition = 1; + } + } + } + return mMinValue + (mMaxValue - mMinValue) * mSliderPosition; + } + + int onMouseMove(const sf::Event& event) + { + if (!mIsPressed) { + return mMinValue + (mMaxValue - mMinValue) * mSliderPosition; + } + sf::Vector2f mousePosition = mRenderWindow.mapPixelToCoords({event.mouseMove.x, event.mouseMove.y}); + if ((mousePosition.x >= mAxis.getPosition().x) && (mousePosition.x + mSlider.getSize().x <= mAxis.getPosition().x + mAxis.getSize().x)) { + mSlider.setPosition({mousePosition.x, mSlider.getPosition().y}); + } + else if (mousePosition.x < mAxis.getPosition().x) { + mSlider.setPosition({mAxis.getPosition().x, mSlider.getPosition().y}); + } + else if (mousePosition.x + mSlider.getSize().x > mAxis.getPosition().x + mAxis.getSize().x) { + mSlider.setPosition({mAxis.getPosition().x + mAxis.getSize().x - mSlider.getSize().x, mSlider.getPosition().y}); + } + + mSliderPosition = (mSlider.getPosition().x - mAxis.getPosition().x) / (mAxis.getSize().x - mSlider.getSize().x); + + return mMinValue + (mMaxValue - mMinValue) * mSliderPosition; + } + +public: + + Slider(sf::RenderWindow& window, const sf::Font& font, sf::Vector2f position = {100,200},int min = 0, int max = 100) : mRenderWindow(window) + { + mSlider.setFillColor(sf::Color::Red); + mSlider.setSize({10,30}); + mSlider.setPosition(position - sf::Vector2f{0, 10}); + mSlider.setOutlineColor(sf::Color::Black); + mSlider.setOutlineThickness(2); + + mAxis.setFillColor(defaultColor); + mAxis.setSize({500,10}); + mAxis.setPosition(position); + + std::stringstream ss; + ss << mMinValue; + mText.setString(ss.str()); + mText.setFont(font); + mText.setCharacterSize(kCharacterSize); + mText.setFillColor(sf::Color::White); + mText.setPosition(position + sf::Vector2f{mAxis.getSize().x + 10, -4}); + + mMinValue = min; + mMaxValue = max; + mIsPressed = false; + } + + void draw() + { + std::stringstream ss; + ss << mMinValue + (mMaxValue - mMinValue) * mSliderPosition; + mText.setString(ss.str()); + + mRenderWindow.draw(mAxis); + mRenderWindow.draw(mSlider); + mRenderWindow.draw(mText); + } + + int handleEvent(const sf::Event& event) { + if (event.type == sf::Event::MouseMoved) { + return onMouseMove(event); + } + else if (event.type == sf::Event::MouseButtonPressed) { + return onMousePressed(event); + } + else if (event.type == sf::Event::MouseButtonReleased) { + mIsPressed = false; + } + return mMinValue + (mMaxValue - mMinValue) * mSliderPosition; + } +};