Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarImageProcessing.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-21 23:32:28 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-21 23:32:28 +1000
commit643ae5d1b8eb1a2d2516aad204cff20cc080c454 (patch)
tree19823c7dd7312821ce7a35859d91436074983cb8 /source/core/StarImageProcessing.cpp
parent92ef4dba0fe7a9bd152466cfa4fd194024105895 (diff)
Fix border for font
Diffstat (limited to 'source/core/StarImageProcessing.cpp')
-rw-r--r--source/core/StarImageProcessing.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/source/core/StarImageProcessing.cpp b/source/core/StarImageProcessing.cpp
index 8f0f3f7..fd07e1c 100644
--- a/source/core/StarImageProcessing.cpp
+++ b/source/core/StarImageProcessing.cpp
@@ -495,18 +495,19 @@ Image processImageOperations(List<ImageOperation> const& operations, Image image
if (dist < std::numeric_limits<int>::max()) {
float percent = (dist - 1) / (2.0f * pixels - 1);
- Color color = Color::rgbaf((Vec4F(op->startColor) * ((1.0f - percent) / 255.0f)) + (Vec4F(op->endColor) * (percent / 255.0f)));
+ Color color = Color::rgba(op->startColor).mix(Color::rgba(op->endColor), percent);
if (pixel[3] != 0) {
- if (op->outlineOnly)
- color.setAlphaF(1.0f - byteToFloat(pixel[3]));
+ if (op->outlineOnly) {
+ float pixelA = byteToFloat(pixel[3]);
+ color.setAlphaF((1.0f - pixelA) * fminf(pixelA, 0.5f) * 2.0f);
+ }
else {
- Color pixelCol = Color::rgba(pixel);
- float pixelA = pixelCol.alphaF();
- float colorA = color.alphaF();
+ Color pixelF = Color::rgba(pixel);
+ float pixelA = pixelF.alphaF(), colorA = color.alphaF();
colorA += pixelA * (1.0f - colorA);
- pixelCol.convertToLinear();
+ pixelF.convertToLinear(); //Mix in linear color space as it is more perceptually accurate
color.convertToLinear();
- color.mix(pixelCol, pixelA);
+ color = color.mix(pixelF, pixelA);
color.convertToSRGB();
color.setAlphaF(colorA);
}