From 640b23ec5771afd1f36274441a04ca19e78c3b04 Mon Sep 17 00:00:00 2001 From: LeoDJ Date: Thu, 19 Apr 2018 11:29:06 +0200 Subject: [PATCH] fix #10 alpha color issue --- pixelwar/src/main/java/de/paws/pixelwar/NetCanvas.java | 10 +++++----- .../main/java/de/paws/pixelwar/PixelClientHandler.java | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pixelwar/src/main/java/de/paws/pixelwar/NetCanvas.java b/pixelwar/src/main/java/de/paws/pixelwar/NetCanvas.java index ed94f6c..e1045c8 100644 --- a/pixelwar/src/main/java/de/paws/pixelwar/NetCanvas.java +++ b/pixelwar/src/main/java/de/paws/pixelwar/NetCanvas.java @@ -151,8 +151,8 @@ public class NetCanvas implements ComponentListener, KeyListener, final BufferedImage img = pxBuffer; if (x >= 0 && x < img.getWidth() && y >= 0 && y < img.getHeight()) { - final int alpha = (argb >>> 24) % 256; - int rgb = argb & 0xffffff; + final int alpha = argb & 0xff; + int rgb = (argb & 0xffffff00) >>> 8; if (alpha < 1) { return; @@ -166,9 +166,9 @@ public class NetCanvas implements ComponentListener, KeyListener, g = ((target >>> 8) & 0xff) * (255 - alpha); b = ((target >>> 0) & 0xff) * (255 - alpha); - r += ((argb >>> 16) & 0xff) * alpha; - g += ((argb >>> 8) & 0xff) * alpha; - b += ((argb >>> 0) & 0xff) * alpha; + r += ((rgb >>> 16) & 0xff) * alpha; + g += ((rgb >>> 8) & 0xff) * alpha; + b += ((rgb >>> 0) & 0xff) * alpha; rgb = 0xff << 24; rgb += (r / 255) << 16; diff --git a/pixelwar/src/main/java/de/paws/pixelwar/PixelClientHandler.java b/pixelwar/src/main/java/de/paws/pixelwar/PixelClientHandler.java index 073a59e..379f532 100644 --- a/pixelwar/src/main/java/de/paws/pixelwar/PixelClientHandler.java +++ b/pixelwar/src/main/java/de/paws/pixelwar/PixelClientHandler.java @@ -177,7 +177,8 @@ public class PixelClientHandler extends SimpleChannelInboundHandler { final int y = Integer.parseInt(args[1]); int color = (int) Long.parseLong(args[2], 16); if (args[2].length() == 6) { - color += 0xff000000; + color = color << 8; + color += 0x000000ff; } label.setPos(x, y); canvas.setPixel(x, y, color);