Fix SignalXY plot for integers #5121
Draft
+24
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes #5108.
The problem is caused by the fact that the pixel column position is cast to the type of the displayed data. In the case of integers, a data point will be displayed when the current pixel column position rounds down to the value of the data point and the next column position rounds up. This will only happen at half integer positions.
One solution would be to round up the column position for integer types. But this means checking for all integral types, which would break if new types are introduced.
Another solution is to use a custom comparer for the binary search that compares the data points with the double pixel position. But this would rely on the fact that the implementation of binary search always uses the left slot of the comparer for array values.
I believe the cleanest solution is to implement a binary search that looks for the index to insert a double into the given array.
Let me know what you think.