From 555c6e8ead47db37992dc2d5fa45984a7d7ef6f0 Mon Sep 17 00:00:00 2001 From: Jakub Valtar Date: Mon, 10 Aug 2015 15:03:33 -0400 Subject: [PATCH] Make bilinear weights always sum to one --- core/src/processing/core/PImage.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/processing/core/PImage.java b/core/src/processing/core/PImage.java index 7f73c87fc..d4bd56dfc 100644 --- a/core/src/processing/core/PImage.java +++ b/core/src/processing/core/PImage.java @@ -2416,7 +2416,7 @@ public class PImage implements PConstants, Cloneable { private void filter_new_scanline() { sX = srcXOffset; fracV = srcYOffset & PREC_MAXVAL; - ifV = PREC_MAXVAL - fracV; + ifV = PREC_MAXVAL - fracV + 1; v1 = (srcYOffset >> PRECISIONB) * iw; v2 = low((srcYOffset >> PRECISIONB) + 1, ih1) * iw; } @@ -2424,11 +2424,11 @@ public class PImage implements PConstants, Cloneable { private int filter_bilinear() { fracU = sX & PREC_MAXVAL; - ifU = PREC_MAXVAL - fracU; + ifU = PREC_MAXVAL - fracU + 1; ul = (ifU * ifV) >> PRECISIONB; - ll = (ifU * fracV) >> PRECISIONB; - ur = (fracU * ifV) >> PRECISIONB; - lr = (fracU * fracV) >> PRECISIONB; + ll = ifU - ul; + ur = ifV - ul; + lr = PREC_MAXVAL + 1 - ul - ll - ur; u1 = (sX >> PRECISIONB); u2 = low(u1 + 1, iw1);