mirror of
https://github.com/hyprwm/hyprlock.git
synced 2024-11-16 23:05:58 +01:00
input-field: add dots_center
This commit is contained in:
parent
5c7b23eefb
commit
b1ffd73534
3 changed files with 8 additions and 2 deletions
|
@ -34,6 +34,7 @@ void CConfigManager::init() {
|
||||||
m_config.addSpecialConfigValue("input-field", "outer_color", Hyprlang::INT{0xFF111111});
|
m_config.addSpecialConfigValue("input-field", "outer_color", Hyprlang::INT{0xFF111111});
|
||||||
m_config.addSpecialConfigValue("input-field", "outline_thickness", Hyprlang::INT{4});
|
m_config.addSpecialConfigValue("input-field", "outline_thickness", Hyprlang::INT{4});
|
||||||
m_config.addSpecialConfigValue("input-field", "dots_size", Hyprlang::FLOAT{0.25});
|
m_config.addSpecialConfigValue("input-field", "dots_size", Hyprlang::FLOAT{0.25});
|
||||||
|
m_config.addSpecialConfigValue("input-field", "dots_center", Hyprlang::INT{1});
|
||||||
m_config.addSpecialConfigValue("input-field", "dots_spacing", Hyprlang::FLOAT{0.2});
|
m_config.addSpecialConfigValue("input-field", "dots_spacing", Hyprlang::FLOAT{0.2});
|
||||||
m_config.addSpecialConfigValue("input-field", "fade_on_empty", Hyprlang::INT{1});
|
m_config.addSpecialConfigValue("input-field", "fade_on_empty", Hyprlang::INT{1});
|
||||||
m_config.addSpecialConfigValue("input-field", "font_color", Hyprlang::INT{0xFF000000});
|
m_config.addSpecialConfigValue("input-field", "font_color", Hyprlang::INT{0xFF000000});
|
||||||
|
@ -99,6 +100,7 @@ std::vector<CConfigManager::SWidgetConfig> CConfigManager::getWidgetConfigs() {
|
||||||
{"outline_thickness", m_config.getSpecialConfigValue("input-field", "outline_thickness", k.c_str())},
|
{"outline_thickness", m_config.getSpecialConfigValue("input-field", "outline_thickness", k.c_str())},
|
||||||
{"dots_size", m_config.getSpecialConfigValue("input-field", "dots_size", k.c_str())},
|
{"dots_size", m_config.getSpecialConfigValue("input-field", "dots_size", k.c_str())},
|
||||||
{"dots_spacing", m_config.getSpecialConfigValue("input-field", "dots_spacing", k.c_str())},
|
{"dots_spacing", m_config.getSpecialConfigValue("input-field", "dots_spacing", k.c_str())},
|
||||||
|
{"dots_center", m_config.getSpecialConfigValue("input-field", "dots_center", k.c_str())},
|
||||||
{"fade_on_empty", m_config.getSpecialConfigValue("input-field", "fade_on_empty", k.c_str())},
|
{"fade_on_empty", m_config.getSpecialConfigValue("input-field", "fade_on_empty", k.c_str())},
|
||||||
{"font_color", m_config.getSpecialConfigValue("input-field", "font_color", k.c_str())},
|
{"font_color", m_config.getSpecialConfigValue("input-field", "font_color", k.c_str())},
|
||||||
{"halign", m_config.getSpecialConfigValue("input-field", "halign", k.c_str())},
|
{"halign", m_config.getSpecialConfigValue("input-field", "halign", k.c_str())},
|
||||||
|
|
|
@ -10,6 +10,7 @@ CPasswordInputField::CPasswordInputField(const Vector2D& viewport_, const std::u
|
||||||
out_thick = std::any_cast<Hyprlang::INT>(props.at("outline_thickness"));
|
out_thick = std::any_cast<Hyprlang::INT>(props.at("outline_thickness"));
|
||||||
dt_size = std::any_cast<Hyprlang::FLOAT>(props.at("dots_size"));
|
dt_size = std::any_cast<Hyprlang::FLOAT>(props.at("dots_size"));
|
||||||
dt_space = std::any_cast<Hyprlang::FLOAT>(props.at("dots_spacing"));
|
dt_space = std::any_cast<Hyprlang::FLOAT>(props.at("dots_spacing"));
|
||||||
|
dots.center = std::any_cast<Hyprlang::INT>(props.at("dots_center"));
|
||||||
fadeOnEmpty = std::any_cast<Hyprlang::INT>(props.at("fade_on_empty"));
|
fadeOnEmpty = std::any_cast<Hyprlang::INT>(props.at("fade_on_empty"));
|
||||||
font = std::any_cast<Hyprlang::INT>(props.at("font_color"));
|
font = std::any_cast<Hyprlang::INT>(props.at("font_color"));
|
||||||
pos = std::any_cast<Hyprlang::VEC2>(props.at("position"));
|
pos = std::any_cast<Hyprlang::VEC2>(props.at("position"));
|
||||||
|
@ -138,14 +139,16 @@ bool CPasswordInputField::draw(const SRenderData& data) {
|
||||||
const int PASS_SPACING = std::floor(PASS_SIZE * dt_space);
|
const int PASS_SPACING = std::floor(PASS_SIZE * dt_space);
|
||||||
|
|
||||||
if (!hiddenInputState.enabled) {
|
if (!hiddenInputState.enabled) {
|
||||||
|
int xback = dots.center ? (PASS_SIZE + PASS_SPACING) * std::ceil(dots.currentAmount) / 2.0 - inputFieldBox.w / 2.0 + PASS_SPACING * 2 : 0;
|
||||||
|
|
||||||
for (size_t i = 0; i < std::floor(dots.currentAmount); ++i) {
|
for (size_t i = 0; i < std::floor(dots.currentAmount); ++i) {
|
||||||
Vector2D currentPos = inputFieldBox.pos() + Vector2D{PASS_SPACING * 2, inputFieldBox.h / 2.f - PASS_SIZE / 2.f} + Vector2D{(PASS_SIZE + PASS_SPACING) * i, 0};
|
Vector2D currentPos = inputFieldBox.pos() + Vector2D{PASS_SPACING * 2 - xback, inputFieldBox.h / 2.f - PASS_SIZE / 2.f} + Vector2D{(PASS_SIZE + PASS_SPACING) * i, 0};
|
||||||
CBox box{currentPos, Vector2D{PASS_SIZE, PASS_SIZE}};
|
CBox box{currentPos, Vector2D{PASS_SIZE, PASS_SIZE}};
|
||||||
g_pRenderer->renderRect(box, fontCol, PASS_SIZE / 2.0);
|
g_pRenderer->renderRect(box, fontCol, PASS_SIZE / 2.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dots.currentAmount != std::floor(dots.currentAmount)) {
|
if (dots.currentAmount != std::floor(dots.currentAmount)) {
|
||||||
Vector2D currentPos = inputFieldBox.pos() + Vector2D{PASS_SPACING * 2, inputFieldBox.h / 2.f - PASS_SIZE / 2.f} +
|
Vector2D currentPos = inputFieldBox.pos() + Vector2D{PASS_SPACING * 2 - xback, inputFieldBox.h / 2.f - PASS_SIZE / 2.f} +
|
||||||
Vector2D{(PASS_SIZE + PASS_SPACING) * std::floor(dots.currentAmount), 0};
|
Vector2D{(PASS_SIZE + PASS_SPACING) * std::floor(dots.currentAmount), 0};
|
||||||
CBox box{currentPos, Vector2D{PASS_SIZE, PASS_SIZE}};
|
CBox box{currentPos, Vector2D{PASS_SIZE, PASS_SIZE}};
|
||||||
fontCol.a *= (dots.currentAmount - std::floor(dots.currentAmount)) * data.opacity;
|
fontCol.a *= (dots.currentAmount - std::floor(dots.currentAmount)) * data.opacity;
|
||||||
|
|
|
@ -36,6 +36,7 @@ class CPasswordInputField : public IWidget {
|
||||||
float currentAmount = 0;
|
float currentAmount = 0;
|
||||||
float speedPerSecond = 5; // actually per... something. I am unsure xD
|
float speedPerSecond = 5; // actually per... something. I am unsure xD
|
||||||
std::chrono::system_clock::time_point lastFrame;
|
std::chrono::system_clock::time_point lastFrame;
|
||||||
|
bool center = false;
|
||||||
} dots;
|
} dots;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|
Loading…
Reference in a new issue