diff --git a/Catalano.Android.Image/src/Catalano/Imaging/Filters/Intersect.java b/Catalano.Android.Image/src/Catalano/Imaging/Filters/Intersect.java index 90437c91..2ad4199a 100644 --- a/Catalano.Android.Image/src/Catalano/Imaging/Filters/Intersect.java +++ b/Catalano.Android.Image/src/Catalano/Imaging/Filters/Intersect.java @@ -1,4 +1,4 @@ -// Catalano Android Imaging Library +// Catalano Imaging Library // The Catalano Framework // // Copyright © Diego Catalano, 2015 @@ -39,9 +39,7 @@ public class Intersect implements IBaseInPlace{ /** * Initialize a new instance of the Intersect class. */ - public Intersect() { - - } + public Intersect() {} /** * Initialize a new instance of the Intersect class. @@ -62,46 +60,40 @@ public void setOverlayImage(FastBitmap overlayImage) { @Override public void applyInPlace(FastBitmap sourceImage){ - int width = sourceImage.getWidth(); - int height = sourceImage.getHeight(); - int sizeOrigin = width * height; + int size = sourceImage.getSize(); int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight(); if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) { - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int l; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - l = overlayImage.getGray(x, y); - if (l < sourceImage.getGray(x, y)) { - sourceImage.setGray(x, y, l); - } + for (int i = 0; i < size; i++) { + l = overlayImage.getGray(i); + if (l < sourceImage.getGray(i)) { + sourceImage.setGray(i, l); } } } } else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){ - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int r,g,b; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - r = overlayImage.getRed(x, y); - g = overlayImage.getGreen(x, y); - b = overlayImage.getBlue(x, y); - - if (r < sourceImage.getRed(x, y)) { - sourceImage.setRed(x, y, r); - } - if (g < sourceImage.getGreen(x, y)) { - sourceImage.setGreen(x, y, g); - } - if (b < sourceImage.getBlue(x, y)) { - sourceImage.setBlue(x, y, b); - } + for (int i = 0; i < size; i++) { + r = overlayImage.getRed(i); + g = overlayImage.getGreen(i); + b = overlayImage.getBlue(i); + + if (r < sourceImage.getRed(i)) { + sourceImage.setRed(i, r); + } + if (g < sourceImage.getGreen(i)) { + sourceImage.setGreen(i, g); + } + if (b < sourceImage.getBlue(i)) { + sourceImage.setBlue(i, b); } } } } } -} +} \ No newline at end of file diff --git a/Catalano.Android.Image/src/Catalano/Imaging/Filters/Merge.java b/Catalano.Android.Image/src/Catalano/Imaging/Filters/Merge.java index 156d67ce..ded06f9a 100644 --- a/Catalano.Android.Image/src/Catalano/Imaging/Filters/Merge.java +++ b/Catalano.Android.Image/src/Catalano/Imaging/Filters/Merge.java @@ -1,4 +1,4 @@ -// Catalano Android Imaging Library +// Catalano Imaging Library // The Catalano Framework // // Copyright © Diego Catalano, 2015 @@ -39,9 +39,7 @@ public class Merge implements IBaseInPlace{ /** * Initialize a new instance of the Merge class. */ - public Merge() { - - } + public Merge() {} /** * Initialize a new instance of the Merge class. @@ -62,44 +60,38 @@ public void setOverlayImage(FastBitmap overlayImage) { @Override public void applyInPlace(FastBitmap sourceImage){ - int width = sourceImage.getWidth(); - int height = sourceImage.getHeight(); - int sizeOrigin = width * height; + int size = sourceImage.getSize(); int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight(); if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) { - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int l; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - l = overlayImage.getGray(x, y); - if (l > sourceImage.getGray(x, y)) { - sourceImage.setGray(x, y, l); - } + for (int i = 0; i < size; i++) { + l = overlayImage.getGray(i); + if (l > sourceImage.getGray(i)) { + sourceImage.setGray(i, l); } } } } else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){ - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int r,g,b; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - r = overlayImage.getRed(x, y); - g = overlayImage.getGreen(x, y); - b = overlayImage.getBlue(x, y); - - if (r > sourceImage.getRed(x, y)) { - sourceImage.setRed(x, y, r); - } - if (g > sourceImage.getGreen(x, y)) { - sourceImage.setGreen(x, y, g); - } - if (b > sourceImage.getBlue(x, y)) { - sourceImage.setBlue(x, y, b); - } + for (int i = 0; i < size; i++) { + r = overlayImage.getRed(i); + g = overlayImage.getGreen(i); + b = overlayImage.getBlue(i); + + if (r > sourceImage.getRed(i)) { + sourceImage.setRed(i, r); + } + if (g > sourceImage.getGreen(i)) { + sourceImage.setGreen(i, g); + } + if (b > sourceImage.getBlue(i)) { + sourceImage.setBlue(i, b); } } } } } -} +} \ No newline at end of file diff --git a/Catalano.Android.Image/src/Catalano/Imaging/Filters/ModifiedWhitePatch.java b/Catalano.Android.Image/src/Catalano/Imaging/Filters/ModifiedWhitePatch.java index 30cb6ec1..353fc93b 100644 --- a/Catalano.Android.Image/src/Catalano/Imaging/Filters/ModifiedWhitePatch.java +++ b/Catalano.Android.Image/src/Catalano/Imaging/Filters/ModifiedWhitePatch.java @@ -1,4 +1,4 @@ -// Catalano Android Imaging Library +// Catalano Imaging Library // The Catalano Framework // // Copyright © Diego Catalano, 2015 @@ -53,28 +53,24 @@ public void applyInPlace(FastBitmap fastBitmap) { if(fastBitmap.isRGB()){ - int width = fastBitmap.getWidth(); - int height = fastBitmap.getHeight(); + int size = fastBitmap.getSize(); double kr = 0, kg = 0, kb = 0; int tr = 0, tg = 0, tb = 0; - for (int i = 0; i < height; i++) { - for (int j = 0; j < width; j++) { - - if (fastBitmap.getRed(i, j) > threshold){ - kr += fastBitmap.getRed(i, j); - tr++; - } - - if (fastBitmap.getGreen(i, j) > threshold){ - kg += fastBitmap.getGreen(i, j); - tg++; - } - - if (fastBitmap.getBlue(i, j) > threshold){ - kb += fastBitmap.getBlue(i, j); - tb++; - } + for (int i = 0; i < size; i++) { + if (fastBitmap.getRed(i) > threshold){ + kr += fastBitmap.getRed(i); + tr++; + } + + if (fastBitmap.getGreen(i) > threshold){ + kg += fastBitmap.getGreen(i); + tg++; + } + + if (fastBitmap.getBlue(i) > threshold){ + kb += fastBitmap.getBlue(i); + tb++; } } @@ -82,18 +78,16 @@ public void applyInPlace(FastBitmap fastBitmap) { kg = 255 / (kg/tg); kb = 255 / (kb/tb); - for (int i = 0; i < height; i++) { - for (int j = 0; j < width; j++) { - double r = kr * fastBitmap.getRed(i, j); - double g = kg * fastBitmap.getGreen(i, j); - double b = kb * fastBitmap.getBlue(i, j); - - if (r > 255) r = 255; - if (g > 255) g = 255; - if (b > 255) b = 255; - - fastBitmap.setRGB(i, j, (int)r, (int)g, (int)b); - } + for (int i = 0; i < size; i++) { + double r = kr * fastBitmap.getRed(i); + double g = kg * fastBitmap.getGreen(i); + double b = kb * fastBitmap.getBlue(i); + + if (r > 255) r = 255; + if (g > 255) g = 255; + if (b > 255) b = 255; + + fastBitmap.setRGB(i, (int)r, (int)g, (int)b); } } else{ diff --git a/Catalano.Android.Image/src/Catalano/Imaging/Filters/Morph.java b/Catalano.Android.Image/src/Catalano/Imaging/Filters/Morph.java index 978ab5c5..a56b0c17 100644 --- a/Catalano.Android.Image/src/Catalano/Imaging/Filters/Morph.java +++ b/Catalano.Android.Image/src/Catalano/Imaging/Filters/Morph.java @@ -1,4 +1,4 @@ -// Catalano Android Imaging Library +// Catalano Imaging Library // The Catalano Framework // // Copyright © Diego Catalano, 2015 @@ -40,9 +40,7 @@ public class Morph implements IBaseInPlace{ /** * Initialize a new instance of the BottomHat class. */ - public Morph() { - - } + public Morph() {} /** * Initialize a new instance of the BottomHat class. @@ -81,47 +79,41 @@ public void setSourcePercent(double sourcePercent) { @Override public void applyInPlace(FastBitmap sourceImage){ - int width = sourceImage.getWidth(); - int height = sourceImage.getHeight(); - int sizeOrigin = width * height; + int size = sourceImage.getSize(); int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight(); if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) { - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int lS,lO; //percentage of overlay image double q = 1 - sourcePercent; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - lS = sourceImage.getGray(x, y); - lO = overlayImage.getGray(x, y); - sourceImage.setGray(x, y, (int)( ( sourcePercent * ( lS ) ) + ( q * ( lO ) ))); - } + for (int i = 0; i < size; i++) { + lS = sourceImage.getGray(i); + lO = overlayImage.getGray(i); + sourceImage.setGray(i, (int)( ( sourcePercent * ( lS ) ) + ( q * ( lO ) ))); } } } else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){ - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int rS, gS, bS,rO, gO, bO; //percentage of overlay image double q = 1 - sourcePercent; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - rS = sourceImage.getRed(x, y); - gS = sourceImage.getGreen(x, y); - bS = sourceImage.getBlue(x, y); - - rO = overlayImage.getRed(x, y); - gO = overlayImage.getGreen(x, y); - bO = overlayImage.getBlue(x, y); - - int r = (int)( ( sourcePercent * ( rS ) ) + ( q * ( rO ))); - int g = (int)( ( sourcePercent * ( gS ) ) + ( q * ( gO ))); - int b = (int)( ( sourcePercent * ( bS ) ) + ( q * ( bO ))); - - sourceImage.setRGB(x, y, r, g, b); - } + for (int i = 0; i < size; i++) { + rS = sourceImage.getRed(i); + gS = sourceImage.getGreen(i); + bS = sourceImage.getBlue(i); + + rO = overlayImage.getRed(i); + gO = overlayImage.getGreen(i); + bO = overlayImage.getBlue(i); + + int r = (int)( ( sourcePercent * ( rS ) ) + ( q * ( rO ))); + int g = (int)( ( sourcePercent * ( gS ) ) + ( q * ( gO ))); + int b = (int)( ( sourcePercent * ( bS ) ) + ( q * ( bO ))); + + sourceImage.setRGB(i, r, g, b); } } } } -} +} \ No newline at end of file diff --git a/Catalano.Android.Image/src/Catalano/Imaging/Filters/MoveTowards.java b/Catalano.Android.Image/src/Catalano/Imaging/Filters/MoveTowards.java index f09e7698..f7f5f6ac 100644 --- a/Catalano.Android.Image/src/Catalano/Imaging/Filters/MoveTowards.java +++ b/Catalano.Android.Image/src/Catalano/Imaging/Filters/MoveTowards.java @@ -1,4 +1,4 @@ -// Catalano Android Imaging Library +// Catalano Imaging Library // The Catalano Framework // // Copyright © Diego Catalano, 2015 @@ -40,9 +40,7 @@ public class MoveTowards implements IBaseInPlace{ /** * Initialize a new instance of the MoveTowards class. */ - public MoveTowards() { - - } + public MoveTowards() {} /** * Initialize a new instance of the MoveTowards class. @@ -83,66 +81,60 @@ public void setOverlayImage(FastBitmap overlayImage) { @Override public void applyInPlace(FastBitmap sourceImage){ - int width = sourceImage.getWidth(); - int height = sourceImage.getHeight(); - int sizeOrigin = width * height; + int size = sourceImage.getSize(); int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight(); if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) { - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int l,v; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - v = overlayImage.getGray(x, y) - sourceImage.getGray(x, y); - l = sourceImage.getGray(x, y); - if (v > 0) { - l += stepSize < v ? stepSize : v; - } - else if(v < 0){ - v = -v; - l -= stepSize < v ? stepSize : v; - } - sourceImage.setGray(x, y, l); + for (int i = 0; i < size; i++) { + v = overlayImage.getGray(i) - sourceImage.getGray(i); + l = sourceImage.getGray(i); + if (v > 0) { + l += stepSize < v ? stepSize : v; + } + else if(v < 0){ + v = -v; + l -= stepSize < v ? stepSize : v; } + sourceImage.setGray(i, l); } } } else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){ - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int r,g,b,vR,vG,vB; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - r = overlayImage.getRed(x, y) - sourceImage.getRed(x, y); - g = overlayImage.getGreen(x, y) - sourceImage.getGreen(x, y); - b = overlayImage.getBlue(x, y) - sourceImage.getBlue(x, y); - vR = sourceImage.getRed(x, y); - vG = sourceImage.getGreen(x, y); - vB = sourceImage.getBlue(x, y); - - if (r > 0) { - vR += stepSize < r ? stepSize : r; - } - if(g > 0){ - vG += stepSize < g ? stepSize : g; - } - if(b > 0){ - vB += stepSize < b ? stepSize : b; - } - if(r < 0){ - r = -r; - vR -= stepSize < r ? stepSize : r; - } - if(g < 0){ - g = -g; - vG -= stepSize < g ? stepSize : g; - } - if(b < 0){ - b = -b; - vB -= stepSize < b ? stepSize : b; - } - sourceImage.setRGB(x, y, vR, vG, vB); + for (int i = 0; i < size; i++) { + r = overlayImage.getRed(i) - sourceImage.getRed(i); + g = overlayImage.getGreen(i) - sourceImage.getGreen(i); + b = overlayImage.getBlue(i) - sourceImage.getBlue(i); + vR = sourceImage.getRed(i); + vG = sourceImage.getGreen(i); + vB = sourceImage.getBlue(i); + + if (r > 0) { + vR += stepSize < r ? stepSize : r; + } + if(g > 0){ + vG += stepSize < g ? stepSize : g; + } + if(b > 0){ + vB += stepSize < b ? stepSize : b; + } + if(r < 0){ + r = -r; + vR -= stepSize < r ? stepSize : r; + } + if(g < 0){ + g = -g; + vG -= stepSize < g ? stepSize : g; + } + if(b < 0){ + b = -b; + vB -= stepSize < b ? stepSize : b; } + sourceImage.setRGB(i, vR, vG, vB); } } } } -} +} \ No newline at end of file diff --git a/Catalano.Image/src/Catalano/Imaging/Filters/Intersect.java b/Catalano.Image/src/Catalano/Imaging/Filters/Intersect.java index 97e2c465..2ad4199a 100644 --- a/Catalano.Image/src/Catalano/Imaging/Filters/Intersect.java +++ b/Catalano.Image/src/Catalano/Imaging/Filters/Intersect.java @@ -39,9 +39,7 @@ public class Intersect implements IBaseInPlace{ /** * Initialize a new instance of the Intersect class. */ - public Intersect() { - - } + public Intersect() {} /** * Initialize a new instance of the Intersect class. @@ -62,46 +60,40 @@ public void setOverlayImage(FastBitmap overlayImage) { @Override public void applyInPlace(FastBitmap sourceImage){ - int width = sourceImage.getWidth(); - int height = sourceImage.getHeight(); - int sizeOrigin = width * height; + int size = sourceImage.getSize(); int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight(); if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) { - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int l; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - l = overlayImage.getGray(x, y); - if (l < sourceImage.getGray(x, y)) { - sourceImage.setGray(x, y, l); - } + for (int i = 0; i < size; i++) { + l = overlayImage.getGray(i); + if (l < sourceImage.getGray(i)) { + sourceImage.setGray(i, l); } } } } else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){ - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int r,g,b; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - r = overlayImage.getRed(x, y); - g = overlayImage.getGreen(x, y); - b = overlayImage.getBlue(x, y); - - if (r < sourceImage.getRed(x, y)) { - sourceImage.setRed(x, y, r); - } - if (g < sourceImage.getGreen(x, y)) { - sourceImage.setGreen(x, y, g); - } - if (b < sourceImage.getBlue(x, y)) { - sourceImage.setBlue(x, y, b); - } + for (int i = 0; i < size; i++) { + r = overlayImage.getRed(i); + g = overlayImage.getGreen(i); + b = overlayImage.getBlue(i); + + if (r < sourceImage.getRed(i)) { + sourceImage.setRed(i, r); + } + if (g < sourceImage.getGreen(i)) { + sourceImage.setGreen(i, g); + } + if (b < sourceImage.getBlue(i)) { + sourceImage.setBlue(i, b); } } } } } -} +} \ No newline at end of file diff --git a/Catalano.Image/src/Catalano/Imaging/Filters/Merge.java b/Catalano.Image/src/Catalano/Imaging/Filters/Merge.java index e68d5448..ded06f9a 100644 --- a/Catalano.Image/src/Catalano/Imaging/Filters/Merge.java +++ b/Catalano.Image/src/Catalano/Imaging/Filters/Merge.java @@ -60,44 +60,38 @@ public void setOverlayImage(FastBitmap overlayImage) { @Override public void applyInPlace(FastBitmap sourceImage){ - int width = sourceImage.getWidth(); - int height = sourceImage.getHeight(); - int sizeOrigin = width * height; + int size = sourceImage.getSize(); int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight(); if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) { - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int l; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - l = overlayImage.getGray(x, y); - if (l > sourceImage.getGray(x, y)) { - sourceImage.setGray(x, y, l); - } + for (int i = 0; i < size; i++) { + l = overlayImage.getGray(i); + if (l > sourceImage.getGray(i)) { + sourceImage.setGray(i, l); } } } } else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){ - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int r,g,b; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - r = overlayImage.getRed(x, y); - g = overlayImage.getGreen(x, y); - b = overlayImage.getBlue(x, y); - - if (r > sourceImage.getRed(x, y)) { - sourceImage.setRed(x, y, r); - } - if (g > sourceImage.getGreen(x, y)) { - sourceImage.setGreen(x, y, g); - } - if (b > sourceImage.getBlue(x, y)) { - sourceImage.setBlue(x, y, b); - } + for (int i = 0; i < size; i++) { + r = overlayImage.getRed(i); + g = overlayImage.getGreen(i); + b = overlayImage.getBlue(i); + + if (r > sourceImage.getRed(i)) { + sourceImage.setRed(i, r); + } + if (g > sourceImage.getGreen(i)) { + sourceImage.setGreen(i, g); + } + if (b > sourceImage.getBlue(i)) { + sourceImage.setBlue(i, b); } } } } } -} +} \ No newline at end of file diff --git a/Catalano.Image/src/Catalano/Imaging/Filters/ModifiedWhitePatch.java b/Catalano.Image/src/Catalano/Imaging/Filters/ModifiedWhitePatch.java index 0df6155b..353fc93b 100644 --- a/Catalano.Image/src/Catalano/Imaging/Filters/ModifiedWhitePatch.java +++ b/Catalano.Image/src/Catalano/Imaging/Filters/ModifiedWhitePatch.java @@ -53,28 +53,24 @@ public void applyInPlace(FastBitmap fastBitmap) { if(fastBitmap.isRGB()){ - int width = fastBitmap.getWidth(); - int height = fastBitmap.getHeight(); + int size = fastBitmap.getSize(); double kr = 0, kg = 0, kb = 0; int tr = 0, tg = 0, tb = 0; - for (int i = 0; i < height; i++) { - for (int j = 0; j < width; j++) { - - if (fastBitmap.getRed(i, j) > threshold){ - kr += fastBitmap.getRed(i, j); - tr++; - } - - if (fastBitmap.getGreen(i, j) > threshold){ - kg += fastBitmap.getGreen(i, j); - tg++; - } - - if (fastBitmap.getBlue(i, j) > threshold){ - kb += fastBitmap.getBlue(i, j); - tb++; - } + for (int i = 0; i < size; i++) { + if (fastBitmap.getRed(i) > threshold){ + kr += fastBitmap.getRed(i); + tr++; + } + + if (fastBitmap.getGreen(i) > threshold){ + kg += fastBitmap.getGreen(i); + tg++; + } + + if (fastBitmap.getBlue(i) > threshold){ + kb += fastBitmap.getBlue(i); + tb++; } } @@ -82,18 +78,16 @@ public void applyInPlace(FastBitmap fastBitmap) { kg = 255 / (kg/tg); kb = 255 / (kb/tb); - for (int i = 0; i < height; i++) { - for (int j = 0; j < width; j++) { - double r = kr * fastBitmap.getRed(i, j); - double g = kg * fastBitmap.getGreen(i, j); - double b = kb * fastBitmap.getBlue(i, j); - - if (r > 255) r = 255; - if (g > 255) g = 255; - if (b > 255) b = 255; - - fastBitmap.setRGB(i, j, (int)r, (int)g, (int)b); - } + for (int i = 0; i < size; i++) { + double r = kr * fastBitmap.getRed(i); + double g = kg * fastBitmap.getGreen(i); + double b = kb * fastBitmap.getBlue(i); + + if (r > 255) r = 255; + if (g > 255) g = 255; + if (b > 255) b = 255; + + fastBitmap.setRGB(i, (int)r, (int)g, (int)b); } } else{ diff --git a/Catalano.Image/src/Catalano/Imaging/Filters/Morph.java b/Catalano.Image/src/Catalano/Imaging/Filters/Morph.java index bcbc9e8f..a56b0c17 100644 --- a/Catalano.Image/src/Catalano/Imaging/Filters/Morph.java +++ b/Catalano.Image/src/Catalano/Imaging/Filters/Morph.java @@ -40,9 +40,7 @@ public class Morph implements IBaseInPlace{ /** * Initialize a new instance of the BottomHat class. */ - public Morph() { - - } + public Morph() {} /** * Initialize a new instance of the BottomHat class. @@ -81,47 +79,41 @@ public void setSourcePercent(double sourcePercent) { @Override public void applyInPlace(FastBitmap sourceImage){ - int width = sourceImage.getWidth(); - int height = sourceImage.getHeight(); - int sizeOrigin = width * height; + int size = sourceImage.getSize(); int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight(); if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) { - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int lS,lO; //percentage of overlay image double q = 1 - sourcePercent; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - lS = sourceImage.getGray(x, y); - lO = overlayImage.getGray(x, y); - sourceImage.setGray(x, y, (int)( ( sourcePercent * ( lS ) ) + ( q * ( lO ) ))); - } + for (int i = 0; i < size; i++) { + lS = sourceImage.getGray(i); + lO = overlayImage.getGray(i); + sourceImage.setGray(i, (int)( ( sourcePercent * ( lS ) ) + ( q * ( lO ) ))); } } } else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){ - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int rS, gS, bS,rO, gO, bO; //percentage of overlay image double q = 1 - sourcePercent; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - rS = sourceImage.getRed(x, y); - gS = sourceImage.getGreen(x, y); - bS = sourceImage.getBlue(x, y); - - rO = overlayImage.getRed(x, y); - gO = overlayImage.getGreen(x, y); - bO = overlayImage.getBlue(x, y); - - int r = (int)( ( sourcePercent * ( rS ) ) + ( q * ( rO ))); - int g = (int)( ( sourcePercent * ( gS ) ) + ( q * ( gO ))); - int b = (int)( ( sourcePercent * ( bS ) ) + ( q * ( bO ))); - - sourceImage.setRGB(x, y, r, g, b); - } + for (int i = 0; i < size; i++) { + rS = sourceImage.getRed(i); + gS = sourceImage.getGreen(i); + bS = sourceImage.getBlue(i); + + rO = overlayImage.getRed(i); + gO = overlayImage.getGreen(i); + bO = overlayImage.getBlue(i); + + int r = (int)( ( sourcePercent * ( rS ) ) + ( q * ( rO ))); + int g = (int)( ( sourcePercent * ( gS ) ) + ( q * ( gO ))); + int b = (int)( ( sourcePercent * ( bS ) ) + ( q * ( bO ))); + + sourceImage.setRGB(i, r, g, b); } } } } -} +} \ No newline at end of file diff --git a/Catalano.Image/src/Catalano/Imaging/Filters/MoveTowards.java b/Catalano.Image/src/Catalano/Imaging/Filters/MoveTowards.java index 4a875f70..f7f5f6ac 100644 --- a/Catalano.Image/src/Catalano/Imaging/Filters/MoveTowards.java +++ b/Catalano.Image/src/Catalano/Imaging/Filters/MoveTowards.java @@ -81,66 +81,60 @@ public void setOverlayImage(FastBitmap overlayImage) { @Override public void applyInPlace(FastBitmap sourceImage){ - int width = sourceImage.getWidth(); - int height = sourceImage.getHeight(); - int sizeOrigin = width * height; + int size = sourceImage.getSize(); int sizeDestination = overlayImage.getWidth() * overlayImage.getHeight(); if ((sourceImage.isGrayscale()) && (overlayImage.isGrayscale())) { - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int l,v; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - v = overlayImage.getGray(x, y) - sourceImage.getGray(x, y); - l = sourceImage.getGray(x, y); - if (v > 0) { - l += stepSize < v ? stepSize : v; - } - else if(v < 0){ - v = -v; - l -= stepSize < v ? stepSize : v; - } - sourceImage.setGray(x, y, l); + for (int i = 0; i < size; i++) { + v = overlayImage.getGray(i) - sourceImage.getGray(i); + l = sourceImage.getGray(i); + if (v > 0) { + l += stepSize < v ? stepSize : v; } + else if(v < 0){ + v = -v; + l -= stepSize < v ? stepSize : v; + } + sourceImage.setGray(i, l); } } } else if ((sourceImage.isRGB()) && (overlayImage.isRGB())){ - if (sizeOrigin == sizeDestination) { + if (size == sizeDestination) { int r,g,b,vR,vG,vB; - for (int x = 0; x < height; x++) { - for (int y = 0; y < width; y++) { - r = overlayImage.getRed(x, y) - sourceImage.getRed(x, y); - g = overlayImage.getGreen(x, y) - sourceImage.getGreen(x, y); - b = overlayImage.getBlue(x, y) - sourceImage.getBlue(x, y); - vR = sourceImage.getRed(x, y); - vG = sourceImage.getGreen(x, y); - vB = sourceImage.getBlue(x, y); - - if (r > 0) { - vR += stepSize < r ? stepSize : r; - } - if(g > 0){ - vG += stepSize < g ? stepSize : g; - } - if(b > 0){ - vB += stepSize < b ? stepSize : b; - } - if(r < 0){ - r = -r; - vR -= stepSize < r ? stepSize : r; - } - if(g < 0){ - g = -g; - vG -= stepSize < g ? stepSize : g; - } - if(b < 0){ - b = -b; - vB -= stepSize < b ? stepSize : b; - } - sourceImage.setRGB(x, y, vR, vG, vB); + for (int i = 0; i < size; i++) { + r = overlayImage.getRed(i) - sourceImage.getRed(i); + g = overlayImage.getGreen(i) - sourceImage.getGreen(i); + b = overlayImage.getBlue(i) - sourceImage.getBlue(i); + vR = sourceImage.getRed(i); + vG = sourceImage.getGreen(i); + vB = sourceImage.getBlue(i); + + if (r > 0) { + vR += stepSize < r ? stepSize : r; + } + if(g > 0){ + vG += stepSize < g ? stepSize : g; + } + if(b > 0){ + vB += stepSize < b ? stepSize : b; + } + if(r < 0){ + r = -r; + vR -= stepSize < r ? stepSize : r; + } + if(g < 0){ + g = -g; + vG -= stepSize < g ? stepSize : g; + } + if(b < 0){ + b = -b; + vB -= stepSize < b ? stepSize : b; } + sourceImage.setRGB(i, vR, vG, vB); } } } } -} +} \ No newline at end of file diff --git a/Catalano.Math/src/Catalano/Math/Matrix.java b/Catalano.Math/src/Catalano/Math/Matrix.java index 9b8c0088..fc77e4a5 100644 --- a/Catalano.Math/src/Catalano/Math/Matrix.java +++ b/Catalano.Math/src/Catalano/Math/Matrix.java @@ -1460,12 +1460,13 @@ public static float[][] Multiply(float[][] A, float[][] B){ */ public static double[][] Multiply(double[][] A, double value){ + double[][] result = new double[A.length][A[0].length]; for (int i = 0; i < A.length; i++) { for (int j = 0; j < A[0].length; j++) { - A[i][j] *= value; + result[i][j] = A[i][j] * value; } } - return A; + return result; } @@ -1477,12 +1478,13 @@ public static double[][] Multiply(double[][] A, double value){ */ public static float[][] Multiply(float[][] A, float value){ + float[][] result = new float[A.length][A[0].length]; for (int i = 0; i < A.length; i++) { for (int j = 0; j < A[0].length; j++) { - A[i][j] *= value; + result[i][j] = A[i][j] * value; } } - return A; + return result; } @@ -1494,12 +1496,13 @@ public static float[][] Multiply(float[][] A, float value){ */ public static int[][] Multiply(int[][] A, int value){ + int[][] result = new int[A.length][A[0].length]; for (int i = 0; i < A.length; i++) { for (int j = 0; j < A[0].length; j++) { - A[i][j] *= value; + result[i][j] = A[i][j] * value; } } - return A; + return result; }