Add minimum brush size, remove speed based brush size, and fixed textboxes not showing 0 value

This commit is contained in:
Yousef Khadadeh 2025-11-30 16:19:36 +03:00
parent 470faf1cc5
commit 270cd98195
5 changed files with 13 additions and 28 deletions

View file

@ -52,17 +52,6 @@ void BrushTool::tool_update() {
if(!controls.isDrawing)
controls.penSmoothingData.clear();
float averageScreenSize = (drawP.world.main.window.size.x() + drawP.world.main.window.size.y()) / 2.0f;
float minVel = 0.2f * averageScreenSize;
float maxVel = 3.5f * averageScreenSize;
while(!controls.velocitySmoothingData.empty() && (std::chrono::steady_clock::now() - controls.velocitySmoothingData.front().t) > std::chrono::milliseconds(200))
controls.velocitySmoothingData.pop_front();
controls.velocitySmoothingData.emplace_back(
drawP.world.main.input.mouse.move.norm() / drawP.world.main.deltaTime,
std::chrono::steady_clock::now()
);
if(drawP.world.main.input.pen.isDown && drawP.controls.leftClickHeld && drawP.world.main.toolbar.tabletOptions.pressureAffectsBrushWidth) {
while(!controls.penSmoothingData.empty() && (std::chrono::steady_clock::now() - controls.penSmoothingData.front().t) > std::chrono::milliseconds(static_cast<int>(drawP.world.main.toolbar.tabletOptions.smoothingSamplingTime * 1000.0f)))
controls.penSmoothingData.pop_front();
@ -75,13 +64,10 @@ void BrushTool::tool_update() {
averagePressure += width;
averagePressure /= controls.penSmoothingData.size();
controls.penWidth = averagePressure;
}
else if(drawP.world.main.toolbar.velocityAffectsBrushWidth) {
float averageVel = 0.0f;
for(auto& [width, t] : controls.velocitySmoothingData)
averageVel += width;
averageVel /= controls.velocitySmoothingData.size();
controls.penWidth = std::clamp<float>((averageVel - minVel) / (maxVel - minVel), VEL_SMOOTH_MIN, VEL_SMOOTH_MAX);
if(controls.penWidth != 0.0f) {
float brushMinSize = drawP.world.main.toolbar.tabletOptions.brushMinimumSize;
controls.penWidth = brushMinSize + controls.penWidth * (1.0f - brushMinSize);
}
}
else
controls.penWidth = 1.0f;

View file

@ -34,7 +34,6 @@ class BrushTool : public DrawingProgramToolBase {
float val;
std::chrono::steady_clock::time_point t;
};
std::deque<SmoothingPoint> velocitySmoothingData;
std::deque<SmoothingPoint> penSmoothingData;
std::shared_ptr<DrawBrushStroke> intermediateItem;