libbluray | branch: master | Ian Curtis <[email protected]> | Tue Mar 18 21:02:12 2014 +0200| [3c472d27701422a736cc0c3acac0d4796f4f8537] | committer: hpi1
BDJGraphics: sort coordinates in drawImage() to avoid passing negative widths and heights > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=3c472d27701422a736cc0c3acac0d4796f4f8537 --- .../bdj/java-j2me/java/awt/BDGraphics.java | 27 ++++++++++++++++++-- .../bdj/java-j2se/java/awt/BDGraphics.java | 27 ++++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/libbluray/bdj/java-j2me/java/awt/BDGraphics.java b/src/libbluray/bdj/java-j2me/java/awt/BDGraphics.java index 87ad62e..0d678da 100644 --- a/src/libbluray/bdj/java-j2me/java/awt/BDGraphics.java +++ b/src/libbluray/bdj/java-j2me/java/awt/BDGraphics.java @@ -557,8 +557,31 @@ class BDGraphics extends Graphics2D implements ConstrainableGraphics { int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bg, ImageObserver observer) { - if ((dx1 >= dx2) || (dy1 >= dy2)) - return false; + + if (dx1 > dx2) { + int swap = dx1; + dx1 = dx2; + dx2 = swap; + } + + if (dy1 > dy2) { + int swap = dy1; + dy1 = dy2; + dy2 = swap; + } + + if (sx1 > sx2) { + int swap = sx1; + sx1 = sx2; + sx2 = swap; + } + + if (sy1 > sy2) { + int swap = sy1; + sy1 = sy2; + sy2 = swap; + } + return drawImageN(img, dx1, dy1, dx2 - dx1, dy2 - dy1, sx1, sy1, sx2 - sx1, sy2 - sy1, bg, observer); } diff --git a/src/libbluray/bdj/java-j2se/java/awt/BDGraphics.java b/src/libbluray/bdj/java-j2se/java/awt/BDGraphics.java index 660acc9..6399da6 100644 --- a/src/libbluray/bdj/java-j2se/java/awt/BDGraphics.java +++ b/src/libbluray/bdj/java-j2se/java/awt/BDGraphics.java @@ -664,8 +664,31 @@ class BDGraphics extends Graphics2D implements ConstrainableGraphics { int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bg, ImageObserver observer) { - if ((dx1 >= dx2) || (dy1 >= dy2)) - return false; + + if (dx1 > dx2) { + int swap = dx1; + dx1 = dx2; + dx2 = swap; + } + + if (dy1 > dy2) { + int swap = dy1; + dy1 = dy2; + dy2 = swap; + } + + if (sx1 > sx2) { + int swap = sx1; + sx1 = sx2; + sx2 = swap; + } + + if (sy1 > sy2) { + int swap = sy1; + sy1 = sy2; + sy2 = swap; + } + return drawImageN(img, dx1, dy1, dx2 - dx1, dy2 - dy1, sx1, sy1, sx2 - sx1, sy2 - sy1, bg, observer); } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
