Mercurial > hg > Members > nobuyasu > tightVNCProxy
changeset 26:0aa0e0bd742c
succeed drawFirstImage()!!
author | e085711 |
---|---|
date | Tue, 26 Apr 2011 09:08:49 +0900 |
parents | cded9fd297ab |
children | 13d4d3118cb8 |
files | src/myVncProxy/MyRfbProto.java src/myVncProxy/ProxyVncCanvas.java src/myVncProxy/VncCanvas.java src/myVncProxy/VncProxyService.java src/myVncProxy/VncViewer.java |
diffstat | 5 files changed, 51 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/src/myVncProxy/MyRfbProto.java Tue Apr 26 06:21:37 2011 +0900 +++ b/src/myVncProxy/MyRfbProto.java Tue Apr 26 09:08:49 2011 +0900 @@ -198,7 +198,6 @@ } BufferedImage createBufferedImage(Image img){ BufferedImage bimg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB ); - System.out.println("img.getWidth="+img.getWidth(null)); Graphics g = bimg.getGraphics(); g.drawImage(img, 0, 0, null); @@ -225,11 +224,25 @@ } void sendPngData(Socket sock)throws IOException{ + System.out.println("pngBytes.length="+pngBytes.length); + // ByteBuffer length = ByteBuffer.allocate(4); // length.putInt(pngBytes.length); -// sock.getOutputStream().write(length.getInt()); + +// byte b = 1; +// sock.getOutputStream().write(b); + byte[] dataLength = castIntByte(pngBytes.length); + sock.getOutputStream().write(dataLength); sock.getOutputStream().write(pngBytes); } + byte[] castIntByte(int len){ + byte[] b = new byte[4]; + b[0] = (byte)((len >>> 24 ) & 0xFF); + b[1] = (byte)((len >>> 16 ) & 0xFF); + b[2] = (byte)((len >>> 8 ) & 0xFF); + b[3] = (byte)((len >>> 0 ) & 0xFF); + return b; + } BufferedImage createBimg()throws IOException{ BufferedImage bimg = ImageIO.read(new ByteArrayInputStream(pngBytes)); @@ -239,9 +252,6 @@ pngBytes = new byte[is.available()]; readFully(pngBytes); } - - - void printFramebufferUpdate(){ System.out.println("messageType=" + messageType);
--- a/src/myVncProxy/ProxyVncCanvas.java Tue Apr 26 06:21:37 2011 +0900 +++ b/src/myVncProxy/ProxyVncCanvas.java Tue Apr 26 09:08:49 2011 +0900 @@ -28,11 +28,14 @@ int scalingFactor; int scaledWidth, scaledHeight; - Image memImage; +// Image memImage; + BufferedImage memImage; Graphics memGraphics; -// Image rawPixelsImage; - BufferedImage rawPixelsImage; + Image rawPixelsImage; +// BufferedImage rawPixelsImage; + BufferedImage bimg; + MemoryImageSource pixelsSource; byte[] pixels8; int[] pixels24; @@ -210,6 +213,7 @@ } public void setPixelFormat() throws IOException { +/* if (viewer.options.eightBitColors) { rfb.writeSetPixelFormat(8, 8, false, true, 7, 7, 3, 0, 3, 6); bytesPixel = 1; @@ -218,7 +222,7 @@ 0); bytesPixel = 4; } - +*/ updateFramebufferSize(); } @@ -245,6 +249,7 @@ // Create new off-screen image either if it does not exist, or if // its geometry should be changed. It's not necessary to replace // existing image if only pixel format should be changed. +/* if (memImage == null) { memImage = viewer.vncContainer.createImage(fbWidth, fbHeight); memGraphics = memImage.getGraphics(); @@ -255,7 +260,10 @@ memGraphics = memImage.getGraphics(); } } - +*/ + memImage = new BufferedImage(rfb.framebufferWidth, rfb.framebufferHeight, BufferedImage.TYPE_INT_RGB ); + memGraphics = memImage.getGraphics(); + // Images with raw pixels should be re-allocated on every change // of geometry or pixel format. if (bytesPixel == 1) { @@ -282,8 +290,9 @@ } pixelsSource.setAnimated(true); - rawPixelsImage = (BufferedImage) Toolkit.getDefaultToolkit().createImage(pixelsSource); - + rawPixelsImage = Toolkit.getDefaultToolkit().createImage(pixelsSource); +// rawPixelsImage = (BufferedImage) Toolkit.getDefaultToolkit().createImage(pixelsSource); + } void resizeDesktopFrame() { @@ -350,7 +359,6 @@ // main dispatch loop // - long count = 0; // single thread /* @@ -364,7 +372,8 @@ */ - + + long count = 0; while (true) { // System.out.println("\ncount=" + count); @@ -527,13 +536,22 @@ default: throw new Exception("Unknown RFB message type " + msgType); } + bufSize = (int)rfb.getNumBytesRead() - bufSize; -// System.out.println("bufSize="+bufSize); + System.out.println("bufSize="+bufSize); rfb.bufResetSend(bufSize); -// byte[] rawBytes = getBytes(rawPixelsImage);/ -// System.out.println("rawBytes.length="+rawBytes.length); - + bimg = createBufferedImage(rawPixelsImage); + rfb.createPngBytes(bimg); +/* + boolean result = false; + try{ + result = ImageIO.write(bimg, "png", new File("sample.png")); + }catch(Exception e){ + e.printStackTrace(); + result = false; + } +*/ } } @@ -574,10 +592,10 @@ } } -/* + handleUpdatedPixels(x, y, w, h); - if (paint) scheduleRepaint(x, y, w, h); -*/ +// if (paint) scheduleRepaint(x, y, w, h); + } //
--- a/src/myVncProxy/VncCanvas.java Tue Apr 26 06:21:37 2011 +0900 +++ b/src/myVncProxy/VncCanvas.java Tue Apr 26 09:08:49 2011 +0900 @@ -55,6 +55,7 @@ Graphics memGraphics; Image rawPixelsImage; +// BufferedImage rawPixelsImage; BufferedImage bimg; MemoryImageSource pixelsSource;
--- a/src/myVncProxy/VncProxyService.java Tue Apr 26 06:21:37 2011 +0900 +++ b/src/myVncProxy/VncProxyService.java Tue Apr 26 09:08:49 2011 +0900 @@ -11,7 +11,6 @@ v.mainArgs = argv; v.init(); - } String[] mainArgs; @@ -133,7 +132,7 @@ } else { fatalError(e.toString(), e); } - } catch (Exception e) { + } catch (Exception e) { String str = e.getMessage(); if (str != null && str.length() != 0) { fatalError("Error: " + str, e);
--- a/src/myVncProxy/VncViewer.java Tue Apr 26 06:21:37 2011 +0900 +++ b/src/myVncProxy/VncViewer.java Tue Apr 26 09:08:49 2011 +0900 @@ -448,20 +448,6 @@ rfb.writeClientInit(); rfb.readServerInit(); -/* - if (rfb.MYVNC) { - rfb.initServSock(5550); - - try { - Socket newCli = rfb.accept(); - rfb.sendInitData(newCli); - rfb.addSock(newCli); - } catch (IOException e) { - } - - } -*/ - System.out.println("Desktop name is " + rfb.desktopName); System.out.println("Desktop size is " + rfb.framebufferWidth + " x " + rfb.framebufferHeight);