summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-09-30 17:03:06 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-09-30 17:03:14 +0100
commit3c27d1ab130409c2e320aaaacaf0939ebef1bee9 (patch)
treed2af05f4b16f13f8215719533650fe3fafea86d7 /src
parent59a3c43913b0536112f3700251aea28768c6882e (diff)
optimize vector config value setting
Diffstat (limited to 'src')
-rw-r--r--src/config/ConfigManager.cpp23
-rw-r--r--src/config/ConfigManager.hpp5
-rw-r--r--src/render/decorations/CHyprDropShadowDecoration.cpp19
3 files changed, 25 insertions, 22 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 3f2c9331..6c2d782a 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -81,7 +81,7 @@ void CConfigManager::setDefaultVars() {
configValues["decoration:shadow_range"].intValue = 4;
configValues["decoration:shadow_render_power"].intValue = 3;
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_inactive"].intValue = INT_MAX;
configValues["decoration:dim_inactive"].intValue = 0;
@@ -292,7 +292,7 @@ void CConfigManager::configSetValueSafe(const std::string& COMMAND, const std::s
CONFIGENTRY->set = true;
- if (CONFIGENTRY->intValue != -1) {
+ if (CONFIGENTRY->intValue != -INT64_MAX) {
try {
if (VALUE.find("0x") == 0) {
// 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());
parseError = "Error setting value <" + VALUE + "> for field <" + COMMAND + ">.";
}
- } else if (CONFIGENTRY->floatValue != -1) {
+ } else if (CONFIGENTRY->floatValue != -__FLT_MAX__) {
try {
CONFIGENTRY->floatValue = stof(VALUE);
} 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());
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 + ">.";
+ }
}
}
diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp
index cb73e102..e134b7a6 100644
--- a/src/config/ConfigManager.hpp
+++ b/src/config/ConfigManager.hpp
@@ -20,9 +20,10 @@
#define CREATEANIMCFG(name, parent) animationConfig[name] = {false, "", "", 0.f, -1, &animationConfig["global"], &animationConfig[parent]}
struct SConfigValue {
- int64_t intValue = -1;
- float floatValue = -1;
+ int64_t intValue = -INT64_MAX;
+ float floatValue = -__FLT_MAX__;
std::string strValue = "";
+ Vector2D vecValue = Vector2D(-__FLT_MAX__, -__FLT_MAX__);
bool set = false; // used for device configs
};
diff --git a/src/render/decorations/CHyprDropShadowDecoration.cpp b/src/render/decorations/CHyprDropShadowDecoration.cpp
index 38de306d..3f56977b 100644
--- a/src/render/decorations/CHyprDropShadowDecoration.cpp
+++ b/src/render/decorations/CHyprDropShadowDecoration.cpp
@@ -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 PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->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)
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);
// 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
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};