Use namespace in .cpp files
This commit is contained in:
parent
32fe024bfa
commit
aed3e7feaf
@ -4,85 +4,91 @@
|
|||||||
|
|
||||||
#include "MusicSelect.hpp"
|
#include "MusicSelect.hpp"
|
||||||
|
|
||||||
void MusicSelect::ColorPanel::draw(Resources& resources, sf::RenderTarget& target, sf::FloatRect area) {
|
namespace MusicSelect {
|
||||||
sf::RectangleShape panel{{area.width*0.9f, area.height*0.9f}};
|
void ColorPanel::draw(Resources& resources, sf::RenderTarget& target, sf::FloatRect area) {
|
||||||
panel.setFillColor(this->color);
|
sf::RectangleShape panel{{area.width*0.9f, area.height*0.9f}};
|
||||||
panel.setOrigin(panel.getSize().x / 2.f, panel.getSize().y / 2.f);
|
panel.setFillColor(this->color);
|
||||||
panel.setPosition(area.left+area.width/2.f, area.top+area.height/2.f);
|
panel.setOrigin(panel.getSize().x / 2.f, panel.getSize().y / 2.f);
|
||||||
target.draw(panel);
|
panel.setPosition(area.left+area.width/2.f, area.top+area.height/2.f);
|
||||||
}
|
target.draw(panel);
|
||||||
|
|
||||||
void MusicSelect::CategoryPanel::click(Ribbon& ribbon, std::size_t from_button_index) {
|
|
||||||
ribbon.move_to_next_category(from_button_index);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MusicSelect::CategoryPanel::draw(Resources& resources, sf::RenderTarget& target, sf::FloatRect area) {
|
|
||||||
sf::RectangleShape red_rectangle;
|
|
||||||
red_rectangle.setFillColor(sf::Color::Transparent);
|
|
||||||
red_rectangle.setOutlineColor(sf::Color::Red);
|
|
||||||
red_rectangle.setOutlineThickness(1.f);
|
|
||||||
|
|
||||||
sf::RectangleShape frame{{area.width*0.9f, area.height*0.9f}};
|
|
||||||
frame.setFillColor(sf::Color::Black);
|
|
||||||
frame.setOutlineThickness(1.f);
|
|
||||||
frame.setOutlineColor(sf::Color::White);
|
|
||||||
frame.setOrigin(frame.getSize().x / 2.f, frame.getSize().y / 2.f);
|
|
||||||
frame.setPosition(area.left+area.width/2.f, area.top+area.height/2.f);
|
|
||||||
target.draw(frame);
|
|
||||||
|
|
||||||
sf::Text top_text;
|
|
||||||
top_text.setFont(resources.noto_sans_medium);
|
|
||||||
top_text.setString("category");
|
|
||||||
top_text.setCharacterSize(50U);
|
|
||||||
top_text.setFillColor(sf::Color::White);
|
|
||||||
auto bounds = top_text.getLocalBounds();
|
|
||||||
top_text.setScale(area.width*0.45f / bounds.width, area.width*0.45f / bounds.width);
|
|
||||||
top_text.setPosition(area.left + area.width*0.07f, area.top + area.height*0.07f);
|
|
||||||
target.draw(top_text);
|
|
||||||
|
|
||||||
set_to_global_bounds(red_rectangle, top_text);
|
|
||||||
target.draw(red_rectangle);
|
|
||||||
|
|
||||||
sf::Text label_text;
|
|
||||||
label_text.setFont(resources.noto_sans_medium);
|
|
||||||
label_text.setString(this->label);
|
|
||||||
label_text.setCharacterSize(100U);
|
|
||||||
label_text.setFillColor(sf::Color::White);
|
|
||||||
auto text_bounds = label_text.getLocalBounds();
|
|
||||||
label_text.setOrigin(text_bounds.width / 2.f, text_bounds.height / 2.f);
|
|
||||||
if (text_bounds.height > text_bounds.width) {
|
|
||||||
label_text.setScale(area.height*0.8f / text_bounds.height, area.height*0.8f / text_bounds.height);
|
|
||||||
} else {
|
|
||||||
label_text.setScale(area.width*0.8f / text_bounds.width, area.width*0.8f / text_bounds.width);
|
|
||||||
}
|
}
|
||||||
label_text.setPosition(area.left + area.width / 2.f, area.top + area.height / 2.f);
|
|
||||||
target.draw(label_text);
|
|
||||||
|
|
||||||
set_to_global_bounds(red_rectangle, label_text);
|
void CategoryPanel::click(Ribbon& ribbon, std::size_t from_button_index) {
|
||||||
target.draw(red_rectangle);
|
ribbon.move_to_next_category(from_button_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MusicSelect::SongPanel::click(Ribbon& ribbon, std::size_t from_button_index) {
|
void CategoryPanel::draw(Resources& resources, sf::RenderTarget& target, sf::FloatRect area) {
|
||||||
|
sf::RectangleShape red_rectangle;
|
||||||
}
|
red_rectangle.setFillColor(sf::Color::Transparent);
|
||||||
|
red_rectangle.setOutlineColor(sf::Color::Red);
|
||||||
|
red_rectangle.setOutlineThickness(1.f);
|
||||||
|
|
||||||
void MusicSelect::SongPanel::draw(Resources& resources, sf::RenderTarget& target, sf::FloatRect area) {
|
sf::RectangleShape frame{{area.width*0.9f, area.height*0.9f}};
|
||||||
sf::Sprite cover;
|
frame.setFillColor(sf::Color::Black);
|
||||||
cover.setTexture(resources.fallback_cover);
|
frame.setOutlineThickness(1.f);
|
||||||
if (m_song.cover) {
|
frame.setOutlineColor(sf::Color::White);
|
||||||
auto loaded_texture = resources.covers.async_get(m_song.folder/m_song.cover.value());
|
frame.setOrigin(frame.getSize().x / 2.f, frame.getSize().y / 2.f);
|
||||||
if (loaded_texture) {
|
frame.setPosition(area.left+area.width/2.f, area.top+area.height/2.f);
|
||||||
cover.setTexture(**loaded_texture, true);
|
target.draw(frame);
|
||||||
|
|
||||||
|
sf::Text top_text;
|
||||||
|
top_text.setFont(resources.noto_sans_medium);
|
||||||
|
top_text.setString("category");
|
||||||
|
top_text.setCharacterSize(50U);
|
||||||
|
top_text.setFillColor(sf::Color::White);
|
||||||
|
auto bounds = top_text.getLocalBounds();
|
||||||
|
top_text.setScale(area.width*0.45f / bounds.width, area.width*0.45f / bounds.width);
|
||||||
|
top_text.setPosition(area.left + area.width*0.07f, area.top + area.height*0.07f);
|
||||||
|
target.draw(top_text);
|
||||||
|
|
||||||
|
set_to_global_bounds(red_rectangle, top_text);
|
||||||
|
target.draw(red_rectangle);
|
||||||
|
|
||||||
|
sf::Text label_text;
|
||||||
|
label_text.setFont(resources.noto_sans_medium);
|
||||||
|
label_text.setString(this->label);
|
||||||
|
label_text.setCharacterSize(100U);
|
||||||
|
label_text.setFillColor(sf::Color::White);
|
||||||
|
auto text_bounds = label_text.getLocalBounds();
|
||||||
|
label_text.setOrigin(text_bounds.width / 2.f, text_bounds.height / 2.f);
|
||||||
|
if (text_bounds.height > text_bounds.width) {
|
||||||
|
label_text.setScale(area.height*0.8f / text_bounds.height, area.height*0.8f / text_bounds.height);
|
||||||
|
} else {
|
||||||
|
label_text.setScale(area.width*0.8f / text_bounds.width, area.width*0.8f / text_bounds.width);
|
||||||
|
}
|
||||||
|
label_text.setPosition(area.left + area.width / 2.f, area.top + area.height / 2.f);
|
||||||
|
target.draw(label_text);
|
||||||
|
|
||||||
|
set_to_global_bounds(red_rectangle, label_text);
|
||||||
|
target.draw(red_rectangle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SongPanel::click(Ribbon& ribbon, std::size_t from_button_index) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void SongPanel::draw(Resources& resources, sf::RenderTarget& target, sf::FloatRect area) {
|
||||||
|
if (m_song.cover) {
|
||||||
|
auto loaded_texture = resources.covers.async_get(m_song.folder/m_song.cover.value());
|
||||||
|
if (loaded_texture) {
|
||||||
|
sf::Sprite cover{*(loaded_texture->texture)};
|
||||||
|
auto alpha = static_cast<std::uint8_t>(
|
||||||
|
m_seconds_to_alpha.clampedTransform(
|
||||||
|
loaded_texture->clock.getElapsedTime().asSeconds()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
cover.setColor(sf::Color(255, 255, 255, alpha));
|
||||||
|
auto bounds = cover.getGlobalBounds();
|
||||||
|
cover.setPosition(area.left, area.top);
|
||||||
|
cover.setScale(area.width / bounds.width, area.width / bounds.width);
|
||||||
|
target.draw(cover);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
auto bounds = cover.getGlobalBounds();
|
|
||||||
cover.setPosition(area.left, area.top);
|
|
||||||
cover.setScale(area.width / bounds.width, area.width / bounds.width);
|
|
||||||
target.draw(cover);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MusicSelect::set_to_global_bounds(sf::RectangleShape& rect, const sf::Text& text) {
|
void set_to_global_bounds(sf::RectangleShape& rect, const sf::Text& text) {
|
||||||
const auto& bounds = text.getGlobalBounds();
|
const auto& bounds = text.getGlobalBounds();
|
||||||
rect.setSize({bounds.width, bounds.height});
|
rect.setSize({bounds.width, bounds.height});
|
||||||
rect.setPosition({bounds.left, bounds.top});
|
rect.setPosition({bounds.left, bounds.top});
|
||||||
}
|
}
|
||||||
|
}
|
@ -4,6 +4,7 @@
|
|||||||
#include <SFML/Window.hpp>
|
#include <SFML/Window.hpp>
|
||||||
|
|
||||||
#include "../../Data/SongList.hpp"
|
#include "../../Data/SongList.hpp"
|
||||||
|
#include "../../Toolkit/AffineTransform.hpp"
|
||||||
#include "Resources.hpp"
|
#include "Resources.hpp"
|
||||||
|
|
||||||
namespace MusicSelect {
|
namespace MusicSelect {
|
||||||
@ -53,6 +54,7 @@ namespace MusicSelect {
|
|||||||
void draw(Resources& resources, sf::RenderTarget& target, sf::FloatRect area) override;
|
void draw(Resources& resources, sf::RenderTarget& target, sf::FloatRect area) override;
|
||||||
private:
|
private:
|
||||||
const Data::Song& m_song;
|
const Data::Song& m_song;
|
||||||
|
const Toolkit::AffineTransform<float> m_seconds_to_alpha{0.0f, 0.15f, 0.f, 255.f};
|
||||||
};
|
};
|
||||||
|
|
||||||
void set_to_global_bounds(sf::RectangleShape& rect, const sf::Text& text);
|
void set_to_global_bounds(sf::RectangleShape& rect, const sf::Text& text);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user