summarylogtreecommitdiffstats
path: root/0001-Change-nearest-color-lookup-logic-for-finding-floss-.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-Change-nearest-color-lookup-logic-for-finding-floss-.patch')
-rw-r--r--0001-Change-nearest-color-lookup-logic-for-finding-floss-.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/0001-Change-nearest-color-lookup-logic-for-finding-floss-.patch b/0001-Change-nearest-color-lookup-logic-for-finding-floss-.patch
new file mode 100644
index 000000000000..6edf8cfe8067
--- /dev/null
+++ b/0001-Change-nearest-color-lookup-logic-for-finding-floss-.patch
@@ -0,0 +1,63 @@
+From a7b7789cd0a1837b2eb8545aef8f41fcc16e48af Mon Sep 17 00:00:00 2001
+From: Sean Enck <enckse@voidedtech.com>
+Date: Fri, 12 Oct 2018 15:27:41 -0400
+Subject: [PATCH] Change nearest color lookup logic for finding floss during
+ import
+
+Due to an issue (suspected in ImageMagick 7.0.7.24 -> 25) it appears a nullptr
+is being returned when trying to find a matching color (no match or
+close match found). Increase the tracking of matching colors accordingly
+to find the 'nearest' and return.
+
+Signed-off-by: Sean Enck <enckse@voidedtech.com>
+---
+ src/FlossScheme.cpp | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/FlossScheme.cpp b/src/FlossScheme.cpp
+index e4cd117..49b1e48 100644
+--- a/src/FlossScheme.cpp
++++ b/src/FlossScheme.cpp
+@@ -11,7 +11,6 @@
+
+ #include "FlossScheme.h"
+
+-
+ FlossScheme::FlossScheme()
+ : m_map(nullptr)
+ {
+@@ -64,22 +63,23 @@ Floss *FlossScheme::find(const QString &name) const
+ Floss *FlossScheme::find(const QColor &color) const
+ {
+ QListIterator<Floss *> flossIterator(m_flosses);
+-
++ Floss *nearest;
++ float near;
++ float closest = 100;
++ nearest = nullptr;
+ while (flossIterator.hasNext()) {
+ Floss *floss = flossIterator.next();
+ QColor c = floss->color();
+-
+ if (c == color) {
+ return floss;
+ }
+-
+- // the color mapping may not be perfect so search for a near match.
+- if (abs(color.red()-c.red())<2 && abs(color.green()-c.green())<2 && abs(color.blue()-c.blue())<2) {
+- return floss;
++ near = abs(color.red()-c.red()) + abs(color.green()-c.green()) + abs(color.blue()-color.blue());
++ if (near < closest) {
++ closest = near;
++ nearest = floss;
+ }
+ }
+-
+- return nullptr;
++ return nearest;
+ }
+
+
+--
+2.19.1
+