mirror of
https://github.com/hyprwm/Hyprland
synced 2024-12-23 13:49:49 +01:00
optimize vector config value setting
This commit is contained in:
parent
59a3c43913
commit
3c27d1ab13
3 changed files with 25 additions and 22 deletions
|
@ -81,7 +81,7 @@ void CConfigManager::setDefaultVars() {
|
||||||
configValues["decoration:shadow_range"].intValue = 4;
|
configValues["decoration:shadow_range"].intValue = 4;
|
||||||
configValues["decoration:shadow_render_power"].intValue = 3;
|
configValues["decoration:shadow_render_power"].intValue = 3;
|
||||||
configValues["decoration:shadow_ignore_window"].intValue = 1;
|
configValues["decoration:shadow_ignore_window"].intValue = 1;
|
||||||
configValues["decoration:shadow_offset"].strValue = "0 0";
|
configValues["decoration:shadow_offset"].vecValue = Vector2D();
|
||||||
configValues["decoration:col.shadow"].intValue = 0xee1a1a1a;
|
configValues["decoration:col.shadow"].intValue = 0xee1a1a1a;
|
||||||
configValues["decoration:col.shadow_inactive"].intValue = INT_MAX;
|
configValues["decoration:col.shadow_inactive"].intValue = INT_MAX;
|
||||||
configValues["decoration:dim_inactive"].intValue = 0;
|
configValues["decoration:dim_inactive"].intValue = 0;
|
||||||
|
@ -292,7 +292,7 @@ void CConfigManager::configSetValueSafe(const std::string& COMMAND, const std::s
|
||||||
|
|
||||||
CONFIGENTRY->set = true;
|
CONFIGENTRY->set = true;
|
||||||
|
|
||||||
if (CONFIGENTRY->intValue != -1) {
|
if (CONFIGENTRY->intValue != -INT64_MAX) {
|
||||||
try {
|
try {
|
||||||
if (VALUE.find("0x") == 0) {
|
if (VALUE.find("0x") == 0) {
|
||||||
// Values with 0x are hex
|
// Values with 0x are hex
|
||||||
|
@ -309,7 +309,7 @@ void CConfigManager::configSetValueSafe(const std::string& COMMAND, const std::s
|
||||||
Debug::log(WARN, "Error reading value of %s", COMMAND.c_str());
|
Debug::log(WARN, "Error reading value of %s", COMMAND.c_str());
|
||||||
parseError = "Error setting value <" + VALUE + "> for field <" + COMMAND + ">.";
|
parseError = "Error setting value <" + VALUE + "> for field <" + COMMAND + ">.";
|
||||||
}
|
}
|
||||||
} else if (CONFIGENTRY->floatValue != -1) {
|
} else if (CONFIGENTRY->floatValue != -__FLT_MAX__) {
|
||||||
try {
|
try {
|
||||||
CONFIGENTRY->floatValue = stof(VALUE);
|
CONFIGENTRY->floatValue = stof(VALUE);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
@ -323,6 +323,23 @@ void CConfigManager::configSetValueSafe(const std::string& COMMAND, const std::s
|
||||||
Debug::log(WARN, "Error reading value of %s", COMMAND.c_str());
|
Debug::log(WARN, "Error reading value of %s", COMMAND.c_str());
|
||||||
parseError = "Error setting value <" + VALUE + "> for field <" + COMMAND + ">.";
|
parseError = "Error setting value <" + VALUE + "> for field <" + COMMAND + ">.";
|
||||||
}
|
}
|
||||||
|
} else if (CONFIGENTRY->vecValue != Vector2D(-__FLT_MAX__, -__FLT_MAX__)) {
|
||||||
|
try {
|
||||||
|
if (const auto SPACEPOS = VALUE.find(' '); SPACEPOS != std::string::npos) {
|
||||||
|
const auto X = VALUE.substr(0, SPACEPOS);
|
||||||
|
const auto Y = VALUE.substr(SPACEPOS + 1);
|
||||||
|
|
||||||
|
if (isNumber(X, true) && isNumber(Y, true)) {
|
||||||
|
CONFIGENTRY->vecValue = Vector2D(std::stof(X), std::stof(Y));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Debug::log(WARN, "Error reading value of %s", COMMAND.c_str());
|
||||||
|
parseError = "Error setting value <" + VALUE + "> for field <" + COMMAND + ">.";
|
||||||
|
}
|
||||||
|
} catch (...) {
|
||||||
|
Debug::log(WARN, "Error reading value of %s", COMMAND.c_str());
|
||||||
|
parseError = "Error setting value <" + VALUE + "> for field <" + COMMAND + ">.";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,9 +20,10 @@
|
||||||
#define CREATEANIMCFG(name, parent) animationConfig[name] = {false, "", "", 0.f, -1, &animationConfig["global"], &animationConfig[parent]}
|
#define CREATEANIMCFG(name, parent) animationConfig[name] = {false, "", "", 0.f, -1, &animationConfig["global"], &animationConfig[parent]}
|
||||||
|
|
||||||
struct SConfigValue {
|
struct SConfigValue {
|
||||||
int64_t intValue = -1;
|
int64_t intValue = -INT64_MAX;
|
||||||
float floatValue = -1;
|
float floatValue = -__FLT_MAX__;
|
||||||
std::string strValue = "";
|
std::string strValue = "";
|
||||||
|
Vector2D vecValue = Vector2D(-__FLT_MAX__, -__FLT_MAX__);
|
||||||
|
|
||||||
bool set = false; // used for device configs
|
bool set = false; // used for device configs
|
||||||
};
|
};
|
||||||
|
|
|
@ -63,30 +63,15 @@ void CHyprDropShadowDecoration::draw(CMonitor* pMonitor, float a) {
|
||||||
static auto *const PSHADOWSIZE = &g_pConfigManager->getConfigValuePtr("decoration:shadow_range")->intValue;
|
static auto *const PSHADOWSIZE = &g_pConfigManager->getConfigValuePtr("decoration:shadow_range")->intValue;
|
||||||
static auto *const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
|
static auto *const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
|
||||||
static auto *const PSHADOWIGNOREWINDOW = &g_pConfigManager->getConfigValuePtr("decoration:shadow_ignore_window")->intValue;
|
static auto *const PSHADOWIGNOREWINDOW = &g_pConfigManager->getConfigValuePtr("decoration:shadow_ignore_window")->intValue;
|
||||||
static auto *const PSHADOWOFFSET = &g_pConfigManager->getConfigValuePtr("decoration:shadow_offset")->strValue;
|
static auto *const PSHADOWOFFSET = &g_pConfigManager->getConfigValuePtr("decoration:shadow_offset")->vecValue;
|
||||||
|
|
||||||
if (*PSHADOWS != 1)
|
if (*PSHADOWS != 1)
|
||||||
return; // disabled
|
return; // disabled
|
||||||
|
|
||||||
// get the real offset
|
|
||||||
Vector2D offset;
|
|
||||||
try {
|
|
||||||
if (const auto SPACEPOS = PSHADOWOFFSET->find(' '); SPACEPOS != std::string::npos) {
|
|
||||||
const auto X = PSHADOWOFFSET->substr(0, SPACEPOS);
|
|
||||||
const auto Y = PSHADOWOFFSET->substr(SPACEPOS + 1);
|
|
||||||
|
|
||||||
if (isNumber(X, true) && isNumber(Y, true)) {
|
|
||||||
offset = Vector2D(std::stof(X), std::stof(Y));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (std::exception& e) {
|
|
||||||
return; // cannot parse
|
|
||||||
}
|
|
||||||
|
|
||||||
const auto ROUNDING = !m_pWindow->m_sSpecialRenderData.rounding ? 0 : (m_pWindow->m_sAdditionalConfigData.rounding == -1 ? *PROUNDING : m_pWindow->m_sAdditionalConfigData.rounding);
|
const auto ROUNDING = !m_pWindow->m_sSpecialRenderData.rounding ? 0 : (m_pWindow->m_sAdditionalConfigData.rounding == -1 ? *PROUNDING : m_pWindow->m_sAdditionalConfigData.rounding);
|
||||||
|
|
||||||
// update the extents
|
// update the extents
|
||||||
m_seExtents = {{*PSHADOWSIZE + 2 - offset.x, *PSHADOWSIZE + 2 - offset.y}, {*PSHADOWSIZE + 2 + offset.x, *PSHADOWSIZE + 2 + offset.y}};
|
m_seExtents = {{*PSHADOWSIZE + 2 - PSHADOWOFFSET->x, *PSHADOWSIZE + 2 - PSHADOWOFFSET->y}, {*PSHADOWSIZE + 2 + PSHADOWOFFSET->x, *PSHADOWSIZE + 2 + PSHADOWOFFSET->y}};
|
||||||
|
|
||||||
// draw the shadow
|
// draw the shadow
|
||||||
wlr_box fullBox = {m_vLastWindowPos.x - m_seExtents.topLeft.x + 2, m_vLastWindowPos.y - m_seExtents.topLeft.y + 2, m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x - 4, m_vLastWindowSize.y + m_seExtents.topLeft.y + m_seExtents.bottomRight.y - 4};
|
wlr_box fullBox = {m_vLastWindowPos.x - m_seExtents.topLeft.x + 2, m_vLastWindowPos.y - m_seExtents.topLeft.y + 2, m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x - 4, m_vLastWindowSize.y + m_seExtents.topLeft.y + m_seExtents.bottomRight.y - 4};
|
||||||
|
|
Loading…
Reference in a new issue